cassandra db
DESCRIPTION
TRANSCRIPT
Henrique Dias e João Lutz
A Descentralized Structured Storage System
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!
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!
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!
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!
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!
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!
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!
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!
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!
Bootstrap
adicionando novos nodos
Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
Bootstrap
X
localiza nodo sobrecarregadoIntrodução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
Bootstrap
posiciona nodo e redistribui intervaloIntrodução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
KeyspaceColumnFamily
Row(indexed)ChaveColunas
Nome(ordenado)Valor
Modelo de Dados
Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
Modelo de Dados
Uma única coluna
Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
Modelo de Dados
Registro único
Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
Modelo de Dados
Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
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!
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!
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!
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!
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!
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!
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!
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!
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!
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!
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!
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!
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
Dúvidas?Muito Obrigado!
[email protected]@inf.ufrgs.br