Cassandra Tabel CQL: Exemplu de creare, modificare și trunchiere

⚡ Rezumat inteligent

Cassandra Operațiile cu tabelele acoperă crearea, modificarea, eliminareapingși trunchierea familiilor de coloane cu CQL. Această pagină explică fiecare comandă, cele trei forme de cheie primară care decid distribuția datelor și diferențele dintre eliminarea rândurilor și eliminarea unui tabel.

  • 🏗️ Creați tabel: Un tabel are nevoie de un spațiu cheie, definiții pentru coloane și o clauză de cheie primară care stabilește distribuția și ordinea de sortare.
  • 🔑 Cheie primară unică: O coloană acționează ca cheie de partiție, astfel încât fiecare rând cu acea valoare ajunge pe același nod.
  • 🧩 Cheie primară compusă: Prima coloană se partiționează, coloanele rămase se grupează și sortează rândurile din interiorul partiției.
  • 🧮 Cheie de partiție compusă: Întreruperea a două coloane împarte o partiție supradimensionată în mai multe partiții mai mici.
  • ✏️ Modificare limite: Coloanele pot fi adăugate sau eliminate, dar coloanele cu cheie primară nu pot fi niciodată modificate.
  • 🗑️ Drop vs Trunchiere: Funcția „drop” elimină schema și datele; „truncate” golește fiecare rând, dar păstrează definiția tabelului.

Cassandra Creare tabel Alter Drop

Sintaxa lui Cassandra limbajul de interogare (CQL) seamănă cu SQL limba.

Cum se creează un tabel în Cassandra

Familia de coloană în Cassandra este similar cu tabelul RDBMS. Familia de coloane este utilizată pentru stocarea datelor.

Comanda „Creați tabel” este folosită pentru a crea o familie de coloane Cassandra.

Sintaxă

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

1. Cheie primară: Există două tipuri de cheia principala.

  • Cheie primară unică: Cheia primară unică este specificată de următoarea sintaxă.

Sintaxă

PRIMARY KEY (ColumnName)

În cheia primară unică, există doar o singură coloană. Acea coloană se mai numește și cheie de partiționare. Datele sunt împărțite pe baza acelei coloane. Datele sunt răspândite pe diferite noduri pe baza cheii de partiție.

2. Cheie primară compusă: Cheia primară compusă este specificată de următoarea sintaxă.

Sintaxă

PRIMARY KEY (ColumnName1, ColumnName2, ...)

În sintaxa de mai sus, ColumnName1 este cheia de partiție, iar ColumnName2 este Clustercheie ing. Datele vor fi partiționate pe baza ColumnName1, iar datele vor fi grupate pe baza ColumnName2. Clustering este procesul care sortează datele din partiție.

3. Cheie de partiție compusă: Cheia de partiționare compusă este specificată de următoarea sintaxă.

Sintaxă

PRIMARY KEY ((ColumnName1, ColumnName2), ColumnName3)

În sintaxa de mai sus, NumeColoană1 și NumeColoană2 reprezintă cheile de partiție compuse. Datele vor fi partiționate pe baza ambelor coloane NumeColoană1 și NumeColoană2, iar datele vor fi grupate în grup pe baza NumeColoană3. Dacă aveți prea multe date pe o singură partiție, atunci se utilizează cheia de partiționare compusă. Cheia de partiționare compusă este utilizată pentru a crea mai multe partiții pentru date.

  • Cu clauza

„Cu clauză” este folosit pentru a specifica orice proprietate și valoarea acesteia pentru tabelul definit. De exemplu, dacă doriți să comprimați Cassandra date din tabel. Puteți seta proprietatea de compresie specificând valoarea proprietății algoritmului de compresie în clauza „With”. Aceeași clauză setează, de asemenea, CLUSTERING ORDER BY pentru a inversa direcția de sortare a unei coloane de grupare în cluster și default_time_to_live pentru a expira automat fiecare rând.

Exemplu

Iată execuția comenzii „Creați tabel” care va crea numele tabelului „Student” în spațiul de taste „Universitate”.

Cassandra Creați tabel

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

După executarea cu succes a comenzii „Create table”, tabelul „Student” va fi creat în spațiul de chei „University” cu coloanele RollNo, Name și dept. RollNo este cheia primară. RollNo este, de asemenea, o cheie de partiție, deci fiecare student ocupă o partiție separată pe un singur rând.

Cassandra Schimbați masa

Comanda „Alter Table” este folosită pentru a elimina o coloană, pentru a adăuga o nouă coloană, pentru a modifica numele coloanei, pentru a modifica tipul de coloană și pentru a modifica proprietatea tabelului.

Sintaxă

