NoSQL
Considerações sobre o Cassandra
• Mitologia Grega;
• Criado pelo Facebook;
• Sistema de banco de dados Nosql;
• Projetado para armazenar e gerenciar grandes quantidades de dados em servidores;
• Reúne as tecnologias de sistemas distribuídos do Dynamo da Amazon e o modelo de dados do BigTable do Google.
Considerações sobre o Cassandra
• Sistema open source e distribuído;
• É baseado no tipo chave / valor;
• Altas escalabilidade e disponibilidade;
• Possui uma linguagem de consulta – CQL;
• Tolerância ao particionamento de dados.
Teorema de CAP
Dentre consistência, disponibilidade e tolerância a partições não se pode ter os três ao mesmo tempo e obter uma tolerância aceitável.
ACID vs BASE Atomicidade Consistência Isolamento
Durabilidade
Basicamente Disponível,
Eventualmente Disponível
Onde o Cassandra se encaixa
Arquitetura do Cassandra
Armazena dados de acordo com o modelo de dados de família de colunas:
Colunas Linhas Família de Colunas
Keyspaces
Modelo de dados do Cassandra
Curiosidades do Cassandra
Sem transações, sem JOINs
Sem chaves estrangeiras.
As chaves são imutáveis
Instalação do Cassandra
1ª opção: cassandra.apache.org
Instalação do Cassandra
2ª opção: planetcassandra.org.cassandra
Instalação do Cassandra
Instalação do Cassandra
Instalação do Cassandra
Instalação do Cassandra
Instalação do Cassandra
Instalação do Cassandra
Instalação do Cassandra
Modo Gráfico - Cassandra
Localhost:8888/opscenter/index.html
Modo Texto - Cassandra
Cassandra - Replicação
● Vantagens:
Maior disponibilidade: os dados permanecem acessíveis diante de falhas.
● Desvantagens:
Controle de consistência: é preciso manter as réplicas atualizadas.
Cassandra - Replicação
Protocolo Gossip
Protocolo de comunicação para descobrir e partilhar a localização e estado informações sobre os outros nós
em um cluster Cassandra.
Definições Básicas - Replicação
o Réplica: cópia de uma linha (row); Não existe uma réplica principal;
o Fator de replicação: número de nós que devem armazenar uma réplica;
o Estratégia de replicação: maneira com que as réplicas serão distribuídas
entre os nós;
o Data center: agrupamento lógico de nós em um cluster com finalidades de
replicação;
o Rack: agrupamento lógico de nós em um data center;
o Endpoint: nó passível de receber uma réplica no processo de replicação.
Snitch
• Fornece informações para o Cassandra à respeito dos nós no cluster;
• Além da replicação, é usado nas requisições para roteamento eficiente;
• Através dele é possível fazer diversas consultas:
qual o rack de um nó? qual o datacenter de um nó? quais são os nós mais próximos que eu posso inserir uma réplica? quais os nós de um datacenter?
• Define-se o tipo do snitch no arquivo de configuração do Cassandra;
• Todos os nós devem ter a mesma configuração;
Snitch SimpleSnitch
• Não leva em conta organização de racks e data centers;
• Retorna sempre uma lista de todos os nós do anel.
RackInferringSnitch
• Leva em conta racks e data centers;
• Infere o rack e data center de um nó à partir do seu endereço IP.
Cassandra - Replicação
A estratégia de replicação é definida na criação do Keyspace, juntamente com o fator de replicação.
Estratégias de Replicação Basicamente fazem o seguinte
1. O Snitch retorna uma lista com os endpoints (nós que podem receber uma réplica);
2. Cria um iterador para uma lista formada à partir dos endpoints retornados e seus tokens;
3. Insere nos endpoints retornados pelo iterador até que o fator de replicação seja satisfeito;
Duas estratégias fornecidas:
SimpleStrategy
NetworkTopologyStrategy
Simple Strategy
Rack Unaware usado em clusters de um único data center
Funcionamento: 1. O particionador determina a posição da primeira réplica (primeiro nó que possui token maior que o token da entrada); 2. As N-1 réplicas são alocadas nos próximos nós do anel seguindo o sentido horário (ordem dos tokens).
Simple Strategy
Network Topology Strategy
É criado um anel virtual para cada data center
A partir de então, em cada data center se faz o seguinte
1. A primeira réplica é colocada em um nó determinado pelo
particionador.
2. Se percorre o anel em sentido horário onde a próxima
réplica é inserida em um nó pertencente a um rack diferente
do nó da réplica anterior. Se não existe tal rack, as réplicas
restantes são colocadas sem a restrição dos racks .
Network Topology Strategy
Como fazer na prática?
● Escolher o nome do Cluster;
● Pegar os endereços dos nós;
● Determina os seed nodes. ( Que são utilizados pelos nós nos Cluster para a aprender a topologia);
● Determinar o snitch.
Como fazer na prática? Abrir o arquivo cassandra.yaml que fica em diretório instalado
/conf/ e setar os seguintes valores: