Cassandra CQL-tabell: Eksempel på oppretting, endring og avkorting
⚡ Smart oppsummering
Cassandra Tabelloperasjoner dekker oppretting, endring og slettingping, og avkorting av kolonnefamilier med CQL. Denne siden forklarer hver kommando, de tre primære nøkkelformene som bestemmer datafordeling, og forskjellene mellom å fjerne rader og å fjerne en tabell.

Syntaksen til Cassandra spørrespråk (CQL) ligner SQL Språk.
Hvordan lage tabell i Cassandra
Kolonnefamilie i Cassandra ligner på RDBMS-tabellen. Kolonnefamilien brukes til å lagre data.
Kommandoen 'Create Table' brukes til å opprette kolonnefamilier i Cassandra.
syntax
CREATE TABLE KeyspaceName.TableName ( ColumnName DataType, ColumnName DataType, ColumnName DataType, PRIMARY KEY (ColumnName) ) WITH PropertyName = PropertyValue;
1. Primærnøkkel: Det er to typer primærnøkkel.
- Enkelt primærnøkkel: Enkelt primærnøkkel er spesifisert av følgende syntaks.
syntax
PRIMARY KEY (ColumnName)
I den enkle primærnøkkelen er det bare en enkelt kolonne. Denne kolonnen kalles også partisjoneringsnøkkel. Data er partisjonert på grunnlag av den kolonnen. Data spres på forskjellige noder på grunnlag av partisjonsnøkkelen.
2. Sammensatt primærnøkkel: Sammensatt primærnøkkel er spesifisert av følgende syntaks.
syntax
PRIMARY KEY (ColumnName1, ColumnName2, ...)
I syntaksen ovenfor er ColumnName1 partisjoneringsnøkkelen og ColumnName2 er Clustering nøkkel. Data vil bli partisjonert på grunnlag av ColumnName1 og data vil bli gruppert på grunnlag av ColumnName2. Clustering er prosessen som sorterer data i partisjonen.
3. Sammensatt partisjoneringsnøkkel: Sammensatt partisjoneringsnøkkel er spesifisert av følgende syntaks.
syntax
PRIMARY KEY ((ColumnName1, ColumnName2), ColumnName3)
I syntaksen ovenfor er Kolonnenavn1 og Kolonnenavn2 den sammensatte partisjonsnøkkelen. Dataene vil bli partisjonert på grunnlag av både kolonnene Kolonnenavn1 og Kolonnenavn2, og dataene vil bli gruppert på grunnlag av Kolonnenavn3. Hvis du har for mye data på én partisjon, brukes en sammensatt partisjonsnøkkel. En sammensatt partisjonsnøkkel brukes til å opprette flere partisjoner for dataene.
- Med klausul
"With clause" brukes til å spesifisere enhver egenskap og dens verdi for den definerte tabellen. For eksempel hvis du ønsker å komprimere Cassandra tabelldata. Du kan angi komprimeringsegenskapen ved å spesifisere verdien for komprimeringsalgoritmens egenskap i «With-klausulen». Den samme klausulen angir også at CLUSTERING ORDER BY skal reversere sorteringsretningen til en klyngekolonne, og at default_time_to_live skal utløpe hver rad automatisk.
Eksempel
Her er utførelsen av kommandoen 'Opprett tabell' som vil opprette tabellnavnet 'Student' i tasterommet 'Universitet.'
CREATE TABLE University.Student ( RollNo int, Name text, dept text, PRIMARY KEY (RollNo) );
Etter vellykket utførelse av kommandoen «Opprett tabell», vil tabellen «Student» bli opprettet i nøkkelområdet «Universitet» med kolonnene RollNo, Name og dept. RollNo er primærnøkkelen. RollNo er også en partisjonsnøkkel, slik at hver student opptar en separat partisjon med én rad.
Cassandra Endre bord
Kommandoen 'Endre tabell' brukes til å slette kolonne, legge til en ny kolonne, endre kolonnenavn, endre kolonnetype og endre egenskapen til tabellen.
syntax
Følgende er syntaksen til kommandoen '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;
Hvert skjema utstedes som en separat erklæring. To begrensninger gjelder i gjeldende Cassandra utgivelser: datatypen til en eksisterende kolonne kan ikke lenger endres, og RENAME fungerer bare på en klyngekolonne med primærnøkkelen.
Eksempel
Her er øyeblikksbildet av kommandoen 'Endre tabell' som vil legge til ny kolonne i tabellen Student.
ALTER TABLE University.Student ADD Semester int;
Etter vellykket utførelse av kommandoen 'Alter Table' vil en ny kolonne 'Semester' med 'int' datatype bli lagt til tabellen Student.
Her er skjermbildet som viser den oppdaterte elevtabellen.
Cassandra Slipp bord
Kommandoen 'Drop table' sletter den angitte tabellen, inkludert alle dataene fra nøkkelområdet. Før slettingping bordet, Cassandra tar et øyeblikksbilde av dataene, ikke skjemaet som en sikkerhetskopi.
syntax
DROP TABLE IF EXISTS KeyspaceName.TableName;
Eksempel
Her er øyeblikksbildet av den utførte kommandoen 'Drop Table' som vil slippe tabell Student fra tasterommet 'University'.
DROP TABLE University.Student;
Etter vellykket utførelse av kommandoen 'Drop Table', vil tabell Student bli droppet fra keyspace-universitetet.
Her er øyeblikksbildet som viser feilen returnert av Cassandra når forsøkt å få tilgang til Student-tabell som ikke eksisterer.
Cassandra Avkutte tabell
Kommandoen 'Truncate table' fjerner alle dataene fra den angitte tabellen. Før du avkorter dataene, Cassandra tar øyeblikksbildet av dataene som en sikkerhetskopi.
syntax
TRUNCATE KeyspaceName.TableName;
Eksempel
Det er tre poster i tabellen Student. Dette er postene i tabellen.
Her er øyeblikksbildet av den utførte kommandoen 'Truncate table' som vil fjerne alle dataene fra tabellen Student.
Etter vellykket utførelse av kommandoen 'Truncate Table', vil alle dataene bli fjernet fra tabellen Student.
Her er øyeblikksbildet av databasetilstanden der det ikke er noen poster i tabellen Student.
Avkorting krever at alle noder er tilgjengelige, fordi den kjøres på tvers av hele klyngen samtidig. Hvis en node er nede, feiler setningen, noe som er en bevisst sikkerhetsforanstaltning mot å etterlate delvise data.
Drop vs. Trunker vs. Delete i Cassandra
Tre kommandoer fjerner data, og å velge feil kommando ødelegger enten et skjema eller etterlater et ytelsesproblem.
| Kommando | Hva den fjerner | Skjema beholdt | Kostnad |
|---|---|---|---|
| DROPPE BORD | Alle rader og tabelldefinisjonen | Nei | Billig. SSTAbeller blir snapshotet og deretter forkastet. |
| TRUNKER | Alle rader | Ja | Billig, men trenger hver node opp. Ingen gravsteiner blir laget. |
| SLETT | Valgte rader eller kolonner | Ja | Dyrt i stor skala. Hver fjerning skriver en gravstein som sier må hoppes over til komprimering. |
Den praktiske regelen er å foretrekke TRUNCATE fremfor en massesletting når man tømmer en hel tabell, fordi tusenvis av gravsteiner vil forsinke hver påfølgende lesing av den partisjonen. Fjerning på radnivå er dekket i CQL-innsetting, oppdatering og sletting opplæringen.








