Kuriant naują projektą reikia pasirinkti tinkamą duomenų bazę duomenims saugoti. Daugelis mano pažįstamų programuotojų iš pat pradžių pagal nutylėjimą pasirenka reliacinę duomenų bazę. Tačiau ar tai geriausias sprendimas? Žinoma, tai priklauso nuo daugelio veiksnių. Šiame straipsnyje norėčiau jus supažindinti su kitais duomenų bazių tipais, kad būtų lengviau rinktis ir kad būtumėte pasiruošę būsimiems darbams.
Duomenų bazės tipas - ne vienintelė tema, į kurią reikia atsižvelgti. Yra daug kitų klausimų, apie kuriuos reikia pagalvoti, pvz., kiek aktyvių naudotojų gali turėti programa? Ar visur reikia stipraus nuoseklumo? Ar kai kuriais atvejais pakaks ir galimo nuoseklumo? Yra labai daug klausimų be vienareikšmių atsakymų, nes “kuo labiau į tai giliniesi, tuo sudėtingiau darosi”. Todėl atkreipkite dėmesį, kad šiame straipsnyje daugiausia dėmesio skiriama tik duomenų bazių tipams.
Pasiimkite puodelį kavos ir pasimėgaukite šiuo skaitiniu.
Bendroji duomenų bazių klasifikacija
Iš pradžių pravartu žinoti, kad yra du pagrindiniai duomenų bazių tipai: reliacinės (SQL) ir nereliacinės (NoSQL).
- SQL duomenų bazės yra reliacinės struktūros, o tai reiškia, kad jose saugomi duomenys lentelėse ir išlaikyti ryšius tarp jų.
- NoSQL (ne tik SQL) duomenų bazės, kitaip nei reliacinės, nėra gerai struktūruotos, todėl jas galima lengviau pritaikyti ir lankstiau naudoti.
Be dviejų pirmiau minėtų tipų, yra dar vienas, t. y. atmintyje esanti duomenų bazė. Jos negalima priskirti nei reliacinei, nei nereliacinei, nes ji susijusi su fizine duomenų saugojimo vieta. Kiekviena duomenų bazė gali būti saugoma diske arba atmintyje.
Duomenų bazių tipai
1. Reliacinis
Mano nuomone, tai populiariausia duomenų bazė. Ji puikiai tinka struktūriniams duomenims, kai norima išlaikyti ryšius tarp įrašų. Duomenų bazės struktūra aprašoma schemoje.
Pagrindiniai privalumai yra sandoriai (jie padeda užtikrinti duomenų vientisumą ir laikytis ACID taisyklių) ir galimybė apdoroti daug sudėtingų užklausų.
Kada jį rinktis?
Tai naudinga saugant duomenis, kurie struktūriškai nesikeičia labai dažnai ir kuriuos, pavyzdžiui, reikia saugoti nuolat:
- CRM (ryšių su klientais valdymas),
- Užsakymų valdymas,
- ERP (Įmonė Išteklių planavimas),
- duomenų saugyklų ar inventoriaus valdymo,
- buhalterinė apskaita arba finansai.
Pavyzdžiai:
"Amazon Aurora", "Microsoft Azure SQL duomenų bazė, PostgreSQL, "MySQL".
Reliacinių duomenų bazių nepakanka daugeliui naujų programų, todėl reikia turėti daugiau nei vieną duomenų bazę. Kitoje straipsnio dalyje daugiausia dėmesio skirsiu nereliatyviosioms duomenų bazėms.
2. Raktas-vertė
Jame kiekviena duomenų reikšmė saugoma su unikaliu raktu. Tai reiškia, kad duomenys pasiekiami pagal vienintelį raktą, kaip tai daroma hash žemėlapis. Skirtingai nei reliacinės duomenų bazės, jis neįtvirtina nei schemos, nei ryšių tarp įrašų. Dauguma šių duomenų bazių paprastai nepalaiko atnaujinimo operacijų. Norėdami pakeisti duomenis, turite perrašyti visą esamą rinkinį.
Kada jį rinktis?
Tai naudinga duomenims, kuriuos norite greitai nuskaityti ir įrašyti (bet kurie nėra dažnai atnaujinami):
- realaus laiko pasiūlymų teikimas, skelbimų aptarnavimas,
- duomenų spartinimas,
- sesijos valdymas,
- pirkinių krepšelius,
- klientų pageidavimus arba profilio valdymą.
Pavyzdžiai:
"Memcached", "Amazon DynamoDB", "Azure Cosmos DB", "Redis".
3. Dokumentai
Joje saugomi dokumentų rinkiniai. Kiekviename dokumente yra laukų su duomenimis, kurie gali būti paprastos reikšmės arba sudėtingi elementai, pavyzdžiui, sąrašai arba dukterinės kolekcijos. Svarbu žinoti, kad kiekvienas dokumentas gali turėti skirtingą struktūrą, net jei jame vaizduojamas tas pats dalykas (kiekvienas dokumentas yra unikalus ir laikui bėgant kinta). Pavyzdžiui, pirmajame kliento dokumente yra mažiau informacijos nei antrajame:
{
"FirstName": "John",
"LastName": "John": "Fake",
"Motociklai:" [
{
"Modelis": "BMW",
"Metai": 2020
}
]
}
{
"FirstName": "Alex",
"LastName": "Nolastname",
"Amžius": 15,
"Adresas": {
"Šalis": "Lenkija",
"Miestas": "City": "Somewhere"
},
"Motociklai:" [
{
"Modelis": "BMW",
"Metai": 2020
}
]
}
Kada jį rinktis?
Tai naudinga duomenims, kuriems reikia lanksčios schemos, kad juos būtų galima greitai apdoroti:
- produktas katalogus,
- TVS (turinio valdymo sistema),
- naudotojų profiliai ir personalizavimas.
Pavyzdžiai:
"Amazon DocumentDB", "Azure Cosmos DB", "MongoDB", "Redis".
4. Grafikas
Jis naudoja grafo struktūrą ir yra sudarytas iš dviejų elementų: mazgų ir briaunų. Mazgai yra analogiški lentelės eilutėms arba JSON dokumentams. Briaunos yra ryšiai tarp mazgų - jos tokios pat svarbios kaip ir mazgai. Abu jie gali turėti savybių. Be to, briaunos gali turėti apibrėžtą ryšio kryptį.
Kada jį rinktis?
Tai naudinga, kai jūsų duomenys panašūs į grafiką, t. y. ryšiai tarp duomenų elementų yra dinamiški ir laikui bėgant kinta. Be to, tai geras pasirinkimas, kai verslo ar techninės komanda reikia suprasti duomenų sąsajas. Keletas svarbiausių pavyzdžių:
- organizacinės schemos,
- sukčiavimo aptikimas,
- socialiniai grafikai ir (arba) tinklai,
- rekomendacijų varikliai,
- žinių grafikai.
Pavyzdžiai:
"Amazon Neptune", "Neo4j", "ArangoDB", "Titan".
5. Laiko eilutės
Jame saugomi pagal laiką suskirstyti duomenys. Paprastai joje kaupiami didžiuliai duomenų kiekiai realiuoju laiku. Dažniausiai jis naudojamas duomenims išsaugoti, nors atnaujinimas atliekamas labai retai. Paprastai laiko žyma naudojama kaip pirminis raktas ir (arba) rūšiuojant duomenis. Kai kurios duomenų bazės leidžia kaip papildomą informaciją įtraukti apibrėžiamąsias žymas, pavyzdžiui, duomenų kilmę ar tipą.
Kada jį rinktis?
Naudinga saugoti nedidelius duomenų kiekius, pridedamus chronologine tvarka, pvz:
- DevOps,
- taikomųjų programų stebėsena,
- stebėjimas ir įvykių telemetrija,
- IoT taikomosios programos (pvz., duomenų rinkimas iš įrenginio jutiklių).
Pavyzdžiai:
"Azure Time Series Insights", "Amazon Timestream", "InfluxDB".
6. Didžioji knyga
Tai nekeičiamas, skaidrus ir kriptografiškai patikrinamas sandorių žurnalas, priklausantis centrinei institucijai. - "Amazon" QLDB apžvalga
Trumpai paaiškinkime kiekvieną pirmiau pateiktoje citatoje esantį raktažodį:
- nekeičiamas - reiškia, kad šioje duomenų bazėje sukurto įrašo negalima ištrinti, pakeisti ar net perrašyti,
- skaidrus - jis seka ir nuosekliai įrašo kiekvieną duomenų pakeitimą,
- kriptografiškai patikrinami - šioje duomenų bazėje sukurti duomenys tikrinami kriptografiniais šifravimo metodais, panašiai kaip blokų grandinėse (naudojant SHA-256 šifravimo funkciją).
Kada jį rinktis?
Naudinga saugoti tikslią istoriją, pvz., registruojant nuoseklų kiekvieno duomenų pakeitimo įrašą, pvz:
- finansai (debeto ar kredito operacijų istorija),
- gamyba (stebėkite, iš kur buvo įsigytos dalys),
- draudimas,
- Žmogiškieji ištekliai ir darbo užmokestis,
- mažmeninė prekyba,
- tiekimo grandinės.
Pavyzdžiai:
"Amazon" QLDB
Išvados
Paprasto atsakymo į šio straipsnio pavadinime pateiktą klausimą nėra. Vienintelis būdas pasirinkti tinkamą duomenų bazę - daugiau sužinoti apie savo duomenis. Atsakykite į klausimą: “Kokius duomenis generuoja jūsų programa?” ir galėsite teisingai pasirinkti.
Be to, turėtumėte gerai išmanyti verslo reikalavimus ir taikomosios programos sritį. Turite žinoti, kaip naudosite duomenis, kokias užklausas siųsite į duomenų bazę, kiek kartų saugosite, skaitysite, atnaujinsite ar ištrinsite duomenis. Visi šie dalykai yra svarbūs, tačiau ne visi kūrėjai šioms sritims skiria pakankamai dėmesio.
Galvokite apie savo duomenis kuriamoje programoje, kad galėtumėte tobulinti / kurti geresnę programinę įrangą. Apskritai tikiuosi, kad savo duomenis pažinsite pakankamai gerai, kad galėtumėte juos saugoti ten, kur jie bus laimingi.
Skaityti daugiau:
Keletas gudrybių, kaip pagreitinti JavaScript programą
Būdai, kaip padidinti "Rails" našumą
Faktai ir mitai apie bendradarbiavimą su išoriniu programinės įrangos kūrimo partneriu