Cassandra - Crear espacio de claves
Creando un espacio de claves usando Cqlsh
Un espacio de claves en Cassandra es un espacio de nombres que define la replicación de datos en los nodos. Un clúster contiene un espacio de claves por nodo. A continuación se muestra la sintaxis para crear un espacio de teclas utilizando la declaraciónCREATE KEYSPACE.
Sintaxis
CREATE KEYSPACE <identifier> WITH <properties>
es decir
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’;
La instrucción CREATE KEYSPACE tiene dos propiedades: replication y durable_writes.
Replicación
La opción de replicación es especificar el Replica Placement strategyy el número de réplicas deseadas. La siguiente tabla enumera todas las estrategias de ubicación de réplicas.
Nombre de la estrategia | Descripción |
---|---|
Simple Strategy' | Especifica un factor de replicación simple para el clúster. |
Network Topology Strategy | Con esta opción, puede establecer el factor de replicación para cada centro de datos de forma independiente. |
Old Network Topology Strategy | Esta es una estrategia de replicación heredada. |
Con esta opción, puede indicar a Cassandra si debe usar commitlogpara obtener actualizaciones sobre el KeySpace actual. Esta opción no es obligatoria y, de forma predeterminada, está establecida en true.
Ejemplo
A continuación se muestra un ejemplo de creación de un KeySpace.
Aquí estamos creando un KeySpace llamado TutorialsPoint.
Estamos utilizando la primera estrategia de colocación de réplicas, es decir, Simple Strategy.
Y estamos eligiendo el factor de replicación para 1 replica.
cqlsh.> CREATE KEYSPACE tutorialspoint
WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};
Verificación
Puede verificar si la tabla se crea o no usando el comando Describe. Si usa este comando sobre espacios de teclas, mostrará todos los espacios de teclas creados como se muestra a continuación.
cqlsh> DESCRIBE keyspaces;
tutorialspoint system system_traces
Aquí puede observar el KeySpace recién creado tutorialspoint.
Durable_writes
De forma predeterminada, las propiedades durable_writes de una tabla se establecen en true,sin embargo, se puede establecer en falso. No puede establecer esta propiedad ensimplex strategy.
Ejemplo
A continuación se muestra el ejemplo que demuestra el uso de la propiedad de escritura duradera.
cqlsh> CREATE KEYSPACE test
... WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3 }
... AND DURABLE_WRITES = false;
Verificación
Puede verificar si la propiedad durable_writes del KeySpace de prueba se estableció en falso consultando el System Keyspace. Esta consulta le proporciona todos los KeySpaces junto con sus propiedades.
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)
Aquí puede observar que la propiedad durable_writes de la prueba KeySpace se estableció en falso.
Usando un espacio de claves
Puede usar un KeySpace creado usando la palabra clave USE. Su sintaxis es la siguiente:
Syntax:USE <identifier>
Ejemplo
En el siguiente ejemplo, estamos usando KeySpace tutorialspoint.
cqlsh> USE tutorialspoint;
cqlsh:tutorialspoint>
Creación de un espacio de claves mediante la API de Java
Puede crear un espacio de claves utilizando el execute() método de Sessionclase. Siga los pasos que se indican a continuación para crear un espacio de claves utilizando la API de Java.
Paso 1: crear un objeto de clúster
En primer lugar, cree una instancia de Cluster.builder clase de com.datastax.driver.core paquete como se muestra a continuación.
//Creating Cluster.Builder object
Cluster.Builder builder1 = Cluster.builder();
Agregue un punto de contacto (dirección IP del nodo) usando addContactPoint() método de Cluster.Builderobjeto. Este método devuelveCluster.Builder.
//Adding contact point to the Cluster.Builder object
Cluster.Builder builder2 = build.addContactPoint( "127.0.0.1" );
Con el nuevo objeto generador, cree un objeto de clúster. Para hacerlo, tienes un método llamadobuild() en el Cluster.Builderclase. El siguiente código muestra cómo crear un objeto de clúster.
//Building a cluster
Cluster cluster = builder.build();
Puede crear un objeto de clúster en una sola línea de código como se muestra a continuación.
Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1").build();
Paso 2: crear un objeto de sesión
Crea una instancia de Session objeto usando el connect() método de Cluster clase como se muestra a continuación.
Session session = cluster.connect( );
Este método crea una nueva sesión y la inicializa. Si ya tiene un espacio de claves, puede establecerlo en el existente pasando el nombre del espacio de claves en formato de cadena a este método como se muestra a continuación.
Session session = cluster.connect(“ Your keyspace name ” );
Paso 3: ejecutar la consulta
Puedes ejecutar CQL consultas utilizando el execute() método de Sessionclase. Pase la consulta en formato de cadena o comoStatement objeto de clase al execute()método. Todo lo que pase a este método en formato de cadena se ejecutará en elcqlsh.
En este ejemplo, estamos creando un KeySpace llamado tp. Estamos utilizando la primera estrategia de colocación de réplicas, es decir, estrategia simple, y estamos eligiendo el factor de réplica para 1 réplica.
Debe almacenar la consulta en una variable de cadena y pasarla al método execute () como se muestra a continuación.
String query = "CREATE KEYSPACE tp WITH replication "
+ "= {'class':'SimpleStrategy', 'replication_factor':1}; ";
session.execute(query);
Paso 4: Utilice el KeySpace
Puede usar un KeySpace creado usando el método execute () como se muestra a continuación.
execute(“ USE tp ” );
A continuación se muestra el programa completo para crear y usar un espacio de claves en Cassandra usando la API de 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");
}
}
Guarde el programa anterior con el nombre de la clase seguido de .java, busque la ubicación donde está guardado. Compile y ejecute el programa como se muestra a continuación.
$javac Create_KeySpace.java
$java Create_KeySpace
En condiciones normales, producirá la siguiente salida:
Keyspace created