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