Úvod
Cassandra je open-source distribuovaný databázový software pro práci s databázemi NoSQL. Tento software používá CQL (Cassandra Query Language) jako základ pro komunikaci. CQL uchovává data v tabulkách uspořádaných do sady řádků se sloupci, které obsahují páry klíč–hodnota.
Tabulky CQL jsou seskupeny v datových kontejnerech nazývaných keyspaces v Cassandře. Data uložená v jednom klíčovém prostoru nesouvisí s jinými daty v clusteru. Takže můžete mít tabulky pro více různých účelů v samostatných klíčových prostorech v clusteru a data se nebudou shodovat.
V této příručce se naučíte, jak vytvořit tabulku Cassandra pro několik různých účelů a jak tabulky upravovat, rušit nebo zkracovat pomocí shellu Cassandra.

Předpoklady
- databázový software Cassandra nainstalovaný ve vašem systému
- Přístup k terminálu nebo nástroji příkazového řádku za účelem načtení cqlsh
- Uživatel s potřebnými oprávněními k provedení příkazů
Výběr klíčového prostoru pro tabulku Cassandra
Než začnete přidávat tabulku, musíte určit klíčový prostor, kde chcete tabulku vytvořit . Existují dvě možnosti, jak to udělat.
Možnost 1:Příkaz USE
Spusťte USE
příkaz pro výběr prostoru kláves, na který se budou vztahovat všechny vaše příkazy. Chcete-li to provést, zadejte v shellu cqlsh:
USE keyspace_name;
Poté můžete začít přidávat tabulky.
Možnost 2:Zadejte název klíčového prostoru v dotazu
Druhou možností je zadat název klíčového prostoru v dotazu na vytvoření tabulky. První část příkazu, před názvy sloupců a volbami, vypadá takto:
CREATE TABLE keyspace_name.table_name
Tímto způsobem okamžitě vytvoříte tabulku ve vámi definovaném klíčovém prostoru.
Základní syntaxe pro vytváření tabulek Cassandra
Vytváření tabulek pomocí CQL vypadá podobně jako SQL dotazy. V této části vám ukážeme základní syntaxi pro vytváření tabulek v Cassandře.
Základní syntaxe pro vytvoření tabulky vypadá takto:
CREATE TABLE tableName (
columnName1 dataType,
columnName2 dataType,
columnName2 datatype
PRIMARY KEY (columnName)
);
Volitelně můžete definovat další vlastnosti a hodnoty tabulky pomocí WITH
:
WITH propertyName=propertyValue;
Použijte jej například k definování způsobu ukládání dat na disk nebo zda použít kompresi.
Typy primárního klíče Cassandra
Každá tabulka v Cassandře musí mít primární klíč, díky kterému je řádek jedinečný. Pomocí primárních klíčů určíte, který uzel ukládá data a jak je rozděluje.
Existují dva typy primárních klíčů:
- Jednoduchý primární klíč . Obsahuje pouze jeden název sloupce jako klíč oddílu, který určuje, které uzly budou data ukládat.
- Složený primární klíč. Používá jeden rozdělovací klíč a několik klastrovacích sloupců k definování, kam se mají data ukládat a jak je třídit na oddílu.
- Klíč složeného oddílu. V tomto případě existuje několik sloupců, které určují, kam se mají data uložit. Tímto způsobem můžete data rozdělit na menší části a distribuovat je mezi více oddílů, abyste se vyhnuli aktivnímu bodu.
Jak vytvořit stůl Cassandra
Následující části vysvětlují, jak vytvořit tabulky s různými typy primárních klíčů. Nejprve vyberte klíčový prostor, kde chcete vytvořit tabulku. V našem případě:
USE businesinfo;
Každá tabulka obsahuje sloupce a datový typ Cassandra pro každou položku.
Vytvoření tabulky pomocí jednoduchého primárního klíče
Prvním příkladem je základní tabulka s dodavateli. ID je jedinečné pro každého dodavatele a bude sloužit jako primární klíč.
Dotaz CQL vypadá takto:
CREATE TABLE suppliers (
supp_id int PRIMARY KEY,
supp_city text,
supp_email text,
supp_fee int,
supp_name text,
supp_phone int
);

Tento dotaz vytvořil tabulku s názvem dodavatel s supp_id
jako primární klíč pro tabulku. Když použijete jednoduchý primární klíč s názvem sloupce jako klíčem oddílu, můžete jej umístit buď na začátek dotazu (vedle sloupce, který bude sloužit jako primární klíč), nebo na konec a poté zadat název sloupce. :
CREATE TABLE suppliers (
supp_id int,
supp_city text,
supp_email text,
supp_fee int,
supp_name text,
supp_phone int
PRIMARY KEY(supp_id)
);
Chcete-li zjistit, zda je tabulka v prostoru klíčů, zadejte:
DESCRIBE TABLES;
Výstup uvádí všechny tabulky v daném klíčovém prostoru spolu s tou, kterou jste vytvořili.

Chcete-li zobrazit obsah tabulek, zadejte:
SELECT * FROM suppliers;

