Cassandra, primeiros passos.

Thiago Lima
3 min readApr 17, 2023

--

Ilustra uma pessoa correndo rapido de patins, carregando um tonel de Keyspace
Ilustração própria

Começando do zero

Vamos criar um simples playground CQLSH para fins de estudo. Não iremos nos preocupar em configurações complicadas de infra.

Primeiro instale uma instancia do Docker. Baixe a image:

docker pull cassandra:latest

Inicie o contêiner do Cassandra:

docker run --rm -it cassandra bash

Vamos entrar no cassandra como root (atenção essa pratica não é recomendada, use o comando somente para fins educacionais):

cassandra -R

Pronto! É só isso. O playground está pronto!

Agora é você pode interagir com o CQLSH dando o comando cqlsh, você estará no console do CQL.

O console deve mostra algo semelhante a isto:

Connected to Test Cluster at 127.0.0.1:9042
[cqlsh 6.1.0 | Cassandra 4.1.1 | CQL spec 3.4.6 | Native protocol v5]
Use HELP for help.
cqlsh>

Keyspaces

Criando uma Keyspace

Vamos criar nossa Keyspace.

CREATE KEYSPACE school WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : '1' };

As keyspace são como os bancos de dados em sistemas relacionais. Eles criam um escopo referente a uma entidade. É nela que gerenciamos a replicação dos dados em outros nós.

Comparado à database nos Sistemas de Gerenciamento de Bancos de Dados Relacionais (SGBDR), uma Keyspace é um contêiner de dados no Cassandra. Uma Keyspace para cada aplicação ou tantas quantas forem exigidas no uso e requerimentos, existirem no cluster. Os dados incluídos na Keyspace não estão relacionados a outras e cada Keyspace é uma entidade independente (NAVEEN 2023, Tradução própria)

Alterando Keyspace

ALTER KEYSPACE escola
WITH REPLICATION = {
'class' : 'NetworkTopologyStrategy',
'datacenter1' : 3 }
AND DURABLE_WRITES = false ;

Deletando Keyspace

DROP KEYSPACE cycling;

Tabelas

Criando tabelas

Para criar tabelas em CQL é muito simples. É bem parecido com SQL.

CREATE TABLE escola.alunos (
nome text,
curso text,
idade int,
PRIMARY KEY (nome, curso));

Note que a nossa primary key é composta por dois argumentos. É isso mesmo. No cassandra é obrigatório a definição de duas colunas como chave primaria. Ele é composta por uma Partition key, que no exemplo nós definimos como sendo o nome E por uma clustering column que nós definimos como sendo o curso. Isto ajuda na performance do Cassandra.

A partition key Trata-se do identificados único de uma linha na tabela. Como o Cassandra é um banco distribuído, na hora que quisermos filtrar os dados eles precisa saber em qual nó aquele dado se encontra no cluster. Por isso precisa do clustering column De outra forma o Cassadra precisaria visitar todos os vários nós do cluster para obter um resultado o que o tornaria extremamente lento. Veja mais sobre as definições de chave primaria

Importante, para não ficar selecionando a Keyspace Sempre que executar um CQL, basta executar use escola. Isso fará com que o Cassandra entenda que estamos no contexto desta keyspace.

Alterando Tabela

Usaremos o ALTER TABLE para isso, semelhante ao SQL.

ALTER TABLE alunos ADD provas list<text>;

Deletando a tabela

Para apagar a tabela use DROP TABLE;

DROP TABLE alunos;

Essa é uma visão panorâmica do Cassandra. Mas é preciso se Aprofundar mais . Você vai precisar estudar a documentação. Você pode usar a documentação oficial no site do Cassandra, que está nas referencias abaixo.

Naveen, intellipaat 2023, disponível em: https://intellipaat.com/blog/cassandra-keyspace/
APACHE, Apache Cassandra, 12 de abril de 2023, disponivel em: https://cassandra.apache.org/

--

--

Thiago Lima

Hello! I’m Thiago Lima, I’m maried, I have a son named Isaac. I’m software engineer and I programming in Ruby on Rails.