Hmm… al merk je het niet… knooppuntnet heeft het toch knap lastig met grote netwerken, zoals wandelnetwerk Fryslân.
Achtergrond verhaal:
De manier waarop knooppuntnet de analyse doet van knooppuntnetwerken is uitgedacht in de tijd dat netwerken nog een relatief beperkt aantal knooppunten en routes hadden (zeker in vergelijking met vandaag in ieder geval). De analyselogica wordt steeds voor het complete netwerk uitgevoerd. Bij de minste verandering aan 1 van de nodes of ways of relaties binnen het netwerk wordt het ganse netwerk opnieuw geëvalueerd. Ondermeer voor de analyse van expected_rXn_route_relations heeft het belang om de samenhang van het netwerk te zien. De analyse resultaten worden ook per netwerk bijgehouden in de analysedatabase, zodat ze heel snel getoond kunnen worden op het scherm. Deze “naïeve” methode van per-netwerk analyse heeft heel lang goed gewerkt, en eigenlijk vandaag ook nog wel…
Maar:
Het wandelnetwerk Fryslân heeft nu afgerond 2000 knooppunten en 2950 routes. Het XML bestand met de complete netwerkinformatie telt ongeveer 370000 (driehonderdzeventigduizend!) lijnen en is 25 Megabytes groot. Voor elke changeset met de minste verandering aan het netwerk wordt heel het netwerk (alle knooppunten en alle routes) twee keer opgeladen (situatie vóór de changeset en situatie na toepassen van de changeset).
Elk knooppunt en elke route in het netwerk wordt individueel opnieuw geanalyseerd en vergeleken met de bestaande toestand in de analysedatabase.
Het netwerkanalyseresultaat in JSON (pretty-printed) telt iets meer dan 125000 (hondervijfentwintigduizend!) lijnen.
Het kost wel wat rekenkracht om deze verwerking te doen. Bijvoorbeeld: in changeset 90029509 is gisteren 1 letter weggehaald uit de naam van een weg. De verwerking op de analyseserver heeft 1 minuut en 35 seconden geduurd op een toch best stevige machine.
En:
Als 1 van de laatste (?) stappen in voorbereiding van de nieuwe knooppuntnet versie 3.0 wou ik de software van analyse database naar de meest recente versie brengen (Couchdb 2.3.1 naar 3.1.0). Dat is niet gelukt. Na meerdere dagen onderzoek heb ik moeten vaststellen dat Couchdb 3.1.0 zich verslikt specifiek in netwerk Fryslân. Ergens diep in de databasesoftware doet er zich een timeout voor die de map-reduce verwerking doet crashen. Na verschillende pogingen over de duur van verschillende weken om 3.1.0 toch aan de praat te krijgen heb ik het uiteindelijk moeten opgeven, en alles terug naar 2.3.1 moeten brengen.
Resultaat:
De oorspronkelijk aanpak van de analyse schaalt niet meer zo goed. Netwerk Fryslân houdt momenteel een database software upgrade tegen (niet zo erg, versie 2.3.1 werkt prima). Er kunnen gerust nog meerdere grote netwerken bijkomen, maar als heel Nederland/België/Duitsland in grote netwerken zou worden ondergebracht dan gaat de analyse logica misschien toch niet goed meer kunnen volgen denk ik, als er op een gegeven moment veel opeenvolgende veranderingen zijn. Uiteindelijk zal er toch iets fundamenteels moeten veranderen in knooppuntnet.
Een mogelijke piste is om heel de netwerk gebaseerde analyse te laten vallen in knooppuntnet, en gewoon route per route te verwerken (maar wel met de op administratieve hiërarchie gebaseerde rapportering).
Dat wordt dan wellicht iets voor “knooppuntnet 4.0”.
Inderdaad, eerst maar eens proberen om knooppuntnet 3.0 verder in orde te krijgen (komt dichtbij)…