Cassandra Tietomalli yksinkertaisella tietokantaesimerkillä
Vaikka Cassandra kyselykieli muistuttaa SQL kielellä, niiden datamallinnusmenetelmät ovat täysin erilaisia.
In Cassandra, huono tietomalli voi heikentää suorituskykyä, varsinkin kun käyttäjät yrittävät toteuttaa RDBMS-konsepteja Cassandra. On parasta pitää mielessä muutama alla kuvattu sääntö.
Cassandra Tietomallin säännöt
In Cassandra, kirjoitukset eivät ole kalliita. Cassandra ei tue liittymiä, ryhmittelyä, OR-lausetta, aggregaatioita jne. Joten sinun on tallennettava tietosi siten, että ne ovat täysin noudettavissa. Nämä säännöt on siis pidettävä mielessä, kun tietoja mallinnetaan Cassandra.
Maksimoi kirjoitusten määrä
In Cassandra, kirjoitukset ovat erittäin halpoja. Cassandra on optimoitu korkealle kirjoitussuorituskyvylle. Yritä siis maksimoida kirjoitustasi parantaaksesi lukusuorituskykyä ja tietojen saatavuutta. Tiedon kirjoittamisen ja lukemisen välillä on kompromissi. Optimoi siis tietojen lukusuorituskykysi maksimoimalla kirjoitettavien tietojen määrä.
Maksimoi tietojen päällekkäisyys
Tietojen denormalisointi ja tietojen kopiointi ovat tosiasiassa Cassandra. Levytila ei ole kalliimpaa kuin muisti, prosessorikäsittely ja IO:iden toiminta. Kuten Cassandra on hajautettu tietokanta, joten tietojen päällekkäisyys tarjoaa välittömän tiedon saatavuuden eikä yhtä vikakohtaa.
Cassandra Tiedon mallinnuksen tavoitteet
Sinulla pitäisi olla seuraavat tavoitteet mallintaessasi tietoja Cassandra:
Levitä tiedot tasaisesti ympäri Cluster
Haluat yhtä paljon dataa jokaisessa solmussa Cassandra Cluster. Tiedot levitetään eri solmuihin osioavainten perusteella, jotka ovat ensisijaisen avaimen ensimmäinen osa. Yritä siis valita kokonaisluvut ensisijaiseksi avaimeksi tietojen levittämiseksi tasaisesti klusterin ympärille.
Minimoi luettavien osioiden määrä tietoja kyselyn aikana
Osio ovat ryhmä tietueita, joilla on sama osioavain. Kun lukukysely annetaan, se kerää tietoja eri solmuista eri osioista.
Jos osioita on useita, kaikissa näissä osioissa tulee käydä kyselytietojen keräämiseksi.
Se ei tarkoita, että osioita ei pitäisi luoda. Jos tietosi ovat erittäin suuria, et voi pitää niin suurta määrää dataa yhdessä osiossa. Yksittäinen osio hidastuu.
Joten yritä valita tasapainoinen määrä osioita.
Hyvä ensisijainen avain Cassandra
Otetaan esimerkki ja selvitetään, mikä ensisijainen avain on hyvä.
Tässä on MusicPlaylist-taulukko.
Create table MusicPlaylist ( SongId int, SongName text, Year int, Singer text, Primary key(SongId, SongName) );
Yllä olevassa esimerkissä taulukko MusicPlaylist,
- Songid on osioavain ja
- SongName on klusterisarake
- Tiedot ryhmitellään kappaleen nimen perusteella. Vain yksi osio luodaan SongId:llä. Taulukon MusicPlaylist ei sisällä muita osioita.
Tämä tietomalli hidastaa tietojen hakua huonon ensisijaisen avaimen vuoksi.
Tässä on toinen taulukko MusicPlaylist.
Create table MusicPlaylist ( SongId int, SongName text, Year int, Singer text, Primary key((SongId, Year), SongName) );
Yllä olevassa esimerkissä taulukko MusicPlaylist,
- Songid ja vuosi ovat osioavain, ja
- SongName on klusterisarake.
- Tiedot ryhmitellään kappaleen nimen perusteella. Tässä taulukossa luodaan joka vuosi uusi osio. Kaikki vuoden kappaleet ovat samassa solmussa. Tämä ensisijainen avain on erittäin hyödyllinen tiedoille.
Tietojen haku on nopea tällä tietomallilla.
Mallinna tietosi Cassandra
Seuraavat asiat tulee pitää mielessä kyselyjäsi mallintaessa:
Määritä, mitä kyselyitä haluat tukea
Ensinnäkin määritä, mitä kyselyitä haluat.
Tarvitsetko esimerkiksi?
- Liitosten
- Ryhmän mukaan
- Suodatus mihin sarakkeeseen jne.
Luo taulukko kyselyjesi mukaan
Luo taulukko kyselyjesi mukaan. Luo taulukko, joka täyttää kyselysi. Yritä luoda taulukko siten, että vähimmäismäärä osioita on luettava.
Yksittäisen suhteen käsitteleminen Cassandra
Yksi yhteen -suhde tarkoittaa, että kahdella taulukolla on yksi vastaavuus. Esimerkiksi opiskelija voi ilmoittautua vain yhdelle kurssille, ja haluan etsiä opiskelijasta, mille kurssille tietty opiskelija on ilmoittautunut.
Joten tässä tapauksessa taulukkokaavion tulisi sisältää kaikki kyseistä kurssia vastaavan opiskelijan tiedot, kuten kurssin nimi, opiskelijan numero, opiskelijan nimi jne.
Create table Student_Course ( Student rollno int primary key, Student_name text, Course_name text, );
Yhdestä moneen -suhteen käsittely Cassandra
Yksi moniin -suhteet tarkoittaa, että kahden taulukon välillä on yhdestä useaan vastaavuus.
Esimerkiksi kurssia voivat opiskella monet opiskelijat. Haluan etsiä kaikki opiskelijat, jotka opiskelevat tiettyä kurssia.
Joten kysymällä kurssin nimeä, minulla on monia opiskelijoiden nimiä, jotka opiskelevat tiettyä kurssia.
Create table Student_Course ( Student_rollno int, Student_name text, Course_name text, );
Voin hakea kaikki tietyn kurssin opiskelijat seuraavalla kyselyllä.
Select * from Student_Course where Course_name='Course Name';
Monen toiselle -suhteen käsitteleminen Cassandra
Monesta moneen -suhteet tarkoittaa sitä, että kahden taulukon välillä on monta useampaa vastaavuutta.
Esimerkiksi yhtä kurssia voi opiskella moni opiskelija, ja opiskelija voi myös opiskella monia kursseja.
Haluan etsiä kaikki opiskelijat, jotka opiskelevat tiettyä kurssia. Haluan myös etsiä kaikki kurssit, joita tietty opiskelija opiskelee.
Joten tässä tapauksessa minulla on kaksi taulukkoa eli jaa ongelma kahteen tapaukseen.
Ensin luon taulukon, josta löydät tietyn opiskelijan kurssit.
Create table Student_Course ( Student_rollno int primary key, Student_name text, Course_name text, );
Löydän kaikki tietyn opiskelijan kurssit seuraavalla kyselyllä.
Select * from Student_Course where student_rollno=rollno;
Toiseksi luon taulukon, josta näet kuinka monta opiskelijaa opiskelee tiettyä kurssia.
Create table Course_Student ( Course_name text primary key, Student_name text, student_rollno int );
Löydän opiskelijan tietyltä kurssilta seuraavalla kyselyllä.
Select * from Course_Student where Course_name=CourseName;
Ero RDBMS:n ja Cassandra Tietomallinnus
RDBMS | Cassandra |
---|---|
Tallentaa tiedot normalisoidussa muodossa | Tallentaa tiedot denormalisoidussa muodossa |
Legacy dbms; jäsenneltyä dataa | Leveä rivikauppa, dynaaminen; jäsenneltyä ja jäsentämätöntä dataa |
Yhteenveto
- Tietojen mallinnus sisään Cassandra on erilainen kuin muut RDBMS-tietokannat.
- Cassandra Tietomallinnus sisältää joitain sääntöjä. Näitä sääntöjä on noudatettava hyvän tiedon mallinnuksen varmistamiseksi. Näiden sääntöjen lisäksi näimme kolme erilaista datamallinnustapausta ja kuinka käsitellä niitä.
- Yksi yhteen -suhde tarkoittaa, että kahdella taulukolla on yksi vastaavuus.
- Yksi moniin -suhteet tarkoittaa, että kahden taulukon välillä on yhdestä useaan vastaavuus.
- Monesta moneen -suhteet tarkoittaa sitä, että kahden taulukon välillä on monta useampaa vastaavuutta.