Mitologia Grega; Criado pelo Facebook; Sistema de banco de dados Nosql; Projetado para armazenar e gerenciar grandes quantidades de dados em servidores; Rene as tecnologias de sistemas distribudos do Dynamo da Amazon e o modelo de dados do BigTable do Google.
Consideraes sobre o Cassandra Sistema open source e distribudo; baseado no tipo chave / valor; Altas escalabilidade e disponibilidade; Possui uma linguagem de consulta CQL; Tolerncia ao particionamento de dados.
Teorema de CAP Dentre consistncia, disponibilidade e tolerncia a parties no se pode ter os trs ao mesmo tempo e obter uma tolerncia aceitvel. ACID vs BASE Atomicidade Consistncia Isolamento Durabilidade Basicamente Disponvel, Eventualmente Disponvel Onde o Cassandra se encaixa Arquitetura do Cassandra Armazena dados de acordo com o modelo de dados de famlia de colunas:
Colunas Linhas Famlia de Colunas Keyspaces Modelo de dados do Cassandra Curiosidades do Cassandra Sem transaes, sem JOINs
Sem chaves estrangeiras.
As chaves so imutveis
Instalao do Cassandra 1 opo: cassandra.apache.org Instalao do Cassandra 2 opo: planetcassandra.org.cassandra Instalao do Cassandra Instalao do Cassandra Instalao do Cassandra Instalao do Cassandra Instalao do Cassandra Instalao do Cassandra Instalao do Cassandra Modo Grfico - Cassandra Localhost:8888/opscenter/index.html Modo Texto - Cassandra Cassandra - Replicao Vantagens: Maior disponibilidade: os dados permanecem acessveis diante de falhas.
Desvantagens: Controle de consistncia: preciso manter as rplicas atualizadas. Cassandra - Replicao Protocolo Gossip
Protocolo de comunicao para descobrir e partilhar a localizao e estado informaes sobre os outros ns em um cluster Cassandra.
Definies Bsicas - Replicao
o Rplica: cpia de uma linha (row); No existe uma rplica principal; o Fator de replicao: nmero de ns que devem armazenar uma rplica; o Estratgia de replicao: maneira com que as rplicas sero distribudas entre os ns; o Data center: agrupamento lgico de ns em um cluster com finalidades de replicao; o Rack: agrupamento lgico de ns em um data center; o Endpoint: n passvel de receber uma rplica no processo de replicao. Snitch Fornece informaes para o Cassandra respeito dos ns no cluster; Alm da replicao, usado nas requisies para roteamento eficiente; Atravs dele possvel fazer diversas consultas:
qual o rack de um n? qual o datacenter de um n? quais so os ns mais prximos que eu posso inserir uma rplica? quais os ns de um datacenter?
Define-se o tipo do snitch no arquivo de configurao do Cassandra; Todos os ns devem ter a mesma configurao; Snitch SimpleSnitch
No leva em conta organizao de racks e data centers; Retorna sempre uma lista de todos os ns do anel. RackInferringSnitch Leva em conta racks e data centers; Infere o rack e data center de um n partir do seu endereo IP.
Cassandra - Replicao
A estratgia de replicao definida na criao do Keyspace, juntamente com o fator de replicao. Estratgias de Replicao Basicamente fazem o seguinte 1. O Snitch retorna uma lista com os endpoints (ns que podem receber uma rplica); 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 replicao seja satisfeito; Duas estratgias fornecidas: SimpleStrategy NetworkTopologyStrategy Simple Strategy Rack Unaware usado em clusters de um nico data center Funcionamento: 1. O particionador determina a posio da primeira rplica (primeiro n que possui token maior que o token da entrada); 2. As N-1 rplicas so alocadas nos prximos ns do anel seguindo o sentido horrio (ordem dos tokens). Simple Strategy Network Topology Strategy criado um anel virtual para cada data center
A partir de ento, em cada data center se faz o seguinte
1. A primeira rplica colocada em um n determinado pelo particionador. 2. Se percorre o anel em sentido horrio onde a prxima rplica inserida em um n pertencente a um rack diferente do n da rplica anterior. Se no existe tal rack, as rplicas restantes so colocadas sem a restrio dos racks . Network Topology Strategy Como fazer na prtica? Escolher o nome do Cluster; Pegar os endereos dos ns; Determina os seed nodes. ( Que so utilizados pelos ns nos Cluster para a aprender a topologia); Determinar o snitch.
Como fazer na prtica? Abrir o arquivo cassandra.yaml que fica em diretrio instalado /conf/ e setar os seguintes valores: