Cassandra - Szybki przewodnik

Apache Cassandra to wysoce skalowalna, wydajna rozproszona baza danych zaprojektowana do obsługi dużych ilości danych na wielu serwerach towarowych, zapewniająca wysoką dostępność bez pojedynczego punktu awarii. Jest to rodzaj bazy danych NoSQL. Najpierw zrozumiemy, co robi baza danych NoSQL.

NoSQLDatabase

Baza danych NoSQL (czasami nazywana nie tylko SQL) to baza danych, która zapewnia mechanizm przechowywania i pobierania danych innych niż relacje tabelaryczne używane w relacyjnych bazach danych. Te bazy danych są wolne od schematów, obsługują łatwą replikację, mają prosty interfejs API, ostatecznie są spójne i mogą obsługiwać ogromne ilości danych.

Podstawowym celem bazy danych NoSQL jest posiadanie

  • prostota konstrukcji,
  • skalowanie poziome i
  • dokładniejsza kontrola dostępności.

Bazy danych NoSql używają innych struktur danych niż relacyjne bazy danych. Przyspiesza niektóre operacje w NoSQL. Przydatność danej bazy danych NoSQL zależy od problemu, który ma rozwiązać.

NoSQL a relacyjna baza danych

W poniższej tabeli wymieniono punkty, które odróżniają relacyjną bazę danych od bazy danych NoSQL.

Relacyjna baza danych Baza danych NoSql
Obsługuje zaawansowany język zapytań. Obsługuje bardzo prosty język zapytań.
Ma ustalony schemat. Brak ustalonego schematu.
Podąża za kwasem (atomowość, spójność, izolacja i trwałość). To jest tylko „ostatecznie spójne”.
Obsługuje transakcje. Nie obsługuje transakcji.

Oprócz Cassandry mamy następujące bazy danych NoSQL, które są dość popularne -

  • Apache HBase- HBase to nierelacyjna, rozproszona baza danych typu open source wzorowana na BigTable firmy Google, napisana w języku Java. Jest rozwijany jako część projektu Apache Hadoop i działa na bazie HDFS, zapewniając Hadoop funkcje podobne do BigTable.

  • MongoDB - MongoDB to wieloplatformowy system bazy danych zorientowany na dokumenty, który unika używania tradycyjnej struktury relacyjnej bazy danych opartej na tabelach na rzecz dokumentów typu JSON z dynamicznymi schematami, dzięki czemu integracja danych w niektórych typach aplikacji jest łatwiejsza i szybsza.

Co to jest Apache Cassandra?

Apache Cassandra to rozproszony i zdecentralizowany / rozproszony system pamięci masowej (baza danych) typu open source do zarządzania bardzo dużymi ilościami ustrukturyzowanych danych rozsianych po całym świecie. Zapewnia wysoką dostępność usług bez pojedynczego punktu awarii.

Poniżej wymienione są niektóre z godnych uwagi punktów Apache Cassandra -

  • Jest skalowalny, odporny na błędy i spójny.

  • Jest to baza danych zorientowana na kolumny.

  • Projekt dystrybucji oparty jest na Dynamo Amazona i jego modelu danych na Google Bigtable.

  • Stworzony na Facebooku, znacznie różni się od systemów zarządzania relacyjnymi bazami danych.

  • Cassandra implementuje model replikacji w stylu Dynamo bez pojedynczego punktu awarii, ale dodaje potężniejszy model danych „rodziny kolumn”.

  • Cassandra jest używana przez niektóre z największych firm, takich jak Facebook, Twitter, Cisco, Rackspace, ebay, Twitter, Netflix i nie tylko.

Funkcje Cassandry

Cassandra stała się tak popularna ze względu na wyjątkowe cechy techniczne. Poniżej podano niektóre funkcje Cassandry:

  • Elastic scalability- Cassandra jest wysoce skalowalna; pozwala dodać więcej sprzętu, aby pomieścić więcej klientów i więcej danych zgodnie z wymaganiami.

  • Always on architecture - Cassandra nie ma pojedynczego punktu awarii i jest stale dostępna dla krytycznych aplikacji biznesowych, których nie stać na awarię.

  • Fast linear-scale performance- Cassandra jest skalowalna liniowo, co oznacza, że ​​zwiększa przepustowość w miarę zwiększania liczby węzłów w klastrze. Dzięki temu utrzymuje szybki czas reakcji.

  • Flexible data storage- Cassandra obsługuje wszystkie możliwe formaty danych, w tym: ustrukturyzowane, częściowo ustrukturyzowane i nieustrukturyzowane. Może dynamicznie dostosowywać zmiany do struktur danych w zależności od potrzeb.

  • Easy data distribution - Cassandra zapewnia elastyczność dystrybucji danych tam, gdzie jest to potrzebne, poprzez replikację danych w wielu centrach danych.

  • Transaction support - Cassandra obsługuje właściwości, takie jak atomowość, spójność, izolacja i trwałość (ACID).

  • Fast writes- Cassandra została zaprojektowana do działania na tanim sprzęcie. Wykonuje niesamowicie szybkie zapisy i może przechowywać setki terabajtów danych bez poświęcania wydajności odczytu.

Historia Cassandry

  • Cassandra została stworzona na Facebooku do przeszukiwania skrzynki odbiorczej.
  • Został udostępniony przez Facebooka w lipcu 2008 roku.
  • Cassandra została przyjęta do Apache Incubator w marcu 2009.
  • Został utworzony jako projekt najwyższego poziomu Apache od lutego 2010.

Celem projektu Cassandra jest obsługa obciążeń big data w wielu węzłach bez żadnego pojedynczego punktu awarii. Cassandra ma rozproszony system peer-to-peer w swoich węzłach, a dane są dystrybuowane między wszystkimi węzłami w klastrze.

  • Wszystkie węzły w klastrze odgrywają tę samą rolę. Każdy węzeł jest niezależny i jednocześnie połączony z innymi węzłami.

  • Każdy węzeł w klastrze może akceptować żądania odczytu i zapisu, niezależnie od tego, gdzie dane faktycznie znajdują się w klastrze.

  • Gdy węzeł ulegnie awarii, żądania odczytu / zapisu mogą być obsługiwane z innych węzłów w sieci.

Replikacja danych w Cassandrze

W Cassandrze jeden lub więcej węzłów w klastrze działa jak repliki dla danego fragmentu danych. Jeśli zostanie wykryte, że niektóre węzły odpowiedziały nieaktualną wartością, Cassandra zwróci klientowi najnowszą wartość. Po zwróceniu ostatniej wartości Cassandra wykonuje aread repair w tle, aby zaktualizować nieaktualne wartości.

Poniższy rysunek przedstawia schematyczny widok, w jaki sposób Cassandra wykorzystuje replikację danych między węzłami w klastrze, aby zapewnić brak pojedynczego punktu awarii.

Note - Cassandra używa Gossip Protocol w tle, aby umożliwić węzłom komunikację ze sobą i wykrycie wszelkich wadliwych węzłów w klastrze.

Składniki Cassandry

Kluczowe elementy Cassandry są następujące -

  • Node - To miejsce, w którym przechowywane są dane.

  • Data center - Jest to zbiór powiązanych węzłów.

  • Cluster - Klaster to komponent zawierający co najmniej jedno centrum danych.

  • Commit log- Dziennik zatwierdzeń jest mechanizmem odzyskiwania po awarii w Cassandrze. Każda operacja zapisu jest zapisywana w dzienniku zatwierdzeń.

  • Mem-table- Tablica memów to rezydentna struktura danych. Po dzienniku zatwierdzeń dane zostaną zapisane w tablicy mem. Czasami w przypadku rodziny z jedną kolumną będzie wiele tabel mem.

  • SSTable - Jest to plik dyskowy, do którego dane są usuwane z tablicy mem, gdy jej zawartość osiągnie wartość progową.

  • Bloom filter- To nic innego jak szybkie, niedeterministyczne algorytmy do testowania, czy element jest członkiem zbioru. Jest to specjalny rodzaj pamięci podręcznej. Filtry Bloom są dostępne po każdym zapytaniu.

Cassandra Query Language

Użytkownicy mogą uzyskiwać dostęp do Cassandry za pośrednictwem jej węzłów przy użyciu języka zapytań Cassandra (CQL). CQL traktuje bazę danych(Keyspace)jako pojemnik na stoły. Programiści używającqlsh: monit o pracę z CQL lub oddzielnymi sterownikami języka aplikacji.

Klienci podchodzą do dowolnego węzła w celu wykonania operacji odczytu i zapisu. Ten węzeł (koordynator) pełni rolę proxy między klientem a węzłami przechowującymi dane.

Operacje zapisu

Każda czynność zapisu węzłów jest przechwytywana przez commit logszapisane w węzłach. Później dane zostaną przechwycone i zapisane w plikumem-table. Za każdym razem, gdy tablica mem jest pełna, dane zostaną zapisane w pliku SStableplik danych. Wszystkie zapisy są automatycznie partycjonowane i replikowane w całym klastrze. Cassandra okresowo konsoliduje SSTables, odrzucając niepotrzebne dane.

Przeczytaj Operacje

Podczas operacji odczytu Cassandra pobiera wartości z tablicy mem i sprawdza filtr poświaty, aby znaleźć odpowiednią SSTable, która przechowuje wymagane dane.

Model danych Cassandry znacznie różni się od tego, co normalnie widzimy w RDBMS. W tym rozdziale omówiono, w jaki sposób Cassandra przechowuje swoje dane.

Grupa

Baza danych Cassandra jest rozproszona na kilka współpracujących ze sobą maszyn. Najbardziej zewnętrzny pojemnik jest znany jako Cluster. W celu obsługi awarii każdy węzeł zawiera replikę, aw przypadku awarii replika przejmuje kontrolę. Cassandra układa węzły w klastrze, w formacie pierścienia i przypisuje do nich dane.

Przestrzeń klucza

Przestrzeń klucza to najbardziej zewnętrzny kontener danych w Cassandrze. Podstawowe atrybuty Keyspace w Cassandrze to -

  • Replication factor - Jest to liczba komputerów w klastrze, które otrzymają kopie tych samych danych.

  • Replica placement strategy- To nic innego jak strategia umieszczania replik w ringu. Mamy strategie takie jaksimple strategy (strategia zorientowana na rack), old network topology strategy (strategia uwzględniająca stelaż) oraz network topology strategy (strategia współdzielona w centrum danych).

  • Column families- Przestrzeń kluczowa to kontener na listę jednej lub więcej rodzin kolumn. Z kolei rodzina kolumn jest kontenerem zbioru wierszy. Każdy wiersz zawiera uporządkowane kolumny. Rodziny kolumn reprezentują strukturę danych. Każda przestrzeń kluczowa ma co najmniej jedną, a często wiele rodzin kolumn.

Składnia tworzenia przestrzeni kluczy jest następująca -

CREATE KEYSPACE Keyspace name
WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};

Poniższa ilustracja przedstawia schematyczny widok obszaru kluczy.

Rodzina kolumn

Rodzina kolumn to kontener dla uporządkowanej kolekcji wierszy. Z kolei każdy wiersz jest uporządkowanym zbiorem kolumn. W poniższej tabeli wymieniono punkty, które odróżniają rodzinę kolumn od tabeli relacyjnych baz danych.

Tabela relacyjna Cassandra column Family
Schemat w modelu relacyjnym został naprawiony. Po zdefiniowaniu określonych kolumn do tabeli, podczas wstawiania danych, w każdym wierszu wszystkie kolumny muszą być wypełnione co najmniej wartością null. W Cassandrze, mimo że rodziny kolumn są zdefiniowane, kolumny nie. W dowolnym momencie możesz dowolnie dodać dowolną kolumnę do dowolnej rodziny kolumn.
Tabele relacyjne definiują tylko kolumny, a użytkownik wypełnia tabelę wartościami. W Cassandrze tabela zawiera kolumny lub może być zdefiniowana jako super rodzina kolumn.

Rodzina kolumn Cassandra ma następujące atrybuty -

  • keys_cached - Reprezentuje liczbę lokalizacji do przechowywania w pamięci podręcznej na SSTable.

  • rows_cached - Reprezentuje liczbę wierszy, których cała zawartość będzie przechowywana w pamięci.

  • preload_row_cache - Określa, czy chcesz wstępnie wypełnić pamięć podręczną wierszy.

Note − W przeciwieństwie do tabel relacyjnych, w których schemat rodziny kolumn nie jest ustalony, Cassandra nie wymusza na pojedynczych wierszach wszystkich kolumn.

Poniższy rysunek przedstawia przykład rodziny kolumn Cassandra.

Kolumna

Kolumna to podstawowa struktura danych Cassandry z trzema wartościami, a mianowicie nazwą klucza lub kolumny, wartością i znacznikiem czasu. Poniżej podano strukturę kolumny.

SuperColumn

Superkolumna to specjalna kolumna, dlatego też jest parą klucz-wartość. Ale super kolumna przechowuje mapę kolumn podrzędnych.

Generalnie rodziny kolumn są przechowywane na dysku w osobnych plikach. Dlatego też, aby zoptymalizować wydajność, ważne jest, aby przechowywać kolumny, które prawdopodobnie będziesz wyszukiwać razem w tej samej rodzinie kolumn, a superkolumna może być tutaj pomocna. Poniżej podano strukturę superkolumny.

Modele danych Cassandry i RDBMS

W poniższej tabeli wymieniono punkty, które odróżniają model danych Cassandry od modelu RDBMS.

RDBMS Cassandra
RDBMS obsługuje dane strukturalne. Cassandra ma do czynienia z nieustrukturyzowanymi danymi.
Ma ustalony schemat. Cassandra ma elastyczny schemat.
W RDBMS tabela jest tablicą tablic. (ROW x COLUMN) W Cassandrze tabela to lista „zagnieżdżonych par klucz-wartość”. (Klucz ROW x COLUMN x wartość COLUMN)
Baza danych to najbardziej zewnętrzny kontener zawierający dane odpowiadające aplikacji. Przestrzeń klucza to najbardziej zewnętrzny kontener zawierający dane odpowiadające aplikacji.
Tabele to jednostki bazy danych. Tabele lub rodziny kolumn są elementami przestrzeni kluczowej.
Wiersz jest indywidualnym rekordem w RDBMS. Wiersz jest jednostką replikacji w Cassandrze.
Kolumna reprezentuje atrybuty relacji. Kolumna to jednostka magazynowa w Cassandrze.
RDBMS obsługuje koncepcje kluczy obcych, złączeń. Relacje są reprezentowane za pomocą kolekcji.

Dostęp do Cassandry można uzyskać za pomocą cqlsh, a także sterowników różnych języków. W tym rozdziale wyjaśniono, jak skonfigurować środowisko cqlsh i java do pracy z Cassandrą.

Konfiguracja przed instalacją

Przed zainstalowaniem Cassandry w środowisku Linux wymagamy skonfigurowania Linuksa przy użyciu ssh(Bezpieczna powłoka). Wykonaj poniższe czynności, aby skonfigurować środowisko Linux.

Utwórz użytkownika

Na początek zaleca się utworzenie osobnego użytkownika dla Hadoop w celu odizolowania systemu plików Hadoop od systemu plików Unix. Wykonaj poniższe czynności, aby utworzyć użytkownika.

  • Otwórz root za pomocą polecenia “su”.

  • Utwórz użytkownika z konta root za pomocą polecenia “useradd username”.

  • Teraz możesz otworzyć istniejące konto użytkownika za pomocą polecenia “su username”.

Otwórz terminal Linux i wpisz następujące polecenia, aby utworzyć użytkownika.

