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.

  • 🏗️ Opprett tabell: En tabell trenger et nøkkelområde, kolonnedefinisjoner og en primærnøkkelklausul som fastsetter distribusjon og sorteringsrekkefølge.
  • 🔑 Enkelt primærnøkkel: Én kolonne fungerer som partisjonsnøkkel, så hver rad med den verdien lander på samme node.
  • 🧩 Sammensatt primærnøkkel: Den første kolonnen partisjonerer, de resterende kolonnene klynger og sorterer rader inne i partisjonen.
  • 🧮 Sammensatt partisjonsnøkkel: Å sette to kolonner i parentes deler en overdimensjonert partisjon i mange mindre.
  • ✏️ Endre grenser: Kolonner kan legges til eller fjernes, men primærnøkkelkolonner kan aldri endres.
  • 🗑️ Dropp vs. avkort: Drop fjerner skjemaet og dataene; truncate tømmer hver rad, men beholder tabelldefinisjonen.

Cassandra Tabell Opprett Endre Slipp

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.'

Cassandra Lag tabell

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.

Cassandra Endre bord

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 Endre bord

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'.

Cassandra Slipp bord

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 Slipp bord

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.

Cassandra Avkutte tabell

Her er øyeblikksbildet av den utførte kommandoen 'Truncate table' som vil fjerne alle dataene fra tabellen Student.

Cassandra Avkutte tabell

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.

Cassandra Avkutte tabell

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.

Spørsmål og svar

Nei. Primærnøkkelen bestemmer fysisk plassering av data, så den er fast ved opprettelse. Å endre den betyr å opprette en ny tabell med ønsket nøkkel og migrere radene over.

Legg til WITH CLUSTERING ORDER BY (ColumnName DESC) ved opprettelse. Å sette det inn i skjemaet er mye billigere enn å sortere ved spørring ved hver lesing.

Nei. Kolonnen er skjult fra spørringer med en gang, men dataene forblir i eksisterende SSTAbeller inntil komprimering omskriver dem. Plass gjenvinnes gradvis.

Kolonnelisten oversettes tydelig, men AI beholder ofte en surrogat-ID som partisjonsnøkkel, noe som oppretter partisjoner med én rad. Omformuler spørremønsteret slik at nøkkelen velges for lesinger.

Ja, for problemer på mønsternivå, som manglende klyngekolonner, ubegrensede partisjoner eller samlingskolonner som sannsynligvis overskrider grensene. Bekreft mot reell kardinalitet før du handler.

Oppsummer dette innlegget med: