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 näeb tavaliselt ainult praegust kuulutust. Ta ei näe, kas hinda on vahepeal tõstetud või langetatud, kas sama auto on juba kolmandat korda müügis või kas läbisõit oli aasta tagasi suurem. Kui auto müüakse, kaob kuulutus portaalist ja koos sellega kogu ajalugu. Autoarhiiv.ee hoiab selle alles: sisesta numbrimärk või VIN-kood ja näed auto kogu leitud müügi- ja hinnaajalugu, eesti ja soome keeles.
Idee on lihtne, teostus mitte. Üheksa kuulutusportaali (kaheksa Eestis ja üks Soomes) kirjeldavad sama autot eri moel: ühes on numbrimärk, teises VIN-kood, kolmandas ainult pildid. Mudelinimed on kirjutatud tuhandel eri viisil, hinnad on vahel vigased ja numbrimärgid liiguvad autolt autole. Kui need andmed pimesi kokku panna, saab andmebaasi, mis valetab enesekindlalt. Suurem osa tööst läks sellele, et süsteem oskaks kahelda: millal on kaks kuulutust tõesti sama auto, millal on hind päris ja millal on parem mitte midagi väita.
Terve platvormi (andmete kogumise, andmebaasi, otsingu ja kahekeelse veebi) ehitasin üksi umbes kahe kuuga. Iga probleemi juures on kirjas ka see, mis esimese hooga ei töötanud.
Piirangud
- Andmed tulevad üheksast kuulutusportaalist (üks neist Soomes) ning numbrimärgi ja VIN-koodi otsinguteenustest. Ükski neist ei tohi minu pärast aeglasemaks jääda.
- Kallist pilveandmebaasi eelarve ei lubanud. Kogumine ja andmebaas töötavad väikesel kodusel võrgukettal (NAS), veeb ühel rendiserveril (VPS).
- Andmebaas kasvab iga öö (praegu ligi 1,4 GB) ja peab jääma kiireks ka siis, kui ridu on kordades rohkem.
- Vale liitmine on hullem kui liitmata jätmine. Kaks eri autot ühes ajaloos annavad ostjale vale pildi ja seda on hiljem väga raske lahti harutada.
- Kuulutustes on ka eraisikute andmeid. Need ei tohi avalikule lehele jõuda.
Lahendus
Kuidas lahendasin
Andmete kogumine
Kuidas hoida andmed värsked üheksast portaalist, ilma et ükski neist üle koormatud saaks?
Mis ei töötanud: igale allikale käsitsi paika pandud kiirus. Need numbrid olid tegelikult oletused: ühe allika jaoks liiga ettevaatlikud, teise jaoks liiga kiired. Kui allika server muutus, jäid need vanaks ja keegi ei märganud.
Kuidas see nüüd käib: iga allika tempo kohandub ise, samal põhimõttel, millega internetiühendus kiirust valib. Kui vastused tulevad kiiresti ja vigadeta, läheb kogumine samm-sammult kiiremaks. Kui allikas annab märku koormusest, tõmbab süsteem kohe tuntavalt tagasi. Nii leiab iga allikas ise oma mugava kiiruse ja minu oletusi pole enam vaja.
Kogu töö käib öösel kell 3: kõik allikad, fotode kontroll, andmebaasi hooldus ja lõpuks sünkroonimine veebiserverisse üle krüpteeritud ühenduse. Vanema ajaloo jaoks, enne kui arhiiv ise tööle hakkas, kasutasin avalikke veebiarhiive.
Mis veel ei töötanud: ühel ööl märgiti ühe portaali 5 838 kuulutusest 4 636 korraga eemaldatuks. Portaal polnud tühjaks läinud. Paar võrguviga keset lehtede läbikäimist nägid välja täpselt nagu „nimekiri sai otsa” ja kõik, milleni süsteem ei jõudnud, tundus kadunud. Nüüd eristatakse ebaõnnestunud päringut päriselt tühjast lehest. Ühe korduskatse järel katkestatakse kogu läbikäik ja eemaldamist sel ööl ei tehta, sest poolikust nimekirjast ei saa järeldada, mis on kadunud.
Teine sama kujuga viga oli veel suurem. Kiiruuenduse võrdlus võttis „praegu müügis” nimekirja ainult ühest portaalist, aga „meil aktiivsed” kõigist. Iga öö märgiti kõigi teiste portaalide kuulutused eemaldatuks, kokku 96 900 kuulutust, ja järgmisel ööl avastati need „uute” kuulutustena uuesti. Parandusega tuli ka taastamine: kui ekslikult eemaldatud kuulutus paistab jälle müügis olevat, muutub ta tagasi aktiivseks, aga ajalukku ei kirjutata selle pärast ühtegi väljamõeldud hinnamuutust.
Sama loogika määras ka selle, kus tohib kiirust võita. Kui kõige uuemate järgi sorteeritud nimekirjas on terve leht juba tuttav, võiks läbikäigu lõpetada. Aga eemaldamise tuvastus vajab tervet nimekirja, nii et see lühitee on lubatud ainult seal, kus eemaldamist sama läbikäigu pealt ei arvutata. Ühes sellises portaalis tähendas see 2 280 lehe ja üle kahe tunni asemel 8 lehte ja alla minuti.
Sama auto
Ühes portaalis on autol numbrimärk, teises ainult VIN-kood. Kuidas aru saada, et see on sama auto?
Numbrimärgi ja VIN-koodi seos otsitakse avalikest otsinguteenustest. Iga katse jääb kirja: kui vastust kindlasti pole, seda enam uuesti ei küsita, aga ühenduse vea korral proovitakse hiljem uuesti. Nii ei koormata teenuseid sama küsimusega iga öö.
VIN-koodi esimesed kolm märki näitavad tootjat. Süsteem kontrollib, kas see sobib kuulutuses märgitud automargiga, ja teab, et näiteks Cupra ja Seat, Dacia ja Renault või Lexus ja Toyota on sama pere. Kui VIN-kood ja mark omavahel ei klapi, ei usaldata kumbagi.
Kõige olulisem reegel on aga see, et need kaks viga pole võrdsed. Kui süsteem jätab kaks sama auto kuulutust liitmata, saab selle hiljem alati parandada. Kui ta liidab kaks eri autot, on ühe auto ajalugu rikutud ja seda on väga raske märgata. Seepärast on liitmise lävi meelega kõrge.
Pildituvastus
Paljudes kuulutustes pole numbrimärki tekstina üldse. See on näha ainult fotol.
Sel juhul loetakse numbrimärk kuulutuse fotodelt. Kõigepealt leiab tuvastusmudel (YOLO) pildilt numbrimärgi asukoha, siis loeb tekstituvastus (OCR) selle märgid. Mõlemad mudelid on väikesed ja töötavad tavalisel protsessoril.
Üks foto võib eksida: peegeldus, viltune nurk või pool märki varjus. Seepärast on vastuvõtmise reegel range. Tulemus kehtib, kui üks foto on väga kindel (vähemalt 85%) või kui vähemalt kaks eri fotot jõuavad sama numbrini. Üks ebakindel lugemine ei muuda andmebaasis midagi.
Just see pildilt loetud numbrimärk on tihti ainus tõend, et kaks eri portaalis olevat kuulutust on sama auto. Kui tekstis ühtegi tunnust ei olnud, lisati kaks rida ja alles fotolt selgus, et need kuuluvad kokku.
Mis ei töötanud: alguses oli kindluse lävi 50%. Kontrollisin seda 500 auto peal, mille päris numbrimärk oli juba teada. Selgus, et umbes iga kuues vastu võetud lugemine oli vale, mõni isegi 97% kindlusega: kaadrisse jäänud silt või teise auto number. 85% juures langes valesti vastu võetud autode osa 3,6%-lt 0,8%-le.
Hiljem ilmus uus viga, mida juhuslik valim ei näidanud. Ühe edasimüüja fotodel oli korduv kleebis või vesimärk, näiteks „100PRE”, ja tekstituvastus luges selle numbrimärgiks 83–99% kindlusega. 200 kõige värskema auto peal oli täpsus ainult 40%. Lahendus oli teine, ainult numbrimärkidele õpetatud lugeja, mis vaatab sama väljalõiget üle. Kõik kuus valet lugemist lükkas ta ümber ja kõik neli õiget kinnitas. Koos oli tulemus samal valimil 7 õiget 7-st.
Kolmas õppetund oli välismaiste numbrite kohta. Kujul ABC123 lugemisi pidasin alguses vigadeks, sest arhiivis polnud selliseid numbreid peaaegu üldse. Tegelikult olid need Soomest toodud autod, mis seisid müügiplatsil veel Soome numbriga. Väljalõikelt oli näha sinine EL-i riba tähtedega FIN. Selline number on auto eelmine number ja Eesti registrist seda ei leia, aga see on õige ja aitab sama autot ära tunda.
Ka kiirus tuli üle vaadata. Varuvariant, mis luges teksti kogu fotolt, andis umbes 5% tulemustest, aga võttis umbes 80% ajast ja 8 GB mälu. Kui see vaikimisi välja lülitada, läks töötlus 3,6 autolt minutis 30 autole minutis, 8 335 auto järjekord 38 tunnilt 4,6 tunnile ja mälukasutus 0,24 GB-le.
Numbrimärgid
Eestis võib numbrimärk liikuda ühelt autolt teisele. Vana lahendus kirjutas siis eelmise auto andmed lihtsalt üle.
Mis ei töötanud: numbrimärgi käsitlemine auto püsiva tunnusena. Kui sama number ilmus uue autoga, „varastas” uus auto selle vanalt ära ja vana auto ajalugu jäi numbrita, nii et otsing seda enam ei leidnud.
Kuidas see nüüd käib: numbrimärkide jaoks on eraldi logi, kuhu ainult lisatakse ja kust midagi ei kustutata. Iga auto juures on näha, millal tal milline number oli. Kui uue auto VIN-kood välja ilmub, parandab süsteem seose ise ära.
Andmed näitasid ka seda, kui ohtlik oleks numbri järgi liitmine: umbes 10% juhtudest, kus kahel real oli sama number, olid VIN-koodid omavahel vastuolus, näiteks Mercedes C 200 ja Nissan Qashqai. Seepärast on ühine number nüüd ainult vihje. Liitmise otsustavad tunnused, mis autolt autole ei liigu.
Vigased andmed
Üks portaal avaldas Porsche 911 kuulutusel Volvo VIN-koodi. Iga uus andmete kogumine tegi sellest ühe auto asemel kaks.
See oli viga allika enda andmetes, aga minu süsteem tegi selle hullemaks. Iga kord, kui kuulutus uuesti läbi käis, võttis vale VIN-kood Porschelt numbrimärgi ära ja süsteem lõi juurde teise Porsche. Andmebaasi tekkis auto, mida päriselt polnud.
Parandus oli kahes osas. Esiteks kontrollitakse VIN-koodi tootjaosa enne, kui seda üldse usaldatakse: Volvo kood Porsche kuulutusel lükatakse tagasi. Teiseks võib numbrimärgi üleminek teisele autole nüüd ainult vana seose nõrgemaks muuta, mitte seda kustutada. Kui midagi läheb valesti, saab selle alati tagasi pöörata.
Sarnane juhtum oli ka ühe Mercedese kahe rea liitmisel ühise VIN-koodi alusel. Liitmine ise oli õige, aga alles jäi vanema rea kirjeldus, mis oli vale. Nüüd otsustab sellise vaidluse ametlik register: välja muudetakse ainult siis, kui register kinnitab ühte ja lükkab ümber teise.
Hinnakontroll
2021. aasta Renault Megane ilmus nelja portaali hinnaga 99 000 €. Päev hiljem oli hind 10 990 €.
Mis juhtus: sama auto ilmus 80 minuti jooksul neljas portaalis vale hinnaga ja parandati järgmise päeva jooksul. Sama juhtus kahe Škoda Enyaqiga: 99 000 € asemel 29 990 €. Vana loogika oleks salvestanud selle ajaloos hinnalanguseks ja auto oleks jõudnud „suurimate hinnalangetuste” nimekirja tippu.
Esimene mõte oli, et see on minu andmete lugemise viga. Ei olnud: üks allikatest annab hinna otse masinloetaval kujul ja ka seal oli 99 000. Tõenäoliselt tuli viga edasimüüja tarkvarast, mis saadab kuulutused korraga mitmesse portaali.
Kuidas see nüüd käib: uue auto esimest hinda ei avaldata kohe, kui see ei sobi ühegi sama mudeli kinnitatud hinnaga. Kui võrdlusautosid on liiga vähe, ei otsusta süsteem midagi ega tembelda midagi valeks. Võrdlesin ka päris juhtumeid: väljamõeldud hinnad olid õigest 2,8–9 korda suuremad, suurim päris sama päeva hinnalangus aga oli 1,25-kordne. Nii suure vahe juures on vigane hind ja päris allahindlus kergesti eristatavad.
Samasse ritta kuuluvad ka kohatäitjad. Hind 1, 3, 11 või 21 € tähendab tegelikult „tee pakkumine” ega saa kunagi auto põhihinnaks. Päris madalaimad hinnad algavad 51 eurost. Oksjonil kehtib ainult lõpphind, mitte jooksvad pakkumised.
Mis veel ei töötanud: ühe portaali vana hinnalugeja salvestas kolmekohalise hinna ainult esimese numbrina: 399 € auto sai hinnaks 3 €. Lugeja oli ammu parandatud, aga vigased read olid alles ja lehel näha. Õnneks jäi õige number teise välja alles, näiteks 899 ja 8. Parandasin väärtuse ainult siis, kui see oli üks number ja võrdus teise välja esimese numbriga. Nii parandati 473 väärtust ja midagi ei arvatud. Sama reegel oleks oksjoni alghinna väljal teinud kahju: 1 € alghind ja 131 € lõpphind läbivad testi puhtjuhuslikult. Seepärast jäi see väli puutumata.
Kahtlasi hindu kontrollitakse ka kuulutuse arhiveeritud koopia vastu. Esimesel katsel tuli 80% vastuseks „tõendit pole”. See nägi välja nagu puhas tervisetõend, aga tegelikult küsisin koopiat täpselt selle hetke kohta, millal hind salvestati, ja sellist koopiat enamasti polnud. Nüüd otsitakse lähim olemasolev koopia. Hinda nimetatakse valeks ainult siis, kui koopia on kuni 7 päeva kaugusel. Kaugema koopia puhul võis müüja hinda vahepeal päriselt muuta.
Sealt tuli ka reegel: tõendita pole andmeid. 622 autot, mille taga polnud ühtegi kuulutust ega linki, kustutati koos nende hindadega, samuti 255 hinnapunkti, mida ükski kuulutus ei kinnitanud. Enda kogumise ajal loetud hinnad jäävad alles, sest ainult need näitavad, mida kuulutus vahepeal küsis.
Hinnaajalugu
Kaks aktiivset kuulutust sama autoga panid hinna iga öö 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 viimast hinda auto kaupa, mitte kuulutuse kaupa, nii et kaks kuulutust „võitlesid” iga öö hinna pärast ja ajalukku kogunes väljamõeldud hinnamuutusi. Parandus oli väike, aga oluline: nüüd jälgitakse viimast hinda iga kuulutuse kohta eraldi.
Liitmisel on veel üks lõks. Kui kaks rida osutuvad samaks autoks, pole väärtus numbrimärgis (see oli juba teada), vaid kõiges, mis teise rea küljes ripub: selle kuulutustes ja eriti vanades hindades. Kaks portaali võivad sama autot kirjeldada 17-minutilise vahega, nii et kumbki ei tea teisest. Liitmine tõstab kogu ajaloo ühele reale ja vana link suunab edasi uuele.
Liitmise tööriist ei tee vaikimisi midagi, vaid näitab, mida ta teeks. Päris käivitusel teeb see enne varukoopia ja kirjutab iga liitmise logisse enne, kui selle ära teeb, nii et iga vale liitmise saab üles leida. Hiljem selgus, et varem liidetud ridadelt oli osa hinnalangusi puudu, ja need taastati eraldi skriptiga.
Fotod
Kuulutuse fotod salvestati ainult üks kord. 618 aktiivsel autol ei olnud ühtegi pilti ja osa pildilinke oli juba katki.
Probleemil oli kaks põhjust. Müüjad avaldavad tihti enne teksti ja lisavad pildid tunde või päevi hiljem. Kui süsteem jõudis kuulutuseni vahepeal, jäi auto igaveseks ilma piltideta. Teiseks muutuvad mõnes portaalis pildiaadressid iga kord, kui müüja galeriid muudab, ja vanad lingid kaovad kohe. Mõõtsin järele: ühes portaalis oli 13% aktiivsete ja 97% eemaldatud kuulutuste kaanepilt katki. Teises portaalis töötasid aktiivsete kuulutuste pildid 100% ja eemaldatute omad 93%. See sõltub allikast, mitte pildi vanusest.
Juhtum, mis selle käima lükkas: 2024. aasta VW Passat oli müügis kahes portaalis. Leht eelistas uuemat kuulutust ja selle 28 pildist 11, kaasa arvatud kaanepilt, olid katki. Kasutaja nägi tühja kohatäidet, kuigi teise portaali töötav galerii oli olemas.
Kuidas see nüüd käib: öine kontroll vaatab pildid üle, küsib vajadusel allikalt uued ja kirjutab tagasi ainult siis, kui uus on tõestatult parem. Reegel on lihtne: head pilti ei asendata kunagi mitte millegagi. Tühi vastus, aegunud päring või allika uus kujundus ei saa ühtegi pilti kustutada. Link eemaldatakse ainult siis, kui pildiserver ise ütleb, et seda pole.
Andmete puhastus
Mudeli veerus oli 4 763 eri väärtust ja kütuse kohta 51 eri kirjapilti umbes kümne päris kütuse jaoks.
Iga portaal kirjutab samu asju omamoodi. Ainuüksi Škoda Octavia oli andmebaasis 35 eri kujul. Ilma puhastuseta ei saa teha ei statistikat ega mudelipõhiseid lehti, sest üks mudel on jagatud kümneteks tükkideks.
Iga välja (mark, mudel, kütus, käigukast, keretüüp) jaoks on eraldi reeglid, mis viivad eri kirjapildid ühe nime alla. Mark ja mudeli kombinatsioonide arv langes nii 3 863-lt 2 225-le. Kõige tähtsam reegel on aga see, et midagi ei arvata. Kui väärtust ei saa kindlalt ühele nimele viia, jääb see nagu oli. Parem üks ebaühtlane rida kui vale mudel.
Omaette juhtum olid autod, mille marki polnud kuulutuses üldse. Neid oli 11. VIN-koodi esimesed kolm märki näitavad tootjat ja sama koodiga autosid oli andmebaasis juba teisigi, mille mark oli teada. Näiteks VR7 oli 484 autol ja kõik need olid Citroënid. Nii sain 8 autot tuvastatud andmebaasi enda põhjal. Üks lõks oli SsangYong: firma nimetas end 2023. aastal ümber KGM-iks, aga tootjakood jäi samaks. Kui oleksin koodi seostanud ainult ühe nimega, oleks süsteem pidanud kõigi uute KGM-ide VIN-koode vastuolus olevaks ja need ära kustutanud. Viimased kaks olid Bolloré Bluecar (Pariisi endine renditav elektriauto) ja Compassi haagissuvila, mis läks koos teiste umbes 240 mitte-autoga eraldi. 121 371 auto seast on tuvastamata üks.
Ka VIN-koodide seas oli prügi. VIN ei sisalda kunagi tähti I, O ja Q, sest need on liiga sarnased numbritega 1 ja 0. Kui VIN-is on selline täht, on tegu ümberkirjutamise veaga ja õige kuju on teada. Kontrollnumbriga koodide peal pidas see parandus paika kuuel juhul kuuest. Nii parandati 37 koodi. 25 väärtust ei olnud VIN-koodid üldse, näiteks kuulutuse lause „MADALDUSVEDRUDEGA” või 12345678912345679, ja need kustutati.
Kiirus
Kui autosid oli 121 000 ja andmebaas 1,4 GB suur, läksid otsing ja statistika aeglaseks.
Mõõtsin enne, kui midagi muutsin. Põhitabel oli 460 MB, millest 262 MB olid suured andmeväljad (pildinimekirjad ja muu), mis asusid tabelis enne tavalisi välju. Umbes kahel kolmandikul ridadest ei mahtunud rida ühele andmebaasi lehele ära. Iga otsing pidi seetõttu lugema kõvakettalt palju rohkem, kui tal päriselt vaja oli.
Kuidas see nüüd käib: andmebaas ei muutu öiste uuenduste vahel. Seepärast teeb taustatöö iga öö sellest eraldi lihtsustatud koopia just lugemise jaoks, kus on ainult otsinguks vajalikud väljad: 460 MB asemel 32,7 MB. See mahub täielikult mällu.
Tulemus: otsing 0,411 sekundi asemel 0,085 sekundit (4,8 korda kiirem), automarkide kaupa statistika 0,889 sekundi asemel 0,119 sekundit (7,5 korda kiirem), väärtuse languse arvutus 6,1 korda kiirem ja kahtlase läbisõidu otsimine 3,3 korda kiirem. Nimekirja 1 060. lehekülg avaneb sama kiiresti kui esimene, umbes 7 millisekundiga.
Läbisõit
„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 5 000 km. Enamik neist pole pettus: müüja kirjutas 102 000 asemel 10 100 ja parandas selle järgmisel päeval ise. Seepärast vaadatakse märgitud aktiivsed kuulutused hiljem uuesti üle ja parandatud juhtumid kaovad nimekirjast.
Lehel on see ka ausalt kirjas: enamik märkeid on trükivead, mitte pettus. Nimekiri on vihje, mida kontrollida, mitte süüdistus.
Mis ei töötanud: lävi on kolm korda muutunud. 50 km juures täitus nimekiri ümardamistega. 500 km juures jäi sisse ikka tavaline müra kuulutuste vahel: müüja ümardab või loeb näidu eri ajal. 5 000 km juures jäävad alles juhtumid, mida tasub päriselt vaadata.
Privaatsus
Kuulutustes on müüjate telefoninumbreid, e-posti aadresse ja nimesid. Need ei tohi arhiivi jääda.
Arhiiv vajab auto ajalugu, mitte inimeste andmeid. Seepärast eemaldatakse kuulutustest e-posti aadressid, telefoninumbrid ja eraisikute nimed juba kogumise ajal ning sama tehti ka kõige varem salvestatuga. Eraisiku nimi muutub lihtsalt „Eraisikuks”.
Kõige keerulisem osa on numbrid. „Fiat 500 2014” ja Eesti mobiilinumber näevad välja sarnased. Seepärast ei loeta numbrit telefoniks, kui see on aastaarv, kui selle küljes on tähti (VIN-kood või varuosa number) või kui sellele järgneb ühik. Samas loetakse see ikka telefoniks, kui selle ees on sõna nagu „tel” või järel keelte märge („53269898 EST RUS”) või kui see on meelega peidetud, näiteks „5648085üks”. Kõik kohad, mis andmeid kirjutavad või näitavad, kasutavad sama reeglit, nii et need ei saa omavahel lahku minna.
Nimede eemaldamisega kadus aga info, millele üks funktsioon toetus: kas auto vahetas vahepeal omanikku? Nüüd hoitakse iga auto juures ainult müüjagrupi järjekorranumbrit, mis ütleb ainult, kas kaks kuulutust on sama müüjalt. Sellega ei saa inimest ära tunda ega kahe eri auto müüjaid omavahel siduda. Ajajoonel ja hinnagraafikul on „Uus müüja” ikka näha.
Kord palus fotograaf eemaldada oma pildid ühe auto juurest. Arhiiv ise pilte ei hoia, vaid näitab portaali pildilinki, nii et eemaldada tuli link. Ühest kustutamisest poleks piisanud, sest kümme kogujat ja öine pildikontroll oleksid need järgmisel ööl tagasi toonud. Nüüd on püsiv keelunimekiri, mis rakendub nii öise töötluse lõpus kui ka vahetult enne veebi saatmist. Kui seda ei õnnestu rakendada, jääb andmete saatmine sel ööl ära. Ka veeb ise kontrollib seda nimekirja, nii et pildid ei ilmu uuesti ka siis, kui mõni samm vahele jääb.
Kontroll
Kuidas teada, et andmebaas ei valeta, kui ridu on üle 120 000 ja ükski inimene neid läbi ei vaata?
Iga öö käib läbi kontroll, mis otsib võimatuid olukordi: hinda, mida ükski kuulutus ei kinnita, pealkirja, mis ei vasta ühelegi kuulutusele, või VIN-koodi, mille järgi on auto teisest aastast kui kuulutuses. See ei paranda midagi ise. Ta annab teada ainult uutest leidudest, mitte kogu vanast nimekirjast, nii et uus viga paistab kohe silma.
Mis ei töötanud: esimene kord leidis kontroll 976 probleemi. Suurem osa neist oli viga kontrollis, mitte andmetes. 392 „vale pealkirja” leidu olid tegelikult parandused, mis olid pealkirja just õigeks teinud. 475 aastavastuolust 216 olid täpselt kahe aasta suurused ja peaaegu kõik uued laoautod: VIN-kood näitab mudeliaastat, kuulutus esmast registreerimist, ja müümata auto on registreerimisel tihti kahe mudeliaasta vanune.
Kõige huvitavam oli Mazda. VIN-koodi kümnes märk näitab mudeliaastat, sest seda nõuab USA reegel, mis kehtib ainult USA turu autodele. Mõõtsin iga tootjakoodi kohta, kui tihti see märk kuulutuse aastaga klapib. Enamikul oli see 98–100%, aga Euroopa turu Mazdade koodidel 0–58%. USA turu Mazdadel klappis 100%, nii et see oli täpselt see, mida reegel ennustab. Mazda 2, mille VIN „ütleb” 1992, on mudel, mida hakati tegema 2002. Aasta oli õige, VIN-i dekodeerimine oli selle auto puhul lihtsalt mõttetu. Need koodid jäävad nüüd aastakontrollist välja.
Pärast kontrolli enda parandamist oli leide 976 asemel 268 ja need olid päris andmevead, mida sai ükshaaval parandada.
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õige väärtuslikum osa on 27 388 eemaldatud kuulutust: autod, mida portaalides enam ei ole, aga mille ajalugu on siin alles.
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, varukoopiad tehakse töötava andmebaasi pealt ja neid hoitakse 14 päeva.
Otsingumootorite jaoks on lehel üle 126 000 aadressi ja 650 marki ning mudelit koondavat lehte. Mudelileht avatakse otsingumootoritele alles siis, kui sellel on vähemalt 20 autot, et õhukesed lehed ei kahjustaks tervet saiti.
Edasi
Andmed ja allikate hulk kasvavad edasi. Järgmisena teen täpsemaks selle, kuidas süsteem harvemate automarkide puhul sama auto ära tunneb, ja lisan hinnakontrolli ka nendele mudelitele, mille kohta on praegu liiga vähe võrdlusandmeid.