Cassandra Adatmodell egyszerű adatbázis-példával
Bár Cassandra A lekérdezési nyelv a -hoz hasonlít SQL nyelven, adatmodellezési módszereik teljesen mások.
In Cassandra, egy rossz adatmodell ronthatja a teljesítményt, különösen akkor, ha a felhasználók megpróbálják megvalósítani az RDBMS koncepciókat Cassandra. A legjobb, ha szem előtt tart néhány, alább részletezett szabályt.
Cassandra Adatmodell szabályok
In Cassandra, az írások nem drágák. Cassandra nem támogatja a csatlakozást, a csoportosítást, a VAGY záradékot, az aggregációkat stb. Tehát úgy kell tárolnia az adatait, hogy azok teljesen visszakereshetők legyenek. Tehát ezeket a szabályokat szem előtt kell tartani az adatok modellezésekor Cassandra.
Maximalizálja az írások számát
In Cassandra, írja nagyon olcsó. Cassandra nagy írási teljesítményre van optimalizálva. Tehát próbálja maximalizálni az írási teljesítményt a jobb olvasási teljesítmény és az adatok elérhetősége érdekében. Az adatírás és az adatolvasás között kompromisszum van. Tehát optimalizálja az adatolvasási teljesítményt az adatírások számának maximalizálásával.
Maximalizálja az adatmásolatot
Az adatok denormalizálása és az adatok sokszorosítása defacto Cassandra. A lemezterület nem drágább, mint a memória, a CPU-feldolgozás és az IO-k működése. Mint Cassandra egy elosztott adatbázis, így az adatmásolás azonnali adatelérhetőséget biztosít, és nincs egyetlen hibapont sem.
Cassandra Adatmodellezési célok
Az adatok modellezése során a következő célokat kell kitűznie Cassandra:
Az adatok egyenletes elosztása a Cluster
Minden csomóponton azonos mennyiségű adatot szeretne Cassandra Cluster. Az adatok az elsődleges kulcs első részét képező partíciókulcsok alapján kerülnek szétosztásra a különböző csomópontok között. Tehát próbáljon egész számokat választani elsődleges kulcsként az adatok egyenletes elosztásához a fürtben.
Az adatok lekérdezése közben beolvasott partíciók számának minimalizálása
A partíció ugyanazzal a partíciókulccsal rendelkező rekordok csoportja. Az olvasási lekérdezés kiadásakor adatokat gyűjt a különböző partíciók különböző csomópontjairól.
Ha sok partíció lesz, akkor ezeket a partíciókat meg kell látogatni a lekérdezési adatok gyűjtéséhez.
Ez nem jelenti azt, hogy nem szabad partíciókat létrehozni. Ha az adatok nagyon nagyok, akkor nem tárolhatja ezt a hatalmas adatmennyiséget egyetlen partíción. Az egyetlen partíció lelassul.
Tehát próbáljon kiegyensúlyozott számú partíciót választani.
Jó elsődleges kulcs be Cassandra
Vegyünk egy példát, és keressük meg, melyik elsődleges kulcs a jó.
Itt van a MusicPlaylist táblázat.
Create table MusicPlaylist ( SongId int, SongName text, Year int, Singer text, Primary key(SongId, SongName) );
A fenti példában a MusicPlaylist táblázatban,
- A Songid a partíciókulcs, és
- A SongName a klaszterező oszlop
- Az adatok a SongName alapján lesznek csoportosítva. Csak egy partíció jön létre a SongId-vel. Nem lesz más partíció a MusicPlaylist táblázatban.
Ez az adatmodell lassítja az adatok visszakeresését a rossz elsődleges kulcs miatt.
Itt egy másik MusicPlaylist táblázat.
Create table MusicPlaylist ( SongId int, SongName text, Year int, Singer text, Primary key((SongId, Year), SongName) );
A fenti példában a MusicPlaylist táblázatban,
- Songid és Year a partíciókulcs, és
- A SongName a klaszterező oszlop.
- Az adatok a SongName alapján lesznek csoportosítva. Ebben a táblázatban minden évben új partíció jön létre. Az év összes dala ugyanazon a csomóponton lesz. Ez az elsődleges kulcs nagyon hasznos lesz az adatokhoz.
Ezzel az adatmodellel az adatok visszakeresése gyors lesz.
Modellezze adatait Cassandra
A következő dolgokat érdemes szem előtt tartani a lekérdezések modellezésekor:
Határozza meg, milyen lekérdezéseket szeretne támogatni
Először is határozza meg, milyen lekérdezéseket szeretne.
Például kell?
- csatlakozik
- Csoportosít
- Szűrés melyik oszlopra stb.
Hozzon létre táblázatot a lekérdezések szerint
Hozzon létre táblázatot a lekérdezések szerint. Hozzon létre egy táblázatot, amely kielégíti a lekérdezéseket. Próbáljon meg úgy létrehozni egy táblát, hogy minimális számú partíciót be kelljen olvasni.
Egy-egy kapcsolat kezelése Cassandra
Egy az egyhez kapcsolat azt jelenti, hogy két táblának egy az egyhez megfeleltetése van. Például egy hallgató csak egy kurzust regisztrálhat, és egy hallgatóra szeretnék rákeresni, hogy egy adott hallgató melyik kurzusra van regisztrálva.
Tehát ebben az esetben a táblázatsémának tartalmaznia kell a hallgató minden részletét az adott kurzusnak megfelelően, például a kurzus nevét, a hallgató számát, a hallgató nevét stb.
Create table Student_Course ( Student rollno int primary key, Student_name text, Course_name text, );
Egy a többhez való kapcsolat kezelése Cassandra
Az egy a sokhoz kapcsolat azt jelenti, hogy két táblázat között egy-sok megfeleltetés van.
Például egy kurzust sok diák tanulhat. Meg akarom keresni az összes hallgatót, aki egy adott kurzust tanul.
Tehát ha a kurzus nevére kérdezek rá, sok olyan hallgató neve lesz, aki egy adott kurzust tanul.
Create table Student_Course ( Student_rollno int, Student_name text, Course_name text, );
A következő lekérdezéssel lekérhetem egy adott kurzus összes hallgatóját.
Select * from Student_Course where Course_name='Course Name';
Sok-sok kapcsolat kezelése Cassandra
Sok-sok kapcsolat azt jelenti, hogy két táblázat között sok-sok kapcsolat van.
Például egy kurzust sok hallgató tanulhat, és egy hallgató is sok kurzust tanulhat.
Meg akarom keresni az összes hallgatót, aki egy adott kurzust tanul. Ezenkívül meg akarom keresni az összes olyan kurzust, amelyet egy adott hallgató tanul.
Tehát ebben az esetben két táblám lesz, azaz két esetre osztom a problémát.
Először létrehozok egy táblázatot, amelyben megtalálhatja egy adott hallgató kurzusait.
Create table Student_Course ( Student_rollno int primary key, Student_name text, Course_name text, );
Egy adott hallgató összes kurzusát megtalálom a következő lekérdezéssel.
Select * from Student_Course where student_rollno=rollno;
Másodszor, létrehozok egy táblázatot, amelyből megtudhatja, hány hallgató tanul egy adott kurzuson.
Create table Course_Student ( Course_name text primary key, Student_name text, student_rollno int );
A következő lekérdezéssel találhatok egy hallgatót egy adott kurzusban.
Select * from Course_Student where Course_name=CourseName;
Különbség az RDBMS és Cassandra Adatmodellezés
RDBMS | Cassandra |
---|---|
Az adatokat normalizált formában tárolja | Az adatokat denormalizált formában tárolja |
Legacy dbms; strukturált adatok | Széles sor üzlet, Dinamikus; strukturált és strukturálatlan adatok |
Összegzésként
- Adatmodellezés be Cassandra más, mint a többi RDBMS adatbázisok.
- Cassandra Az adatmodellezésnek van néhány szabálya. Ezeket a szabályokat be kell tartani a jó adatmodellezés érdekében. Ezeken a szabályokon kívül három különböző adatmodellezési esetet láttunk, és ezek kezelését.
- Egy az egyhez kapcsolat azt jelenti, hogy két táblának egy az egyhez megfeleltetése van.
- Az egy a sokhoz kapcsolat azt jelenti, hogy két táblázat között egy-sok megfeleltetés van.
- Sok-sok kapcsolat azt jelenti, hogy két táblázat között sok-sok kapcsolat van.