Infra-API tietosisältö zip-paketteina

36 views
Skip to first unread message

Juhani Pirttilahti

unread,
May 5, 2020, 5:56:17 AM5/5/20
to rata.digitraffic.fi
Moi,

Ehdottaisin, että Infra-APIn tietosisältöä alettaisiin jakamaan myös zip-paketteina. Taustalla tässä on se, että laajempien tietokokonaisuuksien hakeminen rajapinnan kautta varsinkin pidemmältä aikaväliltä tuntuu kuormittavan palvelinta ja kyselyt ovat hitaita.


Solita / Jüppe

unread,
May 6, 2020, 1:12:12 AM5/6/20
to rata.digitraffic.fi
Moi,

kaikki data on cachetettavaa ja kulkee HTTP-cachen läpi, joten periaatteessa hiukan saivarrellen jokainen Infra-APIsta ladattu URL onkin jo "jaettuna zip-pakettina" heti ensimmäisen latauksen jälkeen. Iso osa metodien palauttamasta datasta on laskennallista eikä odottele valmiina missään tietokannassa, joten mahdollinen eksplisiittisempi zippeinä jakelu pitäisi luultavasti toteutettaisiin samalla tavalla, eli lataamalla määrämuotoiset urlit valmiiksi taustalla. Siinä mielessä tämän toteuttaminen "konepellin alla" toisi toki lisää mahdollisuuksia, että 5 minuutin request-timeout voitaisiin ohittaa.

Pitkillä aikaväleillä lataaminen on tosiaan hidasta, sillä Infra-API laskee dataa eri aikaväleille aina kun datassa on jollakin logiikalla mahdollisesti muutoksia. Mitä enemmän dataa ladataan (propertyName-parametrissa listatut kentät), sitä enemmän laskettavaa.

Voisitko kertoa millaisista URLeista tarkalleen lataat dataa, niin voisin katsoa sattuisiko niiden suhteen olemaan Infra-APIssa helppoja optimointeja toteutettavissa?

Kiitos!

Juhani Pirttilahti

unread,
May 6, 2020, 6:42:16 AM5/6/20
to rata_digi...@googlegroups.com

Solita / Jüppe

unread,
May 6, 2020, 9:47:40 AM5/6/20
to rata.digitraffic.fi
Moi,

näissä ei taida toteutuksen puolella olla matalalla roikkuvia hedelmiä.

Ensimmäisessä ratakilometrivälien laskenta on raskasta. Tämä on liikennepaikkavälien suhteen toteutettu reittihaulla, ja vaikka yksittäinen haku kestääkin vain kymmeniä millisekunteja, niin niitä tehdään yksi jokaista väliä kohden jokaisella "mahdollisella" muutosajanhetkellä. Voit aina sivuttaa kyselyä vaikkapa aikaväleillä tai startIndex/count-parametreilla.

Jälkimmäisessä ei sinänsä ole mitään erityisen raskasta, mutta elementtien suuri lukumäärä aiheuttaa äkkiä kokonaiskeston kasvamisen kun vähänkin joudutaan iteroimaan aikavälejä. Elementin liikennepaikkojen selvittely sisältää spatiaalikyselyn liikennepaikkojen kanssa, ja elementin raiteiden mahdolliset muutosajankohdat lisääntyvät herkästi ratainfran muutoksissa (katson saisiko tähän hiukan parannusta).

Molempiin tapauksiin pätee, että vaikka olisikin hienoa että ratainfran ylläpitäjät ehtisivät korjata ja tarkentaa historiallista tietoa aina paremmaksi ja paremmaksi, niin käytännössä muutokset kohdistuvat lähes yksinomaan ~nykyhetkeen ja tulevaisuuteen. Historia (eli siis n. pari kuukautta sitten ja siitä taaksepäin) ei siis juurikaan muutu, eikä sinun todennäköisesti kannata hakea sitä uudelleen kovinkaan usein.

Huomaa myös, että sinun kannattaa tehdä latauksia vain yhdessä säikeessä. Infra-API:n ja Jeti-API:n yhteisessä tietokannassa on käytössä vain 2 vCPU:ta, joten rinnakkaisuus alkaa nopeasti hidastamaan suoritusta.

Juhani Pirttilahti

unread,
May 6, 2020, 12:53:19 PM5/6/20
to rata.digitraffic.fi
Moi,

Kiitos vinkeistä! Sain vuoden siivuina ulos kumpaakin tietoa. Vähän arvelinkin, että historia ei juurikaan muutu. Voin siis huoletta tehdä toteutuksen, joka poimii ajankohdasta x eteenpäin muuttunutta tietoa ja päivittää sillä paikallista kantaa.
Reply all
Reply to author
Forward
0 new messages