Update ImmoParse database architectuur

Een van de unieke kenmerken van de ImmoParse webapplicatie is dat elke gebruiker de vergelijkingspunten kan aanpassen en zo een eigen versie van onze data kan bekijken. Bovendien is het ook mogelijk om zelf vergelijkingspunten te maken en op verzoek kunnen we ook grotere hoeveelheden data importeren.

Als gevolg hiervan is de structuur van onze databank iets ingewikkelder dan bij gemiddelde webapplicaties. ImmoParse gebruikt PostgreSQL als database, één van de meest geavanceerde en populaire relationele databases in het open source-landschap. Om deze unieke kenmerken mogelijk te maken, hebben we tot nu toe gebruik gemaakt van "views" en "materialized views": de oorspronkelijke ImmoParse-data bevindt zich in een materialized view die we elke nacht bijwerken met nieuwe data. De data van gebruikers bevindt zich in een tabel. Door een view te koppelen aan die tabel met dezelfde kolomstructuur, kunnen we met een SQL "UNION" onze data en die van de gebruiker transparant aanbieden bij zoekopdrachten, vergelijkingspunten en schattingsverslagen. database

Het nadeel hiervan is echter dat de view met de data van de gebruikers trager werkt voor gebruikers met veel data. Een gebruiker met 5000 eigen vergelijkingspunten moet gemiddeld tien keer langer wachten op een zoekopdracht dan een gebruiker met 50 eigen vergelijkingspunten. Bovendien konden we de update van de oorspronkelijke ImmoParse data alleen 's nachts uitvoeren, omdat er kortstondig een lock nodig is op de brontabellen, waardoor de databank enkele minuten niet bruikbaar is.

Om dit probleem op te lossen, moesten we afstappen van het gebruik van (materialized) views. De nachtelijke data-updates gebeuren nu rechtstreeks in onze ETL-pijplijn en kunnen op elk moment uitgevoerd worden, eventueel zelfs meerdere keren per dag, of in de toekomst mogelijk zelfs "live".

Met deze update brengen we belangrijke veranderingen aan de basis van onze ImmoParse webapp. Hierdoor kunnen we de zoeksnelheid voor onze meest intensieve gebruikers significant verhogen. Daarnaast geeft deze update ons de mogelijkheid om nieuwe algoritmes toe te passen op onze data, zodat we de aangeboden data continu kunnen verbeteren.