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.
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'.
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.
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 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'.
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 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.
Her er et øjebliksbillede af den udførte kommando 'Truncate table', der vil fjerne alle data fra tabellen Student.
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.
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.









