Cassandra CQL-tabel: Eksempel på oprettelse, ændring og afkortning

⚡ Smart opsummering

Cassandra Tabeloperationer dækker oprettelse, ændring og sletningpingog afkortning af kolonnefamilier med CQL. Denne side forklarer hver kommando, de tre primære nøgleformer, der bestemmer datafordelingen, og forskellene mellem at fjerne rækker og fjerne en tabel.

  • 🏗️ Opret tabel: En tabel skal bruge et nøglerum, kolonnedefinitioner og en primær nøgleklausul, der fastlægger distribution og sorteringsrækkefølge.
  • 🔑 Enkelt primær nøgle: Én kolonne fungerer som partitionsnøgle, så hver række med den værdi lander på den samme node.
  • 🧩 Sammensat primærnøgle: Den første kolonne partitionerer, de resterende kolonner klynger og sorterer rækker indeni partitionen.
  • 🧮 Sammensat partitionsnøgle: At indsætte to kolonner i parentes opdeler en overdimensioneret partition i mange mindre.
  • ✏️ Ændre grænser: Kolonner kan tilføjes eller slettes, men primære nøglekolonner kan aldrig ændres.
  • 🗑️ Drop vs. afkort: Drop fjerner skemaet og dataene; truncate tømmer alle rækker, men bevarer tabeldefinitionen.

Cassandra Opret tabel Rediger slip

Syntaksen for Cassandra forespørgselssprog (CQL) ligner SQL Sprog.

Sådan opretter du en tabel i Cassandra

Kolonnefamilie i Cassandra ligner RDBMS-tabellen. Kolonnefamilien bruges til at gemme data.

Kommandoen 'Create Table' bruges til at oprette kolonnefamilie i Cassandra.

Syntaks

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

1. Primær nøgle: Der er to typer af primærnøgle.

  • Enkelt primær nøgle: Enkelt primærnøgle er specificeret af følgende syntaks.

Syntaks

PRIMARY KEY (ColumnName)

I den enkelte primærnøgle er der kun en enkelt kolonne. Denne kolonne kaldes også partitioneringsnøgle. Data er opdelt på basis af den kolonne. Data spredes på forskellige noder på basis af partitionsnøglen.

2. Sammensat primær nøgle: Sammensat primærnøgle er specificeret af følgende syntaks.

Syntaks

PRIMARY KEY (ColumnName1, ColumnName2, ...)

I ovenstående syntaks er ColumnName1 partitioneringsnøglen og ColumnName2 er Clustering nøgle. Data vil blive opdelt på basis af ColumnName1 og data vil blive grupperet på basis af ColumnName2. Clustering er den proces, der sorterer data i partitionen.

3. Sammensat partitioneringsnøgle: Sammensat partitioneringsnøgle er specificeret af følgende syntaks.

Syntaks

PRIMARY KEY ((ColumnName1, ColumnName2), ColumnName3)

I ovenstående syntaks er Kolonnenavn1 og Kolonnenavn2 den sammensatte partitionsnøgle. Data vil blive partitioneret på basis af både kolonnerne Kolonnenavn1 og Kolonnenavn2, og data vil blive grupperet på basis af Kolonnenavn3. Hvis du har for mange data på den enkelte partition, bruges en sammensat partitionsnøgle. En sammensat partitionsnøgle bruges til at oprette flere partitioner til dataene.

  • Med klausul

"With clause" bruges til at specificere enhver egenskab og dens værdi for den definerede tabel. For eksempel hvis du vil komprimere Cassandra tabeldata. Du kan indstille komprimeringsegenskaben ved at angive værdien for komprimeringsalgoritmens egenskab i "With-klausulen". Den samme klausul indstiller også CLUSTERING ORDER BY til at vende sorteringsretningen for en klyngekolonne, og default_time_to_live til at udløbe hver række automatisk.

Eksempel

Her er udførelsen af ​​kommandoen 'Create table', der vil skabe tabelnavnet 'Student' i tasterummet 'University'.

Cassandra Opret tabel

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

Efter vellykket udførelse af kommandoen 'Opret tabel' oprettes tabellen 'Student' i nøgleområdet 'Universitet' med kolonnerne RollNo, Navn og afdeling. RollNo er den primære nøgle. RollNo er også en partitionsnøgle, så hver studerende optager en separat partition med én række.

Cassandra Skift bord

Kommandoen 'Alter Table' bruges til at slette kolonne, tilføje en ny kolonne, ændre kolonnenavn, ændre kolonnetype og ændre tabellens egenskaber.

Syntaks

Følgende er syntaksen for 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;

