Uue projekti loomine hõlmab ka õige andmebaasi valimist andmete salvestamiseks. Paljud minu teada olevad arendajad valivad algusest peale vaikimisi relatsioonilise andmebaasi. Kuid kas see on parim otsus? Loomulikult sõltub see paljudest teguritest. Selles artiklis tahaksin teile tutvustada teisi andmebaasitüüpe, et teie valikuid lihtsustada ja aidata teil oma edasistes ettevõtmistes valmis olla.
Andmebaasi tüüp ei ole ainus teema, mida tuleks kaaluda. On palju muid küsimusi, mille üle tuleb mõelda, nt kui palju aktiivseid kasutajaid võib rakendusel olla? Kas vajate kõikjal tugevat järjepidevust? Kas mõnel juhul piisab võimalikust järjepidevusest? On nii palju küsimusi, millele ei ole otseseid vastuseid, sest "mida rohkem te sellesse süvenete, seda keerulisemaks see muutub". Niisiis, palun võtke arvesse, et see artikkel keskendub ainult andmebaasitüüpidele.
Võtke tass kohvi ja nautige seda lugemist.
Üldine andmebaasi klassifikatsioon
Alguses on hea teada, et on olemas kaks peamist tüüpi andmebaase: relatsioonilised (SQL) ja mitterelatsioonilised (NoSQL).
- SQL-andmebaasid on struktureeritud relatsiooniliselt, mis tähendab, et andmeid hoitakse tabelites ja nende vahel hoitakse seoseid.
- NoSQL (mitte ainult SQL) andmebaasid ei ole erinevalt relatsioonilistest andmebaasidest hästi struktureeritud ja võimaldavad seega suuremat kohanemisvõimet ja paindlikkust.
Lisaks kahele eespool nimetatud tüübile on veel üks tüüp, nimelt mälusisene andmebaas. Seda ei saa liigitada ei relatsiooniliseks ega mitterelatsiooniliseks, sest see on seotud sellega, kus andmeid füüsiliselt säilitatakse. Iga andmebaas võib olla salvestatud kettale või mällu.
Andmebaaside tüübid
1. Suhteline
Minu arvates on see kõige populaarsem andmebaasi tüüp. See töötab hästi struktuursete andmete puhul, kus soovite säilitada kirjete vahelisi seoseid. Andmebaasi struktuuri kirjeldatakse skeemiga.
Peamised eelised on tehingud (need aitavad tagada andmete terviklikkust ja järgivad ACID reegleid) ning võime käsitleda palju keerulisi päringuid.
Millal seda valida?
See on kasulik näiteks selliste andmete säilitamiseks, mis ei muutu struktuuriliselt väga tihti ja mida on vaja säilitada püsivalt:
- CRM (kliendisuhete haldamine),
- Tellimuste haldamine,
- ERP (Ettevõtte Ressursside planeerimine),
- andmete ladustamine või varude haldamine,
- raamatupidamine või rahandus.
Näited:
Amazon Aurora, Microsoft Azure SQL andmebaas, PostgreSQL, MySQL.
Paljude uute rakenduste jaoks ei piisa relatsioonilistest andmebaasidest ja teil on vaja rohkem kui ühte andmebaasi. Artikli järgmises osas keskendun mitterelatsioonilistele andmebaasidele.
2. Võti-väärtus
See salvestab iga andmeväärtuse unikaalse võtmega. See tähendab, et andmetele pääseb ligi ühe võtme abil, nagu seda tehakse hash mapis. Erinevalt relatsioonilistest andmebaasidest ei kehtesta see skeemi ega kirjete vahelisi seoseid. Enamik neist andmebaasidest ei toeta tavaliselt uuendamisoperatsioone. Andmete muutmiseks tuleb kogu olemasolev kogum üle kirjutada.
Millal seda valida?
See on kasulik andmete puhul, mida soovite kiiresti lugeda/kirjutada (kuid mida ei uuendata väga tihti):
- reaalajas pakkumiste tegemine, reklaamiteenindus,
- andmete vahemälu,
- seansi haldamine,
- ostukorvid,
- kliendi eelistused või profiili haldamine.
Näited:
Memcached, Amazon DynamoDB, Azure Cosmos DB, Redis.
3. Dokument
See salvestab dokumentide kogusid. Iga dokument sisaldab andmevälju, mis võivad olla lihtsad väärtused või keerulised elemendid, nagu nimekirjad või lastekogumid. Oluline on teada, et igal dokumendil võib olla erinev struktuur, isegi kui nad esindavad sama asja (iga dokument on ainulaadne ja areneb aja jooksul). Näiteks esimene kliendidokument sisaldab vähem infot kui teine:
{
"Eesnimi": "John",
"LastName": "Fake",
"Motorcycles:" [
{
"Model": "BMW",
"Year": 2020
}
]
}
{
"Eesnimi": "Alex",
"LastName": "Nolastname",
"Age": 15,
"Aadress": {
"Country": "Poola",
"Linn": "Kusagil"
},
"Motorcycles:" [
{
"Model": "BMW",
"Year": 2020
}
]
}
Millal seda valida?
See on kasulik andmete puhul, mille kiireks töötlemiseks on vaja paindlikku skeemi:
- toode kataloogid,
- CMS (sisuhaldussüsteem),
- kasutaja profiilid ja isikupärastamine.
Näited:
Amazon DocumentDB, Azure Cosmos DB, MongoDB, Redis.
4. Graafik
See kasutab graafi struktuuri ja koosneb kahest elemendist: sõlmedest ja servadest. Sõlmed on analoogilised tabeliridade või JSON-dokumentidega. Suudmed on sõlmede vahelised suhted - need on sama olulised kui sõlmed. Mõlemad võivad omada omadusi. Lisaks sellele võivad servad olla määratletud suunaga suhe.
Millal seda valida?
See on kasulik, kui teie andmed on sarnased graafikule, st andmeelementide vahelised seosed on dünaamilised ja muutuvad aja jooksul. Lisaks on see hea valik, kui äriline või tehniline meeskond vajadus mõista oma andmete siseseid seoseid. Mõned silmapaistvad näited on järgmised:
- organisatsioonilised skeemid,
- pettuse avastamine,
- sotsiaalsed graafikud/võrgustikud,
- soovitused mootorid,
- teadmiste graafikud.
Näited:
Amazon Neptune, Neo4j, ArangoDB, Titan.
5. Aegread
See salvestab andmeid, mis on organiseeritud aja järgi. Tavaliselt kogub see tohutuid andmehulki reaalajas. Seda kasutatakse kõige sagedamini andmete salvestamiseks, kuigi ajakohastamine on väga haruldane. Üldiselt kasutatakse primaarse võtmena ja/või andmete sorteerimisel ajatemplit. Mõned andmebaasid võimaldavad lisainformatsioonina määratleda sildid, näiteks andmete päritolu või tüüp.
Millal seda valida?
See on kasulik väikeste andmemahtude säilitamiseks, mis on lisatud järjestikku kronoloogilises järjekorras, näiteks:
- DevOps,
- rakenduse jälgimine,
- seire ja sündmuste telemeetria,
- Asjade internetiühendus rakendused (näiteks andmete kogumine seadme anduritelt).
Näited:
Azure Time Series Insights, Amazon Timestream, InfluxDB.
6. Pearaamat
See pakub muutumatut, läbipaistvat ja krüptograafiliselt kontrollitavat tehingulogi, mille omanikuks on keskne asutus. - Amazoni QLDB ülevaade
Selgitame lühidalt iga märksõna ülaltoodud tsitaadis:
- muutumatu - tähendab, et selles andmebaasis loodud kirjet ei saa kustutada, muuta ega isegi üle kirjutada,
- läbipaistev - see jälgib ja säilitab iga andmete muutuse järjestust,
- krüptograafiliselt kontrollitav - selles andmebaasis loodud andmeid kontrollitakse krüptograafiliste hash-tehnikate abil, sarnaselt plokiahelatele (kasutades SHA-256 hash-funktsiooni).
Millal seda valida?
Kasulik on salvestada täpne ajalugu, nt logides järjestikku iga andmemuutuse sissekannet, nagu näiteks:
- finantsid (deebet- või krediiditehingute ajalugu),
- tootmine (jälgida, kust osad on hangitud),
- kindlustus,
- Personalijuhtimine ja palgaarvestus,
- jaemüük,
- tarneahelad.
Näited:
Amazon QLDB
Järeldused
Käesoleva artikli pealkirjas esitatud küsimusele ei ole lihtsat vastust. Ainus viis õige andmebaasi valimiseks on oma andmete tundmaõppimine. Vastake küsimusele: "Milliseid andmeid teie rakendus genereerib?", siis saate teha õigeid valikuid.
Lisaks sellele peaksite te tundma ärinõudeid ja rakendusvaldkonda väga hästi. Te peate teadma, kuidas te andmeid kasutate, milliseid päringuid te andmebaasi saadate, mitu korda te andmeid säilitate, loete, uuendate või kustutate. Kõik need asjad on olulised, kuid mitte kõik arendajad ei pööra neile valdkondadele piisavalt tähelepanu.
Palun mõelge oma andmete kohta rakenduses, mida arendate parema tarkvara parandamiseks/loomiseks. Üldiselt loodan, et teie saate oma andmeid piisavalt hästi tundma, et salvestada neid kohas, kus nad on õnnelikud.
Loe edasi:
Mõned nipid JavaScript rakenduse kiirendamiseks
Võimalused Rails'i jõudluse suurendamiseks
Faktid ja müüdid koostööst välise tarkvaraarenduspartneriga