Sissejuhatus andmemudelisse Cassandras
Apache Cassandrast on saanud üks võimsamaid NoSQL andmebaase. See on õige valik, kui soovite kõrget saadavust ja mastaapsust, ilma et peaksite jõudlusega ohtu seadma - eriti rakenduste jaoks, mis ei saa endale lubada andmete kaotamist. Selles teemas tutvume Cassandras asuva andmemudeliga.
Kiire fakt: Cassandra insenerid on täna enim tasustatud tehnika spetsialistid. Sellised ettevõtted nagu Netflix, Instagram ja Apple kasutavad Cassandrat kõrgelt individualiseeritud kliendikogemuse pakkumiseks. Õige jõudluse saamiseks peate hoolikalt kavandama äriprobleemile vastava skeemi. Selles artiklis vaatleme Cassandra andmemudelit, mis erineb oluliselt RDBMS-is nähtust.
Cassandra andmemudeli reeglid
Lihtsamalt öeldes on andmemudel andmebaasi loogiline struktuur. See kirjeldab, kuidas andmeid hoitakse ja neile juurde pääsetakse ning kuidas seoseid erinevat tüüpi andmete vahel on.
Õige andmemudeli valimine võib olla CSSandra-tüüpi NoSQL-i andmebaasi kasutamise kõige raskem osa. Nagu ma varem mainisin, erineb andmete modelleerimine Cassandras sellest, mida me RDBMS-is näeme.
Jaotusvõti ja klastervõti on terminid, millest peaksid teadma kõik Cassandraga tegelevad inimesed. Enne kui me sukeldume Cassandras andmete modelleerimise põhireeglitesse, uurige kiiresti läbi, mida need terminid tähendavad,
Vahesein
Cassandra on hajutatud andmebaas, milles andmed jaotatakse ja salvestatakse klastri erinevatesse sõlmedesse. Andmed jagatakse jaotusvõtme abil, mis võib olla üks või mitu andmevälja. Seda partitsioonivõtit kasutatakse räsimismehhanismi loomiseks andmete ühtlaseks jaotamiseks kõigi sõlmede vahel.
Klaster
Klaster on sõlmede kogum, mis esindab ühte loogilist andmebaasi. Klastervõti koosneb ühest või mitmest väljast, mida kasutatakse andmete rühmitamiseks partitsioonis.
Selles tabelis asuvates restoranides jagatakse andmed sektsioonideks riigi_kood, osariigi_nimi ja linnanimi abil ning selle partitsiooni andmed grupeeritakse ja sorteeritakse avamisandmete ja restorani_nime põhjal.
Vaatame nüüd kahte andmete modelleerimise reeglit, mida tuleks meeles pidada.
- Andmed on klastris ühtlaselt jaotunud
- Lugege võimalikult vähestest sektsioonidest
Vaatame, mida need reeglid üritavad edastada
- Me teame, mis klaster on õige? Klaster koosneb mitmest sõlmest. Tahame andmed nende sõlmede vahel jaotada selliselt, et igal sõlmel oleks umbes sama palju andmeid. Nagu me teame, jaotatakse andmed partitsioonivõtme räsi abil (mis on primaarvõtme esimene võti) jaotatud erinevatesse sõlmpunktidesse, nii et lühidalt öeldes - „Te peaksite valima hea primaarvõtme”.
- Iga sektsioon asub erineval sõlmel, nii et andmete hankimisel soovite veenduda, et andmed saadakse võimalikult väikestest sektsioonidest. Kui teie päring nõuab erinevate partitsioonide andmeid, antakse käsk eraldi sõlmedele, et saada teile need andmed, mis on ülekululised ja põhjustavad latentsusaega.
Tõhusa andmemudeli võti oleks tasakaal nende kahe reegli vahel.
Hallake suhteid Cassandras
Üks asi, mida tuleks meeles pidada, toimub andmete modelleerimine Cassandras päringupõhise lähenemisviisi abil, erinevalt RDBMS-ist, kus te kõigepealt tuvastate üksused, loote tabelid ja vormistate päringud andmete hankimiseks JOINS-iga.
Lihtsamalt öeldes, me ei modelleeri suhete ega objektide ümber, vaid modelleerime päringute ümber.
1. Suhe üks ühele
Mõelge ülikoolis, et tudeng saab registreeruda ainult ühele seminarile. See on suhe üks ühele. Peades reeglit nr 1, mõtleme välja soovitud päringud. Soovin otsida seminari, kus tudeng osaleb. Sel juhul teeme ainult ühe laua. Tabel peaks sisaldama õpilase ja seminari üksikasju.
2. Suhe üks ühele paljudele
Mis oleks siis, kui ma tahaksin otsida kõik seminaril osalevad õpilased. Selle asemel, et kasutada sama tabelit ja itereerida üle iga rea, et saada konkreetse seminari õpilase nimi, saan teha teise tabeli, mis jagab andmed seminari nime järgi. Nii et kui päringu välja annan, tabab see ainult ühte sõlme, mitte ei lähe kõigi sõlmede juurde seminari nime saamiseks.
3. Suhe paljudest paljudesse
Mõelgem nüüd, et tudeng võib osaleda paljudel seminaridel ja seminaril võivad osaleda ka paljud tudengid. Siin on meil palju-palju suhteid. Sel juhul saate kaht ülaltoodud tabelit kasutada päringute tegemiseks, ilma et peaksite tegema keerulisi päringuid liitumiste abil, mida teeksite tavaliselt RDBMS-is.
Cassandra tähtsus
Digitaalsete andmete kiire laienemisega muutub olulisemaks väga skaleeritav, tõrketaluv andmebaas. Lubage mul loetleda mõned punktid, miks peaksite Cassandrat kasutama
- Kiire lugemise toimingute valgustamine: arutasime, kuidas saaksite oma andmete õige modelleerimise abil optimeerida lugemistoiminguid massilisel skaalal.
- Veatolerantsed: andmeid korratakse kõikides sõlmedes, nii et isegi kui üks sõlm alla läheb, on teie andmed ohutud.
- Kohandatud häälestamine: saate Cassandra seadistada töötama vastavalt teie töökoormusele. Kui kirjutate palju andmeid (nt logimine), saate seda kohandada, et käsitleda raskekujulisi süsteeme. Saadaval on veel mitmeid häälestamisvõimalusi.
- Toimetulek suurte andmemahtudega: klastri suuruse põhjal saab Cassandra hakkama saada tohutute andmemahtudega.
Kuidas modelleerida andmeid Cassandras?
Hea andmete modelleerimine järgib neid samme
- Mõelge oma rakenduses nõutud päringud välja
- Tabelite loomine nende päringute rahuldamiseks
Enne nende reeglite rakendamist tuleb meeles pidada järgmist: „Keskendume loetud toimingute optimeerimisele ka siis, kui see nõuab andmete dubleerimist“. Meil võib olla palju tabeleid, mis võivad sisaldada peaaegu sarnaseid andmeid.
Mõelgem nüüd andmebaasile, mis salvestaks teavet restoranide kohta. Pangem piirang, et restoraninimed peavad olema kordumatud.
Allpool olevat tabelit saab kasutada siis, kui soovime otsida restorani nime põhjal:
Kui tahame otsida restorane konkreetsest asukohast, kirjutaksime päringu, mis kordab kõiki ridu ja hangib restoranide nimed.
Selle asemel, pidades silmas reeglit nr 2, saame hõlpsasti luua uue tabeli, mis vastab meie vajadustele.
Nüüd jaotatakse meie andmed nii, et klastri sõlmes asuvad kindla asukoha restoranid. See optimeerib meie loetud päringuid, kuna päringute otsimine toimub ainult ühes sõlmes, kus on palju vähem ridu kui esimesel meie loodud tabelil.
Mis siis, kui me sooviksime otsida konkreetse linna restoranidest, saame teha uue tabeli, selle asemel, et korrata kõiki ridu ülaltoodud tabeli ühes sektsioonis.
Järeldus
Selles artiklis kirjeldasin mõnda parimat tava, mida saate järgida, kuidas Cassandras andmete modelleerimisele läheneda. Kui olete neist mõistetest aru saanud ja suudate tõhusalt ära tunda rakenduse jaoks vajalike päringute tüüpe, saate kujundada suurepärase andmemudeli, et saada oma andmebaasist kõrge jõudlus.
Soovitatavad artiklid
See on Cassandra andmemudeli juhend. Siin arutatakse, kuidas modelleerida oma andmeid Cassandras koos Cassandra andmemudelite reeglite ja olulisusega. Lisateavet leiate ka meie muudest soovitatud artiklitest -
- Mis on andmete modelleerimine?
- Andmemudelid DBMS-is
- Küsimused andmete modelleerimise kohta
- Cassandra andmete modelleerimine