Cassandra Tabulka CQL: Příklad vytvoření, úpravy a zkrácení

⚡ Chytré shrnutí

Cassandra Operace s tabulkami zahrnují vytváření, úpravy a odstraňovánípinga zkracování rodin sloupců pomocí CQL. Tato stránka vysvětluje jednotlivé příkazy, tři primární klíčové formy, které rozhodují o distribuci dat, a rozdíly mezi odebráním řádků a odebráním tabulky.

  • 🏗️ Vytvořit tabulku: Tabulka potřebuje klíčový prostor, definice sloupců a klauzuli primárního klíče, která opravuje distribuci a pořadí řazení.
  • 🔑 Jediný primární klíč: Jeden sloupec slouží jako klíč oddílu, takže každý řádek s danou hodnotou přistane na stejném uzlu.
  • 🧩 Složený primární klíč: První sloupec rozděluje, zbývající sloupce shlukují a třídí řádky uvnitř oddílu.
  • 🧮 Složený klíč oddílu: Zahrnutí dvou sloupců rozdělí nadměrně velký oddíl na mnoho menších.
  • ✏️ Limity změn: Sloupce lze přidávat nebo odstraňovat, ale sloupce primárního klíče nelze nikdy změnit.
  • 🗑️ Zkrácení vs. zkrácení: Příkaz Drop odstraní schéma a data; příkaz truncate vyprázdní všechny řádky, ale zachová definici tabulky.

Cassandra Tabulka Vytvořit Změnit Odebrat

Syntaxe Cassandra dotazovací jazyk (CQL) se podobá SQL Jazyk.

Jak vytvořit tabulku v Cassandra

Rodina sloupců v Cassandra je podobná tabulce RDBMS. Rodina sloupců se používá k ukládání dat.

Příkaz 'Create Table' se používá k vytvoření rodiny sloupců v Cassandra.

Syntax

CREATE TABLE KeyspaceName.TableName (
    ColumnName DataType,
    ColumnName DataType,
    ColumnName DataType,
    PRIMARY KEY (ColumnName)
) WITH PropertyName = PropertyValue;

1. Primární klíč: K dispozici jsou dva typy primární klíč.

  • Jediný primární klíč: Jediný primární klíč je určen následující syntaxí.

Syntax

PRIMARY KEY (ColumnName)

V jediném primárním klíči je pouze jeden sloupec. Tento sloupec se také nazývá rozdělovací klíč. Data jsou rozdělena na základě tohoto sloupce. Data jsou šířena na různých uzlech na základě klíče oddílu.

2. Složený primární klíč: Složený primární klíč je určen následující syntaxí.

Syntax

PRIMARY KEY (ColumnName1, ColumnName2, ...)

Ve výše uvedené syntaxi je rozdělovacím klíčem ColumnName1 a ColumnName2 je Clusterklíč. Data budou rozdělena na základě ColumnName1 a data budou klastrována na základě ColumnName2. Clustering je proces, který třídí data v oddílu.

3. Složený klíč rozdělení: Složený rozdělovací klíč je určen následující syntaxí.

Syntax

PRIMARY KEY ((ColumnName1, ColumnName2), ColumnName3)

Ve výše uvedené syntaxi jsou ColumnName1 a ColumnName2 složeným klíčem oddílu. Data budou rozdělena na základě sloupců ColumnName1 a ColumnName2 a data budou seskupena na základě ColumnName3. Pokud máte na jednom oddílu příliš mnoho dat, použije se složený klíč oddílu. Složený klíč oddílu se používá k vytvoření více oddílů pro data.

  • S klauzulí

„S klauzulí“ se používá k určení jakékoli vlastnosti a její hodnoty pro definovanou tabulku. Například pokud chcete komprimovat Cassandra data tabulky. Vlastnost komprese můžete nastavit zadáním hodnoty vlastnosti algoritmu komprese v klauzuli „With“. Stejná klauzule také nastavuje CLUSTERING ORDER BY pro obrácení směru řazení shlukujícího se sloupce a default_time_to_live pro automatické vypršení platnosti každého řádku.

Příklad

Zde je provedení příkazu 'Create table', který vytvoří tabulku s názvem 'Student' v prostoru klíčů 'University'.

Cassandra Vytvořit tabulku

CREATE TABLE University.Student (
    RollNo int,
    Name text,
    dept text,
    PRIMARY KEY (RollNo)
);

Po úspěšném provedení příkazu 'Vytvořit tabulku' bude v klíčovém prostoru 'Univerzita' vytvořena tabulka 'Student' se sloupci RollNo, Name a dept. RollNo je primární klíč. RollNo je také klíč oddílu, takže každý student zabírá samostatný jednořádkový oddíl.

Cassandra Změnit stůl

Příkaz 'Změnit tabulku' se používá k odstranění sloupce, přidání nového sloupce, změně názvu sloupce, změně typu sloupce a změně vlastnosti tabulky.

Syntax

Následuje syntaxe příkazu 'Alter Table.'

