Cassandra - O básico

Post on 02-Jul-2015

337 views 2 download

description

O básico do Cassadra.

Transcript of Cassandra - O básico

Apache Cassandra

Eduardo Martins Pinto

eduardo.martins@luizalabs.com

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

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