2. Cassandra?
● Base de dados NoSQL, escalável, projeto para dados estruturados, semi-estruturados
e não estruturados, distribuidos em múltiplos data centers.
3. Características
● O Cassandra provê uma estrutura para que todos os nós pareçam um.
● Distrui os dados atráves do ring automaticamente.
● Possui replicação customizável, pode ser aplicada a um data center, diversos data
centers e múltiplas zonas na nuvem.
● Consistência “eventual”.
● Provê escalabilidade linear*, ou seja, se 2 nós suportam 100.000 transações, 4 nós
irão suportar 200.000.
5. Conceitos básicos
● Cluster: conjunto de nós que armazenam os dados.
● Replication: criar cópias dos dados em diversos nós, criando consistência e
tolerência a falhas. O número de cópias é definido pelo replication factor (RF).
● Partitioners: distribui os dados atráves do cluster.
● Data Center: um grupo de nós relacionados em um cluster com replicação.
6. Modelo de dados
● No Cassandra você desenha o seu modelo de dados de acordo com as suas
queries.
● Column Family: cada column family consiste em um conjunto de pares chave-valor.
Cada par contém uma chave, e o valor consiste em linhas e colunas.
● Keyspace: agrupamento de todas as column family.
7.
8. GOSSIP
● Peer To Peer
● Detecção de falhas
● Os nós enviam informações sobre
seu estado, e o estado dos outros
nós, para alguns nós definidos
como seed.
● Quando uma máquina entra no
ring ela já troca informações com
os seeds.
9. Partitioners
● Distribui os dados pelo cluster
● Atribui um hash para cada linha
● Distribui os dados entre os nós de acordo com esse hash.
● O partitioner padrão é o Murmur3Partitioner (MurmurHash)
● RandomPartitioner (MD5) e ByteOrderedPartitioner
12. Replicação
● Provê replicação dos dados para
garantir a leitura e tolerância a
falhas.
● Replication Factor define o número
de réplicas dos dados no cluster.
● Número de réplicas não pode
ultrapassar o número de nós.
13. Estratégias de replicação
● Simple Strategy: se e somente se existe apenas um data center
● Network Topology Strategy: usado para múltiplos data center.
14. Simple Strategy
● Partitioner define qual será
o primeiro nó e as próximas
réplicas são criadas no
sentido horário.
15. Network Topology Strategy
● Provê replicação em diferentes racks
no data center ou entre múltiplos data
centers.
● Permite definir o número de réplicas
em cada data center.
● Sempre tentar distribuir as réplicas
em diferentes racks.
● Modelos mais comuns: duas réplicas
em cada data center e três réplicas
em cada data center.
19. Customizando a consistência
● O Cassandra tem consistência eventual, porém podemos customizar a consistência
para operações de escrita e leitura.
● Consistência de escrita: número de réplicas em que os dados devem ser escritos
antes de retornar para o cliente.
● Consistência de leitura: número de réplicas em que os dados devem ser lidos antes
de retornar para o cliente.
22. Quorum
- Quorum = floor(SRF / 2) + 1
- Sendo que o SRF é a soma do RF de cada data center.
- Se queremos garantir consistência, uma boa fórmula é
a seguinte:
nós_escrita + nós_leitura > replication factor