Conhecendo o Apache Cassandra Database

Fala pessoal, como estão?

Vamos falar um pouco sobre o Apache Cassandra, o conteúdo abaixo é apenas uma gota no oceano, mas, vamos lá rs:

Apache Cassandra é um projeto de sistema de banco de dados distribuído altamente escalável, que reúne a arquitetura do DynamoDB, da Amazon Web Services e modelo de dados baseado no BigTable, do Google. O Cassandra inicialmente foi criado pelo Facebook. Cassandra é uma implementação NoSQL que suporta o modelo de dados Big Table.



Alguns pontos positivos do Cassandra são:


  • Altas escalabilidade e disponibilidade, sem um ponto único de falha;
  • Implementação da família de colunas NoSQL
  • Rendimento de gravação muito alto e bom rendimento de leitura;
  • Linguagem de consulta semelhante a SQL;
  • Consistência ajustável e suporte para replicação;
  • Esquema flexível;

Comparativo do Cassandra x Modelo Relacional

Para quem vem do modelo relacional, deixo abaixo um comparativo para você se situar em cada ponto da estrutura e objeto no Cassandra:


Modelo de dados do Cassandra:


Pontos de atenção no Cassandra:

Sem JOINs

Além disso, o Cassandra não suporta JOINs. Quando um usuário precisa unir duas famílias de colunas, é necessário recuperar e unir os dados programaticamente. Isso geralmente é caro e demorado para grandes conjuntos de dados. Para contornar essa limitação, o Cassandra armazena o máximo de dados possível na mesma linha.

Sem chaves estrangeiras.

O Cassandra não suporta chaves estrangeiras, assim, o aplicativo deve lidar com a consistência de dados.

1 – Um pouco da Arquitetura Cassandra

O objetivo do Cassandra é lidar com grandes cargas de trabalho de dados em vários nós, sem qualquer ponto único de falha. Cassandra tem sistema distribuído peer-to-peer através de seus nós, e os dados são distribuídos entre todos os nós em um cluster.
  • Todos os nós em um cluster desempenhar o mesmo papel. Cada nó é independente e, ao mesmo tempo interligados para outros nodos.
  • Cada nó em um cluster pode aceitar leitura e escrita pedidos, independentemente de onde os dados são realmente localizado no cluster.

Os principais componentes de Cassandra são os seguintes:

  • Commit log - O registo de commit é um mecanismo de recuperação de falhas em Cassandra. Cada operação de escrita é registrada no registo de comit.
  • Mem-table - É uma estrutura de dados residente em memória. Depois do commit log, os dados serão gravados na mem-table.
  • SSTable - É um arquivo em disco para o qual os dados são liberados a partir da mem-table ou quando o seu conteúdo chegar a um valor limite.
  • Filtro de Bloom - Estes testam se um elemento é um membro de um conjunto. É um tipo especial de cache. Filtros Bloom são acessados depois de cada consulta.

2 – Escalabilidade

O Cassandra trabalha na forma horizontal que é a capacidade de adicionar novas máquinas no cluster para, de forma distribuída, aumentar os recursos de processamento, memória e disco.

3 - Replication Factor

O Cassandra armazena réplicas em vários nós para garantir confiabilidade e tolerância a falhas. A estratégia de replicação determina os nós onde são colocadas réplicas. O número total de réplicas no cluster é referido como o fator de replicação. Um fator de replicação de 1 significa que há apenas uma cópia de cada linha em um nó. Um fator de replicação de 2 significa duas cópias de cada linha, onde cada cópia está em um nó diferente. Como regra geral, o fator de replicação não deve exceder o número de nós no cluster.

4 – Consistência

Consistência refere-se a como uma linha de dados Cassandra está sincronizada em todas as suas réplicas. Para qualquer operação de leitura ou escrita, o aplicativo cliente decide o quão consistentes devem ser os dados solicitados.

Os níveis de consistência na Cassandra podem ser configurados para leitura/gravação para gerenciar a disponibilidade versus a precisão dos dados.

O nível de consistência determina o número de réplicas nas quais a gravação deve ser bem-sucedida antes de retornar uma confirmação para o aplicativo cliente.

No nível de consistência de escrita podemos definir por exemplo:

ONE: Uma gravação deve acontecer em pelo menos um nó de réplica, antes da confirmação para o usuário.
TWO: Uma gravação deve acontecer em pelo menos dois nós de réplica, antes da confirmação para o usuário.
THREE: Uma gravação deve acontecer em pelo menos três nós de réplica, antes da confirmação para o usuário.
QUORUM: Uma gravação deve acontecer em um quorum mínimo e aceitáveis de nós de réplica.
ALL: Uma gravação deve acontecer em todos os nós de réplica no cluster antes da confirmação para usuário.

O nível de consistência também especifica quantas réplicas devem responder a uma solicitação de leitura antes de retornar dados para o aplicativo cliente. O Cassandra verifica o número especificado de réplicas de dados para satisfazer a solicitação de leitura.

No nível de consistência de leitura por exemplo:

TWO: Retorna os dados mais recentes de duas das réplicas mais próximas.

5 – Tombstones

A maneira como Cassandra exclui dados difere da forma como um banco de dados relacional exclui dados. Os dados em uma coluna Cassandra podem ter uma data de expiração opcional chamada TTL (time to live). O Cassandra realiza uma marca nos dados TTL depois que a quantidade de tempo solicitada expirou. Depois que os dados são marcados, os dados são removidos automaticamente durante o processo normal de compactação.

Abraços,

Ronaldo.

Nenhum comentário:

Postar um comentário