Cassandra adatmodell egyszerű példával

Bár a Cassandra lekérdezési nyelv hasonlít az SQL nyelvre, adatmodellezési módszereik teljesen eltérnek.

Cassandrában 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 Cassandrán. A legjobb, ha szem előtt tartunk néhány alább részletezett szabályt.

Ebben az oktatóanyagban megtanulja-

  • Cassandra adatmodell szabályai
  • Adatait modellezze Cassandrában
  • Egy-egy kapcsolat kezelése
  • Egy-sok kapcsolat kezelése
  • Sok-sok kapcsolat kezelése

Cassandra adatmodell szabályai

Cassandrában az írások nem drágák. A Cassandra nem támogatja a csatlakozásokat, csoportosításokat, VAGY záradékokat, összesítéseket stb. Tehát az adatait úgy kell tárolnia, hogy azok teljes mértékben visszakereshetők legyenek. Tehát ezeket a szabályokat szem előtt kell tartani az adatok Cassandrában történő modellezése során.

  1. Maximalizálja az írások számát

    Cassandrában az írások nagyon olcsók. A Cassandra a nagy írási teljesítményre van optimalizálva. Ezért próbálja maximalizálni az írásokat az olvasási teljesítmény és az adatok jobb elérhetősége érdekében. Kompromisszum van az adatírás és az adatolvasás között. Tehát optimalizálja az adatok olvasási teljesítményét az adatírások számának maximalizálásával.

  2. Maximalizálja az adatmásolást

    Az adatok denormalizálása és az adatok duplikálása a Cassandra defacto-ja. A lemezterület nem drágább, mint a memória, a CPU-feldolgozás és az IO-műveletek. Mivel a Cassandra egy elosztott adatbázis, így az adatok duplikálása azonnali adatelérhetőséget biztosít, és nem egyetlen hibapontot jelent.

Adatmodellezési célok

A Cassandrában történő adatmodellezés során követnie kell a következő célokat.

  1. Terjessze az adatokat egyenletesen a fürt köré

    Egyforma mennyiségű adatot szeretne a Cassandra-fürt minden csomópontján. Az adatokat különböző csomópontokra terjesztik az elsődleges kulcs első részének számító partíciós kulcsok alapján. Tehát próbáljon egész számokat választani elsődleges kulcsként az adatok egyenletes elosztásához a fürt körül.

  2. Az adatok lekérdezése közben minimalizálja az olvasott partíciók számát

    A partíció egy rekordcsoport, ugyanazzal a partíciókulccsal. Az olvasott lekérdezés kiadásakor adatokat gyűjt 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 összegyűjtéséhez.

    Ez nem azt jelenti, hogy nem szabad partíciókat létrehozni. Ha az adatok nagyon nagyok, akkor nem tudja megőrizni ezt a hatalmas mennyiségű adatot az egyetlen partíción. Az egyetlen partíció lelassul.

    Ezért próbáljon kiegyensúlyozott számú partíciót választani.

Jó elsődleges kulcs

Vegyünk egy példát, és keressük meg, melyik elsődleges kulcs jó.

Itt található 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ábla,

  • A Songid a partíciókulcs, és
  • A SongName a fürtözési oszlop
  • Az adatok a SongName alapján csoportosulnak. Csak egy partíció jön létre a SongId alkalmazással. A MusicPlaylist táblában nem lesz más partíció.

Az adatlekérdezés lassú lesz ez az adatmodell miatt a rossz elsődleges kulcs miatt.

Itt van egy másik táblázat a MusicPlaylist.

Create table MusicPlaylist(SongId int,SongName text,Year int,Singer text,Primary key((SongId, Year), SongName));

A fenti példában a MusicPlaylist tábla,

  • Songid és az Year a partíciókulcs, és
  • A SongName a fürtözési oszlop.
  • Az adatok a SongName alapján csoportosulnak. 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.

Adatkeresésünk gyors lesz ez az adatmodell.

Adatait modellezze Cassandrában

