Hajutatud andmebaaside teema lahtikirjutus ja lugemisülesanded
Kõige lihtsamal juhul on meie andmed ühes konkreetses andmebaasis ühes arvutis. See on selgelt kõige kergemini hallatav viis ja enamasti võimaldab ka päringuid kõige kiiremini teha. Miks aga vahel niimoodi mitte teha? Üldiselt on kaks peamist põhjust, mis tekitavad hoopis erinevai probleeme ja ülesandeid:
- Data warehouse teema: vaja integreerida palju päris erinevaid infosüsteeme/andmebaase.
- Distributed databases teema: andmebaas on liiga suur ja/või liiga palju kasutajaid, et üks masin välja veaks, vaja jagada töö hulga masinate vahel
Data warehouse teema: kuidas eri andmebaase integreerida
Olukord: ettevõttes või organisatsioonis on palju eri osakondi oma infosüsteemide ja andmebaasidega. Näiteks, eraldi tootmisüksused, eraldi laoarvestuse, personali, finantsteenistuse üksused. Riigi mastaabis eraldi ministeeriumid ja ametid, näiteks politsei andmebaasid, kinnisvara andmebaasid jne. Sellised andmebaasid tekivad ja neid hallatakse üksteisest suhteliselt sõltumatult.
Seejuures on
- hea, et iga andmebaas jõuab tüüpiliselt ühes masinas kenasti töötada
- halb, et on väga keeruline teha süsteemi, mis teeks päringuid üle paljude eri andmebaaside korraga (a la päringus oleks korraga vaja infot laoarvestuse ja finantsteenistuse andmebaasidest).
Siin valdkonnas lahendatakse seda viimast, "halb" muret, reeglina sel viisil, et tehakse eraldi infot koondav andmebaas mida nimetatakse andmelaoks (data warehouse): sinna tõmmatakse regulaarselt infot kokku eraldi andmebaasidest. Selleks teeme iga baasi külge proge, mis ööseti pumpab päeva data kesksesse baasi ühisesse schemasse:
- sellelt saab teha joine
- tekivad päevased snapshotid
Et data warehouse tekiks, on vaja teha nn ETL proged:
- Extract proged
- Transform proged: teisendab data ühise schema jaoks
- Load: pumpad transformituddata warehouse andmebaasi
Põhieesmärk data warehousel: regulaarne ülevaateraportite tegemine.
Veidi sarnane või seotud teema on Linked data, mis on teine suund/eesmärk integreerimiseks: andmete scrapemine webist ja kogumine apidest ehk machine-readable web.
Selle ideoloogiline fookus läks "semantic web" projekti, mis muutus akadeemiliseks ja ebapraktiliseks. Põhiefekt oli push kasutada rdf-i universaalse dataformaadina. Tim Berners-Lee rebrandis ja refokuseeris oma tegevuse ses suunas hiljem kui "Linked Data" .
Distributed databases teema: kuidas jagada ühe baasi töökoormus mitme masina vahel
Olukord: üks konkreetne suur andmebaas (näiteks Skype kõned, kliendid jne või Google ülemaailmsed andmebaasid jms) on liiga suur selleks, et üks masin jõuaks temaga hakkama saada, st piisava kiirusega päringuid teha, andmeid lisada jne, või on meil vaja töökindlust tõsta, tehes andmebaasist klooni, millele kohe üle minna, kui põhiandmebaasi masin miskipärast rikkis või temaga ei ole ühendust.
Seejuures on kaks suurt küsimust:
- Kuidas infot andmebaasis eri masinate vahel jagada ja sünkroniseerida
- Kuidas teha päringuid kiiresti, kui info on eri masinate vahel jagatud