maykinmedia / objects-api

API and admin interface to manage Objects of certain Objecttypes. An object can be anything whether its a monument, report, tree or a permit.
https://opengem.nl/producten/overige-registraties/
Other
7 stars 10 forks source link

Vraag: Als developer wil ik snel over de data uit de objects-API beschikken, #301

Open RvdKlip opened 2 years ago

RvdKlip commented 2 years ago

...zodat de performance naar de eindgebruiker optimaal blijft.

Toelichting In Rotterdam is een POC uitgevoerd waarin bomen getoond worden op een kaart. De bomen worden gelezen uit de Objects-API. Origineel was het de bedoeling om deze op te halen als de gebruiker met een kaart inzoomt op een deel van Rotterdam. Dit is niet mogelijk, mede doordat het ophalen van objecten erg traag is. In de stadsdriehoek (klein gebied van 500 bij 500 meter) staan al 2600 bomen. Het antwoordbericht is 2Mb groot en duurt ca 3-5 seconden om op te halen. In de frontend applicatie komt daar ca 6 seconden bij om het antwoord te verwerken en op te slaan in entiteiten.

Dit geeft voor de gebruiker een te trage reactie. Als work around worden de bomen nu eenmalig ingeladen en in de Frontend database gekopieerd. Deze worden elke nacht ververst. Dit is in bepaalde mate strijdig met de filosofie vanuit de Common Ground. Is dit het gewenste gedrag van de objects-API en een eindapplicatie bij wat grotere workloads of doen we wat verkeerd?

Heb dit issue ook aangemaakt bij VNG (https://github.com/VNG-Realisatie/objecten-api/issues/1) maar daar wordt doorverwezen naar de softwarebouwer.

joeribekker commented 2 years ago

We hebben getest met miljoenen objecten, en dat presteert veel sneller dan wat je hier noemt. Welke versie van de Objecten API wordt gebruikt?

Je kan dit verder op verschillende manieren aanpakken:

  1. Geef het fields mee om minder velden (=data) terug te krijgen. Je hebt dan minder gegevens over de lijn en minder te verwerken. Je kan zelfs enkel de Geo-info ophalen om een kaart te tonen. Haal pas de rest op als iemand de details van die boom wil zien.
  2. Pagineer de resultaten kleiner en haal meer pagina's op bij hogere zoom-levels.
  3. Wat de frontend betreft, render niet individuele bomen, maar groepeer deze (Leaflet heeft daar een uitstekende library voor). Dit maakt de frontend echt 10x sneller.

Het is expliciet niet de bedoeling om een kopie van de database te maken! Wel is het aan te raden om caching toe te passen. Als je 1x de bomen hebt opgehaald, kan de client-software deze URL cachen, zodat als de client dezelfde URL raadpleegt, er niet opnieuw netwerk verkeer nodig is.

Ten slotte spelen we met het idee om WMF-ondersteuning (kaartlagen) in te bouwen, zodat geo-applicaties er efficienter mee kunnen communiceren.