ALTER TABLE KeyspaceName.TableName
    ADD ColumnName ColumnDataType;

ALTER TABLE KeyspaceName.TableName
    DROP ColumnName;

ALTER TABLE KeyspaceName.TableName
    RENAME ColumnName TO NewColumnName;

ALTER TABLE KeyspaceName.TableName
    WITH PropertyName = PropertyValue;

Každý formulář je vydán jako samostatný výpis. V současné době platí dvě omezení Cassandra verze: datový typ existujícího sloupce již nelze změnit a příkaz RENAME funguje pouze u shlukujícího se sloupce primárního klíče.

Příklad

Zde je snímek příkazu 'Změnit tabulku', který přidá nový sloupec do tabulky Student.

Cassandra Změnit stůl

ALTER TABLE University.Student ADD Semester int;

Po úspěšném provedení příkazu 'Změnit tabulku' bude do tabulky Student přidán nový sloupec 'Semestr' s datovým typem 'int'.

Zde je snímek obrazovky, který ukazuje aktualizovanou tabulku Student.

Cassandra Změnit stůl

Cassandra Drop table

Příkaz 'Drop table' odstraní zadanou tabulku včetně všech dat z klíčového prostoru. Před odstraňovánímping stůl, Cassandra pořídí snímek dat, nikoli schéma jako zálohu.

Syntax

DROP TABLE IF EXISTS KeyspaceName.TableName;

Příklad

Zde je snímek provedeného příkazu 'Drop Table', který vypustí tabulku Student z klíčového prostoru 'University'.

Cassandra Drop table

DROP TABLE University.Student;

Po úspěšném provedení příkazu 'Drop Table' bude tabulka Student odstraněna z klíčového prostoru University.

Zde je snímek, který ukazuje chybu vrácenou serverem Cassandra při pokusu o přístup k neexistující tabulce Student.

Cassandra Drop table

Cassandra Zkrátit tabulku

Příkaz 'Truncate table' odstraní všechna data ze zadané tabulky. Před zkrácením dat Cassandra vezme snímek dat jako zálohu.

Syntax

TRUNCATE KeyspaceName.TableName;

Příklad

V tabulce Student jsou tři záznamy. Toto jsou záznamy v tabulce.

Cassandra Zkrátit tabulku

Zde je snímek provedeného příkazu 'Truncate table', který odstraní všechna data z tabulky Student.

Cassandra Zkrátit tabulku

Po úspěšném provedení příkazu 'Truncate Table' budou všechna data z tabulky Student odstraněna.

Zde je snímek stavu databáze, kde nejsou žádné záznamy v tabulce Student.

Cassandra Zkrátit tabulku

Příkaz Truncate vyžaduje, aby byl každý uzel dosažitelný, protože se provádí v celém clusteru najednou. Pokud je kterýkoli uzel nefunkční, příkaz selže, což je záměrná ochrana proti zanechání částečných dat.

Přetáhnout vs. Zkrátit vs. Smazat v Cassandra

Tři příkazy odstraní data a výběr nesprávného buď zničí schéma, nebo způsobí problém s výkonem.

Příkaz Co odstraňuje Schéma zachováno Stát
SHOP STŮL Všechny řádky a definice tabulky Ne Levné. SSTables se pořizují snímky a poté se zahazují.
Zkrátit Všechny řádky Ano Levné, ale potřebuje všechny uzly nainstalované. Nejsou vytvořeny žádné náhrobky.
DELETE Vybrané řádky nebo sloupce Ano Drahé v daném měřítku. Každé odstranění zapíše náhrobek, který se přečte „musí přeskočit do zhutnění“.

Praktickým pravidlem je upřednostnit TRUNCATE před hromadným DELETE při mazání celé tabulky, protože tisíce náhrobků zpomalí každé následné čtení daného oddílu. Odstranění na úrovni řádků je popsáno v Vkládání, aktualizace a mazání CQL výukový program.

Nejčastější dotazy

Ne. Primární klíč určuje fyzické umístění dat, takže je pevně stanoven při vytvoření. Jeho změna znamená vytvoření nové tabulky s požadovaným klíčem a migraci řádků mezi nimi.

Přidejte WITH CLUSTERING ORDER BY (ColumnName DESC) při vytváření. Nastavení ve schématu je mnohem levnější než řazení v době dotazu při každém čtení.

Ne. Sloupec je před dotazy okamžitě skryt, ale jeho data zůstávají uvnitř existujících SSTables, dokud je komprimace nepřepíše. Prostor se uvolňuje postupně.

Seznam sloupců se překládá čistě, ale umělá inteligence často uchovává náhradní ID jako klíč oddílu, což vytváří oddíly s jedním řádkem. Přeformulujte vzor dotazu tak, aby byl klíč vybrán pro čtení.

Ano, pro problémy na úrovni vzorů, jako jsou chybějící sloupce clusteringu, neohraničené oddíly nebo sloupce kolekce, které pravděpodobně překračují limity. Před provedením akce ověřte skutečnou mohutnost.

Shrňte tento příspěvek takto: