Cassandra - Criar Keyspace

Criando um Keyspace usando Cqlsh

Um keyspace no Cassandra é um namespace que define a replicação de dados em nós. Um cluster contém um keyspace por nó. A seguir está a sintaxe para criar um keyspace usando a instruçãoCREATE KEYSPACE.

Sintaxe

CREATE KEYSPACE <identifier> WITH <properties>

ie

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

A instrução CREATE KEYSPACE tem duas propriedades: replication e durable_writes.

Replicação

A opção de replicação é especificar o Replica Placement strategye o número de réplicas desejadas. A tabela a seguir lista todas as estratégias de posicionamento de réplicas.

Nome da estratégia Descrição
Simple Strategy' Especifica um fator de replicação simples para o cluster.
Network Topology Strategy Usando esta opção, você pode definir o fator de replicação para cada datacenter independentemente.
Old Network Topology Strategy Esta é uma estratégia de replicação legada.

Usando esta opção, você pode instruir Cassandra se deve usar commitlogpara atualizações no KeySpace atual. Esta opção não é obrigatória e, por padrão, é definida como verdadeira.

Exemplo

A seguir está um exemplo de criação de um KeySpace.

  • Aqui estamos criando um KeySpace chamado TutorialsPoint.

  • Estamos usando a estratégia de colocação da primeira réplica, ou seja, Simple Strategy.

  • E estamos escolhendo o fator de replicação para 1 replica.

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

Verificação

Você pode verificar se a tabela é criada ou não usando o comando Describe. Se você usar este comando sobre os espaços-chave, ele exibirá todos os espaços-chave criados conforme mostrado abaixo.

cqlsh> DESCRIBE keyspaces;

tutorialspoint system system_traces

Aqui você pode observar o KeySpace recém-criado tutorialspoint.

Durable_writes

Por padrão, as propriedades duráveis_writes de uma tabela são definidas como true,no entanto, pode ser definido como falso. Você não pode definir esta propriedade parasimplex strategy.

Exemplo

Abaixo está o exemplo que demonstra o uso da propriedade de gravações duráveis.

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

Verificação

Você pode verificar se a propriedade tough_writes do KeySpace de teste foi definida como falsa consultando o KeySpace do sistema. Esta consulta fornece todos os KeySpaces junto com suas propriedades.

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)

Aqui você pode observar que a propriedade tough_writes do teste KeySpace foi definida como falsa.

Usando um Keyspace

Você pode usar um KeySpace criado usando a palavra-chave USE. Sua sintaxe é a seguinte -

Syntax:USE <identifier>

Exemplo

No exemplo a seguir, estamos usando o KeySpace tutorialspoint.

cqlsh> USE tutorialspoint;
cqlsh:tutorialspoint>

Criação de um Keyspace usando a API Java

Você pode criar um Keyspace usando o execute() método de Sessionclasse. Siga as etapas fornecidas abaixo para criar um keyspace usando a API Java.

Etapa 1: Criar um objeto de cluster

Primeiro de tudo, crie uma instância de Cluster.builder classe de com.datastax.driver.core pacote conforme mostrado abaixo.

//Creating Cluster.Builder object

Cluster.Builder builder1 = Cluster.builder();

Adicione um ponto de contato (endereço IP do nó) usando addContactPoint() método de Cluster.Builderobjeto. Este método retornaCluster.Builder.

//Adding contact point to the Cluster.Builder object

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

Usando o novo objeto construtor, crie um objeto de cluster. Para fazer isso, você tem um método chamadobuild() no Cluster.Builderclasse. O código a seguir mostra como criar um objeto de cluster.

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

Você pode construir um objeto de cluster em uma única linha de código, conforme mostrado abaixo.

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

Etapa 2: Criar um objeto de sessão

Crie uma instância de Session objeto usando o connect() método de Cluster classe como mostrado abaixo.

Session session = cluster.connect( );

Este método cria uma nova sessão e a inicializa. Se você já tem um keyspace, pode defini-lo como o existente passando o nome do keyspace no formato de string para este método, conforme mostrado abaixo.

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

Etapa 3: Executar consulta

Você pode executar CQL consultas usando o execute() método de Sessionclasse. Passe a consulta em formato de string ou como umStatement objeto de classe para o execute()método. Tudo o que você passar para este método em formato de string será executado nocqlsh.

Neste exemplo, estamos criando um KeySpace chamado tp. Estamos usando a estratégia de colocação da primeira réplica, ou seja, Estratégia Simples, e estamos escolhendo o fator de replicação para 1 réplica.

Você deve armazenar a consulta em uma variável de string e passá-la para o método execute () como mostrado abaixo.

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

Passo 4: Use o KeySpace

Você pode usar um KeySpace criado usando o método execute () conforme mostrado abaixo.

execute(“ USE tp ” );

A seguir está o programa completo para criar e usar um keyspace no Cassandra usando a 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"); 
   }
}

Salve o programa acima com o nome da classe seguido por .java, navegue até o local onde ele foi salvo. Compile e execute o programa conforme mostrado abaixo.

$javac Create_KeySpace.java
$java Create_KeySpace

Em condições normais, ele produzirá a seguinte saída -

Keyspace created