$ su
password:
# useradd hadoop
# passwd hadoop
New passwd:
Retype new passwd

Konfiguracja SSH i generowanie klucza

Konfiguracja SSH jest wymagana do wykonywania różnych operacji w klastrze, takich jak uruchamianie, zatrzymywanie i rozproszone operacje powłoki demona. Aby uwierzytelnić różnych użytkowników Hadoop, wymagane jest podanie pary kluczy publiczny / prywatny dla użytkownika Hadoop i udostępnienie go różnym użytkownikom.

Poniższe polecenia służą do generowania pary klucz-wartość przy użyciu protokołu SSH -

  • skopiuj klucze publiczne z id_rsa.pub do Authorized_keys,
  • i zapewnić właścicielowi,
  • uprawnienia do odczytu i zapisu odpowiednio w pliku allowed_keys.
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 0600 ~/.ssh/authorized_keys
  • Sprawdź ssh:
ssh localhost

Instalowanie Java

Java jest głównym wymaganiem wstępnym dla Cassandry. Przede wszystkim powinieneś zweryfikować istnienie Javy w swoim systemie za pomocą następującego polecenia -

$ java -version

Jeśli wszystko działa poprawnie, otrzymasz następujący wynik.

java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

Jeśli nie masz Javy w swoim systemie, wykonaj poniższe kroki, aby zainstalować Javę.

Krok 1

Pobierz java (JDK <najnowsza wersja> - X64.tar.gz) z poniższego linku:

Then jdk-7u71-linux-x64.tar.gz will be downloaded onto your system.

Krok 2

Pobrany plik java znajdziesz zwykle w folderze Pobrane. Sprawdź go i wyodrębnij plikjdk-7u71-linux-x64.gz plik za pomocą następujących poleceń.

$ cd Downloads/
$ ls jdk-7u71-linux-x64.gz $ tar zxf jdk-7u71-linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-linux-x64.gz

Krok 3

Aby udostępnić Javę wszystkim użytkownikom, musisz przenieść ją do lokalizacji „/ usr / local /”. Otwórz root i wpisz następujące polecenia.

$ su
password:
# mv jdk1.7.0_71 /usr/local/
# exit

Krok 4

Do konfiguracji PATH i JAVA_HOME zmienne, dodaj następujące polecenia do ~/.bashrc plik.

export JAVA_HOME = /usr/local/jdk1.7.0_71
export PATH = $PATH:$JAVA_HOME/bin

Teraz zastosuj wszystkie zmiany w aktualnie działającym systemie.

$ source ~/.bashrc

Krok 5

Użyj następujących poleceń, aby skonfigurować alternatywy Java.

# alternatives --install /usr/bin/java java usr/local/java/bin/java 2
# alternatives --install /usr/bin/javac javac usr/local/java/bin/javac 2
# alternatives --install /usr/bin/jar jar usr/local/java/bin/jar 2

# alternatives --set java usr/local/java/bin/java
# alternatives --set javac usr/local/java/bin/javac
# alternatives --set jar usr/local/java/bin/jar

Teraz użyj java -version polecenie z terminala, jak wyjaśniono powyżej.

Wyznaczanie ścieżki

Ustaw ścieżkę ścieżki Cassandry w „/.bashrc”, jak pokazano poniżej.

[hadoop@linux ~]$ gedit ~/.bashrc

export CASSANDRA_HOME = ~/cassandra
export PATH = $PATH:$CASSANDRA_HOME/bin

Pobierz Cassandra

Apache Cassandra jest dostępna pod adresem Download Link Cassandra przy użyciu następującego polecenia.

$ wget http://supergsego.com/apache/cassandra/2.1.2/apache-cassandra-2.1.2-bin.tar.gz

Rozpakuj Cassandrę za pomocą polecenia zxvf jak pokazano niżej.

$ tar zxvf apache-cassandra-2.1.2-bin.tar.gz.

Utwórz nowy katalog o nazwie cassandra i przenieś do niego zawartość pobranego pliku, jak pokazano poniżej.

