Cassandra Tabela CQL: przykład tworzenia, modyfikowania i skracania

⚡ Inteligentne podsumowanie

Cassandra Operacje na tabelach obejmują tworzenie, modyfikowanie i usuwaniepingoraz obcinanie rodzin kolumn za pomocą CQL. Ta strona wyjaśnia każde polecenie, trzy formy klucza podstawowego, które decydują o dystrybucji danych, oraz różnice między usuwaniem wierszy a usuwaniem tabeli.

  • 🏗️. Utwórz tabelę: Tabela wymaga przestrzeni kluczy, definicji kolumn i klauzuli klucza podstawowego, która ustala dystrybucję i kolejność sortowania.
  • 🔑 Pojedynczy klucz podstawowy: Jedna kolumna pełni rolę klucza partycji, więc każdy wiersz tej wartości trafia do tego samego węzła.
  • 🧩 Klucz podstawowy złożony: Pierwsza kolumna partycjonuje, pozostałe kolumny grupują i sortują wiersze wewnątrz partycji.
  • 🧮 Klucz partycji złożonej: Użycie dwóch kolumn dzieli zbyt dużą partycję na wiele mniejszych.
  • ✏️ Zmień limity: Kolumny można dodawać i usuwać, ale kolumn klucza podstawowego nigdy nie można zmieniać.
  • 🗑️ Usunięcie czy skrócenie: Drop usuwa schemat i dane, a truncate usuwa każdy wiersz, ale zachowuje definicję tabeli.

Cassandra Tabela Utwórz Zmień Upuść

Składnia Cassandra język zapytań (CQL) przypomina SQL język.

Jak utworzyć tabelę w Cassandra

Rodzina kolumn w Cassandra jest podobny do tabeli RDBMS. Rodzina kolumn służy do przechowywania danych.

Polecenie „Utwórz tabelę” służy do tworzenia rodziny kolumn w programie Cassandra.

Składnia

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

1. Klucz podstawowy: Istnieją dwa typy klucz podstawowy.

  • Pojedynczy klucz podstawowy: Pojedynczy klucz podstawowy określa się za pomocą następującej składni.

Składnia

PRIMARY KEY (ColumnName)

W pojedynczym kluczu podstawowym znajduje się tylko jedna kolumna. Ta kolumna jest również nazywana kluczem partycjonowania. Dane są partycjonowane na podstawie tej kolumny. Dane są rozmieszczane w różnych węzłach na podstawie klucza partycji.

2. Złożony klucz podstawowy: Klucz podstawowy złożony określa się za pomocą następującej składni.

Składnia

PRIMARY KEY (ColumnName1, ColumnName2, ...)

W powyższej składni nazwa_kolumny1 jest kluczem partycjonowania, a nazwa_kolumny2 Clusterklucz. Dane zostaną podzielone na podstawie ColumnName1, a dane zostaną pogrupowane na podstawie ColumnName2. Clustering to proces sortujący dane na partycji.

3. Klucz partycjonowania złożonego: Klucz partycjonowania złożonego określa się za pomocą następującej składni.

Składnia

PRIMARY KEY ((ColumnName1, ColumnName2), ColumnName3)

W powyższej składni, ColumnName1 i ColumnName2 to złożony klucz partycji. Dane zostaną podzielone na podstawie obu kolumn: ColumnName1 i ColumnName2, a dane zostaną pogrupowane na podstawie ColumnName3. Jeśli w jednej partycji znajduje się zbyt dużo danych, używany jest złożony klucz partycjonowania. Złożony klucz partycjonowania służy do tworzenia wielu partycji dla danych.

  • Z klauzulą

„Z klauzulą” służy do określenia dowolnej właściwości i jej wartości dla definiowanej tabeli. Na przykład, jeśli chcesz skompresować Cassandra Dane tabeli. Możesz ustawić właściwość kompresji, określając wartość właściwości algorytmu kompresji w klauzuli „With”. Ta sama klauzula ustawia również CLUSTERING ORDER BY, aby odwrócić kierunek sortowania kolumny klastrowania, oraz default_time_to_live, aby automatycznie wygasał w każdym wierszu.

Przykład

Oto wykonanie polecenia „Utwórz tabelę”, które utworzy tabelę o nazwie „Student” w przestrzeni klawiszy „Uniwersytet”.

Cassandra Utwórz tabelę

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

Po pomyślnym wykonaniu polecenia „Utwórz tabelę” tabela „Student” zostanie utworzona w przestrzeni kluczy „Uniwersytet” z kolumnami „RollNo”, „Nazwa” i „Dział”. „RollNo” jest kluczem podstawowym. „RollNo” jest również kluczem partycji, więc każdy student zajmuje osobną partycję jednowierszową.

Cassandra Zmień tabelę

Polecenie „Zmień tabelę” służy do usuwania kolumny, dodawania nowej kolumny, zmiany nazwy kolumny, zmiany typu kolumny i zmiany właściwości tabeli.

Składnia

Poniżej znajduje się składnia polecenia „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;