Mai jos este sintaxa comenzii „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;

Fiecare formular este emis ca o declarație separată. În prezent, se aplică două restricții. Cassandra versiuni: tipul de date al unei coloane existente nu mai poate fi modificat, iar RENAME funcționează doar pe o coloană de clusterizare a cheii primare.

Exemplu

Iată instantaneul comenzii „Alter Table” care va adăuga o nouă coloană în tabelul Student.

Cassandra Schimbați masa

ALTER TABLE University.Student ADD Semester int;

După executarea cu succes a comenzii „Alter Table”, o nouă coloană „Semester” cu tipul de date „int” va fi adăugată la tabel Student.

Iată captura de ecran care arată tabelul Student actualizat.

Cassandra Schimbați masa

Cassandra Drop Table

Comanda „Drop table” elimină tabelul specificat, inclusiv toate datele din spațiul cheilor. Înainte de eliminareping masa, Cassandra face o copie de rezervă a datelor, nu a schemei.

Sintaxă

DROP TABLE IF EXISTS KeyspaceName.TableName;

Exemplu

Iată instantaneul comenzii executate „Drop Table” care va arunca tabelul Student din keyspace „University”.

Cassandra Drop Table

DROP TABLE University.Student;

După executarea cu succes a comenzii „Drop Table”, tabelul Student va fi eliminat din keyspace University.

Iată instantaneul care arată eroarea returnată de Cassandra când a încercat să acceseze tabelul Student care nu există.

Cassandra Drop Table

Cassandra Trunchiați tabelul

Comanda „Truncate table” elimină toate datele din tabelul specificat. Înainte de a trunchia datele, Cassandra ia instantaneul datelor ca backup.

Sintaxă

TRUNCATE KeyspaceName.TableName;

Exemplu

Există trei înregistrări în tabelul Student. Acestea sunt înregistrările din tabel.

Cassandra Trunchiați tabelul

Iată instantaneul comenzii executate „Truncate table” care va elimina toate datele din tabel Student.

Cassandra Trunchiați tabelul

După executarea cu succes a comenzii „Truncate Table”, toate datele vor fi eliminate din tabel Student.

Iată un instantaneu al stării bazei de date în care nu există înregistrări în tabelul Student.

Cassandra Trunchiați tabelul

Truncate necesită ca fiecare nod să fie accesibil, deoarece este executată simultan în întregul cluster. Dacă vreun nod este nefuncțional, instrucțiunea eșuează, ceea ce reprezintă o măsură deliberată de protecție împotriva omiterii unor date parțiale.

Eliminare vs. Trunchiere vs. Ștergere în Cassandra

Trei comenzi elimină date, iar alegerea celei greșite fie distruge o schemă, fie lasă în urmă o problemă de performanță.

Comandă Ceea ce elimină Schema păstrată Costat
DROP TABLE Toate rândurile și definiția tabelului Nu Ieftin. Tabelele SST sunt fotografiate instantaneu, apoi eliminate.
TRUNCHIA Toate rândurile Da Ieftin, dar necesită fiecare nod activ. Nu se creează pietre funerare.
DELETE Rânduri sau coloane selectate Da Scump la scară largă. Fiecare eliminare scrie o piatră funerară care trebuie sărită până la compactare.

Regula practică este să se prefere TRUNCATE în locul unei DELETE în bloc atunci când se șterge un tabel întreg, deoarece mii de tombstone-uri vor încetini fiecare citire ulterioară a acelei partiții. Eliminarea la nivel de rând este acoperită în Inserare, actualizare și ștergere CQL tutorial.

Întrebări frecvente

Nu. Cheia primară determină plasarea fizică a datelor, deci este fixată la creare. Modificarea acesteia înseamnă crearea unui tabel nou cu cheia dorită și migrarea rândurilor.

Adăugați WITH CLUSTERING ORDER BY (ColumnName DESC) la momentul creării. Setarea acesteia în schemă este mult mai ieftină decât sortarea la momentul interogării la fiecare citire.

Nu. Coloana este ascunsă imediat de interogări, dar datele sale rămân în SSTable-urile existente până când compactarea le rescrie. Spațiul este recuperat treptat.

Lista de coloane se traduce corect, dar inteligența artificială păstrează adesea un ID surogat ca și cheie de partiție, ceea ce creează partiții cu un singur rând. Reformulați modelul de interogare astfel încât cheia să fie aleasă pentru citiri.

Da, pentru probleme la nivel de model, cum ar fi lipsa coloanelor de grupare, partiții nelimitate sau coloane de colecție care ar putea depăși limitele. Verificați cardinalitatea reală înainte de a acționa.

Rezumați această postare cu: