Cassandra - Crea Keyspace

Creazione di uno spazio chiavi utilizzando Cqlsh

Un keyspace in Cassandra è uno spazio dei nomi che definisce la replica dei dati sui nodi. Un cluster contiene un keyspace per nodo. Di seguito è riportata la sintassi per creare uno spazio delle chiavi utilizzando l'istruzioneCREATE KEYSPACE.

Sintassi

CREATE KEYSPACE <identifier> WITH <properties>

cioè

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’;

L'istruzione CREATE KEYSPACE ha due proprietà: replication e durable_writes.

Replica

L'opzione di replica consiste nello specificare il file Replica Placement strategye il numero di repliche desiderate. La tabella seguente elenca tutte le strategie di posizionamento delle repliche.

Nome della strategia Descrizione
Simple Strategy' Specifica un semplice fattore di replica per il cluster.
Network Topology Strategy Utilizzando questa opzione, è possibile impostare il fattore di replica per ogni data center in modo indipendente.
Old Network Topology Strategy Questa è una strategia di replica legacy.

Usando questa opzione, puoi indicare a Cassandra se usare commitlogper gli aggiornamenti sull'attuale KeySpace. Questa opzione non è obbligatoria e per impostazione predefinita è impostata su true.

Esempio

Di seguito è riportato un esempio di creazione di un KeySpace.

  • Qui stiamo creando un KeySpace denominato TutorialsPoint.

  • Stiamo utilizzando la prima strategia di posizionamento della replica, ovvero Simple Strategy.

  • E stiamo scegliendo il fattore di replica su 1 replica.

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

Verifica

È possibile verificare se la tabella è stata creata o meno utilizzando il comando Describe. Se si utilizza questo comando sugli spazi dei tasti, verranno visualizzati tutti gli spazi dei tasti creati come mostrato di seguito.

cqlsh> DESCRIBE keyspaces;

tutorialspoint system system_traces

Qui puoi osservare il KeySpace appena creato tutorialspoint.

Durable_writes

Per impostazione predefinita, le proprietà lasting_writes di una tabella sono impostate su true,tuttavia può essere impostato su false. Non è possibile impostare questa proprietà susimplex strategy.

Esempio

Di seguito è riportato l'esempio che dimostra l'utilizzo della proprietà di scrittura durevole.

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

Verifica

È possibile verificare se la proprietà durevole_writes di test KeySpace è stata impostata su false interrogando lo spazio chiavi di sistema. Questa query ti fornisce tutti i KeySpace insieme alle loro proprietà.

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)

Qui puoi osservare che la proprietà lasting_writes di test KeySpace è stata impostata su false.

Utilizzando un Keyspace

È possibile utilizzare un KeySpace creato utilizzando la parola chiave USE. La sua sintassi è la seguente:

Syntax:USE <identifier>

Esempio

Nell'esempio seguente, stiamo usando KeySpace tutorialspoint.

cqlsh> USE tutorialspoint;
cqlsh:tutorialspoint>

Creazione di un Keyspace utilizzando l'API Java

Puoi creare un Keyspace usando execute() metodo di Sessionclasse. Seguire i passaggi indicati di seguito per creare uno spazio chiavi utilizzando l'API Java.

Passaggio 1: creare un oggetto cluster

Prima di tutto, crea un'istanza di Cluster.builder classe di com.datastax.driver.core pacchetto come mostrato di seguito.

//Creating Cluster.Builder object

Cluster.Builder builder1 = Cluster.builder();

Aggiungere un punto di contatto (indirizzo IP del nodo) utilizzando addContactPoint() metodo di Cluster.Builderoggetto. Questo metodo restituisceCluster.Builder.

//Adding contact point to the Cluster.Builder object

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

Utilizzando il nuovo oggetto builder, creare un oggetto cluster. Per fare ciò, hai un metodo chiamatobuild() nel Cluster.Builderclasse. Il codice seguente mostra come creare un oggetto cluster.

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

È possibile creare un oggetto cluster in una singola riga di codice come mostrato di seguito.

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

Passaggio 2: creare un oggetto sessione

Crea un'istanza di Session oggetto utilizzando il connect() metodo di Cluster classe come mostrato di seguito.

Session session = cluster.connect( );

Questo metodo crea una nuova sessione e la inizializza. Se si dispone già di uno spazio per le chiavi, è possibile impostarlo su quello esistente passando il nome dello spazio per le chiavi in ​​formato stringa a questo metodo come mostrato di seguito.

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

Passaggio 3: eseguire la query

Puoi eseguire CQL query utilizzando il execute() metodo di Sessionclasse. Passa la query in formato stringa o come fileStatement oggetto di classe al execute()metodo. Qualunque cosa passi a questo metodo in formato stringa verrà eseguita nel filecqlsh.

In questo esempio, stiamo creando un KeySpace denominato tp. Stiamo utilizzando la prima strategia di posizionamento della replica, ovvero Simple Strategy, e stiamo scegliendo il fattore di replica su 1 replica.

È necessario memorizzare la query in una variabile stringa e passarla al metodo execute () come mostrato di seguito.

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

Passaggio 4: utilizzare KeySpace

È possibile utilizzare un KeySpace creato utilizzando il metodo execute () come mostrato di seguito.

execute(“ USE tp ” );

Di seguito è riportato il programma completo per creare e utilizzare un keyspace in Cassandra utilizzando l'API Java.

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"); 
   }
}

Salva il programma sopra con il nome della classe seguito da .java, vai alla posizione in cui è stato salvato. Compilare ed eseguire il programma come mostrato di seguito.

$javac Create_KeySpace.java
$java Create_KeySpace

In condizioni normali, produrrà il seguente output:

Keyspace created