cassandra - o básico

27
Apache Cassandra Eduardo Martins Pinto [email protected]

Upload: eduardo-martins-pinto

Post on 02-Jul-2015

337 views

Category:

Data & Analytics


2 download

DESCRIPTION

O básico do Cassadra.

TRANSCRIPT

Page 1: Cassandra - O básico

Apache Cassandra

Eduardo Martins Pinto

[email protected]

Page 2: Cassandra - O básico

Cassandra?

● Base de dados NoSQL, escalável, projeto para dados estruturados, semi-

estruturados e não estruturados, distribuidos em múltiplos data centers.

Page 3: Cassandra - O básico

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.

Page 4: Cassandra - O básico

CAP

● Consistency

● Availability [X]

● Partition tolerance [X]

Page 5: Cassandra - O básico

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.

Page 6: Cassandra - O básico

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.

Page 7: Cassandra - O básico
Page 8: Cassandra - O básico

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.

Page 9: Cassandra - O básico

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

Page 10: Cassandra - O básico

Virtual Nodes

Page 11: Cassandra - O básico

Virtual Nodes

Page 12: Cassandra - O básico

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.

Page 13: Cassandra - O básico

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.

Page 14: Cassandra - O básico

Simple Strategy

● Partitioner define qual será

o primeiro nó e as próximas

réplicas são criadas no

sentido horário.

Page 15: Cassandra - O básico

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.

Page 16: Cassandra - O básico

Escrita e Leitura

Page 17: Cassandra - O básico

Escrita

Page 18: Cassandra - O básico

Leitura

Page 19: Cassandra - O básico

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.

Page 20: Cassandra - O básico

Escrita

Page 21: Cassandra - O básico

Leitura

Page 22: Cassandra - O básico

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

Page 23: Cassandra - O básico

Consistency Repair

● Read Repair

● Hinted Handoff

● Anti-entropy node repair

Page 26: Cassandra - O básico
Page 27: Cassandra - O básico

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