cassandra - o básico
DESCRIPTION
O básico do Cassadra.TRANSCRIPT
Cassandra?
● Base de dados NoSQL, escalável, projeto para dados estruturados, semi-
estruturados e não estruturados, distribuidos em múltiplos data centers.
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.
CAP
● Consistency
● Availability [X]
● Partition tolerance [X]
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.
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.
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.
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
Virtual Nodes
Virtual Nodes
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.
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.
Simple Strategy
● Partitioner define qual será
o primeiro nó e as próximas
réplicas são criadas no
sentido horário.
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.
Escrita e Leitura
Escrita
Leitura
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.
Escrita
Leitura
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
Consistency Repair
● Read Repair
● Hinted Handoff
● Anti-entropy node repair
http://www.slideshare.net/planetcassandra/a-deep-dive-into-understanding-apache-cassandra
http://www.slideshare.net/planetcassandra/a-deep-dive-into-understanding-apache-cassandra
Referênciashttp://www.datastax.com/documentation/getting_started/doc/getting_started/gettingStartedCassandraIntro.html
http://www.toadworld.com/products/toad-for-cloud-databases/w/wiki/322.cassandra-column-families.aspx
http://www.slideshare.net/DataStax/understanding-data-partitioning-and-replication-in-apache-cassandra
http://www.slideshare.net/DataStax/understanding-data-partitioning-and-replication-in-apache-cassandra
https://www.packtpub.com/books/content/quick-start-%E2%80%93-creating-your-first-java-application
https://www.youtube.com/watch?v=u7nHyzFHqMA
http://www.slideshare.net/planetcassandra/a-deep-dive-into-understanding-apache-cassandra
http://www.datastax.com/dev/blog/virtual-nodes-in-cassandra-1-2
http://www.datastax.com/documentation/cassandra/2.0/cassandra/dml/dmlClientRequestsRead.html
http://www.slideshare.net/lbrunialti/cassandra-basics-how-ig-uses-it
http://www.teses.usp.br/teses/disponiveis/45/45134/tde-25112013-163346/publico/dissertacaoFinal.pdf