Autoarhiiv · 2026

Autoarhiiv.ee

Sisesta registreerimismärk või VIN-kood ja näe sõiduki kogu müügiajalugu.

Eesmärk

Kasutatud auto ostja peaks ühe numbrimärgi või VIN-koodi otsinguga nägema auto päris ajalugu: varasemaid kuulutusi, hinnamuutusi ja läbisõitu. Ka siis, kui müüja on kuulutuse vahepeal kustutanud.

Tulemus numbrites

Mis muutus

134 981

sõidukit andmebaasis

124 431

autot, mille VIN-kood on teada

59 658

salvestatud hinnamuutust

4,8×

kiirem otsing pärast optimeerimist

Olukord

Kasutatud auto ostja ei näe tavaliselt, kas hind on vahepeal tõusnud või langenud, või kas sama auto on juba kolmandat korda müügis. Kui auto müüakse, kaob kuulutus portaalist ja koos sellega kogu ajalugu. Autoarhiiv.ee lahendab selle: sisesta numbrimärk või VIN-kood ja näed auto kogu leitud müügi- ja hinnaajalugu, eesti ja soome keeles.

Terve platvormi (andmete kogumise, andmebaasi, otsingu ja kahekeelse veebi) ehitasin üksi umbes kahe kuuga.

Piirangud

  • Andmeid tuleb pidevalt koguda üle 20 avalikust kuulutuste allikast, ka Soomest, ilma neid allikaid üle koormamata.
  • Kallist pilveandmebaasi ega eraldi serverit eelarve ei lubanud. Kõik pidi mahtuma väikesele kodusele võrgukettale (NAS) ja ühele rendiserverile (VPS).
  • Andmebaas kasvab kogu aeg (praegu ligi 1,4 GB ja umbes 159 000 kuulutust) ja peab jääma kiireks.
  • Sama auto on eri allikates eri kujul: vahel ainult numbrimärgiga, vahel ainult VIN-koodiga. Keegi ei seo neid käsitsi kokku.

Lahendus

Kuidas lahendasin

Andmete kogumine

Kuidas hoida andmed värsked kümnetest allikatest, ilma neid üle koormamata?

Iga allika puhul kohandub kogumise tempo ise. Kui kõik on korras, läheb see samm-sammult kiiremaks. Kui allikas annab märku koormusest, aeglustub kohe. Varem olid need kiirused käsitsi paika pandud ja tegelikult lihtsalt oletused. Vanema ajaloo jaoks, enne kui arhiiv ise tööle hakkas, kasutasin avalikke veebiarhiive.

Andmekvaliteet

Kuidas aru saada, et kaks kuulutust eri allikatest (üks ainult numbrimärgiga, teine ainult VIN-koodiga) on tegelikult sama auto?

Numbrimärgi ja VIN-koodi seos leitakse otsinguteenuste kaudu. Iga katse jääb kirja: kui vastust kindlasti pole, seda enam uuesti ei proovita, aga vea korral proovitakse hiljem uuesti. VIN-koodi alguses on tootja kood (WMI) ja süsteem kontrollib, kas see sobib kuulutuses märgitud automargiga. Kontroll teab ka seda, et näiteks Cupra ja Seat, Dacia ja Renault või Lexus ja Toyota on omavahel seotud. Kui muud võimalust pole, loeb süsteem numbrimärgi kuulutuse fotolt (YOLO-tuvastus ja OCR), tavalise protsessori peal, ilma kalli graafikakaardita.

Andmemudel

Eestis võib numbrimärk liikuda ühelt autolt teisele. Vana lahendus kirjutas siis eelmise auto andmed lihtsalt üle.

Tegin numbrimärkide jaoks logi, kuhu ainult lisatakse ja kust midagi ei kustutata. Kui uue auto VIN-kood välja ilmub, parandab süsteem seose ise ära. Kui number vahetab autot, ei lähe enam midagi kaotsi.

Vea parandus

Kaks aktiivset kuulutust sama autoga panid hinna iga öö kahe väärtuse vahel hüppama: 27 900 → 24 900 → 27 900 → 24 900.

See juhtus päriselt: edasimüüja pani sama auto müüki kahe eri kuulutusena. Süsteem jälgis hinda auto kaupa, mitte kuulutuse kaupa, nii et kaks kuulutust „võitlesid” iga öö hinna pärast. Parandus oli väike, aga oluline: nüüd jälgitakse viimast hinda iga kuulutuse kohta eraldi. Kui kaks autot osutuvad samaks ja liidetakse, suunab vana link edasi uuele, nii et ükski link ei lähe katki.

Kiirus

Kui autosid oli 121 000 ja andmebaas 1,4 GB suur, läksid otsing ja statistika aeglaseks.

Kord ööpäevas, kui võrguketas muidu puhkab, teeb taustatöö SQLite’i andmebaasist eraldi lihtsustatud koopia just lugemise jaoks: 460 MB asemel 32,7 MB. Tulemus: otsing 0,411 sekundi asemel 0,085 sekundit (4,8 korda kiirem), automarkide kaupa statistika 7,5 korda kiirem ja kahtlase läbisõidu otsimine 3,3 korda kiirem.

Toode

„Veidra läbisõiduga autode” nimekiri pidi eristama võimalikku pettust tavalisest trükiveast.

Süsteem võrdleb sama auto andmeid eri aegadel ja märgib ära, kui läbisõit on langenud üle 5000 km. Märgitud aktiivsed kuulutused vaadatakse hiljem uuesti üle, sest müüjad kirjutavad läbisõidu tihti valesti ja parandavad selle ise. Lehel on see ka ausalt kirjas: enamik märkeid on trükivead, mitte pettus.

Tulemus

Autoarhiiv.ee on täna Eesti (ja osaliselt Soome) suurim avalik autode müügiajaloo andmebaas: 134 981 sõidukit, 124 431 teadaolevat VIN-koodi ja 59 658 salvestatud hinnamuutust, kahes keeles. Kõik (andmete kogumine, andmebaas ja veeb) töötab ühel väikesel kodusel võrgukettal ja ühel rendiserveril, ilma kalli pilveandmebaasita. Öine uuendus võtab umbes 40–50 minutit ja varukoopiaid hoitakse 14 päeva.

Edasi

Andmed ja allikate hulk kasvavad edasi. Järgmisena teen täpsemaks selle, kuidas süsteem harvemate automarkide puhul sama auto ära tunneb.

Järgmine samm

Sinu projekt võiks olla järgmine