A következő dolgokat szem előtt kell tartani a lekérdezések modellezése során.

  1. Határozza meg, hogy milyen lekérdezéseket szeretne támogatni
  2. Először határozza meg, hogy milyen lekérdezéseket szeretne.

    Például kell?

    • Csatlakozik
    • Csoportosít
    • Szűrés melyik oszlopra stb.
  3. Hozzon létre táblázatot a lekérdezéseinek megfelelően

    Hozzon létre táblázatot a lekérdezéseinek megfelelően. Hozzon létre egy táblázatot, amely kielégíti a kérdéseit. Próbáljon úgy létrehozni egy táblázatot, hogy minimális számú partíciót kell elolvasni.

Egy-egy kapcsolat kezelése

Az egy az egyhez viszony azt jelenti, hogy két táblázat egy-egy levelezéssel rendelkezik. Például a hallgató csak egy tanfolyamot regisztrálhat, és szeretnék rákeresni egy hallgatóra, hogy melyik tanfolyamon regisztrált egy adott hallgató.

Tehát ebben az esetben a táblázati sémának tartalmaznia kell a hallgató minden részletét az adott tanfolyamnak megfelelően, például a kurzus nevét, a hallgató névsorát, a diák nevét stb.

Create table Student_Course(Student rollno int primary key,Student_name text,Course_name text,);

Egy-sok kapcsolat kezelése

Az egy a sokhoz viszony azt jelenti, hogy két táblázat között egy-sok megfelelés van.

Például egy tanfolyamot sok hallgató tanulmányozhat. Meg akarom keresni az összes hallgatót, aki egy adott tanfolyamot tanul.

Tehát a kurzus nevének lekérdezésével sok olyan diáknevem lesz, akik egy adott kurzust fognak tanulni.

Create table Student_Course(Student_rollno int,Student_name text,Course_name text,);

A következő lekérdezéssel lekérhetem az összes hallgatót egy adott tanfolyamra.

Select * from Student_Course where Course_name='Course Name';

Sok-sok kapcsolat kezelése

Sok-sok kapcsolat azt jelenti, hogy sok-sok megfelelés van két táblázat között.

Például egy tanfolyamot sok hallgató tanulhat, és egy hallgató számos tanfolyamot is tanulhat.

Meg akarom keresni az összes hallgatót, aki egy adott tanfolyamot tanul. Ezenkívül szeretném megkeresni az összes tanfolyamot, amelyet egy adott hallgató tanul.

Tehát ebben az esetben két táblázatom lesz, azaz két esetre osztom a problémát.

Először létrehozok egy táblázatot, amely alapján megtalálja egy adott hallgató tanfolyamait.

Create table Student_Course(Student_rollno int primary key,Student_name text,Course_name text,);

A következő lekérdezéssel megtalálhatom egy adott hallgató összes tanfolyamát. ->

Select * from Student_Course where student_rollno=rollno;

Másodszor létrehozok egy táblázatot, amely alapján megtudhatja, hogy hány hallgató tanul egy adott tanfolyamon.

Create table Course_Student(Course_name text primary key,Student_name text,student_rollno int);

A következő lekérdezéssel találhatok hallgatót egy adott tanfolyamon.

Select * from Course_Student where Course_name=CourseName;

Különbség az RDBMS és a Cassandra adatmodellezés között

RDBMS

Cassandra

Az adatokat normalizált formában tárolja

Az adatokat denormalizált formában tárolja

Örökölt dbms; strukturált adatok

Széles soros üzlet, Dinamikus; strukturált és strukturálatlan adatok

Összegzés

Az adatmodellezés a Cassandrában eltér a többi RDBMS adatbázistól. A Cassandra adatmodellezésnek vannak bizonyos szabályai. Ezeket a szabályokat be kell tartani a jó adatmodellezéshez. E szabályok mellett három különböző adatmodellezési esetet láttunk, és azt, hogyan kell kezelni őket.

érdekes cikkek...