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