$ mkdir Cassandra $ mv apache-cassandra-2.1.2/* cassandra.

Skonfiguruj Cassandrę

Otworzyć cassandra.yaml: plik, który będzie dostępny w formacie bin katalog Cassandra.

$ gedit cassandra.yaml

Note - Jeśli zainstalowałeś Cassandrę z pakietu deb lub rpm, pliki konfiguracyjne będą znajdować się w /etc/cassandra katalog Cassandra.

Powyższe polecenie otwiera plik cassandra.yamlplik. Sprawdź następujące konfiguracje. Domyślnie te wartości zostaną ustawione dla określonych katalogów.

  • data_file_directories “/var/lib/cassandra/data”

  • commitlog_directory “/var/lib/cassandra/commitlog”

  • save_caches_directory “/var/lib/cassandra/saved_caches”

Upewnij się, że te katalogi istnieją i można w nich zapisywać, jak pokazano poniżej.

Utwórz katalogi

Jako superużytkownik utwórz dwa katalogi /var/lib/cassandra i /var./log/cassandra w którym Cassandra zapisuje swoje dane.

[root@linux cassandra]# mkdir /var/lib/cassandra
[root@linux cassandra]# mkdir /var/log/cassandra

Przyznaj uprawnienia do folderów

Nadaj uprawnienia do odczytu i zapisu do nowo utworzonych folderów, jak pokazano poniżej.

[root@linux /]# chmod 777 /var/lib/cassandra
[root@linux /]# chmod 777 /var/log/cassandra

Uruchom Cassandrę

Aby uruchomić Cassandrę, otwórz okno terminala, przejdź do katalogu domowego Cassandry / home, w którym rozpakowałeś Cassandrę, i uruchom następujące polecenie, aby uruchomić serwer Cassandra.

$ cd $CASSANDRA_HOME $./bin/cassandra -f

Użycie opcji –f mówi Cassandrze, aby pozostała na pierwszym planie zamiast działać w tle. Jeśli wszystko pójdzie dobrze, możesz zobaczyć, jak uruchamia się serwer Cassandra.

Środowisko programistyczne

Aby programowo skonfigurować Cassandrę, pobierz następujące pliki jar -

  • slf4j-api-1.7.5.jar
  • cassandra-driver-core-2.0.2.jar
  • guava-16.0.1.jar
  • metrics-core-3.0.2.jar
  • netty-3.9.0.Final.jar

Umieść je w osobnym folderze. Na przykład pobieramy te słoiki do folderu o nazwie“Cassandra_jars”.

Ustaw ścieżkę klasy dla tego folderu w “.bashrc”plik, jak pokazano poniżej.

[hadoop@linux ~]$ gedit ~/.bashrc //Set the following class path in the .bashrc file. export CLASSPATH = $CLASSPATH:/home/hadoop/Cassandra_jars/*

Środowisko Eclipse

Otwórz Eclipse i utwórz nowy projekt o nazwie Cassandra _Examples.

Kliknij projekt prawym przyciskiem myszy, wybierz Build Path→Configure Build Path jak pokazano niżej.

Otworzy się okno właściwości. Na karcie Biblioteki wybierzAdd External JARs. Przejdź do katalogu, w którym zapisałeś pliki jar. Wybierz wszystkie pięć plików jar i kliknij OK, jak pokazano poniżej.

W Bibliotekach, do których istnieją odniesienia, możesz zobaczyć wszystkie wymagane pliki jar dodane, jak pokazano poniżej -

Zależności Mavena

Poniżej podano pom.xml do tworzenia projektu Cassandra przy użyciu maven.

<project xmlns = "http://maven.apache.org/POM/4.0.0" 
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"  
   xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <build>
      <sourceDirectory>src</sourceDirectory>
      <plugins>
         <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
				
               <configuration>
                  <source>1.7</source>
                  <target>1.7</target>
               </configuration>
					
         </plugin>
      </plugins>
   </build> 

   <dependencies>
      <dependency>
         <groupId>org.slf4j</groupId>
         <artifactId>slf4j-api</artifactId>
         <version>1.7.5</version>
      </dependency>
 
      <dependency>
         <groupId>com.datastax.cassandra</groupId>
         <artifactId>cassandra-driver-core</artifactId>
         <version>2.0.2</version>
      </dependency>
 
      <dependency>
         <groupId>com.google.guava</groupId>
         <artifactId>guava</artifactId>
         <version>16.0.1</version>
      </dependency>
 
      <dependency>
         <groupId>com.codahale.metrics</groupId>
         <artifactId>metrics-core</artifactId>
         <version>3.0.2</version>
      </dependency>
 
      <dependency>
         <groupId>io.netty</groupId>
         <artifactId>netty</artifactId>
         <version>3.9.0.Final</version>
      </dependency>
   </dependencies>

</project>

W tym rozdziale omówiono wszystkie ważne klasy w Cassandrze.

Grupa

Ta klasa jest głównym punktem wejścia sterownika. To należy docom.datastax.driver.core pakiet.

Metody

S. Nie. Metody i opis
1

Session connect()

Tworzy nową sesję w bieżącym klastrze i inicjuje ją.

2

void close()

Służy do zamykania instancji klastra.

3

static Cluster.Builder builder()

Służy do tworzenia nowej instancji Cluster.Builder.

Cluster.Builder

Ta klasa jest używana do tworzenia wystąpienia Cluster.Builder klasa.

Metody

S. Nie Metody i opis
1

Cluster.Builder addContactPoint(String address)

Ta metoda dodaje punkt kontaktowy do klastra.

2

Cluster build()

Ta metoda buduje klaster z podanymi punktami kontaktowymi.

Sesja

Ten interfejs przechowuje połączenia z klastrem Cassandra. Korzystając z tego interfejsu, możesz wykonaćCQLzapytania. To należy docom.datastax.driver.core pakiet.

Metody

S. Nie. Metody i opis
1

void close()

Ta metoda służy do zamykania bieżącej instancji sesji.

2

ResultSet execute(Statement statement)

Ta metoda służy do wykonywania zapytania. Wymaga obiektu instrukcji.

3

ResultSet execute(String query)

Ta metoda służy do wykonywania zapytania. Wymaga zapytania w postaci obiektu String.

4

PreparedStatement prepare(RegularStatement statement)

Ta metoda przygotowuje podane zapytanie. Zapytanie należy złożyć w formie Oświadczenia.

5

PreparedStatement prepare(String query)

Ta metoda przygotowuje podane zapytanie. Zapytanie należy podać w postaci ciągu znaków.

W tym rozdziale przedstawiono powłokę języka zapytań Cassandry i wyjaśniono, jak używać jej poleceń.

Domyślnie Cassandra zapewnia szybką powłokę języka zapytań Cassandra (cqlsh)który pozwala użytkownikom komunikować się z nim. Używając tej powłoki, możesz wykonaćCassandra Query Language (CQL).

Używając cqlsh, możesz

  • zdefiniować schemat,
  • wstaw dane i
  • wykonać zapytanie.

Uruchamianie cqlsh

Uruchom cqlsh za pomocą polecenia cqlshjak pokazano niżej. Daje podpowiedź Cassandry cqlsh jako wyjście.

[hadoop@linux bin]$ cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 2.1.2 | CQL spec 3.2.0 | Native protocol v3]
Use HELP for help.
cqlsh>

Cqlsh- Jak omówiono powyżej, to polecenie jest używane do uruchamiania zachęty cqlsh. Ponadto obsługuje również kilka innych opcji. W poniższej tabeli opisano wszystkie opcjecqlsh i ich użycie.

Opcje Stosowanie
cqlsh --help Wyświetla tematy pomocy dotyczące opcji cqlsh polecenia.
cqlsh --version Udostępnia wersję używanego cqlsh.
cqlsh --color Nakazuje powłoce użycie kolorowego wyjścia.
cqlsh --debug Wyświetla dodatkowe informacje dotyczące debugowania.

cqlsh --execute

cql_statement

Nakazuje powłoce zaakceptowanie i wykonanie polecenia CQL.
cqlsh --file = “file name” Jeśli użyjesz tej opcji, Cassandra wykona polecenie w podanym pliku i zakończy działanie.
cqlsh --no-color Nakazuje Cassandrze, aby nie korzystała z wydruków kolorowych.
cqlsh -u “user name” Korzystając z tej opcji, możesz uwierzytelnić użytkownika. Domyślna nazwa użytkownika to: cassandra.
cqlsh-p “pass word” Korzystając z tej opcji, możesz uwierzytelnić użytkownika za pomocą hasła. Domyślne hasło to: cassandra.

Polecenia Cqlsh

Cqlsh ma kilka poleceń, które pozwalają użytkownikom na interakcję z nim. Polecenia są wymienione poniżej.

Udokumentowane polecenia powłoki

Poniżej podano polecenia powłoki udokumentowane w Cqlsh. Są to polecenia używane do wykonywania zadań, takich jak wyświetlanie tematów pomocy, wychodzenie z cqlsh, opisywanie itp.

  • HELP - Wyświetla tematy pomocy dla wszystkich poleceń cqlsh.

  • CAPTURE - Przechwytuje dane wyjściowe polecenia i dodaje je do pliku.

  • CONSISTENCY - Pokazuje aktualny poziom spójności lub ustawia nowy poziom spójności.

  • COPY - Kopiuje dane do iz Cassandry.

  • DESCRIBE - Opisuje obecną gromadę Cassandry i jej obiekty.

  • EXPAND - rozszerza dane wyjściowe zapytania w pionie.

  • EXIT - Używając tego polecenia, możesz zakończyć cqlsh.

  • PAGING - Włącza lub wyłącza stronicowanie zapytań.

  • SHOW - Wyświetla szczegóły bieżącej sesji cqlsh, takie jak założenia dotyczące wersji Cassandry, hosta lub typu danych.

  • SOURCE - Wykonuje plik zawierający instrukcje CQL.

  • TRACING - Włącza lub wyłącza śledzenie żądań.

Polecenia definicji danych CQL

  • CREATE KEYSPACE - Tworzy KeySpace w Cassandrze.

  • USE - Łączy się z utworzoną KeySpace.

  • ALTER KEYSPACE - Zmienia właściwości KeySpace.

  • DROP KEYSPACE - Usuwa KeySpace

  • CREATE TABLE - Tworzy tabelę w KeySpace.

  • ALTER TABLE - Modyfikuje właściwości kolumn w tabeli.

  • DROP TABLE - Usuwa tabelę.

  • TRUNCATE - Usuwa wszystkie dane z tabeli.

  • CREATE INDEX - Definiuje nowy indeks w pojedynczej kolumnie tabeli.

  • DROP INDEX - usuwa nazwany indeks.

Polecenia manipulacji danymi CQL

  • INSERT - Dodaje kolumny do wiersza w tabeli.

  • UPDATE - Aktualizuje kolumnę wiersza.

  • DELETE - Usuwa dane z tabeli.

  • BATCH - Wykonuje jednocześnie wiele instrukcji DML.

Klauzule CQL

  • SELECT - Ta klauzula odczytuje dane z tabeli

  • WHERE - Klauzula where jest używana wraz z select, aby odczytać określone dane.

  • ORDERBY - Klauzula orderby jest używana wraz z select, aby odczytać określone dane w określonej kolejności.

Cassandra udostępnia udokumentowane polecenia powłoki oprócz poleceń CQL. Poniżej podano udokumentowane polecenia powłoki Cassandry.

Wsparcie

Polecenie HELP wyświetla streszczenie i krótki opis wszystkich poleceń cqlsh. Poniżej podano użycie polecenia pomocy.

cqlsh> help

Documented shell commands:
===========================
CAPTURE COPY DESCRIBE EXPAND PAGING SOURCE
CONSISTENCY DESC EXIT HELP SHOW TRACING.

CQL help topics:
================
ALTER           CREATE_TABLE_OPTIONS       SELECT
ALTER_ADD       CREATE_TABLE_TYPES         SELECT_COLUMNFAMILY
ALTER_ALTER     CREATE_USER                SELECT_EXPR
ALTER_DROP      DELETE                     SELECT_LIMIT
ALTER_RENAME    DELETE_COLUMNS             SELECT_TABLE

Zdobyć

To polecenie przechwytuje dane wyjściowe polecenia i dodaje je do pliku. Na przykład spójrz na poniższy kod, który przechwytuje dane wyjściowe do pliku o nazwieOutputfile.

cqlsh> CAPTURE '/home/hadoop/CassandraProgs/Outputfile'

Kiedy wpiszemy jakąkolwiek komendę w terminalu, wynik zostanie przechwycony przez podany plik. Poniżej podano używane polecenie i migawkę pliku wyjściowego.

cqlsh:tutorialspoint> select * from emp;

Możesz wyłączyć przechwytywanie za pomocą następującego polecenia.

cqlsh:tutorialspoint> capture off;

Konsystencja

To polecenie pokazuje bieżący poziom spójności lub ustawia nowy poziom spójności.

cqlsh:tutorialspoint> CONSISTENCY
Current consistency level is 1.

Kopiuj

To polecenie kopiuje dane do iz Cassandry do pliku. Poniżej podano przykład kopiowania tabeli o nazwieemp do pliku myfile.

cqlsh:tutorialspoint> COPY emp (emp_id, emp_city, emp_name, emp_phone,emp_sal) TO ‘myfile’;
4 rows exported in 0.034 seconds.

Jeśli otworzysz i zweryfikujesz podany plik, możesz znaleźć skopiowane dane, jak pokazano poniżej.

Opisać

To polecenie opisuje aktualną grupę Cassandry i jej obiekty. Warianty tego polecenia wyjaśniono poniżej.

Describe cluster - To polecenie zawiera informacje o klastrze.

cqlsh:tutorialspoint> describe cluster;

Cluster: Test Cluster
Partitioner: Murmur3Partitioner

Range ownership:
                  -658380912249644557 [127.0.0.1]
                  -2833890865268921414 [127.0.0.1]
                  -6792159006375935836 [127.0.0.1]

Describe Keyspaces- To polecenie wyświetla listę wszystkich obszarów kluczowych w klastrze. Poniżej podano użycie tego polecenia.

cqlsh:tutorialspoint> describe keyspaces;

system_traces system tp tutorialspoint

Describe tables- To polecenie wyświetla wszystkie tabele w obszarze kluczy. Poniżej podano użycie tego polecenia.

cqlsh:tutorialspoint> describe tables;
emp

Describe table- To polecenie zawiera opis tabeli. Poniżej podano użycie tego polecenia.

cqlsh:tutorialspoint> describe table emp;

CREATE TABLE tutorialspoint.emp (
   emp_id int PRIMARY KEY,
   emp_city text,
   emp_name text,
   emp_phone varint,
   emp_sal varint
) WITH bloom_filter_fp_chance = 0.01
   AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'
   AND comment = ''
   AND compaction = {'min_threshold': '4', 'class':
   'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy',
   'max_threshold': '32'}
	
   AND compression = {'sstable_compression':
   'org.apache.cassandra.io.compress.LZ4Compressor'}
	
   AND dclocal_read_repair_chance = 0.1
   AND default_time_to_live = 0
   AND gc_grace_seconds = 864000
   AND max_index_interval = 2048
   AND memtable_flush_period_in_ms = 0
   AND min_index_interval = 128
   AND read_repair_chance = 0.0
   AND speculative_retry = '99.0PERCENTILE';
CREATE INDEX emp_emp_sal_idx ON tutorialspoint.emp (emp_sal);

Opisz typ

To polecenie służy do opisu typu danych zdefiniowanego przez użytkownika. Poniżej podano użycie tego polecenia.

cqlsh:tutorialspoint> describe type card_details;

CREATE TYPE tutorialspoint.card_details (
   num int,
   pin int,
   name text,
   cvv int,
   phone set<int>,
   mail text
);

Opisz typy

To polecenie wyświetla wszystkie typy danych zdefiniowane przez użytkownika. Poniżej podano użycie tego polecenia. Załóżmy, że istnieją dwa typy danych zdefiniowane przez użytkownika:card i card_details.

cqlsh:tutorialspoint> DESCRIBE TYPES;

card_details card

Rozszerzać

To polecenie służy do rozszerzenia danych wyjściowych. Przed użyciem tego polecenia musisz włączyć polecenie rozwijania. Poniżej podano użycie tego polecenia.

cqlsh:tutorialspoint> expand on;
cqlsh:tutorialspoint> select * from emp;

@ Row 1
-----------+------------
    emp_id | 1
  emp_city | Hyderabad
  emp_name | ram
 emp_phone | 9848022338
   emp_sal | 50000
  
@ Row 2
-----------+------------
    emp_id | 2
  emp_city | Delhi
  emp_name | robin
 emp_phone | 9848022339
   emp_sal | 50000
  
@ Row 3
-----------+------------
    emp_id | 4
  emp_city | Pune
  emp_name | rajeev
 emp_phone | 9848022331
   emp_sal | 30000
  
@ Row 4
-----------+------------
    emp_id | 3
  emp_city | Chennai
  emp_name | rahman
 emp_phone | 9848022330
   emp_sal | 50000
(4 rows)

Note - Możesz wyłączyć opcję rozwijania za pomocą następującego polecenia.

cqlsh:tutorialspoint> expand off;
Disabled Expanded output.

Wyjście

To polecenie jest używane do zakończenia powłoki cql.

Pokazać

To polecenie wyświetla szczegóły bieżącej sesji cqlsh, takie jak założenia dotyczące wersji Cassandry, hosta lub typu danych. Poniżej podano użycie tego polecenia.

cqlsh:tutorialspoint> show host;
Connected to Test Cluster at 127.0.0.1:9042.

cqlsh:tutorialspoint> show version;
[cqlsh 5.0.1 | Cassandra 2.1.2 | CQL spec 3.2.0 | Native protocol v3]

Źródło

Za pomocą tego polecenia można wykonywać polecenia w pliku. Załóżmy, że nasz plik wejściowy jest następujący -

Następnie możesz uruchomić plik zawierający polecenia, jak pokazano poniżej.

cqlsh:tutorialspoint> source '/home/hadoop/CassandraProgs/inputfile';

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |   ram    | 9848022338 | 50000
      2 | Delhi     |   robin  | 9848022339 | 50000
      3 | Pune      |   rajeev | 9848022331 | 30000
      4 | Chennai   |   rahman | 9848022330 | 50000
(4 rows)

Tworzenie przestrzeni kluczy za pomocą Cqlsh

Przestrzeń kluczy w Cassandrze to przestrzeń nazw, która definiuje replikację danych w węzłach. Klaster zawiera jedną przestrzeń kluczy na węzeł. Poniżej podano składnię tworzenia przestrzeni kluczy za pomocą instrukcjiCREATE KEYSPACE.

Składnia

CREATE KEYSPACE <identifier> WITH <properties>

to znaczy

CREATE KEYSPACE “KeySpace Name”
WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of   replicas’};

CREATE KEYSPACE “KeySpace Name”
WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of  replicas’}

AND durable_writes = ‘Boolean value’;

Instrukcja CREATE KEYSPACE ma dwie właściwości: replication i durable_writes.

Replikacja

Opcja replikacji polega na określeniu Replica Placement strategyoraz liczbę poszukiwanych replik. W poniższej tabeli wymieniono wszystkie strategie rozmieszczania replik.

Nazwa strategii Opis
Simple Strategy' Określa prosty współczynnik replikacji dla klastra.
Network Topology Strategy Za pomocą tej opcji można niezależnie ustawić współczynnik replikacji dla każdego centrum danych.
Old Network Topology Strategy To jest starsza strategia replikacji.

Korzystając z tej opcji, możesz poinstruować Cassandrę, czy ma użyć commitlogdo aktualizacji bieżącej KeySpace. Ta opcja nie jest obowiązkowa i domyślnie ma wartość true.

Przykład

Poniżej podano przykład tworzenia KeySpace.

  • Tutaj tworzymy KeySpace o nazwie TutorialsPoint.

  • Korzystamy z pierwszej strategii rozmieszczenia repliki, tj. Simple Strategy.

  • A my wybieramy współczynnik replikacji do 1 replica.

cqlsh.> CREATE KEYSPACE tutorialspoint
WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};

Weryfikacja

Możesz sprawdzić, czy tabela została utworzona, czy nie, za pomocą polecenia Describe. Jeśli użyjesz tego polecenia na przestrzeniach klawiszy, wyświetli wszystkie utworzone przestrzenie klawiszowe, jak pokazano poniżej.

cqlsh> DESCRIBE keyspaces;

tutorialspoint system system_traces

Tutaj możesz obserwować nowo utworzoną KeySpace tutorialspoint.

Durable_writes

Domyślnie właściwości permanent_writes tabeli są ustawione na true,jednak można ustawić na fałsz. Nie możesz ustawić tej właściwości nasimplex strategy.

Przykład

Poniżej podano przykład demonstrujący użycie właściwości trwałych zapisów.

cqlsh> CREATE KEYSPACE test
... WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3 }
... AND DURABLE_WRITES = false;

Weryfikacja

Możesz sprawdzić, czy właściwość permanent_writes test KeySpace została ustawiona na false, wysyłając zapytanie do Systemowego obszaru kluczy. To zapytanie zawiera wszystkie KeySpaces wraz z ich właściwościami.

cqlsh> SELECT * FROM system_schema.keyspaces;

  keyspace_name | durable_writes |                                       strategy_class | strategy_options
----------------+----------------+------------------------------------------------------+----------------------------

           test |          False | org.apache.cassandra.locator.NetworkTopologyStrategy | {"datacenter1" : "3"}

 tutorialspoint |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor" : "4"}

         system |           True |           org.apache.cassandra.locator.LocalStrategy | { }

  system_traces |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor" : "2"}

(4 rows)

Tutaj możesz zauważyć, że właściwość Durable_writes testu KeySpace została ustawiona na wartość false.

Korzystanie z przestrzeni klawiszy

Możesz użyć utworzonej KeySpace za pomocą słowa kluczowego USE. Jego składnia jest następująca -

Syntax:USE <identifier>

Przykład

W poniższym przykładzie używamy KeySpace tutorialspoint.

cqlsh> USE tutorialspoint;
cqlsh:tutorialspoint>

Tworzenie obszaru kluczy przy użyciu interfejsu API języka Java

Możesz utworzyć Keyspace za pomocą execute() metoda Sessionklasa. Wykonaj poniższe czynności, aby utworzyć obszar kluczy za pomocą interfejsu API języka Java.

Krok 1: Utwórz obiekt klastra

Przede wszystkim utwórz instancję Cluster.builder klasa com.datastax.driver.core pakiet, jak pokazano poniżej.

//Creating Cluster.Builder object

Cluster.Builder builder1 = Cluster.builder();

Dodaj punkt kontaktowy (adres IP węzła) za pomocą addContactPoint() metoda Cluster.Builderobiekt. Ta metoda zwracaCluster.Builder.

//Adding contact point to the Cluster.Builder object

Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Korzystając z nowego obiektu konstruktora, utwórz obiekt klastra. Aby to zrobić, masz metodę o nazwiebuild() w Cluster.Builderklasa. Poniższy kod przedstawia sposób tworzenia obiektu klastra.

//Building a cluster
Cluster cluster = builder.build();

Możesz zbudować obiekt klastra w jednym wierszu kodu, jak pokazano poniżej.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Krok 2: Utwórz obiekt sesji

Utwórz wystąpienie Session obiekt za pomocą connect() metoda Cluster klasa, jak pokazano poniżej.

Session session = cluster.connect( );

Ta metoda tworzy nową sesję i inicjuje ją. Jeśli masz już obszar kluczy, możesz ustawić go na istniejący, przekazując nazwę obszaru kluczy w formacie ciągu do tej metody, jak pokazano poniżej.

Session session = cluster.connect(“ Your keyspace name ” );

Krok 3: Wykonaj zapytanie

Możesz wykonać CQL zapytania przy użyciu execute() metoda Sessionklasa. Przekaż zapytanie w formacie ciągu lub jako plikStatement klasy do execute()metoda. Cokolwiek przekażesz do tej metody w formacie ciągu, zostanie wykonane nacqlsh.

W tym przykładzie tworzymy KeySpace o nazwie tp. Korzystamy z pierwszej strategii umieszczania repliki, czyli Simple Strategy i wybieramy współczynnik replikacji na 1 replikę.

Musisz zapisać zapytanie w zmiennej łańcuchowej i przekazać je do metody execute (), jak pokazano poniżej.

String query = "CREATE KEYSPACE tp WITH replication "
   + "= {'class':'SimpleStrategy', 'replication_factor':1}; ";
session.execute(query);

Krok 4: Użyj KeySpace

Możesz użyć utworzonej KeySpace używając metody execute (), jak pokazano poniżej.

execute(“ USE tp ” );

Poniżej podano kompletny program do tworzenia i używania przestrzeni kluczy w Cassandrze przy użyciu Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Create_KeySpace {

   public static void main(String args[]){

      //Query
      String query = "CREATE KEYSPACE tp WITH replication "
         + "= {'class':'SimpleStrategy', 'replication_factor':1};";
                    
      //creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
    
      //Creating Session object
      Session session = cluster.connect();
     
      //Executing the query
      session.execute(query);
     
      //using the KeySpace
      session.execute("USE tp");
      System.out.println("Keyspace created"); 
   }
}

Zapisz powyższy program z nazwą klasy, a następnie .java, przejdź do lokalizacji, w której jest zapisany. Skompiluj i uruchom program, jak pokazano poniżej.

$javac Create_KeySpace.java
$java Create_KeySpace

W normalnych warunkach wygeneruje następujący wynik -

Keyspace created

Zmiana KeySpace

ALTER KEYSPACE może służyć do zmiany właściwości, takich jak liczba replik i trwałe_writes KeySpace. Poniżej podano składnię tego polecenia.

Składnia

ALTER KEYSPACE <identifier> WITH <properties>

to znaczy

ALTER KEYSPACE “KeySpace Name”
WITH replication = {'class': ‘Strategy name’, 'replication_factor' : ‘No.Of  replicas’};

Właściwości ALTER KEYSPACEsą takie same jak CREATE KEYSPACE. Posiada dwie właściwości:replication i durable_writes.

Replikacja

Opcja replikacji określa strategię umieszczania repliki i liczbę żądanych replik.

Durable_writes

Korzystając z tej opcji, możesz poinstruować Cassandrę, czy ma używać commitlog do aktualizacji bieżącej KeySpace. Ta opcja nie jest obowiązkowa i domyślnie ma wartość true.

Przykład

Poniżej podano przykład zmiany KeySpace.

  • Tutaj zmieniamy KeySpace o nazwie TutorialsPoint.

  • Zmieniamy współczynnik replikacji z 1 na 3.

cqlsh.> ALTER KEYSPACE tutorialspoint
WITH replication = {'class':'NetworkTopologyStrategy', 'replication_factor' : 3};

Zmiana Durable_writes

Możesz także zmienić właściwość Durable_writes KeySpace. Poniżej podano właściwość Durable_writes plikutest KeySpace.

SELECT * FROM system_schema.keyspaces;

  keyspace_name | durable_writes |                                       strategy_class | strategy_options
----------------+----------------+------------------------------------------------------+----------------------------
           test |          False | org.apache.cassandra.locator.NetworkTopologyStrategy | {"datacenter1":"3"}

 tutorialspoint |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor":"4"}

         system |           True |           org.apache.cassandra.locator.LocalStrategy | { }

  system_traces |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor":"2"}
(4 rows)

ALTER KEYSPACE test
WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3}
AND DURABLE_WRITES = true;

Ponownie, jeśli zweryfikujesz właściwości KeySpaces, wygeneruje następujący wynik.

SELECT * FROM system_schema.keyspaces;
  keyspace_name | durable_writes |                                       strategy_class | strategy_options
----------------+----------------+------------------------------------------------------+----------------------------
           test |           True | org.apache.cassandra.locator.NetworkTopologyStrategy | {"datacenter1":"3"}

 tutorialspoint |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor":"4"}

         system |           True |           org.apache.cassandra.locator.LocalStrategy | { }

  system_traces |           True |          org.apache.cassandra.locator.SimpleStrategy | {"replication_factor":"2"}

(4 rows)

Zmiana obszaru kluczy za pomocą interfejsu API języka Java

Możesz zmienić przestrzeń kluczową za pomocą execute() metoda Sessionklasa. Wykonaj poniższe czynności, aby zmienić obszar kluczy za pomocą interfejsu API języka Java

Krok 1: Utwórz obiekt klastra

Przede wszystkim utwórz instancję Cluster.builder klasa com.datastax.driver.core pakiet, jak pokazano poniżej.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Dodaj punkt kontaktowy (adres IP węzła) za pomocą rozszerzenia addContactPoint() metoda Cluster.Builderobiekt. Ta metoda zwracaCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Korzystając z nowego obiektu konstruktora, utwórz obiekt klastra. Aby to zrobić, masz metodę o nazwiebuild() w Cluster.Builderklasa. Poniższy kod przedstawia sposób tworzenia obiektu klastra.

//Building a cluster

Cluster cluster = builder.build();

Możesz zbudować obiekt klastra przy użyciu jednej linii kodu, jak pokazano poniżej.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Krok 2: Utwórz obiekt sesji

Utwórz wystąpienie Session obiekt za pomocą connect() metoda Clusterklasa, jak pokazano poniżej.

Session session = cluster.connect( );

Ta metoda tworzy nową sesję i inicjuje ją. Jeśli masz już obszar kluczy, możesz ustawić go na istniejący, przekazując nazwę obszaru kluczy w formacie ciągu do tej metody, jak pokazano poniżej.

Session session = cluster.connect(“ Your keyspace name ” );

Krok 3: Wykonaj zapytanie

Zapytania CQL można wykonywać za pomocą metody execute () klasy Session. Przekaż zapytanie w formacie ciągu lub jako plikStatementclass na metodę execute (). Cokolwiek przekażesz do tej metody w formacie ciągu, zostanie wykonane nacqlsh.

W tym przykładzie

  • Zmieniamy obszar kluczy o nazwie tp. Zmieniamy opcję replikacji z prostej strategii na strategię topologii sieci.

  • Zmieniamy durable_writes fałszywe

Musisz zapisać zapytanie w zmiennej łańcuchowej i przekazać je do metody execute (), jak pokazano poniżej.

//Query
String query = "ALTER KEYSPACE tp WITH replication " + "=   {'class':'NetworkTopologyStrategy', 'datacenter1':3}" +" AND DURABLE_WRITES = false;";
session.execute(query);

Poniżej podano kompletny program do tworzenia i używania przestrzeni kluczy w Cassandrze przy użyciu Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Alter_KeySpace {
   public static void main(String args[]){

      //Query
      String query = "ALTER KEYSPACE tp WITH replication " + "= {'class':'NetworkTopologyStrategy', 'datacenter1':3}"
         + "AND DURABLE_WRITES = false;";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
   
      //Creating Session object
      Session session = cluster.connect();
 
      //Executing the query
      session.execute(query);
 
      System.out.println("Keyspace altered");
   }
}

Zapisz powyższy program z nazwą klasy, a następnie .java, przejdź do lokalizacji, w której jest zapisany. Skompiluj i uruchom program, jak pokazano poniżej.

$javac Alter_KeySpace.java
$java Alter_KeySpace

W normalnych warunkach generuje następujący wynik -

Keyspace Altered

Upuszczanie Keyspace

Możesz upuścić KeySpace za pomocą polecenia DROP KEYSPACE. Poniżej podano składnię usuwania KeySpace.

Składnia

DROP KEYSPACE <identifier>

to znaczy

DROP KEYSPACE “KeySpace name”

Przykład

Poniższy kod usuwa obszar kluczy tutorialspoint.

cqlsh> DROP KEYSPACE tutorialspoint;

Weryfikacja

Sprawdź przestrzenie klawiszy za pomocą polecenia Describe i sprawdź, czy tabela została usunięta, jak pokazano poniżej.

cqlsh> DESCRIBE keyspaces;

system system_traces

Ponieważ usunęliśmy samouczek dotyczący przestrzeni klawiszy, nie znajdziesz go na liście przestrzeni kluczy.

Usuwanie obszaru kluczy za pomocą interfejsu API języka Java

Przestrzeń kluczy można utworzyć za pomocą metody execute () klasy Session. Wykonaj czynności podane poniżej, aby usunąć obszar kluczy za pomocą interfejsu API języka Java.

Krok 1: Utwórz obiekt klastra

Przede wszystkim utwórz instancję Cluster.builder klasa com.datastax.driver.core pakiet, jak pokazano poniżej.

//Creating Cluster.Builder object 
Cluster.Builder builder1 = Cluster.builder();

Dodaj punkt kontaktowy (adres IP węzła) za pomocą rozszerzenia addContactPoint() metoda Cluster.Builderobiekt. Ta metoda zwracaCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Korzystając z nowego obiektu konstruktora, utwórz obiekt klastra. Aby to zrobić, masz metodę o nazwiebuild() w Cluster.Builderklasa. Poniższy kod przedstawia sposób tworzenia obiektu klastra.

//Building a cluster
Cluster cluster = builder.build();

Możesz zbudować obiekt klastra przy użyciu jednej linii kodu, jak pokazano poniżej.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Krok 2: Utwórz obiekt sesji

Utwórz wystąpienie obiektu Session za pomocą metody connect () klasy Cluster, jak pokazano poniżej.

Session session = cluster.connect( );

Ta metoda tworzy nową sesję i inicjuje ją. Jeśli masz już obszar kluczy, możesz ustawić go na istniejący, przekazując nazwę obszaru kluczy w formacie ciągu do tej metody, jak pokazano poniżej.

Session session = cluster.connect(“ Your keyspace name”);

Krok 3: Wykonaj zapytanie

Zapytania CQL można wykonywać za pomocą metody execute () klasy Session. Przekaż zapytanie w formacie ciągu znaków lub jako obiekt klasy Statement do metody execute (). Cokolwiek przekażesz do tej metody w formacie łańcucha, zostanie wykonane na cqlsh.

W poniższym przykładzie usuwamy obszar kluczy o nazwie tp. Musisz zapisać zapytanie w zmiennej łańcuchowej i przekazać je do metody execute (), jak pokazano poniżej.

String query = "DROP KEYSPACE tp; ";

session.execute(query);

Poniżej podano kompletny program do tworzenia i używania przestrzeni kluczy w Cassandrze przy użyciu Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Drop_KeySpace {

   public static void main(String args[]){

      //Query
      String query = "Drop KEYSPACE tp";

      //creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
    
      //Creating Session object
      Session session = cluster.connect();
    
      //Executing the query
      session.execute(query);
      System.out.println("Keyspace deleted");
   }
}

Zapisz powyższy program z nazwą klasy, a następnie .java, przejdź do lokalizacji, w której jest zapisany. Skompiluj i uruchom program, jak pokazano poniżej.

$javac Delete_KeySpace.java
$java Delete_KeySpace

W normalnych warunkach powinien dać następujący wynik -

Keyspace deleted

Tworzenie tabeli

Możesz utworzyć tabelę za pomocą polecenia CREATE TABLE. Poniżej podano składnię tworzenia tabeli.

Składnia

CREATE (TABLE | COLUMNFAMILY) <tablename>
('<column-definition>' , '<column-definition>')
(WITH <option> AND <option>)

Definiowanie kolumny

Możesz zdefiniować kolumnę, jak pokazano poniżej.

column name1 data type,
column name2 data type,

example:

age int,
name text

Klucz podstawowy

Klucz podstawowy to kolumna używana do jednoznacznego identyfikowania wiersza. Dlatego zdefiniowanie klucza podstawowego jest obowiązkowe podczas tworzenia tabeli. Klucz podstawowy składa się z co najmniej jednej kolumny tabeli. Możesz zdefiniować klucz podstawowy tabeli, jak pokazano poniżej.

CREATE TABLE tablename(
   column1 name datatype PRIMARYKEY,
   column2 name data type,
   column3 name data type.
   )

or

CREATE TABLE tablename(
   column1 name datatype PRIMARYKEY,
   column2 name data type,
   column3 name data type,
   PRIMARY KEY (column1)
   )

Przykład

Poniżej podano przykład tworzenia tabeli w Cassandrze przy użyciu cqlsh. Tutaj jesteśmy -

  • Korzystanie z samouczka dotyczącego przestrzeni klawiszy

  • Tworzenie tabeli o nazwie emp

Będzie zawierał takie szczegóły, jak imię i nazwisko pracownika, identyfikator, miasto, wynagrodzenie i numer telefonu. Identyfikator pracownika jest kluczem podstawowym.

cqlsh> USE tutorialspoint;
cqlsh:tutorialspoint>; CREATE TABLE emp(
   emp_id int PRIMARY KEY,
   emp_name text,
   emp_city text,
   emp_sal varint,
   emp_phone varint
   );

Weryfikacja

Instrukcja select da ci schemat. Sprawdź tabelę za pomocą instrukcji select, jak pokazano poniżej.

cqlsh:tutorialspoint> select * from emp;

 emp_id | emp_city | emp_name | emp_phone | emp_sal
--------+----------+----------+-----------+---------

(0 rows)

Tutaj możesz obserwować tabelę utworzoną z podanymi kolumnami. Ponieważ usunęliśmy samouczek dotyczący przestrzeni klawiszy, nie znajdziesz go na liście przestrzeni kluczy.

Tworzenie tabeli przy użyciu Java API

Tabelę można utworzyć za pomocą metody execute () klasy Session. Wykonaj poniższe czynności, aby utworzyć tabelę przy użyciu interfejsu API języka Java.

Krok 1: Utwórz obiekt klastra

Przede wszystkim utwórz wystąpienie Cluster.builder klasa com.datastax.driver.core pakiet, jak pokazano poniżej.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Dodaj punkt kontaktowy (adres IP węzła) za pomocą rozszerzenia addContactPoint() metoda Cluster.Builderobiekt. Ta metoda zwracaCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Korzystając z nowego obiektu konstruktora, utwórz obiekt klastra. Aby to zrobić, masz metodę o nazwiebuild() w Cluster.Builderklasa. Poniższy kod przedstawia sposób tworzenia obiektu klastra.

//Building a cluster
Cluster cluster = builder.build();

Możesz zbudować obiekt klastra przy użyciu jednej linii kodu, jak pokazano poniżej.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Krok 2: Utwórz obiekt sesji

Utwórz wystąpienie obiektu Session przy użyciu rozszerzenia connect() metoda Cluster klasa, jak pokazano poniżej.

Session session = cluster.connect( );

Ta metoda tworzy nową sesję i inicjuje ją. Jeśli masz już obszar kluczy, możesz ustawić go na istniejący, przekazując nazwę obszaru kluczy w formacie ciągu do tej metody, jak pokazano poniżej.

Session session = cluster.connect(“ Your keyspace name ” );

Tutaj używamy nazwanej przestrzeni kluczy tp. Dlatego utwórz obiekt sesji, jak pokazano poniżej.

Session session = cluster.connect(“ tp” );

Krok 3: Wykonaj zapytanie

Zapytania CQL można wykonywać za pomocą metody execute () klasy Session. Przekaż zapytanie w formacie ciągu znaków lub jako obiekt klasy Statement do metody execute (). Cokolwiek przekażesz do tej metody w formacie łańcucha, zostanie wykonane na cqlsh.

W poniższym przykładzie tworzymy tabelę o nazwie emp. Musisz zapisać zapytanie w zmiennej łańcuchowej i przekazać je do metody execute (), jak pokazano poniżej.

//Query
String query = "CREATE TABLE emp(emp_id int PRIMARY KEY, "
   + "emp_name text, "
   + "emp_city text, "
   + "emp_sal varint, "
   + "emp_phone varint );";
session.execute(query);

Poniżej podano kompletny program do tworzenia i używania przestrzeni kluczy w Cassandrze przy użyciu Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Create_Table {

   public static void main(String args[]){

      //Query
      String query = "CREATE TABLE emp(emp_id int PRIMARY KEY, "
         + "emp_name text, "
         + "emp_city text, "
         + "emp_sal varint, "
         + "emp_phone varint );";
		
      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
   
      //Creating Session object
      Session session = cluster.connect("tp");
 
      //Executing the query
      session.execute(query);
 
      System.out.println("Table created");
   }
}

Zapisz powyższy program z nazwą klasy, a następnie .java, przejdź do lokalizacji, w której jest zapisany. Skompiluj i uruchom program, jak pokazano poniżej.

$javac Create_Table.java
$java Create_Table

W normalnych warunkach powinien dać następujący wynik -

Table created

Zmiana tabeli

Możesz zmienić tabelę za pomocą polecenia ALTER TABLE. Poniżej podano składnię tworzenia tabeli.

Składnia

ALTER (TABLE | COLUMNFAMILY) <tablename> <instruction>

Za pomocą polecenia ALTER możesz wykonać następujące operacje -

  • Dodaj kolumnę

  • Upuść kolumnę

Dodawanie kolumny

Używając polecenia ALTER, możesz dodać kolumnę do tabeli. Podczas dodawania kolumn należy uważać, aby nazwa kolumny nie kolidowała z istniejącymi nazwami kolumn i aby tabela nie była zdefiniowana z opcją kompaktowego przechowywania. Poniżej podano składnię dodawania kolumny do tabeli.

ALTER TABLE table name
ADD  new column datatype;

Example

Poniżej podano przykład dodania kolumny do istniejącej tabeli. Tutaj dodajemy kolumnę o nazwieemp_email typu danych tekstowych do tabeli o nazwie emp.

cqlsh:tutorialspoint> ALTER TABLE emp
   ... ADD emp_email text;

Verification

Użyj instrukcji SELECT, aby sprawdzić, czy kolumna została dodana, czy nie. Tutaj możesz obserwować nowo dodaną kolumnę emp_email.

cqlsh:tutorialspoint> select * from emp;

 emp_id | emp_city | emp_email | emp_name | emp_phone | emp_sal
--------+----------+-----------+----------+-----------+---------

Upuszczenie kolumny

Używając polecenia ALTER, możesz usunąć kolumnę z tabeli. Przed usunięciem kolumny z tabeli sprawdź, czy tabela nie jest zdefiniowana z opcją kompaktowego przechowywania. Poniżej podano składnię usuwania kolumny z tabeli za pomocą polecenia ALTER.

ALTER table name
DROP column name;

Example

Poniżej podano przykład usunięcia kolumny z tabeli. Tutaj usuwamy kolumnę o nazwieemp_email.

cqlsh:tutorialspoint> ALTER TABLE emp DROP emp_email;

Verification

Sprawdź, czy kolumna została usunięta przy użyciu select oświadczenie, jak pokazano poniżej.

cqlsh:tutorialspoint> select * from emp;

 emp_id | emp_city | emp_name | emp_phone | emp_sal
--------+----------+----------+-----------+---------
(0 rows)

Od emp_email kolumna została usunięta, nie możesz jej już znaleźć.

Zmiana tabeli za pomocą interfejsu API języka Java

Tabelę można utworzyć za pomocą metody execute () klasy Session. Wykonaj poniższe czynności, aby zmienić tabelę za pomocą interfejsu API języka Java.

Krok 1: Utwórz obiekt klastra

Przede wszystkim utwórz instancję Cluster.builder klasa com.datastax.driver.core pakiet, jak pokazano poniżej.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Dodaj punkt kontaktowy (adres IP węzła) za pomocą rozszerzenia addContactPoint() metoda Cluster.Builderobiekt. Ta metoda zwracaCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Korzystając z nowego obiektu konstruktora, utwórz obiekt klastra. Aby to zrobić, masz metodę o nazwiebuild() w Cluster.Builderklasa. Poniższy kod przedstawia sposób tworzenia obiektu klastra.

//Building a cluster
Cluster cluster = builder.build();

Możesz zbudować obiekt klastra przy użyciu jednej linii kodu, jak pokazano poniżej.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Krok 2: Utwórz obiekt sesji

Utwórz wystąpienie obiektu Session za pomocą metody connect () klasy Cluster, jak pokazano poniżej.

Session session = cluster.connect( );

Ta metoda tworzy nową sesję i inicjuje ją. Jeśli masz już przestrzeń kluczy, możesz ustawić ją na istniejącą, przekazując nazwę KeySpace w formacie ciągu do tej metody, jak pokazano poniżej.

Session session = cluster.connect(“ Your keyspace name ” );
Session session = cluster.connect(“ tp” );

Tutaj używamy KeySpace o nazwie tp. Dlatego utwórz obiekt sesji, jak pokazano poniżej.

Krok 3: Wykonaj zapytanie

Zapytania CQL można wykonywać za pomocą metody execute () klasy Session. Przekaż zapytanie w formacie ciągu znaków lub jako obiekt klasy Statement do metody execute (). Cokolwiek przekażesz do tej metody w formacie ciągu, zostanie wykonane nacqlsh.

W poniższym przykładzie dodajemy kolumnę do tabeli o nazwie emp. Aby to zrobić, musisz zapisać zapytanie w zmiennej łańcuchowej i przekazać je do metody execute (), jak pokazano poniżej.

//Query
String query1 = "ALTER TABLE emp ADD emp_email text";
session.execute(query);

Poniżej podano kompletny program dodawania kolumny do istniejącej tabeli.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Add_column {

   public static void main(String args[]){

      //Query
      String query = "ALTER TABLE emp ADD emp_email text";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
     
      //Creating Session object
      Session session = cluster.connect("tp");
    
      //Executing the query
      session.execute(query);
  
      System.out.println("Column added");
   }
}

Zapisz powyższy program z nazwą klasy, a następnie .java, przejdź do lokalizacji, w której jest zapisany. Skompiluj i uruchom program, jak pokazano poniżej.

$javac Add_Column.java
$java Add_Column

W normalnych warunkach powinien dać następujący wynik -

Column added

Usuwanie kolumny

Poniżej podano kompletny program do usuwania kolumny z istniejącej tabeli.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Delete_Column {

   public static void main(String args[]){

      //Query
      String query = "ALTER TABLE emp DROP emp_email;";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
 
      //Creating Session object
      Session session = cluster.connect("tp");
 
      //executing the query
      session.execute(query);
    
      System.out.println("Column deleted");
   }
 }

Zapisz powyższy program z nazwą klasy, a następnie .java, przejdź do lokalizacji, w której jest zapisany. Skompiluj i uruchom program, jak pokazano poniżej.

$javac Delete_Column.java
$java Delete_Column

W normalnych warunkach powinien dać następujący wynik -

Column deleted

Upuszczanie stołu

Możesz usunąć tabelę za pomocą polecenia Drop Table. Jego składnia jest następująca -

Składnia

DROP TABLE <tablename>

Przykład

Poniższy kod usuwa istniejącą tabelę z KeySpace.

cqlsh:tutorialspoint> DROP TABLE emp;

Weryfikacja

Użyj polecenia Opisz, aby sprawdzić, czy tabela została usunięta, czy nie. Ponieważ tabela emp została usunięta, nie znajdziesz jej na liście rodzin kolumn.

cqlsh:tutorialspoint> DESCRIBE COLUMNFAMILIES;
employee

Usuwanie tabeli za pomocą Java API

Tabelę można usunąć za pomocą metody execute () klasy Session. Wykonaj poniższe czynności, aby usunąć tabelę za pomocą interfejsu API języka Java.

Krok 1: Utwórz obiekt klastra

Przede wszystkim utwórz instancję Cluster.builder klasa com.datastax.driver.core pakiet, jak pokazano poniżej -

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Dodaj punkt kontaktowy (adres IP węzła) za pomocą addContactPoint() metoda Cluster.Builderobiekt. Ta metoda zwracaCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Korzystając z nowego obiektu konstruktora, utwórz obiekt klastra. Aby to zrobić, masz metodę o nazwiebuild() w Cluster.Builderklasa. Poniższy kod przedstawia sposób tworzenia obiektu klastra.

//Building a cluster
Cluster cluster = builder.build();

Możesz zbudować obiekt klastra przy użyciu jednej linii kodu, jak pokazano poniżej.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Krok 2: Utwórz obiekt sesji

Utwórz wystąpienie obiektu Session za pomocą metody connect () klasy Cluster, jak pokazano poniżej.

Session session = cluster.connect( );

Ta metoda tworzy nową sesję i inicjuje ją. Jeśli masz już przestrzeń kluczy, możesz ustawić ją na istniejącą, przekazując nazwę KeySpace w formacie ciągu do tej metody, jak pokazano poniżej.

Session session = cluster.connect(“Your keyspace name”);

Tutaj używamy nazwanej przestrzeni kluczy tp. Dlatego utwórz obiekt sesji, jak pokazano poniżej.

Session session = cluster.connect(“tp”);

Krok 3: Wykonaj zapytanie

Zapytania CQL można wykonywać za pomocą metody execute () klasy Session. Przekaż zapytanie w formacie ciągu znaków lub jako obiekt klasy Statement do metody execute (). Cokolwiek przekażesz do tej metody w formacie ciągu, zostanie wykonane nacqlsh.

W poniższym przykładzie usuwamy tabelę o nazwie emp. Musisz zapisać zapytanie w zmiennej łańcuchowej i przekazać je do metody execute (), jak pokazano poniżej.

// Query

String query = "DROP TABLE emp1;”;
session.execute(query);

Poniżej znajduje się kompletny program do upuszczania tabeli w Cassandrze przy użyciu Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;
 
public class Drop_Table {

   public static void main(String args[]){

      //Query
      String query = "DROP TABLE emp1;";
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
    
      //Creating Session object
      Session session = cluster.connect("tp");
   
      //Executing the query
      session.execute(query);
    
      System.out.println("Table dropped");
   }
}

Zapisz powyższy program z nazwą klasy, a następnie .java, przejdź do lokalizacji, w której jest zapisany. Skompiluj i uruchom program, jak pokazano poniżej.

$javac Drop_Table.java
$java Drop_Table

W normalnych warunkach powinien dać następujący wynik -

Table dropped

Obcinanie tabeli

Tabelę można skrócić za pomocą polecenia TRUNCATE. Po obcięciu tabeli wszystkie wiersze tabeli są trwale usuwane. Poniżej podano składnię tego polecenia.

Składnia

TRUNCATE <tablename>

Przykład

Załóżmy, że istnieje tabela o nazwie student z następującymi danymi.

s_id s_name s_branch s_aggregate
1 Baran TO 70
2 rahman EEE 75
3 rabować Mech 72

Po wykonaniu instrukcji select w celu pobrania tabeli student, da ci następujący wynik.

cqlsh:tp> select * from student;

 s_id | s_aggregate | s_branch | s_name
------+-------------+----------+--------
    1 |          70 |       IT | ram
    2 |          75 |      EEE | rahman
    3 |          72 |     MECH | robbin

(3 rows)

Teraz obetnij tabelę za pomocą polecenia TRUNCATE.

cqlsh:tp> TRUNCATE student;

Weryfikacja

Sprawdź, czy tabela jest obcinana, wykonując selectkomunikat. Poniżej podano wynik instrukcji select w tabeli ucznia po obcięciu.

cqlsh:tp> select * from student;

 s_id | s_aggregate | s_branch | s_name
------+-------------+----------+--------

(0 rows)

Obcinanie tabeli przy użyciu interfejsu API języka Java

Tabelę można obcinać za pomocą metody execute () klasy Session. Wykonaj kroki podane poniżej, aby skrócić tabelę.

Krok 1: Utwórz obiekt klastra

Przede wszystkim utwórz instancję Cluster.builder klasa com.datastax.driver.core pakiet, jak pokazano poniżej.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Dodaj punkt kontaktowy (adres IP węzła) za pomocą rozszerzenia addContactPoint() metoda Cluster.Builderobiekt. Ta metoda zwracaCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Korzystając z nowego obiektu konstruktora, utwórz obiekt klastra. Aby to zrobić, masz metodę o nazwiebuild() w Cluster.Builderklasa. Poniższy kod przedstawia sposób tworzenia obiektu klastra.

//Building a cluster
Cluster cluster = builder.build();

Możesz zbudować obiekt klastra przy użyciu jednej linii kodu, jak pokazano poniżej.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Krok 2: Tworzenie obiektu sesji

Utwórz wystąpienie obiektu Session za pomocą metody connect () klasy Cluster, jak pokazano poniżej.

Session session = cluster.connect( );

Ta metoda tworzy nową sesję i inicjuje ją. Jeśli masz już przestrzeń kluczy, możesz ustawić ją na istniejącą, przekazując nazwę KeySpace w formacie ciągu do tej metody, jak pokazano poniżej.

Session session = cluster.connect(“ Your keyspace name ” );
Session session = cluster.connect(“ tp” );

Tutaj używamy przestrzeni kluczy o nazwie tp. Dlatego utwórz obiekt sesji, jak pokazano poniżej.

Krok 3: Wykonaj zapytanie

Zapytania CQL można wykonywać za pomocą metody execute () klasy Session. Przekaż zapytanie w formacie ciągu znaków lub jako obiekt klasy Statement do metody execute (). Cokolwiek przekażesz do tej metody w formacie ciągu, zostanie wykonane nacqlsh.

W poniższym przykładzie obcinamy tabelę o nazwie emp. Musisz zapisać zapytanie w zmiennej łańcuchowej i przekazać je doexecute() metoda, jak pokazano poniżej.

//Query
String query = "TRUNCATE emp;;”;
session.execute(query);

Poniżej podano kompletny program do obcinania tabeli w Cassandrze przy użyciu Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Truncate_Table {

   public static void main(String args[]){
   
      //Query
      String query = "Truncate student;";
   
      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
   
      //Creating Session object
      Session session = cluster.connect("tp");
   
      //Executing the query
      session.execute(query);
      System.out.println("Table truncated");
   }
}

Zapisz powyższy program z nazwą klasy, a następnie .java, przejdź do lokalizacji, w której jest zapisany. Skompiluj i uruchom program, jak pokazano poniżej.

$javac Truncate_Table.java
$java Truncate_Table

W normalnych warunkach powinien dać następujący wynik -

Table truncated

Tworzenie indeksu przy użyciu Cqlsh

Możesz utworzyć indeks w Cassandrze za pomocą polecenia CREATE INDEX. Jego składnia jest następująca -

CREATE INDEX <identifier> ON <tablename>

Poniżej podano przykład tworzenia indeksu do kolumny. Tutaj tworzymy indeks do kolumny „emp_name” w tabeli o nazwie emp.

cqlsh:tutorialspoint> CREATE INDEX name ON emp1 (emp_name);

Tworzenie indeksu przy użyciu Java API

Indeks do kolumny tabeli można utworzyć za pomocą metody execute () klasy Session. Postępuj zgodnie z instrukcjami podanymi poniżej, aby utworzyć indeks do kolumny w tabeli.

Krok 1: Utwórz obiekt klastra

Przede wszystkim utwórz instancję Cluster.builder klasa com.datastax.driver.core pakiet, jak pokazano poniżej.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Dodaj punkt kontaktowy (adres IP węzła) za pomocą rozszerzenia addContactPoint() metoda Cluster.Builderobiekt. Ta metoda zwracaCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Korzystając z nowego obiektu konstruktora, utwórz obiekt klastra. Aby to zrobić, masz metodę o nazwiebuild() w Cluster.Builderklasa. Poniższy kod przedstawia sposób tworzenia obiektu klastra.

//Building a cluster
Cluster cluster = builder.build();

Możesz zbudować obiekt klastra przy użyciu jednej linii kodu, jak pokazano poniżej.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Krok 2: Utwórz obiekt sesji

Utwórz wystąpienie obiektu Session przy użyciu metody connect () Cluster klasa, jak pokazano poniżej.

Session session = cluster.connect( );

Ta metoda tworzy nową sesję i inicjuje ją. Jeśli masz już przestrzeń kluczy, możesz ustawić ją na istniejącą, przekazując nazwę KeySpace w formacie ciągu do tej metody, jak pokazano poniżej.

Session session = cluster.connect(“ Your keyspace name ” );

Tutaj używamy KeySpace o nazwie tp. Dlatego utwórz obiekt sesji, jak pokazano poniżej.

Session session = cluster.connect(“ tp” );

Krok 3: Wykonaj zapytanie

Zapytania CQL można wykonywać za pomocą metody execute () klasy Session. Przekaż zapytanie w formacie ciągu znaków lub jako obiekt klasy Statement do metody execute (). Cokolwiek przekażesz do tej metody w formacie ciągu, zostanie wykonane nacqlsh.

W poniższym przykładzie tworzymy indeks do kolumny o nazwie emp_name w tabeli o nazwie emp. Musisz zapisać zapytanie w zmiennej łańcuchowej i przekazać je do metody execute (), jak pokazano poniżej.

//Query
String query = "CREATE INDEX name ON emp1 (emp_name);";
session.execute(query);

Poniżej podano kompletny program do tworzenia indeksu kolumny w tabeli w Cassandrze przy użyciu Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Create_Index {
 
   public static void main(String args[]){

      //Query
      String query = "CREATE INDEX name ON emp1 (emp_name);";
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
       
      //Creating Session object
      Session session = cluster.connect("tp");
 
      //Executing the query
      session.execute(query);
      System.out.println("Index created");
   }
}

Zapisz powyższy program z nazwą klasy, a następnie .java, przejdź do lokalizacji, w której jest zapisany. Skompiluj i uruchom program, jak pokazano poniżej.

$javac Create_Index.java
$java Create_Index

W normalnych warunkach powinien dać następujący wynik -

Index created

Upuszczanie indeksu

Indeks można usunąć za pomocą polecenia DROP INDEX. Jego składnia jest następująca -

DROP INDEX <identifier>

Poniżej podano przykład usunięcia indeksu kolumny w tabeli. Tutaj usuwamy indeks nazwy kolumny w tabeli emp.

cqlsh:tp> drop index name;

Usuwanie indeksu za pomocą Java API

Indeks tabeli można usunąć za pomocą metody execute () klasy Session. Postępuj zgodnie z instrukcjami podanymi poniżej, aby usunąć indeks z tabeli.

Krok 1: Utwórz obiekt klastra

Utwórz wystąpienie Cluster.builder klasa com.datastax.driver.core pakiet, jak pokazano poniżej.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Dodaj punkt kontaktowy (adres IP węzła) za pomocą rozszerzenia addContactPoint() metoda Cluster.Builder object. Ta metoda zwracaCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Korzystając z nowego obiektu konstruktora, utwórz obiekt klastra. Aby to zrobić, masz metodę o nazwiebuild() w Cluster.Builderklasa. Poniższy kod przedstawia sposób tworzenia obiektu klastra.

//Building a cluster
Cluster cluster = builder.build();

Możesz zbudować obiekt klastra przy użyciu jednej linii kodu, jak pokazano poniżej.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Krok 2: Utwórz obiekt sesji

Utwórz wystąpienie obiektu Session za pomocą metody connect () klasy Cluster, jak pokazano poniżej.

Session session = cluster.connect( );

Ta metoda tworzy nową sesję i inicjuje ją. Jeśli masz już przestrzeń kluczy, możesz ustawić ją na istniejącą, przekazując nazwę KeySpace w formacie ciągu do tej metody, jak pokazano poniżej.

Session session = cluster.connect(“ Your keyspace name ” );

Tutaj używamy KeySpace o nazwie tp. Dlatego utwórz obiekt sesji, jak pokazano poniżej.

Session session = cluster.connect(“ tp” );

Krok 3: Wykonaj zapytanie

Zapytania CQL można wykonywać za pomocą metody execute () klasy Session. Przekaż zapytanie w formacie ciągu lub jako plikStatementclass na metodę execute (). Cokolwiek przekażesz do tej metody w formacie ciągu, zostanie wykonane nacqlsh.

W poniższym przykładzie usuwamy indeks „nazwa” empstół. Musisz zapisać zapytanie w zmiennej łańcuchowej i przekazać je do metody execute (), jak pokazano poniżej.

//Query
String query = "DROP INDEX user_name;";
session.execute(query);

Poniżej podano kompletny program do usuwania indeksu w Cassandrze przy użyciu Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Drop_Index {

   public static void main(String args[]){
     
      //Query
      String query = "DROP INDEX user_name;";
 
      //Creating cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();.
 
      //Creating Session object
      Session session = cluster.connect("tp"); 
 
      //Executing the query
      session.execute(query);
      
      System.out.println("Index dropped");
   }
}

Zapisz powyższy program z nazwą klasy, a następnie .java, przejdź do lokalizacji, w której jest zapisany. Skompiluj i uruchom program, jak pokazano poniżej.

$javac Drop_index.java
$java Drop_index

W normalnych warunkach powinien dać następujący wynik -

Index dropped

Korzystanie z instrukcji wsadowych

Za pomocą BATCH,można jednocześnie wykonywać wiele instrukcji modyfikujących (wstawianie, aktualizowanie, usuwanie). Jego składnia jest następująca -

BEGIN BATCH
<insert-stmt>/ <update-stmt>/ <delete-stmt>
APPLY BATCH

Przykład

Załóżmy, że w Cassandrze istnieje tabela o nazwie emp, która zawiera następujące dane -

emp_id emp_name emp_city emp_phone emp_sal
1 Baran Hyderabad 9848022338 50000
2 rudzik Delhi 9848022339 50000
3 rahman Chennai 9848022330 45000

W tym przykładzie wykonamy następujące operacje -

  • Wstaw nowy wiersz z następującymi szczegółami (4, rajeev, pune, 9848022331, 30000).
  • Zaktualizuj wynagrodzenie pracownika z identyfikatorem wiersza 3 na 50000.
  • Usuń miasto pracownika o identyfikatorze wiersza 2.

Aby wykonać powyższe operacje za jednym razem, użyj następującego polecenia BATCH -

cqlsh:tutorialspoint> BEGIN BATCH
... INSERT INTO emp (emp_id, emp_city, emp_name, emp_phone, emp_sal) values(  4,'Pune','rajeev',9848022331, 30000);
... UPDATE emp SET emp_sal = 50000 WHERE emp_id =3;
... DELETE emp_city FROM emp WHERE emp_id = 2;
... APPLY BATCH;

Weryfikacja

Po wprowadzeniu zmian sprawdź tabelę za pomocą instrukcji SELECT. Powinien dać następujący wynik -

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad | ram      | 9848022338 | 50000
      2 | null      | robin    | 9848022339 | 50000
      3 | Chennai   | rahman   | 9848022330 | 50000
      4 | Pune      | rajeev   | 9848022331 | 30000
    
(4 rows)

Tutaj możesz obserwować tabelę ze zmodyfikowanymi danymi.

Instrukcje wsadowe przy użyciu Java API

Instrukcje wsadowe można zapisać programowo w tabeli przy użyciu metody execute () klasy Session. Postępuj zgodnie z instrukcjami podanymi poniżej, aby wykonać wiele instrukcji za pomocą instrukcji batch z pomocą interfejsu API języka Java.

Krok 1: Utwórz obiekt klastra

Utwórz wystąpienie Cluster.builder klasa com.datastax.driver.core pakiet, jak pokazano poniżej.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Dodaj punkt kontaktowy (adres IP węzła) za pomocą rozszerzenia addContactPoint() metoda Cluster.Builderobiekt. Ta metoda zwracaCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Korzystając z nowego obiektu konstruktora, utwórz obiekt klastra. Aby to zrobić, masz metodę o nazwiebuild() w Cluster.Builderklasa. Użyj następującego kodu, aby utworzyć obiekt klastra -

//Building a cluster
Cluster cluster = builder.build();

Możesz zbudować obiekt klastra przy użyciu jednej linii kodu, jak pokazano poniżej.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Krok 2: Utwórz obiekt sesji

Utwórz wystąpienie obiektu Session za pomocą metody connect () klasy Cluster, jak pokazano poniżej.

Session session = cluster.connect( );

Ta metoda tworzy nową sesję i inicjuje ją. Jeśli masz już przestrzeń kluczy, możesz ustawić ją na istniejącą, przekazując nazwę KeySpace w formacie ciągu do tej metody, jak pokazano poniżej.

Session session = cluster.connect(“ Your keyspace name ”);

Tutaj używamy KeySpace o nazwie tp. Dlatego utwórz obiekt sesji, jak pokazano poniżej.

Session session = cluster.connect(“tp”);

Krok 3: Wykonaj zapytanie

Zapytania CQL można wykonywać za pomocą metody execute () klasy Session. Przekaż zapytanie w formacie ciągu znaków lub jako obiekt klasy Statement do metody execute (). Cokolwiek przekażesz do tej metody w formacie ciągu, zostanie wykonane nacqlsh.

W tym przykładzie wykonamy następujące operacje -

  • Wstaw nowy wiersz z następującymi szczegółami (4, rajeev, pune, 9848022331, 30000).
  • Zaktualizuj wynagrodzenie pracownika z identyfikatorem wiersza 3 na 50000.
  • Usuń miasto pracownika o identyfikatorze wiersza 2.

Musisz zapisać zapytanie w zmiennej łańcuchowej i przekazać je do metody execute (), jak pokazano poniżej.

String query1 = ” BEGIN BATCH INSERT INTO emp (emp_id, emp_city, emp_name,   emp_phone, emp_sal) values( 4,'Pune','rajeev',9848022331, 30000);
UPDATE emp SET emp_sal = 50000 WHERE emp_id =3;
DELETE emp_city FROM emp WHERE emp_id = 2;
APPLY BATCH;”;

Poniżej podano kompletny program do jednoczesnego wykonywania wielu instrukcji na tabeli w Cassandrze przy użyciu Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Batch {

   public static void main(String args[]){
    
      //query
      String query =" BEGIN BATCH INSERT INTO emp (emp_id, emp_city,
         emp_name, emp_phone, emp_sal) values( 4,'Pune','rajeev',9848022331, 30000);"
    
         + "UPDATE emp SET emp_sal = 50000 WHERE emp_id =3;"
         + "DELETE emp_city FROM emp WHERE emp_id = 2;"
         + "APPLY BATCH;";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
 
      //Creating Session object
      Session session = cluster.connect("tp");
 
      //Executing the query
      session.execute(query);

      System.out.println("Changes done");
   }
}

Zapisz powyższy program z nazwą klasy, a następnie .java, przejdź do lokalizacji, w której jest zapisany. Skompiluj i uruchom program, jak pokazano poniżej.

$javac Batch.java
$java Batch

W normalnych warunkach powinien dać następujący wynik -

Changes done

Tworzenie danych w tabeli

Możesz wstawić dane do kolumn wiersza w tabeli za pomocą polecenia INSERT. Poniżej podano składnię tworzenia danych w tabeli.

INSERT INTO <tablename>
(<column1 name>, <column2 name>....)
VALUES (<value1>, <value2>....)
USING <option>

Przykład

Załóżmy, że istnieje tabela o nazwie emp z kolumnami (emp_id, emp_name, emp_city, emp_phone, emp_sal) i musisz wstawić następujące dane do emp stół.

emp_id emp_name emp_city emp_phone emp_sal
1 Baran Hyderabad 9848022338 50000
2 rudzik Hyderabad 9848022339 40000
3 rahman Chennai 9848022330 45000

Użyj poleceń podanych poniżej, aby wypełnić tabelę wymaganymi danymi.

cqlsh:tutorialspoint> INSERT INTO emp (emp_id, emp_name, emp_city,
   emp_phone, emp_sal) VALUES(1,'ram', 'Hyderabad', 9848022338, 50000);

cqlsh:tutorialspoint> INSERT INTO emp (emp_id, emp_name, emp_city,
   emp_phone, emp_sal) VALUES(2,'robin', 'Hyderabad', 9848022339, 40000);

cqlsh:tutorialspoint> INSERT INTO emp (emp_id, emp_name, emp_city,
   emp_phone, emp_sal) VALUES(3,'rahman', 'Chennai', 9848022330, 45000);

Weryfikacja

Po wstawieniu danych użyj instrukcji SELECT, aby sprawdzić, czy dane zostały wstawione, czy nie. Jeśli zweryfikujesz tabelę emp za pomocą instrukcji SELECT, otrzymasz następujące wyniki.

cqlsh:tutorialspoint> SELECT * FROM emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 | Hyderabad |    robin | 9848022339 | 40000
      3 |   Chennai |   rahman | 9848022330 | 45000
 
(3 rows)

Tutaj możesz zaobserwować, że tabela została wypełniona danymi, które wstawiliśmy.

Tworzenie danych za pomocą Java API

Dane w tabeli można tworzyć za pomocą metody execute () klasy Session. Wykonaj poniższe czynności, aby utworzyć dane w tabeli przy użyciu interfejsu API języka Java.

Krok 1: Utwórz obiekt klastra

Utwórz wystąpienie Cluster.builder klasa com.datastax.driver.core pakiet, jak pokazano poniżej.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Dodaj punkt kontaktowy (adres IP węzła) za pomocą rozszerzenia addContactPoint() metoda Cluster.Builderobiekt. Ta metoda zwracaCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint("127.0.0.1");

Korzystając z nowego obiektu konstruktora, utwórz obiekt klastra. Aby to zrobić, masz metodę o nazwiebuild() w Cluster.Builderklasa. Poniższy kod przedstawia sposób tworzenia obiektu klastra.

//Building a cluster
Cluster cluster = builder.build();

Możesz zbudować obiekt klastra przy użyciu jednej linii kodu, jak pokazano poniżej.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Krok 2: Utwórz obiekt sesji

Utwórz wystąpienie obiektu Session za pomocą metody connect () klasy Cluster, jak pokazano poniżej.

Session session = cluster.connect( );

Ta metoda tworzy nową sesję i inicjuje ją. Jeśli masz już przestrzeń kluczy, możesz ustawić ją na istniejącą, przekazując nazwę KeySpace w formacie ciągu do tej metody, jak pokazano poniżej.

Session session = cluster.connect(“ Your keyspace name ” );

Tutaj używamy KeySpace o nazwie tp. Dlatego utwórz obiekt sesji, jak pokazano poniżej.

Session session = cluster.connect(“ tp” );

Krok 3: Wykonaj zapytanie

Zapytania CQL można wykonywać za pomocą metody execute () klasy Session. Przekaż zapytanie w formacie ciągu lub jako plikStatementclass na metodę execute (). Cokolwiek przekażesz do tej metody w formacie ciągu, zostanie wykonane nacqlsh.

W poniższym przykładzie wstawiamy dane do tabeli o nazwie emp. Musisz zapisać zapytanie w zmiennej łańcuchowej i przekazać je do metody execute (), jak pokazano poniżej.

String query1 = “INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone, emp_sal)
   VALUES(1,'ram', 'Hyderabad', 9848022338, 50000);” ;
 
String query2 = “INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone, emp_sal)
   VALUES(2,'robin', 'Hyderabad', 9848022339, 40000);” ;
 
String query3 = “INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone, emp_sal)
   VALUES(3,'rahman', 'Chennai', 9848022330, 45000);” ;
 
session.execute(query1);
session.execute(query2);
session.execute(query3);

Poniżej podano kompletny program do wstawiania danych do tabeli w Cassandrze przy użyciu Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Create_Data {

   public static void main(String args[]){

      //queries
      String query1 = "INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone,  emp_sal)"
		
         + " VALUES(1,'ram', 'Hyderabad', 9848022338, 50000);" ;
                             
      String query2 = "INSERT INTO emp (emp_id, emp_name, emp_city,
         emp_phone, emp_sal)"
      
         + " VALUES(2,'robin', 'Hyderabad', 9848022339, 40000);" ;
                             
      String query3 = "INSERT INTO emp (emp_id, emp_name, emp_city, emp_phone, emp_sal)"
       
         + " VALUES(3,'rahman', 'Chennai', 9848022330, 45000);" ;

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
 
      //Creating Session object
      Session session = cluster.connect("tp");
       
      //Executing the query
      session.execute(query1);
        
      session.execute(query2);
        
      session.execute(query3);
        
      System.out.println("Data created");
   }
}

Zapisz powyższy program z nazwą klasy, a następnie .java, przejdź do lokalizacji, w której jest zapisany. Skompiluj i uruchom program, jak pokazano poniżej.

$javac Create_Data.java
$java Create_Data

W normalnych warunkach powinien dać następujący wynik -

Data created

Aktualizacja danych w tabeli

UPDATEto polecenie używane do aktualizacji danych w tabeli. Następujące słowa kluczowe są używane podczas aktualizacji danych w tabeli -

  • Where - Ta klauzula służy do wybierania wiersza do zaktualizowania.

  • Set - Ustaw wartość za pomocą tego słowa kluczowego.

  • Must - Zawiera wszystkie kolumny składające się na klucz podstawowy.

Podczas aktualizacji wierszy, jeśli dany wiersz jest niedostępny, UPDATE tworzy nowy wiersz. Poniżej podano składnię polecenia UPDATE -

UPDATE <tablename>
SET <column name> = <new value>
<column name> = <value>....
WHERE <condition>

Przykład

Załóżmy, że istnieje tabela o nazwie emp. Ta tabela przechowuje dane pracowników określonej firmy i zawiera następujące szczegóły -

emp_id emp_name emp_city emp_phone emp_sal
1 Baran Hyderabad 9848022338 50000
2 rudzik Hyderabad 9848022339 40000
3 rahman Chennai 9848022330 45000

Zaktualizujmy teraz emp_city Robina do Delhi, a jego pensję do 50000. Poniżej podano zapytanie o wykonanie wymaganych aktualizacji.

cqlsh:tutorialspoint> UPDATE emp SET emp_city='Delhi',emp_sal=50000
   WHERE emp_id=2;

Weryfikacja

Użyj instrukcji SELECT, aby sprawdzić, czy dane zostały zaktualizowane, czy nie. Jeśli zweryfikujesz tabelę emp za pomocą instrukcji SELECT, da to następujący wynik.

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |     Delhi |    robin | 9848022339 | 50000
      3 |   Chennai |   rahman | 9848022330 | 45000
      
(3 rows)

Tutaj możesz zaobserwować, że dane w tabeli zostały zaktualizowane.

Aktualizacja danych za pomocą Java API

Dane w tabeli można aktualizować za pomocą metody execute () klasy Session. Wykonaj czynności podane poniżej, aby zaktualizować dane w tabeli przy użyciu interfejsu API języka Java.

Krok 1: Utwórz obiekt klastra

Utwórz wystąpienie Cluster.builder klasa com.datastax.driver.core pakiet, jak pokazano poniżej.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Dodaj punkt kontaktowy (adres IP węzła) za pomocą rozszerzenia addContactPoint() metoda Cluster.Builderobiekt. Ta metoda zwracaCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint("127.0.0.1");

Korzystając z nowego obiektu konstruktora, utwórz obiekt klastra. Aby to zrobić, masz metodę o nazwiebuild() w Cluster.Builderklasa. Użyj poniższego kodu, aby utworzyć obiekt klastra.

//Building a cluster
Cluster cluster = builder.build();

Możesz zbudować obiekt klastra przy użyciu jednej linii kodu, jak pokazano poniżej.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Krok 2: Utwórz obiekt sesji

Utwórz wystąpienie obiektu Session za pomocą metody connect () klasy Cluster, jak pokazano poniżej.

Session session = cluster.connect( );

Ta metoda tworzy nową sesję i inicjuje ją. Jeśli masz już przestrzeń kluczy, możesz ustawić ją na istniejącą, przekazując nazwę KeySpace w formacie ciągu do tej metody, jak pokazano poniżej.

Session session = cluster.connect(“ Your keyspace name”);

Tutaj używamy KeySpace o nazwie tp. Dlatego utwórz obiekt sesji, jak pokazano poniżej.

Session session = cluster.connect(“tp”);

Krok 3: Wykonaj zapytanie

Zapytania CQL można wykonywać za pomocą metody execute () klasy Session. Przekaż zapytanie w formacie ciągu znaków lub jako obiekt klasy Statement do metody execute (). Cokolwiek przekażesz do tej metody w formacie ciągu, zostanie wykonane nacqlsh.

W poniższym przykładzie aktualizujemy tabelę emp. Musisz zapisać zapytanie w zmiennej łańcuchowej i przekazać je do metody execute (), jak pokazano poniżej:

String query = “ UPDATE emp SET emp_city='Delhi',emp_sal=50000
WHERE emp_id = 2;” ;

Poniżej podano kompletny program do aktualizacji danych w tabeli przy użyciu Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Update_Data {
  
   public static void main(String args[]){
      
      //query
      String query = " UPDATE emp SET emp_city='Delhi',emp_sal=50000"
          
      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
         
      //Creating Session object
      Session session = cluster.connect("tp");
         
      //Executing the query
      session.execute(query);

      System.out.println("Data updated");
   }
 }

Zapisz powyższy program z nazwą klasy, a następnie .java, przejdź do lokalizacji, w której jest zapisany. Skompiluj i uruchom program, jak pokazano poniżej.

$javac Update_Data.java
$java Update_Data

W normalnych warunkach powinien dać następujący wynik -

Data updated

Odczytywanie danych za pomocą klauzuli Select

Klauzula SELECT służy do odczytu danych z tabeli w Cassandrze. Używając tej klauzuli, możesz odczytać całą tabelę, pojedynczą kolumnę lub określoną komórkę. Poniżej podano składnię klauzuli SELECT.

SELECT FROM <tablename>

Przykład

Załóżmy, że w obszarze kluczy o nazwie znajduje się tabela emp z następującymi szczegółami -

emp_id emp_name emp_city emp_phone emp_sal
1 Baran Hyderabad 9848022338 50000
2 rudzik zero 9848022339 50000
3 rahman Chennai 9848022330 50000
4 rajeev Pune 9848022331 30000

Poniższy przykład pokazuje, jak odczytać całą tabelę za pomocą klauzuli SELECT. Tutaj czytamy tabelę o nazwieemp.

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |   ram    | 9848022338 | 50000
      2 | null      |   robin  | 9848022339 | 50000
      3 | Chennai   |   rahman | 9848022330 | 50000
      4 | Pune      |   rajeev | 9848022331 | 30000
		
(4 rows)

Czytanie wymaganych kolumn

Poniższy przykład pokazuje, jak odczytać określoną kolumnę w tabeli.

cqlsh:tutorialspoint> SELECT emp_name, emp_sal from emp;

 emp_name | emp_sal
----------+---------
      ram | 50000
    robin | 50000
   rajeev | 30000
   rahman | 50000 
	
(4 rows)

Where Clause

Używając klauzuli WHERE, możesz nałożyć ograniczenie na wymagane kolumny. Jego składnia jest następująca -

SELECT FROM <table name> WHERE <condition>;

Note - Klauzula WHERE może być używana tylko w kolumnach, które są częścią klucza podstawowego lub mają dodatkowy indeks.

W poniższym przykładzie czytamy dane pracownika, którego pensja wynosi 50000. W pierwszej kolejności ustaw indeks pomocniczy na kolumnę emp_sal.

cqlsh:tutorialspoint> CREATE INDEX ON emp(emp_sal);
cqlsh:tutorialspoint> SELECT * FROM emp WHERE emp_sal=50000;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |      null |    robin | 9848022339 | 50000
      3 |   Chennai |   rahman | 9848022330 | 50000

Odczytywanie danych za pomocą Java API

Dane z tabeli można odczytywać za pomocą metody execute () klasy Session. Postępuj zgodnie z instrukcjami podanymi poniżej, aby wykonać wiele instrukcji za pomocą instrukcji batch z pomocą interfejsu API języka Java.

Krok 1: Utwórz obiekt klastra

Utwórz wystąpienie Cluster.builder klasa com.datastax.driver.core pakiet, jak pokazano poniżej.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Dodaj punkt kontaktowy (adres IP węzła) za pomocą rozszerzenia addContactPoint() metoda Cluster.Builderobiekt. Ta metoda zwracaCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Korzystając z nowego obiektu konstruktora, utwórz obiekt klastra. Aby to zrobić, masz metodę o nazwiebuild() w Cluster.Builderklasa. Użyj poniższego kodu, aby utworzyć obiekt klastra.

//Building a cluster
Cluster cluster = builder.build();

Możesz zbudować obiekt klastra przy użyciu jednej linii kodu, jak pokazano poniżej.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Krok 2: Utwórz obiekt sesji

Utwórz wystąpienie obiektu Session za pomocą metody connect () klasy Cluster, jak pokazano poniżej.

Session session = cluster.connect( );

Ta metoda tworzy nową sesję i inicjuje ją. Jeśli masz już przestrzeń kluczy, możesz ustawić ją na istniejącą, przekazując nazwę KeySpace w formacie ciągu do tej metody, jak pokazano poniżej.

Session session = cluster.connect(“Your keyspace name”);

Tutaj używamy KeySpace o nazwie tp. Dlatego utwórz obiekt sesji, jak pokazano poniżej.

Session session = cluster.connect(“tp”);

Krok 3: Wykonaj zapytanie

Zapytania CQL można wykonywać za pomocą metody execute () klasy Session. Przekaż zapytanie w formacie ciągu znaków lub jako obiekt klasy Statement do metody execute (). Cokolwiek przekażesz do tej metody w formacie ciągu, zostanie wykonane nacqlsh.

W tym przykładzie pobieramy dane z empstół. Zapisz zapytanie w ciągu znaków i przekaż je do metody execute () klasy sesji, jak pokazano poniżej.

String query = ”SELECT 8 FROM emp”;
session.execute(query);

Wykonaj zapytanie za pomocą metody execute () klasy Session.

Krok 4: Pobierz obiekt ResultSet

Zapytania wybierające zwrócą wynik w postaci ResultSet obiekt, dlatego zapisz wynik w obiekcie RESULTSET klasa, jak pokazano poniżej.

ResultSet result = session.execute( );

Poniżej podano kompletny program do odczytu danych z tabeli.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Session;

public class Read_Data {

   public static void main(String args[])throws Exception{
    
      //queries
      String query = "SELECT * FROM emp";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
    
      //Creating Session object
      Session session = cluster.connect("tutorialspoint");
    
      //Getting the ResultSet
      ResultSet result = session.execute(query);
    
      System.out.println(result.all());
   }
}

Zapisz powyższy program z nazwą klasy, a następnie .java, przejdź do lokalizacji, w której jest zapisany. Skompiluj i uruchom program, jak pokazano poniżej.

$javac Read_Data.java
$java Read_Data

W normalnych warunkach powinien dać następujący wynik -

[Row[1, Hyderabad, ram, 9848022338, 50000], Row[2, Delhi, robin,
9848022339, 50000], Row[4, Pune, rajeev, 9848022331, 30000], Row[3,
Chennai, rahman, 9848022330, 50000]]

Odczytywanie danych za pomocą klauzuli Select

Klauzula SELECT służy do odczytu danych z tabeli w Cassandrze. Używając tej klauzuli, możesz odczytać całą tabelę, pojedynczą kolumnę lub określoną komórkę. Poniżej podano składnię klauzuli SELECT.

SELECT FROM <tablename>

Przykład

Załóżmy, że w obszarze kluczy o nazwie znajduje się tabela emp z następującymi szczegółami -

emp_id emp_name emp_city emp_phone emp_sal
1 Baran Hyderabad 9848022338 50000
2 rudzik zero 9848022339 50000
3 rahman Chennai 9848022330 50000
4 rajeev Pune 9848022331 30000

Poniższy przykład pokazuje, jak odczytać całą tabelę za pomocą klauzuli SELECT. Tutaj czytamy tabelę o nazwieemp.

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |   ram    | 9848022338 | 50000
      2 | null      |   robin  | 9848022339 | 50000
      3 | Chennai   |   rahman | 9848022330 | 50000
      4 | Pune      |   rajeev | 9848022331 | 30000
		
(4 rows)

Czytanie wymaganych kolumn

Poniższy przykład pokazuje, jak odczytać określoną kolumnę w tabeli.

cqlsh:tutorialspoint> SELECT emp_name, emp_sal from emp;

 emp_name | emp_sal
----------+---------
      ram | 50000
    robin | 50000
   rajeev | 30000
   rahman | 50000 
	
(4 rows)

Where Clause

Używając klauzuli WHERE, możesz nałożyć ograniczenie na wymagane kolumny. Jego składnia jest następująca -

SELECT FROM <table name> WHERE <condition>;

Note - Klauzula WHERE może być używana tylko w kolumnach, które są częścią klucza podstawowego lub mają dodatkowy indeks.

W poniższym przykładzie czytamy dane pracownika, którego pensja wynosi 50000. W pierwszej kolejności ustaw indeks pomocniczy na kolumnę emp_sal.

cqlsh:tutorialspoint> CREATE INDEX ON emp(emp_sal);
cqlsh:tutorialspoint> SELECT * FROM emp WHERE emp_sal=50000;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |      null |    robin | 9848022339 | 50000
      3 |   Chennai |   rahman | 9848022330 | 50000

Odczytywanie danych za pomocą Java API

Dane z tabeli można odczytywać za pomocą metody execute () klasy Session. Postępuj zgodnie z instrukcjami podanymi poniżej, aby wykonać wiele instrukcji za pomocą instrukcji batch z pomocą interfejsu API języka Java.

Krok 1: Utwórz obiekt klastra

Utwórz wystąpienie Cluster.builder klasa com.datastax.driver.core pakiet, jak pokazano poniżej.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Dodaj punkt kontaktowy (adres IP węzła) za pomocą rozszerzenia addContactPoint() metoda Cluster.Builderobiekt. Ta metoda zwracaCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Korzystając z nowego obiektu konstruktora, utwórz obiekt klastra. Aby to zrobić, masz metodę o nazwiebuild() w Cluster.Builderklasa. Użyj poniższego kodu, aby utworzyć obiekt klastra.

//Building a cluster
Cluster cluster = builder.build();

Możesz zbudować obiekt klastra przy użyciu jednej linii kodu, jak pokazano poniżej.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Krok 2: Utwórz obiekt sesji

Utwórz wystąpienie obiektu Session za pomocą metody connect () klasy Cluster, jak pokazano poniżej.

Session session = cluster.connect( );

Ta metoda tworzy nową sesję i inicjuje ją. Jeśli masz już przestrzeń kluczy, możesz ustawić ją na istniejącą, przekazując nazwę KeySpace w formacie ciągu do tej metody, jak pokazano poniżej.

Session session = cluster.connect(“Your keyspace name”);

Tutaj używamy KeySpace o nazwie tp. Dlatego utwórz obiekt sesji, jak pokazano poniżej.

Session session = cluster.connect(“tp”);

Krok 3: Wykonaj zapytanie

Zapytania CQL można wykonywać za pomocą metody execute () klasy Session. Przekaż zapytanie w formacie ciągu znaków lub jako obiekt klasy Statement do metody execute (). Cokolwiek przekażesz do tej metody w formacie ciągu, zostanie wykonane nacqlsh.

W tym przykładzie pobieramy dane z empstół. Zapisz zapytanie w ciągu znaków i przekaż je do metody execute () klasy sesji, jak pokazano poniżej.

String query = ”SELECT 8 FROM emp”;
session.execute(query);

Wykonaj zapytanie za pomocą metody execute () klasy Session.

Krok 4: Pobierz obiekt ResultSet

Zapytania wybierające zwrócą wynik w postaci ResultSet obiekt, dlatego zapisz wynik w obiekcie RESULTSET klasa, jak pokazano poniżej.

ResultSet result = session.execute( );

Poniżej podano kompletny program do odczytu danych z tabeli.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Session;

public class Read_Data {

   public static void main(String args[])throws Exception{
    
      //queries
      String query = "SELECT * FROM emp";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
    
      //Creating Session object
      Session session = cluster.connect("tutorialspoint");
    
      //Getting the ResultSet
      ResultSet result = session.execute(query);
    
      System.out.println(result.all());
   }
}

Zapisz powyższy program z nazwą klasy, a następnie .java, przejdź do lokalizacji, w której jest zapisany. Skompiluj i uruchom program, jak pokazano poniżej.

$javac Read_Data.java
$java Read_Data

W normalnych warunkach powinien dać następujący wynik -

[Row[1, Hyderabad, ram, 9848022338, 50000], Row[2, Delhi, robin,
9848022339, 50000], Row[4, Pune, rajeev, 9848022331, 30000], Row[3,
Chennai, rahman, 9848022330, 50000]]

Usuwanie danych z tabeli

Możesz usunąć dane z tabeli za pomocą polecenia DELETE. Jego składnia jest następująca -

DELETE FROM <identifier> WHERE <condition>;

Przykład

Załóżmy, że w Cassandrze jest stół o nazwie emp posiadające następujące dane -

emp_id emp_name emp_city emp_phone emp_sal
1 Baran Hyderabad 9848022338 50000
2 rudzik Hyderabad 9848022339 40000
3 rahman Chennai 9848022330 45000

Poniższa instrukcja usuwa kolumnę emp_sal ostatniego wiersza -

cqlsh:tutorialspoint> DELETE emp_sal FROM emp WHERE emp_id=3;

Weryfikacja

Użyj instrukcji SELECT, aby sprawdzić, czy dane zostały usunięte, czy nie. Jeśli zweryfikujesz tabelę emp za pomocą polecenia SELECT, wygeneruje ona następujący wynik -

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |     Delhi |    robin | 9848022339 | 50000
      3 |   Chennai |   rahman | 9848022330 | null
(3 rows)

Ponieważ usunęliśmy pensję Rahmana, zamiast pensji pojawi się zerowa wartość.

Usuwanie całego wiersza

Następujące polecenie usuwa cały wiersz z tabeli.

cqlsh:tutorialspoint> DELETE FROM emp WHERE emp_id=3;

Weryfikacja

Użyj instrukcji SELECT, aby sprawdzić, czy dane zostały usunięte, czy nie. Jeśli zweryfikujesz tabelę emp za pomocą polecenia SELECT, wygeneruje ona następujący wynik -

cqlsh:tutorialspoint> select * from emp;

 emp_id |  emp_city | emp_name |  emp_phone | emp_sal
--------+-----------+----------+------------+---------
      1 | Hyderabad |      ram | 9848022338 | 50000
      2 |     Delhi |    robin | 9848022339 | 50000
 
(2 rows)

Ponieważ usunęliśmy ostatni wiersz, w tabeli pozostały tylko dwa wiersze.

Usuwanie danych za pomocą Java API

Dane w tabeli można usuwać za pomocą metody execute () klasy Session. Wykonaj czynności podane poniżej, aby usunąć dane z tabeli za pomocą interfejsu API języka Java.

Krok 1: Utwórz obiekt klastra

Utwórz wystąpienie Cluster.builder klasa com.datastax.driver.core pakiet, jak pokazano poniżej.

//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();

Dodaj punkt kontaktowy (adres IP węzła) za pomocą rozszerzenia addContactPoint() metoda Cluster.Builderobiekt. Ta metoda zwracaCluster.Builder.

//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );

Korzystając z nowego obiektu konstruktora, utwórz obiekt klastra. Aby to zrobić, masz metodę o nazwiebuild() w Cluster.Builderklasa. Użyj poniższego kodu, aby utworzyć obiekt klastra.

//Building a cluster
Cluster cluster = builder.build();

Możesz zbudować obiekt klastra przy użyciu jednej linii kodu, jak pokazano poniżej.

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();

Krok 2: Utwórz obiekt sesji

Utwórz wystąpienie obiektu Session za pomocą metody connect () klasy Cluster, jak pokazano poniżej.

Session session = cluster.connect();

Ta metoda tworzy nową sesję i inicjuje ją. Jeśli masz już przestrzeń kluczy, możesz ustawić ją na istniejącą, przekazując nazwę KeySpace w formacie ciągu do tej metody, jak pokazano poniżej.

Session session = cluster.connect(“ Your keyspace name ”);

Tutaj używamy KeySpace o nazwie tp. Dlatego utwórz obiekt sesji, jak pokazano poniżej.

Session session = cluster.connect(“tp”);

Krok 3: Wykonaj zapytanie

Zapytania CQL można wykonywać za pomocą metody execute () klasy Session. Przekaż zapytanie w formacie ciągu znaków lub jako obiekt klasy Statement do metody execute (). Cokolwiek przekażesz do tej metody w formacie ciągu, zostanie wykonane nacqlsh.

W poniższym przykładzie usuwamy dane z tabeli o nazwie emp. Musisz zapisać zapytanie w zmiennej łańcuchowej i przekazać je do execute() metoda, jak pokazano poniżej.

String query1 = ”DELETE FROM emp WHERE emp_id=3; ”;
session.execute(query);

Poniżej podano kompletny program do usuwania danych z tabeli w Cassandrze przy użyciu Java API.

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Session;

public class Delete_Data {

   public static void main(String args[]){
   
      //query
      String query = "DELETE FROM emp WHERE emp_id=3;";

      //Creating Cluster object
      Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
       
      //Creating Session object
      Session session = cluster.connect("tp");
       
      //Executing the query
      session.execute(query);
       
      System.out.println("Data deleted");
   }
}

Zapisz powyższy program z nazwą klasy, a następnie .java, przejdź do lokalizacji, w której jest zapisany. Skompiluj i uruchom program, jak pokazano poniżej.

$javac Delete_Data.java
$java Delete_Data

W normalnych warunkach powinien dać następujący wynik -

Data deleted

CQL zapewnia bogaty zestaw wbudowanych typów danych, w tym typy kolekcji. Oprócz tych typów danych użytkownicy mogą również tworzyć własne niestandardowe typy danych. Poniższa tabela zawiera listę wbudowanych typów danych dostępnych w języku CQL.

Typ danych Stałe Opis
ascii smyczki Reprezentuje ciąg znaków ASCII
bigint bigint Reprezentuje 64-bitowy podpis długi
blob plamy Reprezentuje dowolne bajty
Boolean booleans Reprezentuje prawdę lub fałsz
counter liczby całkowite Reprezentuje kolumnę licznika
dziesiętny liczby całkowite, zmiennoprzecinkowe Reprezentuje liczbę dziesiętną o zmiennej precyzji
podwójnie liczby całkowite Reprezentuje 64-bitowy zmiennoprzecinkowy IEEE-754
pływak liczby całkowite, zmiennoprzecinkowe Reprezentuje 32-bitowy zmiennoprzecinkowy IEEE-754
inet smyczki Reprezentuje adres IP, IPv4 lub IPv6
int liczby całkowite Reprezentuje 32-bitowy podpisany int
tekst smyczki Reprezentuje ciąg zakodowany w formacie UTF8
timestamp liczby całkowite, łańcuchy Reprezentuje sygnaturę czasową
timeuuid płyny Reprezentuje UUID typu 1
uuid płyny Reprezentuje typ 1 lub typ 4
UUID
varchar smyczki Reprezentuje zakodowany ciąg znaków w formacie UTF8
varint liczby całkowite Reprezentuje liczbę całkowitą o dowolnej precyzji

Typy kolekcji

Cassandra Query Language zapewnia również typy danych kolekcji. Poniższa tabela zawiera listę kolekcji dostępnych w języku CQL.

Kolekcja Opis
lista Lista to zbiór jednego lub więcej uporządkowanych elementów.
mapa Mapa to zbiór par klucz-wartość.
zestaw Zestaw to zbiór jednego lub więcej elementów.

Typy danych zdefiniowane przez użytkownika

Cqlsh zapewnia użytkownikom możliwość tworzenia własnych typów danych. Poniżej podano polecenia używane podczas obsługi typów danych zdefiniowanych przez użytkownika.

  • CREATE TYPE - Tworzy typ danych zdefiniowany przez użytkownika.

  • ALTER TYPE - Modyfikuje typ danych zdefiniowany przez użytkownika.

  • DROP TYPE - Porzuca typ danych zdefiniowany przez użytkownika.

  • DESCRIBE TYPE - Opisuje typ danych zdefiniowany przez użytkownika.

  • DESCRIBE TYPES - Opisuje typy danych zdefiniowane przez użytkownika.

CQL zapewnia możliwość korzystania z typów danych Collection. Korzystając z tych typów kolekcji, możesz przechowywać wiele wartości w jednej zmiennej. W tym rozdziale wyjaśniono, jak korzystać z kolekcji w Cassandrze.

Lista

Lista jest używana w przypadkach, gdy

  • kolejność elementów ma zostać zachowana, i
  • wartość ma być przechowywana wiele razy.

Wartości typu danych listy można pobrać za pomocą indeksu elementów listy.

Tworzenie tabeli z listą

Poniżej podano przykład tworzenia przykładowej tabeli z dwiema kolumnami, nazwą i adresem e-mail. Do przechowywania wielu e-maili używamy listy.

cqlsh:tutorialspoint> CREATE TABLE data(name text PRIMARY KEY, email list<text>);

Wstawianie danych do listy

Podczas wstawiania danych do elementów na liście, wprowadź wszystkie wartości oddzielone przecinkiem w nawiasach kwadratowych [], jak pokazano poniżej.

cqlsh:tutorialspoint> INSERT INTO data(name, email) VALUES ('ramu',
['[email protected]','[email protected]'])

Aktualizacja listy

Poniżej podano przykład aktualizacji typu danych listy w tabeli o nazwie data. Tutaj dodajemy kolejny e-mail do listy.

cqlsh:tutorialspoint> UPDATE data
... SET email = email +['[email protected]']
... where name = 'ramu';

Weryfikacja

Jeśli zweryfikujesz tabelę za pomocą instrukcji SELECT, otrzymasz następujący wynik -

cqlsh:tutorialspoint> SELECT * FROM data;

 name | email
------+--------------------------------------------------------------
 ramu | ['[email protected]', '[email protected]', '[email protected]']

(1 rows)

ZESTAW

Zestaw to typ danych używany do przechowywania grupy elementów. Elementy zestawu zostaną zwrócone w posortowanej kolejności.

Tworzenie tabeli z zestawem

Poniższy przykład tworzy przykładową tabelę z dwiema kolumnami, nazwiskiem i numerem telefonu. Do przechowywania wielu numerów telefonów używamy set.

cqlsh:tutorialspoint> CREATE TABLE data2 (name text PRIMARY KEY, phone set<varint>);

Wstawianie danych do zestawu

Podczas wstawiania danych do elementów zestawu, wprowadź wszystkie wartości oddzielone przecinkami w nawiasach klamrowych {}, jak pokazano poniżej.

cqlsh:tutorialspoint> INSERT INTO data2(name, phone)VALUES ('rahman',    {9848022338,9848022339});

Aktualizacja zestawu

Poniższy kod pokazuje, jak zaktualizować zestaw w tabeli o nazwie data2. Tutaj dodajemy kolejny numer telefonu do zestawu.

cqlsh:tutorialspoint> UPDATE data2
   ... SET phone = phone + {9848022330}
   ... where name = 'rahman';

Weryfikacja

Jeśli zweryfikujesz tabelę za pomocą instrukcji SELECT, otrzymasz następujący wynik -

cqlsh:tutorialspoint> SELECT * FROM data2;

   name | phone
--------+--------------------------------------
 rahman | {9848022330, 9848022338, 9848022339}

(1 rows)

MAPA

Mapa to typ danych używany do przechowywania pary klucz-wartość elementów.

Tworzenie tabeli z mapą

Poniższy przykład pokazuje, jak utworzyć przykładową tabelę z dwiema kolumnami, nazwą i adresem. Do przechowywania wielu wartości adresów używamy map.

cqlsh:tutorialspoint> CREATE TABLE data3 (name text PRIMARY KEY, address
map<timestamp, text>);

Wstawianie danych do mapy

Podczas wstawiania danych do elementów na mapie wprowadź wszystkie key : value pary oddzielone przecinkami w nawiasach klamrowych {}, jak pokazano poniżej.

cqlsh:tutorialspoint> INSERT INTO data3 (name, address)
   VALUES ('robin', {'home' : 'hyderabad' , 'office' : 'Delhi' } );

Aktualizacja zestawu

Poniższy kod pokazuje, jak zaktualizować typ danych mapy w tabeli o nazwie data3. Tutaj zmieniamy wartość biura kluczowego, czyli zmieniamy adres biura osoby o imieniu robin.

cqlsh:tutorialspoint> UPDATE data3
   ... SET address = address+{'office':'mumbai'}
   ... WHERE name = 'robin';

Weryfikacja

Jeśli zweryfikujesz tabelę za pomocą instrukcji SELECT, otrzymasz następujący wynik -

cqlsh:tutorialspoint> select * from data3;

  name | address
-------+-------------------------------------------
 robin | {'home': 'hyderabad', 'office': 'mumbai'}

(1 rows)

CQL umożliwia tworzenie i używanie typów danych zdefiniowanych przez użytkownika. Możesz utworzyć typ danych do obsługi wielu pól. W tym rozdziale wyjaśniono, jak tworzyć, zmieniać i usuwać typ danych zdefiniowany przez użytkownika.

Tworzenie typu danych zdefiniowanego przez użytkownika

Komenda CREATE TYPEsłuży do tworzenia typu danych zdefiniowanego przez użytkownika. Jego składnia jest następująca -

CREATE TYPE <keyspace name>. <data typename>
( variable1, variable2).

Przykład

Poniżej podano przykład tworzenia typu danych zdefiniowanego przez użytkownika. W tym przykładzie tworzymy plikcard_details typ danych zawierający następujące szczegóły.

Pole Nazwa pola Typ danych
karta kredytowa nie num int
kod PIN karty kredytowej kołek int
Nazwa na karcie kredytowej Nazwa tekst
cvv cvv int
Dane kontaktowe posiadacza karty telefon zestaw
cqlsh:tutorialspoint> CREATE TYPE card_details (
   ... num int,
   ... pin int,
   ... name text,
   ... cvv int,
   ... phone set<int>
... );

Note - Nazwa używana dla typu danych zdefiniowanego przez użytkownika nie powinna pokrywać się z zastrzeżonymi nazwami typów.

Weryfikacja

Użyj DESCRIBE polecenie, aby sprawdzić, czy utworzony typ został utworzony, czy nie.

CREATE TYPE tutorialspoint.card_details (
   num int,
   pin int,
   name text,
   cvv int,
   phone set<int>
   );

Zmiana typu danych zdefiniowanego przez użytkownika

ALTER TYPE- polecenie służy do zmiany istniejącego typu danych. Używając ALTER, możesz dodać nowe pole lub zmienić nazwę istniejącego pola.

Dodawanie pola do typu

Użyj następującej składni, aby dodać nowe pole do istniejącego typu danych zdefiniowanego przez użytkownika.

ALTER TYPE typename
ADD field_name field_type;

Poniższy kod dodaje nowe pole do Card_detailstyp danych. Tutaj dodajemy nowe pole o nazwie email.

cqlsh:tutorialspoint> ALTER TYPE card_details ADD email text;

Weryfikacja

Użyj DESCRIBE polecenie, aby sprawdzić, czy nowe pole zostało dodane, czy nie.

cqlsh:tutorialspoint> describe type card_details;
CREATE TYPE tutorialspoint.card_details (
   num int,
   pin int,
   name text,
   cvv int,
   phone set<int>,
   );

Zmiana nazwy pola w typie

Użyj następującej składni, aby zmienić nazwę istniejącego typu danych zdefiniowanego przez użytkownika.

ALTER TYPE typename
RENAME existing_name TO new_name;

Poniższy kod zmienia nazwę pola w typie. Tutaj zmieniamy nazwę pola e-mail na mail.

cqlsh:tutorialspoint> ALTER TYPE card_details RENAME email TO mail;

Weryfikacja

Użyj DESCRIBE polecenie, aby sprawdzić, czy nazwa typu uległa zmianie, czy nie.

cqlsh:tutorialspoint> describe type card_details;
CREATE TYPE tutorialspoint.card_details (
   num int,
   pin int,
   name text,
   cvv int,
   phone set<int>,
   mail text
   );

Usuwanie typu danych zdefiniowanego przez użytkownika

DROP TYPEto polecenie używane do usuwania typu danych zdefiniowanego przez użytkownika. Poniżej podano przykład usuwania typu danych zdefiniowanego przez użytkownika.

Przykład

Przed usunięciem sprawdź listę wszystkich typów danych zdefiniowanych przez użytkownika za pomocą DESCRIBE_TYPES polecenie, jak pokazano poniżej.

cqlsh:tutorialspoint> DESCRIBE TYPES;
card_details card

Z dwóch typów usuń nazwany typ card jak pokazano niżej.

cqlsh:tutorialspoint> drop type card;

Użyj DESCRIBE polecenie, aby sprawdzić, czy typ danych został usunięty, czy nie.

cqlsh:tutorialspoint> describe types;

card_details