Hver formular udstedes som en separat erklæring. Der gælder to begrænsninger i den nuværende Cassandra udgivelser: datatypen for en eksisterende kolonne kan ikke længere ændres, og RENAME fungerer kun på en klyngekolonne med primærnøglen.

Eksempel

Her er et øjebliksbillede af kommandoen 'Alter Table', der tilføjer en ny kolonne i tabellen Elev.

Cassandra Skift bord

ALTER TABLE University.Student ADD Semester int;

Efter vellykket udførelse af kommandoen 'Alter Table' vil en ny kolonne 'Semester' med 'int' datatype blive tilføjet til tabellen Student.

Her er skærmbilledet, der viser den opdaterede elevtabel.

Cassandra Skift bord

Cassandra Drop bord

Kommandoen 'Drop table' sletter den angivne tabel inklusive alle data fra nøgleområdet. Før dropping bordet, Cassandra tager et øjebliksbillede af dataene ikke skemaet som backup.

Syntaks

DROP TABLE IF EXISTS KeyspaceName.TableName;

Eksempel

Her er et øjebliksbillede af den udførte kommando 'Drop Table', der vil droppe tabel Student fra tasterummet 'University'.

Cassandra Drop bord

DROP TABLE University.Student;

Efter vellykket udførelse af kommandoen 'Drop Table', vil tabel Student blive slettet fra keyspace-universitetet.

Her er et øjebliksbillede, der viser fejlen returneret af Cassandra ved forsøg på at få adgang til en elevtabel, der ikke eksisterer.

Cassandra Drop bord

Cassandra Afkorte tabel

Kommandoen 'Truncate table' fjerner alle data fra den angivne tabel. Inden dataene afkortes, Cassandra tager øjebliksbilledet af dataene som backup.

Syntaks

TRUNCATE KeyspaceName.TableName;

Eksempel

Der er tre poster i tabellen Elev. Dette er posterne i tabellen.

Cassandra Afkorte tabel

Her er et øjebliksbillede af den udførte kommando 'Truncate table', der vil fjerne alle data fra tabellen Student.

Cassandra Afkorte tabel

Efter vellykket udførelse af kommandoen 'Truncate Table', vil alle data blive fjernet fra tabellen Student.

Her er et øjebliksbillede af databasetilstanden, hvor der ikke er nogen poster i tabellen Student.

Cassandra Afkorte tabel

Afkortning kræver, at alle noder er tilgængelige, fordi den udføres på tværs af hele klyngen på én gang. Hvis en node er nede, fejler kommandoen, hvilket er en bevidst sikkerhedsforanstaltning mod at efterlade delvise data.

Drop vs. Trunker vs. Slet i Cassandra

Tre kommandoer fjerner data, og at vælge den forkerte kommando ødelægger enten et skema eller efterlader et ydeevneproblem.

Kommando Hvad det fjerner Skema gemt Pris
DROP TABEL Alle rækker og tabeldefinitionen Ingen Billig. SSTAbles tages snapshots og kasseres derefter.
afkorte Alle rækker Ja Billigt, men skal have alle noder op. Der laves ingen gravsten.
SLET Valgte rækker eller kolonner Ja Dyr i stor skala. Hver fjernelse skriver en gravsten, hvor der står "skal springes over" indtil komprimering.

Den praktiske regel er at foretrække TRUNCATE frem for en masse-SLETNING, når man rydder en hel tabel, fordi tusindvis af tombstones vil forsinke hver efterfølgende læsning af den partition. Fjernelse på rækkeniveau er dækket i CQL-indsættelse, opdatering og sletning tutorial.

Ofte Stillede Spørgsmål

Nej. Primærnøglen bestemmer den fysiske placering af data, så den er fast ved oprettelsen. Ændring af den betyder, at man opretter en ny tabel med den ønskede nøgle og migrerer rækkerne på tværs.

Tilføj WITH CLUSTERING ORDER BY (ColumnName DESC) ved oprettelse. Det er langt billigere at sætte det i skemaet end at sortere ved forespørgsel ved hver læsning.

Nej. Kolonnen er skjult for forespørgsler med det samme, men dens data forbliver i eksisterende SSTAbles, indtil komprimeringen omskriver dem. Pladsen genvindes gradvist.

Kolonnelisten oversættes tydeligt, men AI beholder ofte et surrogat-id som partitionsnøgle, hvilket opretter partitioner med én række. Gentag forespørgselsmønsteret, så nøglen vælges til læsninger.

Ja, for problemer på mønsterniveau, såsom manglende klyngekolonner, ubegrænsede partitioner eller samlingskolonner, der sandsynligvis overskrider grænserne. Bekræft mod den reelle kardinalitet, før du handler.

Opsummer dette indlæg med: