Vaikka Cassandra-kyselykieli muistuttaa SQL-kieltä, niiden datamallinnusmenetelmät ovat täysin erilaiset.
Cassandrassa huono tietomalli voi heikentää suorituskykyä, varsinkin kun käyttäjät yrittävät toteuttaa RDBMS-konsepteja Cassandrassa. On parasta pitää mielessä muutama alla kuvattu sääntö.
Tässä opetusohjelmassa opit-
- Cassandra-tietomallin säännöt
- Mallintaa tietosi Cassandrassa
- Yhden suhde
- Yhden tai useamman suhteen hoitaminen
- Monien ja monien suhde
Cassandra-tietomallin säännöt
Cassandrassa kirjoitukset eivät ole kalliita. Cassandra ei tue liittymistä, ryhmittelyä, TAI-lauseketta, yhdistelmiä jne. Joten sinun on tallennettava tietosi siten, että niiden pitäisi olla täysin haettavissa. Joten nämä säännöt on pidettävä mielessä mallinnettaessa tietoja Cassandrassa.
- Maksimoi kirjoitusmäärä
Cassandrassa kirjoitukset ovat erittäin halpoja. Cassandra on optimoitu korkeaan kirjoitusnopeuteen. Joten yritä maksimoida kirjoituksesi parantaaksesi lukutehoa ja tietojen saatavuutta. Tietojen kirjoittamisen ja lukemisen välillä on kompromissi. Joten optimoi datasi lukemisen suorituskyky maksimoimalla tietojen kirjoittamisen määrä.
- Maksimoi tietojen päällekkäisyys
Tietojen denormalisointi ja kopiointi ovat Cassandran defacto. Levytila ei ole kalliimpaa kuin muisti, suorittimen käsittely ja IO-toiminnot. Koska Cassandra on hajautettu tietokanta, niin tietojen päällekkäisyys tarjoaa välittömän tiedon saatavuuden eikä yksittäistä vikaa.
Tietomallinnustavoitteet
Sinulla pitäisi olla seuraavat tavoitteet mallinnettaessa tietoja Cassandrassa.
- Levitä tietoa tasaisesti klusterin ympärille
Haluat saman määrän tietoa jokaisesta Cassandra-klusterin solmusta. Tiedot levitetään eri solmuihin osioavainten perusteella, jotka ovat ensisijaisen avaimen ensimmäinen osa. Joten yritä valita kokonaisluvut ensisijaiseksi avaimeksi tietojen levittämiseksi tasaisesti klusterin ympärille.
- Pienennä luettujen osioiden lukumäärä kysyttäessä tietoja
Osio on tietueiden ryhmä, jolla on sama osioavain. Kun luettu kysely annetaan, se kerää tietoja eri solmuista eri osioilta.
Jos osioita on monta, kaikki nämä osiot täytyy käydä kyselytietojen keräämiseksi.
Se ei tarkoita, että osioita ei pitäisi luoda. Jos tietosi ovat erittäin suuria, et voi pitää valtavaa datamäärää yhdessä osiossa. Yksittäistä osiota hidastetaan.
Joten yritä valita tasapainoinen määrä osioita.
Hyvä ensisijainen avain
Otetaan esimerkki ja löydetään mikä ensisijainen avain on hyvä.
Tässä on taulukko MusicPlaylist.
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 SongName-pohjalta. Vain yksi osio luodaan SongId: llä. MusicPlaylist-taulukossa ei ole muita osioita.
Tiedon haku on hidasta tämän tietomallin vuoksi 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 Year ovat osioavain ja
- SongName on klusterisarake.
- Tiedot ryhmitellään SongName-pohjalta. Tässä taulukossa luodaan joka vuosi uusi osio. Kaikki vuoden kappaleet tulevat samaan solmuun. Tämä ensisijainen avain on erittäin hyödyllinen tiedoille.
Tietomallimme nopeuttaa tietojen hakua.
Mallintaa tietosi Cassandrassa
Seuraavat asiat tulee pitää mielessä kyselyjä mallinnettaessa.
- Määritä mitä kyselyitä haluat tukea
- Liittyy
- Ryhmittele
- Suodatus missä sarakkeessa jne.
- Luo taulukko kyselysi mukaan
Luo taulukko kyselysi mukaan. Luo taulukko, joka tyydyttää kyselysi. Yritä luoda taulukko siten, että vähimmäismäärä osioita on luettava.
Määritä ensin haluamasi kyselyt.
Tarvitsetko esimerkiksi?
Yhden suhde
Yksi yhteen -suhde tarkoittaa, että kahdella taulukolla on yksi yhteen kirjeenvaihto. Esimerkiksi opiskelija voi rekisteröidä vain yhden kurssin, ja haluan etsiä opiskelijalta, mihin kurssiin tietty opiskelija on rekisteröity.
Joten tässä tapauksessa taulukon kaavion tulisi sisältää kaikki opiskelijan yksityiskohdat vastaamaan tiettyä kurssia, kuten kurssin nimi, opiskelijan luettelonumero, opiskelijan nimi jne.
Create table Student_Course(Student rollno int primary key,Student_name text,Course_name text,);
Yhden tai useamman suhteen hoitaminen
Yksi monesta -suhde tarkoittaa sitä, että kahden taulukon välillä on yksi tai useampi kirjeenvaihto.
Esimerkiksi monet opiskelijat voivat opiskella kurssia. Haluan hakea kaikki tietyn kurssin opiskelevat opiskelijat.
Joten kyselemällä kurssin nimestä minulla on monia opiskelijoiden nimiä, jotka opiskelevat tietyn kurssin.
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';
Monien ja monien suhde
Monista moniin-suhteisiin kuuluu kahden taulukon välinen kirjeenvaihto monista moniin.
Esimerkiksi kurssia voivat opiskella monet opiskelijat, ja opiskelija voi myös opiskella monia kursseja.
Haluan hakea kaikki tietyn kurssin opiskelevat opiskelijat. Haluan myös etsiä kaikki kurssit, joita tietty opiskelija opiskelee.
Joten tässä tapauksessa minulla on kaksi taulukkoa, eli jaon 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 seuraavan kyselyn avulla. ->
Select * from Student_Course where student_rollno=rollno;
Toiseksi aion luoda taulukon, josta löydät kuinka monta opiskelijaa opiskelee tietyllä kurssilla.
Create table Course_Student(Course_name text primary key,Student_name text,student_rollno int);
Voin löytää opiskelijan tietyltä kurssilta seuraavan kyselyn avulla.
Select * from Course_Student where Course_name=CourseName;
Ero RDBMS: n ja Cassandra-tietomallinnuksen välillä
RDBMS |
Cassandra |
Tallentaa tiedot normalisoidussa muodossa |
Tallentaa tiedot denormalisoidussa muodossa |
Vanhat dbms; jäsennelty data |
Laaja rivikauppa, dynaaminen; jäsennelty ja strukturoimaton data |
Yhteenveto
Tietomallinnus Cassandrassa on erilainen kuin muissa RDBMS-tietokannoissa. Cassandran tietomallinnuksessa on joitain sääntöjä. Näitä sääntöjä on noudatettava hyvässä tietomallinnuksessa. Näiden sääntöjen lisäksi näimme kolme erilaista datamallintamistapausta ja miten käsitellä niitä.