Loading…
Tilbage

Profilbillede

Replikering af historiske adresser og koordinater?

Simon Eiriksson

Hej Dawa og brugere,

Jeg arbejder på at lægge koordinater på en lokal kopi af CPR, og i den forbindelse vil vi meget gerne have koordinater på historiske vejkoder. Så vidt jeg kan gennemskue, er det muligt at replikere en database med de data for de nuværende adresser, men altså ikke tilbage i tid (http://dawa.aws.dk//dok/guide/replikering).

Omvendt kan jeg se at det med API'en er muligt at hente UUID for historiske adresser (http://dawa.aws.dk/dok/api/adgangsadresse#historik), og dermed igen med API'en hente historiske geopunkter for hver enkelt adressepunkt. Er det korrekt?

Jeg er bange for at det vil være en ret omfangsrig affære at trække så mange data, punkt for punkt. 

I stedet, kan jeg muligvis hente historiske data via tabellerne dar_husnummer_historik, dar_adressepunkt_historik og dar_navngivenvejkommunedel_historik, og så flette dem sammen.

Dér er jeg så til gengæld lidt i tvivl om hvordan jeg vedligeholder type-2 historik, og om det er alt for meget data at tygge sig igennem. Jeg regner med at skulle opdatere databasen dagligt og jeg kan se at husnummer-historik json-filen fylder lidt over 11 Gb.

Er der nogen der har nogen fifs eller forslag?

Hej Simon,

Du kan benytte replikerings-API'et til at etablere en lokal kopi af entiteterne dar_husnummer_historik, dar_adressepunkt_historik og dar_navngivenvejkommunedel_historik.

Det er ikke noget problem at vedligeholde en lokal kopi af disse tabeller selvom dar_husnummer_historik filen fylder 11 GB, da replikerings-API'et understøtter at du opdaterer den lokale kopi baseret på hændelser. Du kan også nøjes med at gemme de felter lokalt som du faktisk har brug for, så et udtræk ikke fylder mere i databasen end nødvendigt.

Vi er på vej med en referenceimplementation af en klient til replikerings-API'et. Denne klient understøtter Postgres som database. Du kan tage et smugkig på den her: 

http://dawa.aws.dk/dok/guide/replikeringsklient

Kildekoden til klienten findes her:

https://github.com/DanmarksAdresser/Dawa/tree/master/packages/replication-client

Hej Anders,

Tusind tak for din hurtige respons. Jeg er gået i gang med at lave en replikering - i Pentaho som er det lokale ETL værktøj her hvor jeg er.

Jeg har indtil videre startet med at læse den første transaktion ind, for så at læse alle hændelserne ind bagefter. Altså starte med udtræk med txid=1 og så læse alle deltaloads derfra. 

Nu er jeg løbet ind i at jeg får en serverfejl hvis jeg kalder:

https://dawa.aws.dk/replikering/haendelser?entitet=dar_adressepunkt_historik&txidfra=11&txidtil=3250209&format=csv

Helt præcist får jeg: 

{
  "type": "InternalServerError",
  "title": "Something unexpected happened inside the server."
}

Det kommer ikke når jeg vælger andre intervaller, såsom
https://dawa.aws.dk/replikering/haendelser?entitet=dar_adressepunkt_historik&txidfra=11&txidtil=10000&format=csv

Eller https://dawa.aws.dk/replikering/haendelser?entitet=dar_adressepunkt_historik&txidfra=3250000&txidtil=3250209&format=csv

Hvad er det mon der sker?

Hej Simon,

Det er meningen, at du starter med et udtræk for den senste transaktion der er udført i dawa. Du kan se transaktions-ID på her: https://dawa.aws.dk/replikering/senestetransaktion . Denne transaktions-id bruger du til alle dine første udtræk, eksempelvis:

https://dawa.aws.dk/replikering/udtraek?entitet=dar_adressepunkt_historik&txid=3250266

Dette udtræk indeholder den fulde, officielle historik for alle adressepunkter. Du har ikke noget at bruge de gamle hændelser til, da udtrækket indeholder hele historikken.

Det er selvfølgelig stadig en fejl, at du ikke kan hente de gamle udtræk. Jeg vil undersøge nærmere hvad fejlen skyldes.