Výstup zobrazuje všechny sloupce definované při vytváření tabulky.
Dalším způsobem, jak zobrazit podrobnosti tabulky, je použít DESCRIBE
a zadejte název tabulky:
DESCRIBE suppliers;

Výstup zobrazuje sloupce a výchozí nastavení tabulky.
Vytvoření tabulky se složeným primárním klíčem
Chcete-li se dotazovat a získat výsledky seřazené v určitém pořadí, vytvořte tabulku se složeným primárním klíčem.
Vytvořte například tabulku pro dodavatele a všechny produkty, které nabízejí. Protože produkty nemusí být pro každého dodavatele jedinečné, musíte do primárního klíče přidat jeden nebo více sloupců shlukování, aby byl jedinečný.
Schéma tabulky vypadá takto:
CREATE TABLE suppliers_by_product (
supp_product text,
supp_id int,
supp_product_quantity text,
PRIMARY KEY(supp_product, supp_id)
);

V tomto případě jsme použili supp_product
a supp_id
vytvořit jedinečný složený klíč. Zde je první položka v brackets supp_product
je klíč oddílu. Určuje, kam se mají data uložit, tedy jak systém data rozdělí.
Další položkou je sloupec shlukování, který určuje, jak Cassandra třídí data, v našem případě je to podle supp_id
.
Obrázek výše ukazuje, že tabulka byla úspěšně vytvořena. Chcete-li zkontrolovat podrobnosti tabulky, spusťte DESCRIBE TABLE
dotaz na novou tabulku:
DESCRIBE TABLE suppliers_by_product;

Výchozí nastavení pro pořadí shlukování je vzestupné (ASC). Můžete změnit na sestupný (DESC) přidáním následujícího příkazu za primární klíč:
WITH CLUSTERING ORDER BY (supp_id DESC);
Za klíč oddílu jsme zadali jeden klastrovací sloupec. V případě, že potřebujete seřadit data pomocí dvou sloupců, přidejte další sloupec do závorek primárního klíče.
Vytváření tabulek pomocí složeného klíče oddílu
Vytvoření tabulky s klíčem složeného oddílu je užitečné, když jeden uzel ukládá velký objem dat a chcete rozdělit zatížení na více uzlů.
V tomto případě definujte primární klíč s klíčem oddílu, který se skládá z více sloupců. Musíte použít dvojité závorky. Poté přidejte klastrovací sloupce jako dříve, abyste vytvořili jedinečný primární klíč.
Například:
CREATE TABLE suppliers_by_product_type (
supp_product_consume text,
supp_product_stock text,
supp_id int,
supp_name text,
PRIMARY KEY((supp_product_consume, supp_product_stock), supp_id)
);

Ve výše uvedeném příkladu jsme rozdělili data do dvou kategorií, dodavatelské spotřební produkty a skladovatelné produkty, a distribuovali data pomocí složeného klíče oddílu.
Pokud místo toho použijete složený primární klíč s jednoduchým klíčem oddílu a několika klastrovacími sloupci, pak by jeden uzel zpracoval všechna data seřazená podle více sloupců.
Rozkládací stůl Cassandry
Chcete-li odstranit tabulku v Cassandře, použijte DROP TABLE
prohlášení. Chcete-li vybrat tabulku, kterou chcete odstranit, zadejte:
DESCRIBE TABLES;
Najděte stůl, který chcete shodit. K odstranění použijte název tabulky:
DROP TABLE suppliers_by_product_type;
Spusťte DESCRIBE TABLES
dotaz znovu, abyste ověřili, že jste tabulku úspěšně odstranili.

Stůl Cassandra Alter
Cassandra CQL umožňuje přidávat nebo odebírat sloupce z tabulky. Použijte ALTER TABLE
příkaz k provedení změn v tabulce.
Přidat sloupec do tabulky
Před přidáním sloupce do tabulky vám doporučujeme prohlédnout si obsah tabulky a ověřit, že název sloupce již neexistuje.

Po ověření použijte ALTER TABLE
dotaz v tomto formátu pro přidání sloupce:
ALTER TABLE suppliers_by_product
ADD supp_name text;
Popište tabulku a potvrďte, že se sloupec objeví v seznamu.

Odstranit sloupec z tabulky
Podobně jako při přidávání sloupce můžete sloupec z tabulky vypustit. Pomocí DESCRIBE TABLES
vyhledejte sloupec, který chcete odstranit dotaz.
Poté zadejte:
ALTER TABLE suppliers_by_product
DROP supp_product_quantity;
Tabulka Cassandra Truncate
Pokud nechcete smazat celou tabulku, ale potřebujete odstranit všechny řádky, použijte TRUNCATE
příkaz.
Chcete-li například odstranit všechny řádky z tabulky dodavatelé , zadejte:
TRUNCATE suppliers;
Chcete-li ověřit, že v tabulce již nejsou žádné řádky, použijte SELECT
prohlášení.

Jakmile tabulku zkrátíte, změny jsou trvalé, takže při používání tohoto dotazu buďte opatrní.