Każdy formularz jest wydawany jako osobne oświadczenie. W obecnej sytuacji obowiązują dwa ograniczenia. Cassandra wersje: typu danych istniejącej kolumny nie można już zmienić, a RENAME działa tylko na kolumnie klastrującej klucza podstawowego.

Przykład

Oto migawka polecenia „Zmień tabelę”, które doda nową kolumnę w tabeli Student.

Cassandra Zmień tabelę

ALTER TABLE University.Student ADD Semester int;

Po pomyślnym wykonaniu polecenia „Alter Table” do tabeli Student zostanie dodana nowa kolumna „Semester” z typem danych „int”.

Oto zrzut ekranu pokazujący zaktualizowaną tabelę Studentów.

Cassandra Zmień tabelę

Cassandra Upuść tabelę

Polecenie „Usuń tabelę” usuwa wskazaną tabelę wraz ze wszystkimi danymi z przestrzeni kluczy. Przed usunięciemping stół, Cassandra wykonuje migawkę danych, a nie schematu jako kopię zapasową.

Składnia

DROP TABLE IF EXISTS KeyspaceName.TableName;

Przykład

Oto migawka wykonanego polecenia „Upuść tabelę”, które usunie tabelę Student z przestrzeni klawiszy „Uniwersytet”.

Cassandra Upuść tabelę

DROP TABLE University.Student;

Po pomyślnym wykonaniu polecenia „Upuść tabelę”, tabela Student zostanie usunięta z przestrzeni kluczy Uniwersytet.

Oto migawka pokazująca błąd zwrócony przez plik Cassandra przy próbie uzyskania dostępu do tabeli Studenta, która nie istnieje.

Cassandra Upuść tabelę

Cassandra Obetnij tabelę

Polecenie „Obetnij tabelę” usuwa wszystkie dane z określonej tabeli. Przed obcięciem danych Cassandra wykonuje migawkę danych jako kopię zapasową.

Składnia

TRUNCATE KeyspaceName.TableName;

Przykład

W tabeli Student znajdują się trzy rekordy. To są zapisy w tabeli.

Cassandra Obetnij tabelę

Oto migawka wykonanego polecenia „Obetnij tabelę”, które usunie wszystkie dane z tabeli Student.

Cassandra Obetnij tabelę

Po pomyślnym wykonaniu polecenia „Obetnij tabelę”, wszystkie dane zostaną usunięte z tabeli Student.

Oto migawka stanu bazy danych, w której nie ma żadnych rekordów w tabeli Student.

Cassandra Obetnij tabelę

Funkcja Truncate wymaga, aby każdy węzeł był osiągalny, ponieważ jest wykonywana w całym klastrze jednocześnie. Jeśli którykolwiek węzeł jest wyłączony, polecenie kończy się niepowodzeniem, co jest celowym zabezpieczeniem przed pozostawieniem częściowych danych.

Upuść, skróć lub usuń Cassandra

Trzy polecenia usuwają dane, a wybranie niewłaściwego albo niszczy schemat, albo pozostawia problem z wydajnością.

Command Co usuwa Schemat zachowany Koszty:
UPUŚĆ TABELĘ Wszystkie wiersze i definicja tabeli Nie Tanio. Tabele SSTable są tworzone jako migawki, a następnie usuwane.
ŚCIĘTY Wszystkie rzędy Tak Tani, ale wymaga każdego węzła. Nie tworzy się żadnych nagrobków.
DELETE Wybrane wiersze lub kolumny Tak Kosztowne na dużą skalę. Każde usunięcie powoduje zapisanie nagrobka z informacją „należy pominąć do momentu zagęszczenia”.

Praktyczną zasadą jest preferowanie operacji TRUNCATE zamiast zbiorczego usuwania podczas czyszczenia całej tabeli, ponieważ tysiące nagrobków spowalniają każdy kolejny odczyt tej partycji. Usuwanie na poziomie wiersza jest omówione w Wstawianie, aktualizowanie i usuwanie CQL poradnik.

FAQ

Nie. Klucz podstawowy określa fizyczne rozmieszczenie danych, więc jest on ustalany w momencie utworzenia. Jego zmiana oznacza utworzenie nowej tabeli z żądanym kluczem i migrację wierszy.

Dodaj WITH CLUSTERING ORDER BY (ColumnName DESC) w momencie tworzenia. Ustawienie tego w schemacie jest znacznie tańsze niż sortowanie w momencie zapytania przy każdym odczycie.

Nie. Kolumna jest natychmiast ukrywana przed zapytaniami, ale jej dane pozostają w istniejących tabelach SSTable, dopóki nie zostaną przepisane przez proces kompaktowania. Miejsce jest odzyskiwane stopniowo.

Lista kolumn jest tłumaczona bezbłędnie, ale AI często przechowuje zastępczy identyfikator jako klucz partycji, co tworzy partycje jednowierszowe. Zmień wzorzec zapytania, aby klucz był wybierany do odczytu.

Tak, w przypadku problemów na poziomie wzorca, takich jak brak kolumn klastrowania, nieograniczone partycje lub kolumny kolekcji, które prawdopodobnie przekraczają limity. Przed podjęciem działań należy potwierdzić je z rzeczywistą kardynalnością.

Podsumuj ten post następująco: