Cassandra CQL-tabel: voorbeeld van aanmaken, wijzigen en leegmaken.

โšก Slimme samenvatting

Cassandra Tabelbewerkingen omvatten het aanmaken, wijzigen en verwijderen van tabellen.pingen het inkorten van kolomfamilies met CQL. Deze pagina legt elk commando uit, de drie primaire sleutelvormen die de gegevensdistributie bepalen, en de verschillen tussen het verwijderen van rijen en het verwijderen van een tabel.

  • ???? ๏ธ Tabel maken: Een tabel heeft een sleutelruimte, kolomdefinities en een primaire sleutelclausule nodig die de distributie en sorteervolgorde vastlegt.
  • ๐Ÿ”‘ Enkele primaire sleutel: Eรฉn kolom fungeert als partitiesleutel, waardoor elke rij met die waarde op hetzelfde knooppunt terechtkomt.
  • ๐Ÿงฉ Primaire sleutel voor samengestelde materialen: De eerste kolom verdeelt de rijen, de overige kolommen groeperen en sorteren de rijen binnen die verdeling.
  • ๐Ÿงฎ Samengestelde partitiesleutel: Door twee kolommen tussen haakjes te plaatsen, wordt een te grote scheidingswand in veel kleinere delen verdeeld.
  • โ€‹ Grenzen wijzigen: Kolommen kunnen worden toegevoegd of verwijderd, maar primaire sleutelkolommen kunnen nooit worden gewijzigd.
  • ๐Ÿ—‘๏ธ Weglaten versus afkappen: Met `drop` worden het schema en de gegevens verwijderd; `truncate` maakt elke rij leeg, maar behoudt de tabeldefinitie.

Cassandra Tabel maken, wijzigen, verwijderen

De syntaxis van Cassandra Querytaal (CQL) lijkt op SQL taal.

Hoe u een tabel maakt in Cassandra

Kolomfamilie in Cassandra is vergelijkbaar met de RDBMS-tabel. Kolomfamilie wordt gebruikt om gegevens op te slaan.

Het commando 'Tabel maken' wordt gebruikt om een โ€‹โ€‹kolomfamilie aan te maken Cassandra.

Syntaxis

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

1. Primaire sleutel: Er zijn twee types hoofdsleutel.

  • Enkele primaire sleutel: Eรฉn primaire sleutel wordt gespecificeerd met de volgende syntaxis.

Syntaxis

PRIMARY KEY (ColumnName)

In de enkele primaire sleutel is er slechts รฉรฉn kolom. Die kolom wordt ook wel partitiesleutel genoemd. Gegevens worden gepartitioneerd op basis van die kolom. Gegevens worden op basis van de partitiesleutel over verschillende knooppunten verspreid.

2. Samengestelde primaire sleutel: Een samengestelde primaire sleutel wordt gespecificeerd met de volgende syntaxis.

Syntaxis

PRIMARY KEY (ColumnName1, ColumnName2, ...)

In de bovenstaande syntaxis is ColumnName1 de partitiesleutel en ColumnName2 de Clustering-sleutel. Gegevens worden gepartitioneerd op basis van ColumnName1 en gegevens worden geclusterd op basis van ColumnName2. Clustering is het proces dat gegevens in de partitie sorteert.

3. Samengestelde partitiesleutel: De samengestelde partitiesleutel wordt gespecificeerd met de volgende syntaxis.

Syntaxis

PRIMARY KEY ((ColumnName1, ColumnName2), ColumnName3)

In de bovenstaande syntax zijn ColumnName1 en ColumnName2 de samengestelde partitiesleutel. De gegevens worden gepartitioneerd op basis van zowel ColumnName1 als ColumnName2 en geclusterd op basis van ColumnName3. Als er te veel gegevens in รฉรฉn partitie staan, wordt een samengestelde partitiesleutel gebruikt. Een samengestelde partitiesleutel wordt gebruikt om meerdere partities voor de gegevens te creรซren.

  • Met clausule

โ€œWith-clausuleโ€ wordt gebruikt om elke eigenschap en de waarde ervan voor de gedefinieerde tabel op te geven. Bijvoorbeeld als u wilt comprimeren Cassandra Tabelgegevens. U kunt de compressie-eigenschap instellen door de waarde van de eigenschap compressiealgoritme op te geven in de "With-clausule". Dezelfde clausule stelt ook CLUSTERING ORDER BY in om de sorteerrichting van een clusterkolom om te keren, en default_time_to_live om elke rij automatisch te laten verlopen.

Voorbeeld

Hier is de uitvoering van het commando 'Tabel maken', waardoor de tabelnaam 'Student' wordt aangemaakt in de sleutelruimte 'Universiteit'.

Cassandra Tabel maken

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

Na succesvolle uitvoering van het commando 'Create table' wordt de tabel 'Student' aangemaakt in de keyspace 'University' met de kolommen RollNo, Name en dept. RollNo is de primaire sleutel. RollNo is tevens een partitiesleutel, waardoor elke student een aparte partitie van รฉรฉn rij inneemt.

Cassandra Tabel wijzigen

Het commando 'Tabel wijzigen' wordt gebruikt om een โ€‹โ€‹kolom te verwijderen, een nieuwe kolom toe te voegen, de kolomnaam te wijzigen, het kolomtype te wijzigen en de eigenschap van de tabel te wijzigen.

Syntaxis

Hieronder staat de syntaxis van de opdracht '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;

Elk formulier wordt als een afzonderlijk overzicht uitgegeven. Twee beperkingen zijn momenteel van toepassing. Cassandra Releases: het gegevenstype van een bestaande kolom kan niet langer worden gewijzigd en RENAME werkt alleen op een clusterkolom van de primaire sleutel.

Voorbeeld

Hier is de momentopname van het commando 'Tabel wijzigen' waarmee een nieuwe kolom aan de tabel Student wordt toegevoegd.

Cassandra Tabel wijzigen

ALTER TABLE University.Student ADD Semester int;

Na succesvolle uitvoering van het commando 'Alter Table' wordt een nieuwe kolom 'Semester' met het datatype 'int' toegevoegd aan de tabel Student.

Hier is de schermafbeelding die de bijgewerkte Student-tabel toont.

Cassandra Tabel wijzigen

Cassandra Laat de tafel vallen

De opdracht 'Drop table' verwijdert de opgegeven tabel inclusief alle gegevens uit de sleutelruimte. Voordat u de tabel verwijdert, voert u de opdracht 'Drop' uit.ping de tafel, Cassandra maakt een momentopname van de gegevens en niet van het schema als back-up.

Syntaxis

DROP TABLE IF EXISTS KeyspaceName.TableName;

Voorbeeld

Hier is de momentopname van het uitgevoerde commando 'Drop Table' waarmee tabel Student uit de sleutelruimte 'University' wordt verwijderd.

Cassandra Laat de tafel vallen

DROP TABLE University.Student;

Na succesvolle uitvoering van het commando 'Drop Table' wordt tabel Student verwijderd uit de keyspace University.

Hier is de momentopname die de fout laat zien die wordt geretourneerd door de Cassandra wanneer geprobeerd wordt toegang te krijgen tot de studententabel die niet bestaat.

Cassandra Laat de tafel vallen

Cassandra Tabel afkappen

Het commando 'Tabel afkappen' verwijdert alle gegevens uit de opgegeven tabel. Voordat u de gegevens afkapt, Cassandra neemt de momentopname van de gegevens als back-up.

Syntaxis

TRUNCATE KeyspaceName.TableName;

Voorbeeld

Er zijn drie records in de tabel Student. Dit zijn de records in de tabel.

Cassandra Tabel afkappen

Hier is de momentopname van het uitgevoerde commando 'Tabel afkappen' waarmee alle gegevens uit de tabel Student worden verwijderd.

Cassandra Tabel afkappen

Na succesvolle uitvoering van het commando 'Truncate Table' worden alle gegevens uit de tabel Student verwijderd.

Hier is de momentopname van de databasestatus waarbij er geen records in de tabel Student staan.

Cassandra Tabel afkappen

De truncate-opdracht vereist dat elk knooppunt bereikbaar is, omdat deze in รฉรฉn keer over het hele cluster wordt uitgevoerd. Als een knooppunt niet beschikbaar is, mislukt de opdracht. Dit is een bewuste beveiliging om te voorkomen dat er onvolledige gegevens achterblijven.

Drop vs Truncate vs Delete in Cassandra

Er zijn drie commando's om gegevens te verwijderen, en het kiezen van het verkeerde commando kan leiden tot het beschadigen van een schema of tot prestatieproblemen.

commando Wat het verwijdert Schema behouden Kosten
DROP TAFEL Alle rijen en de tabeldefinitie Nee Goedkoop. SSTables worden vastgelegd in snapshots en vervolgens verwijderd.
AFKNOPEN Alle rijen Ja Goedkoop, maar vereist dat alle knooppunten actief zijn. Er worden geen grafstenen aangemaakt.
VERWIJDEREN Geselecteerde rijen of kolommen Ja Duur op grote schaal. Elke verwijdering laat een bericht achter met de tekst: moet worden overgeslagen tot de verdichting is voltooid.

De praktische regel is om TRUNCATE te verkiezen boven een bulk-DELETE bij het leegmaken van een hele tabel, omdat duizenden verwijderde rijen elke volgende leesbewerking van die partitie vertragen. Verwijderen op rijniveau wordt behandeld in de volgende sectie. CQL-invoeg-, update- en verwijderfuncties tutorial.

Veelgestelde vragen

Nee. De primaire sleutel bepaalt de fysieke plaatsing van de gegevens, dus deze ligt vast bij het aanmaken van de tabel. Om deze te wijzigen, moet een nieuwe tabel met de gewenste sleutel worden aangemaakt en moeten de rijen worden overgezet.

Voeg WITH CLUSTERING ORDER BY (ColumnName DESC) toe tijdens het aanmaken van het schema. Dit instellen in het schema is veel efficiรซnter dan sorteren tijdens elke query bij elke leesbewerking.

Nee. De kolom wordt direct verborgen voor query's, maar de gegevens blijven in bestaande SSTables staan โ€‹โ€‹totdat compactie deze herschrijft. De ruimte wordt geleidelijk vrijgemaakt.

De kolomlijst wordt correct vertaald, maar AI gebruikt vaak een surrogaat-ID als partitiesleutel, waardoor partities met รฉรฉn rij ontstaan. Herschrijf het querypatroon zodat de sleutel wordt gekozen voor leesbewerkingen.

Ja, voor problemen op patroonniveau, zoals ontbrekende clusterkolommen, onbegrensde partities of verzamelingskolommen die waarschijnlijk de limieten overschrijden. Controleer de werkelijke kardinaliteit voordat u actie onderneemt.

Vat dit bericht samen met: