Datový model Cassandra s jednoduchým příkladem

Ačkoli se dotazovací jazyk Cassandra podobá jazyku SQL, jejich metody modelování dat jsou zcela odlišné.

V Cassandře může špatný datový model snížit výkon, zvláště když se uživatelé pokusí implementovat koncepty RDBMS na Cassandře. Nejlepší je mít na paměti několik pravidel podrobně popsaných níže.

V tomto výukovém programu se naučíte

  • Pravidla datového modelu Cassandra
  • Modelujte svá data v Cassandře
  • Řešení vztahu jeden k jednomu
  • Zvládání jednoho až mnoha vztahů
  • Vztah mezi mnoha lidmi

Pravidla datového modelu Cassandra

V Cassandře nejsou zápisy drahé. Cassandra nepodporuje spojení, seskupování, klauzuli OR, agregace atd. Vaše data tedy musíte ukládat tak, aby je bylo možné úplně vyhledat. Při modelování dat v Cassandře je tedy třeba mít na paměti tato pravidla.

  1. Maximalizujte počet zápisů

    V Cassandře jsou zápisy velmi levné. Cassandra je optimalizována pro vysoký výkon zápisu. Zkuste tedy maximalizovat zápis pro lepší výkon čtení a dostupnost dat. Mezi zápisem a čtením dat je kompromis. Optimalizujte tedy výkon čtení dat maximalizací počtu zápisů dat.

  2. Maximalizujte duplikaci dat

    Denormalizace dat a duplikace dat jsou defacto Cassandry. Místo na disku není dražší než paměť, zpracování CPU a operace IO. Protože Cassandra je distribuovaná databáze, zajišťuje duplikace dat okamžitou dostupnost dat a žádný jediný bod selhání.

Cíle modelování dat

Při modelování dat v Cassandře byste měli mít následující cíle.

  1. Rovnoměrné šíření dat po klastru

    Chcete stejné množství dat na každém uzlu clusteru Cassandra. Data se šíří do různých uzlů na základě klíčů oddílů, které jsou první částí primárního klíče. Zkuste tedy zvolit celá čísla jako primární klíč pro rovnoměrné šíření dat po klastru.

  2. Minimalizujte počet čtených oddílů při dotazování na data

    Oddíl je skupina záznamů se stejným klíčem oddílu. Po vydání čteného dotazu shromažďuje data z různých uzlů z různých oddílů.

    Pokud bude existovat mnoho oddílů, je třeba všechny tyto oddíly navštívit pro sběr dat dotazu.

    Neznamená to, že by neměly být vytvářeny oddíly. Pokud jsou vaše data velmi velká, nemůžete uchovat to obrovské množství dat na jednom oddílu. Jeden oddíl bude zpomalen.

    Zkuste tedy vybrat vyvážený počet oddílů.

Dobrý primární klíč

Vezměme si příklad a zjistíme, který primární klíč je dobrý.

Zde je tabulka MusicPlaylist.

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

Ve výše uvedeném příkladu tabulka MusicPlaylist,

  • Songid je klíč oddílu a
  • SongName je sloupec shlukování
  • Data budou seskupena na základě SongName. S SongId bude vytvořen pouze jeden oddíl. V tabulce MusicPlaylist nebude žádný další oddíl.

Načítání dat bude u tohoto datového modelu pomalé kvůli špatnému primárnímu klíči.

Zde je další tabulka MusicPlaylist.

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

Ve výše uvedeném příkladu tabulka MusicPlaylist,

  • Songid a Year jsou klíč oddílu a
  • SongName je sloupec shlukování.
  • Data budou seskupena na základě SongName. V této tabulce bude každý rok vytvořen nový oddíl. Všechny skladby roku budou na stejném uzlu. Tento primární klíč bude pro data velmi užitečný.

Načítání našich dat bude tímto datovým modelem rychlé.

Modelujte svá data v Cassandře

Při modelování dotazů byste měli mít na paměti následující věci.

  1. Určete, jaké dotazy chcete podporovat
  2. Nejprve určete, jaké dotazy chcete.

    Například potřebujete?

    • Připojí
    • Skupina vytvořená
    • Filtrování na kterém sloupci atd.
  3. Vytvořte tabulku podle vašich dotazů

    Vytvořte tabulku podle vašich dotazů. Vytvořte tabulku, která uspokojí vaše dotazy. Zkuste vytvořit tabulku takovým způsobem, že je třeba číst minimální počet oddílů.

Řešení vztahu jeden k jednomu

Vztah jedna ku jedné znamená, že dvě tabulky mají korespondenci jedna ku jedné. Například student může zaregistrovat pouze jeden kurz a já chci na studentovi vyhledat to, ve kterém kurzu je konkrétní student zaregistrován.

V tomto případě by tedy vaše schéma tabulky mělo zahrnovat všechny podrobnosti studenta v odpovídajícím konkrétním kurzu, jako je název kurzu, číslo role studenta, jméno studenta atd.

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

Zvládání jednoho až mnoha vztahů

Jeden k mnoha vztahům znamená mít jednu k mnoha korespondenci mezi dvěma tabulkami.

Kurz může například studovat mnoho studentů. Chci prohledat všechny studenty, kteří studují určitý kurz.

Takže dotazem na název kurzu budu mít mnoho jmen studentů, kteří budou studovat konkrétní kurz.

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

Následujícím dotazem mohu získat všechny studenty pro konkrétní kurz.

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

Vztah mezi mnoha lidmi

Mnoho až mnoho vztahů znamená mít mnoho až mnoho korespondence mezi dvěma tabulkami.

Kurz může například studovat mnoho studentů a student může také studovat mnoho kurzů.

Chci prohledat všechny studenty, kteří studují určitý kurz. Také chci prohledat celý kurz, který konkrétní student studuje.

Takže v tomto případě budu mít dvě tabulky, tj. Rozdělím problém na dva případy.

Nejprve vytvořím tabulku, pomocí které najdete kurzy konkrétního studenta.

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

Podle následujícího dotazu najdu všechny kurzy konkrétního studenta. ->

Select * from Student_Course where student_rollno=rollno;

Zadruhé vytvořím tabulku, pomocí které zjistíte, kolik studentů studuje určitý kurz.

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

Následujícím dotazem najdu studenta v konkrétním kurzu.

Select * from Course_Student where Course_name=CourseName;

Rozdíl mezi RDBMS a Cassandra Data Modeling

RDBMS

Cassandra

Ukládá data v normalizované podobě

Ukládá data v denormalizované podobě

Starší dbms; strukturovaná data

Široký řadový obchod, Dynamic; strukturovaná a nestrukturovaná data

souhrn

Modelování dat v Cassandře se liší od jiných databází RDBMS. Datové modelování Cassandry má určitá pravidla. Tato pravidla je třeba dodržovat pro dobré modelování dat. Kromě těchto pravidel jsme viděli tři různé případy modelování dat a jak s nimi zacházet.

Zajímavé články...