Cassandra Příklad datového modelu s jednoduchou databází
Ačkoli Cassandra dotazovací jazyk se podobá s SQL jejich metody modelování dat jsou zcela odlišné.
In Cassandra, může špatný datový model snížit výkon, zvláště když se uživatelé snaží implementovat koncepty RDBMS Cassandra. Nejlepší je mít na paměti několik níže uvedených pravidel.
Cassandra Pravidla datového modelu
In Cassandra, zápisy nejsou drahé. Cassandra nepodporuje spojení, seskupení podle, klauzuli OR, agregace atd. Takže musíte svá data ukládat tak, aby je bylo možné zcela získat. Tato pravidla je tedy třeba mít na paměti při modelování dat Cassandra.
Maximalizujte počet zápisů
In Cassandra, píše jsou velmi levné. Cassandra je optimalizován pro vysoký výkon zápisu. Zkuste tedy maximalizovat své zápisy pro lepší výkon při čtení a dostupnost dat. Mezi zápisem dat a čtením dat existuje kompromis. Optimalizujte tedy výkon čtení dat maximalizací počtu zápisů dat.
Maximalizujte duplikaci dat
Denormalizace dat a duplikace dat jsou defacto Cassandra. Místo na disku není dražší než paměť, zpracování CPU a provoz IO. Jak Cassandra je distribuovaná databáze, takže duplikace dat poskytuje okamžitou dostupnost dat a žádný jediný bod selhání.
Cassandra Cíle datového modelování
Při modelování dat byste měli mít následující cíle Cassandra:
Rozložte data rovnoměrně kolem Cluster
Chcete stejné množství dat na každém uzlu Cassandra Cluster. Data se šíří do různých uzlů na základě klíčů oddílu, který je první částí primárního klíče. Zkuste tedy zvolit celá čísla jako primární klíč pro rovnoměrné šíření dat po clusteru.
Minimalizujte počet oddílů čtených při dotazování na data
Oddíl je skupina záznamů se stejným klíčem oddílu. Když je zadán dotaz na čtení, shromažďuje data z různých uzlů z různých oddílů.
Pokud bude oddílů mnoho, je třeba navštívit všechny tyto oddíly, aby bylo možné shromáždit data dotazu.
Neznamená to, že by se oddíly neměly vytvářet. Pokud jsou vaše data velmi velká, nemůžete mít takové množství dat na jediném oddílu. Jediný oddíl bude zpomalen.
Zkuste tedy zvolit vyvážený počet oddílů.
Dobrý primární klíč Cassandra
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
- Název skladby je sloupec shlukování
- Data budou seskupena na základě názvu skladby. 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íčem oddílu a
- Název skladby je sloupec shlukování.
- Data budou seskupena na základě názvu skladby. V této tabulce bude každý rok vytvořen nový oddíl. Všechny písně roku budou na stejném uzlu. Tento primární klíč bude velmi užitečný pro data.
Naše načítání dat bude díky tomuto datovému modelu rychlé.
Modelujte svá data Cassandra
Při modelování vašich dotazů je třeba mít na paměti následující věci:
Určete, jaké dotazy chcete podporovat
Nejprve si určete, jaké dotazy chcete.
Například potřebujete?
- Připojuje
- Skupina vytvořená
- Filtrování podle kterého sloupce atd.
Vytvořte tabulku podle vašich dotazů
Vytvořte tabulku podle vašich dotazů. Vytvořte tabulku, která uspokojí vaše dotazy. Pokuste se vytvořit tabulku tak, aby bylo potřeba načíst minimální počet oddílů.
Zvládání vztahu jeden k jednomu Cassandra
Vztah jedna ku jedné znamená, že dvě tabulky mají shodu jedna ku jedné. Student si například může zapsat pouze jeden kurz a já chci na studentovi vyhledat, ve kterém kurzu je konkrétní student zapsán.
V tomto případě by tedy vaše schéma tabulky mělo zahrnovat všechny podrobnosti o studentovi odpovídající danému kurzu, jako je název kurzu, číslo studenta, jméno studenta atd.
Create table Student_Course ( Student rollno int primary key, Student_name text, Course_name text, );
Zvládání vztahu jeden k mnoha Cassandra
Jeden až mnoho vztahů znamená mít mezi dvěma tabulkami jednu až mnoho korespondence.
Například kurz může studovat mnoho studentů. Chci vyhledat všechny studenty, kteří studují konkrétní 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, );
Pomocí následujícího dotazu mohu vyhledat všechny studenty určitého kurzu.
Select * from Student_Course where Course_name='Course Name';
Zvládání vztahů mnoho k mnoha Cassandra
Mnoho až mnoho vztahů znamená mít mnoho až mnoho korespondence mezi dvěma tabulkami.
Například kurz může studovat mnoho studentů a student může studovat také mnoho předmětů.
Chci vyhledat všechny studenty, kteří studují konkrétní kurz. Také chci prohledat všechny kurzy, 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, ve které najdete kurzy konkrétního studenta.
Create table Student_Course ( Student_rollno int primary key, Student_name text, Course_name text, );
Všechny kurzy konkrétního studenta najdu podle následujícího dotazu.
Select * from Student_Course where student_rollno=rollno;
Za druhé vytvořím tabulku, pomocí které zjistíte, kolik studentů studuje konkrétní kurz.
Create table Course_Student ( Course_name text primary key, Student_name text, student_rollno int );
Pomocí následujícího dotazu mohu najít studenta v konkrétním kurzu.
Select * from Course_Student where Course_name=CourseName;
Rozdíl mezi RDBMS a Cassandra Datové modelování
RDBMS | Cassandra |
---|---|
Ukládá data v normalizované podobě | Ukládá data v denormalizované formě |
Starší dbms; strukturovaná data | Široká řada obchod, Dynamic; strukturovaná a nestrukturovaná data |
Shrnutí
- Datové modelování v Cassandra je jiný než ostatní databáze RDBMS.
- Cassandra datové modelování má určitá pravidla. Pro dobré datové modelování je nutné tato pravidla dodržovat. Kromě těchto pravidel jsme viděli tři různé případy datového modelování a jak se s nimi vypořádat.
- Vztah jedna ku jedné znamená, že dvě tabulky mají shodu jedna ku jedné.
- Jeden až mnoho vztahů znamená mít mezi dvěma tabulkami jednu až mnoho korespondence.
- Mnoho až mnoho vztahů znamená mít mnoho až mnoho korespondence mezi dvěma tabulkami.