cassandra db

31
Henrique Dias e João Lutz A Descentralized Structured Storage System

Upload: henrique-dias

Post on 06-Dec-2014

1.724 views

Category:

Documents


4 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Cassandra db

Henrique Dias e João Lutz

A Descentralized Structured Storage System

Page 2: Cassandra db

Problemas

Facebook Inbox SearchGrande quantidade de dados

Requisitos de performance e crescimento contínuo

Altamente distribuído - alta taxa de falha

Não existe solução pronta no mercado para atender esses requisitos.

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 3: Cassandra db

Objetivos

Alta disponibilidadeConsistência eventual

trade-off - alta consistência ou alta disponibilidade

Replicação otimistaEscalabilidade incrementalAdministração ao mínimo

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 4: Cassandra db

Trabalhos Relacionados

FicusCodaFarsite – No MasterGFS – Single MasterBayou – Relacional, Distribuído, Eventual

Dynamo (Amazon)

Bigtable (Google)

Consistência Eventual

Sistema de Armazenamento

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 5: Cassandra db

Arquitetura Cassandra

Camada de mensagens

Cluster MembershipDetector de falha

Camada de armazenamento

Particionador Replicador

Cassandra API Ferramentas

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 6: Cassandra db

Sistemas Utilizados

ZooKeeperBigTable

Seda Ganglia

Arquitetura do sistema

Sistema de Armazenamento

(Google)

Coordenação de tarefas

Monitoramento

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 7: Cassandra db

Topologia em Anel

a

j

g

d

RF=3

Anel Conceitual

Um token por nodo

Múltiplos intervalos por nodo

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 8: Cassandra db

Topologia em Anel

a

j

g

d

RF=2

Anel Conceitual

Um token por nodo

Múltiplos intervalos por nodo

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 9: Cassandra db

Topologia em Anel

a

j

g

d

RF=3

Atribuição de Token

Ajuste de Intervalo

Bootstrap

Inclusão de um nodo afeta apenas vizinhos imediatos

m

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 10: Cassandra db

Topologia em Anel

a

j

g

d

RF=3

Nodo é removido

Disponível?Hinting Handoff

Anota num nodo existente.

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 11: Cassandra db

Bootstrap

adicionando novos nodos

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 12: Cassandra db

Bootstrap

X

localiza nodo sobrecarregadoIntrodução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 13: Cassandra db

Bootstrap

posiciona nodo e redistribui intervaloIntrodução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 14: Cassandra db

KeyspaceColumnFamily

Row(indexed)ChaveColunas

Nome(ordenado)Valor

Modelo de Dados

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 15: Cassandra db

Modelo de Dados

Uma única coluna

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 16: Cassandra db

Modelo de Dados

Registro único

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 17: Cassandra db

Modelo de Dados

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 18: Cassandra db

Modelo de DadosRepresentação em JSON da estrutura key -> column families -> column

"mccv":{"Users":{

"emailAddress":{"name":"emailAddress", "value":"[email protected]"},"webSite":{"name":"webSite", "value":"http://bar.com"}

}, "Stats":{

"visits":{"name":"visits", "value":"243"}}

},"user2":{

"Users":{"emailAddress":{"name":"emailAddress", "value":"[email protected]"}, "twitter":{"name":"twitter", "value":"user2"}

}}

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 19: Cassandra db

identifica os nodos que tem os dados da chaveredireciona a requisição para o nodo e aguarda respostase as respostas não chegaram de acordo com o timeout configurado, concela a requisição e retorna ao clienteverifica a última resposta, baseado no timestampagenda o reparo dos dados na replica se não tiverem o último pedaço do dado

Read/Write request

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 20: Cassandra db

Escrita

Commit log para durabilidadeFsync configurávelApenas escrita sequencial

Memtable – sem acesso ao disco (sem leituras ou seeks)Sstables são o final (torna-se read only)

ÍndicesBloom filter (probabilístico)Dados cru

Base dos dados: Rápida!!!

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 21: Cassandra db

Escrita

Key (CF1 , CF2 , CF3)

Commit LogBinary serialized

Key ( CF1 , CF2 , CF3 )

Memtable ( CF1)

Memtable ( CF2)

Memtable ( CF2)

Data size

Number of Objects

Lifetime

Disco Dedicado

<Key name><Size of key Data><Index of columns/supercolumns>< Serialized column family>

---

---

---

<Key name><Size of key Data><Index of columns/supercolumns>< Serialized column family>

BLOCK Index <Key Name> Offset, <Key Name> Offset

K128 Offset

K256 Offset

K384 Offset

Bloom Filter(Índice em memória)

Arquivos de dados em disco

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 22: Cassandra db

Leitura

Praticamente livre de lockProliferação de SstableCache de Registro

(evita sstable lookup,sem write-through)

Cache de chave (evita index scan)

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 23: Cassandra db

Leitura

Consulta

Replica próxima

Cassandra Cluster

Replica A

Resultado

Replica B Replica C

Compila Consulta

Resultado

Cliente

Compila Respota Compila Respota

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 24: Cassandra db

Avaliação do Artigo

Título"Cassandra - A Descentralized Structured Storage System"

Abstract Sem contextualização, resultados ou conclusão

IntroduçãoContextualiza/motiva o problemaDescreve o CassandraObjetivo implícitoOrganização

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 25: Cassandra db

Avaliação do Artigo

Trabalhos RelacionadosRetoma o problema Apresenta outros trabalhos

ConteúdoArtigo da indústriaParece "comprimido"Falta de clareza nas explicações

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 26: Cassandra db

Avaliação do Artigo

Experiências práticasProblemas encontradosPoucos dados de performanceNão há comparação

Conclusão MUITO sucinta - 3 frasesLista de TODOs

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 27: Cassandra db

Avaliação dos Autores

Avinash Lakshmanh-index: 8Software Engineer - Facebook (2007 - agora)Software Designer Engineer - Amazon (2004 - 2007)Outras publicações:

Cassandra: structured storage system on a P2P network. PODC 2009 e SPAA 2009Dynamo: amazon's highly available key-value store. SOSP 2007

Citation Count (ACM): 94

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 28: Cassandra db

Avaliação dos Autores

Prashant Malikh-index: 3Research Scientist - Facebook (2007 - agora)Software Designer Engineer - Microsoft (1999 - 2007)Technical Lead - Siemens (1995 - 1999)Outras publicações:

Cassandra: structured storage system on a P2P network. PODC 2009 e SPAA 2009

Citation Count (ACM): 2

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 29: Cassandra db

Avaliação do Evento

Artigo citado por 18 (Google)Apresentado em no LADIS 2009 (Large-Scale Distributed Systems and Middleware) Publicado em ACM SIGOPS Operating Systems Review (Volume 44 Issue 2, April 2010)Qualis

B1 - CIÊNCIA DA COMPUTAÇÃO B2 - ENGENHARIAS III B4 - ENGENHARIAS IV

Ano base 2008 Fonte: http://www.capes.gov.br/avaliacao/qualish-index: 22 (2010), 87 (SIGOPS)h-index: 11 (2009),42

Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!

Page 30: Cassandra db

Referências

http://www.slideshare.net/gdusbabek/introduction-to-cassandra-june-2010

http://www.slideshare.net/jhammerb/data-presentations-cassandra-sigmod

http://www.slideshare.net/jericevans/the-cassandra-distributed-database

http://wiki.apache.org/cassandra

http://www.cs.cornell.edu/projects/ladis2009/papers/lakshman-ladis2009.pdf

Page 31: Cassandra db

Dúvidas?Muito Obrigado!

[email protected]@inf.ufrgs.br