SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
A Descentralized Structured Storage System


     Henrique Dias e João Lutz
Problemas
          Facebook Inbox Search
          Grande 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 disponibilidade
          Consistência eventual
                trade-off - alta consistência ou alta disponibilidade
          Replicação otimista
          Escalabilidade incremental
          Administração ao mínimo




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

                 Ficus Consistência Eventual
                 Coda
                 Farsite – No Master
                 GFS – Single Master
                 Bayou – Relacional, Distribuído, Eventual
                 Dynamo (Amazon)
                 Bigtable (Google)    Sistema de
                                                                Armazenamento


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

                              Cassandra API                      Ferramentas

                                      Camada de armazenamento

                               Particionador                      Replicador

                             Detector de falha              Cluster Membership

                                          Camada de mensagens




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


                          BigTable                                       ZooKeeper


                      Sistema de                                        Coordenação de
                    Armazenamento                                           tarefas
                       (Google)



                           Seda                                             Ganglia


                      Arquitetura do
                                                                        Monitoramento
                         sistema


Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
Topologia em Anel
                                                                         RF=3



                                                                            a
    Anel Conceitual

    Um token por nodo

    Múltiplos
                                                     j                                             d
    intervalos por nodo



                                                                            g
Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
Topologia em Anel
                                                                         RF=2



                                                                            a
    Anel Conceitual

    Um token por nodo

    Múltiplos
                                                     j                                             d
    intervalos por nodo



                                                                            g
Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
Topologia em Anel
                                                                         RF=3



      Atribuição de                                                         a
      Token
                                                         m
      Ajuste de Intervalo

      Bootstrap                                      j                                             d


      Inclusão de um
      nodo afeta apenas
      vizinhos imediatos
                                                                            g
Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
Topologia em Anel
                                                                         RF=3



      Nodo é removido                                                       a


      Disponível?
      Hinting Handoff

      Anota num nodo                                 j                                             d

      existente.


                                                                            g
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 sobrecarregado
Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
Bootstrap




                           posiciona nodo e redistribui intervalo
Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
Modelo de Dados
         Keyspace
           ColumnFamily
             Row(indexed)
                Chave
                Colunas
                  Nome(ordenado)
                  Valor



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 Dados
 Representação em JSON da estrutura key -> column families -> column

       "mccv":{
            "Users":{
                  "emailAddress":{"name":"emailAddress", "value":"foo@bar.com"},
                  "webSite":{"name":"webSite", "value":"http://bar.com"}
            },
            "Stats":{
                  "visits":{"name":"visits", "value":"243"}
            }
       },
       "user2":{
             "Users":{
                  "emailAddress":{"name":"emailAddress", "value":"user2@bar.com"},
                  "twitter":{"name":"twitter", "value":"user2"}
            }
       }




Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
Read/Write request
                identifica os nodos que tem os dados da chave
                redireciona a requisição para o nodo e aguarda
                resposta
                se as respostas não chegaram de acordo com o
                timeout configurado, concela a requisição e
                retorna ao cliente
                verifica a última resposta, baseado no timestamp
                agenda o reparo dos dados na replica se não
                tiverem o último pedaço do dado




Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
Escrita
          Commit log para durabilidade
                Fsync configurável
                Apenas escrita sequencial
          Memtable – sem acesso ao disco
          (sem leituras ou seeks)
          Sstables são o final (torna-se read
          only)
                Índices
                Bloom 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)                                                                             Data size
                                                                                                   Number of Objects
                                            Memtable ( CF1)
                                                                                                   Lifetime

   Commit Log                               Memtable ( CF2)
   Binary serialized
   Key ( CF1 , CF2 , CF3 )                  Memtable ( CF2)

                                                                                        Arquivos de dados
                                                                                        em disco
                                 K128 Offset                 <Key name><Size of key Data><Index of columns/supercolumns><
                                                             Serialized column family>
                                                             ---
                                 K256 Offset                  BLOCK Index <Key Name> Offset, <Key Name> Offset
                                                             ---
             Disco               K384 Offset                 ---
            Dedicado                                         <Key name><Size of key Data><Index of columns/supercolumns><
                                 Bloom Filter                Serialized column family>
                              (Índice em memória)

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

        Praticamente livre de lock
        Proliferação de Sstable
        Cache 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
                                                   Cliente


                                       Consulta           Resultado

                                             Cassandra Cluster

                                Replica próxima            Resultado

                                                   Replica A


                                             Compila Consulta
                  Compila Respota                                         Compila Respota


                                   Replica B                         Replica C

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ção
          Contextualiza/motiva o problema
          Descreve o Cassandra
          Objetivo implícito
          Organização




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

      Trabalhos Relacionados
        Retoma o problema
        Apresenta outros trabalhos
      Conteúdo
        Artigo da indústria
        Parece "comprimido"
        Falta de clareza nas explicações




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

      Experiências práticas
        Problemas encontrados
        Poucos dados de performance
        Não há comparação
      Conclusão
         MUITO sucinta - 3 frases
        Lista de TODOs




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


       Avinash Lakshman
          h-index: 8
          Software 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 2009
              Dynamo: 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 Malik
          h-index: 3
          Research 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/qualis
       h-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!

hdpsantos@inf.ufrgs.br
  jaflutz@inf.ufrgs.br

Contenu connexe

Similaire à Cassandra db

Python 3 e o futuro da linguagem
Python 3 e o futuro da linguagemPython 3 e o futuro da linguagem
Python 3 e o futuro da linguagemDanilo Martins
 
SAPO Broker
SAPO BrokerSAPO Broker
SAPO Brokercodebits
 
PHP Conference 2017: Como melhorar seu código com Laravel Collections
PHP Conference 2017: Como melhorar seu código com Laravel CollectionsPHP Conference 2017: Como melhorar seu código com Laravel Collections
PHP Conference 2017: Como melhorar seu código com Laravel CollectionsAryel Tupinambá
 
Tradutor de Pig Latin
Tradutor de Pig LatinTradutor de Pig Latin
Tradutor de Pig LatinElen Arantza
 

Similaire à Cassandra db (6)

dnad12
dnad12dnad12
dnad12
 
Ntop
NtopNtop
Ntop
 
Python 3 e o futuro da linguagem
Python 3 e o futuro da linguagemPython 3 e o futuro da linguagem
Python 3 e o futuro da linguagem
 
SAPO Broker
SAPO BrokerSAPO Broker
SAPO Broker
 
PHP Conference 2017: Como melhorar seu código com Laravel Collections
PHP Conference 2017: Como melhorar seu código com Laravel CollectionsPHP Conference 2017: Como melhorar seu código com Laravel Collections
PHP Conference 2017: Como melhorar seu código com Laravel Collections
 
Tradutor de Pig Latin
Tradutor de Pig LatinTradutor de Pig Latin
Tradutor de Pig Latin
 

Plus de Henrique Dias

No sql system_survey
No sql system_surveyNo sql system_survey
No sql system_surveyHenrique Dias
 
Previsor de Aprovação
Previsor de AprovaçãoPrevisor de Aprovação
Previsor de AprovaçãoHenrique Dias
 
Repositório Social de Serviços Web
Repositório Social de Serviços WebRepositório Social de Serviços Web
Repositório Social de Serviços WebHenrique Dias
 
Web site credibility
Web site credibilityWeb site credibility
Web site credibilityHenrique Dias
 

Plus de Henrique Dias (6)

Big Blog Analysis
Big Blog AnalysisBig Blog Analysis
Big Blog Analysis
 
No sql system_survey
No sql system_surveyNo sql system_survey
No sql system_survey
 
Previsor de Aprovação
Previsor de AprovaçãoPrevisor de Aprovação
Previsor de Aprovação
 
Projeto BD
Projeto BDProjeto BD
Projeto BD
 
Repositório Social de Serviços Web
Repositório Social de Serviços WebRepositório Social de Serviços Web
Repositório Social de Serviços Web
 
Web site credibility
Web site credibilityWeb site credibility
Web site credibility
 

Cassandra db

  • 1. A Descentralized Structured Storage System Henrique Dias e João Lutz
  • 2. Problemas Facebook Inbox Search Grande 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!
  • 3. Objetivos Alta disponibilidade Consistência eventual trade-off - alta consistência ou alta disponibilidade Replicação otimista Escalabilidade incremental Administração ao mínimo Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 4. Trabalhos Relacionados Ficus Consistência Eventual Coda Farsite – No Master GFS – Single Master Bayou – Relacional, Distribuído, Eventual Dynamo (Amazon) Bigtable (Google) Sistema de Armazenamento Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 5. Arquitetura Cassandra Cassandra API Ferramentas Camada de armazenamento Particionador Replicador Detector de falha Cluster Membership Camada de mensagens Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 6. Sistemas Utilizados BigTable ZooKeeper Sistema de Coordenação de Armazenamento tarefas (Google) Seda Ganglia Arquitetura do Monitoramento sistema Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 7. Topologia em Anel RF=3 a Anel Conceitual Um token por nodo Múltiplos j d intervalos por nodo g Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 8. Topologia em Anel RF=2 a Anel Conceitual Um token por nodo Múltiplos j d intervalos por nodo g Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 9. Topologia em Anel RF=3 Atribuição de a Token m Ajuste de Intervalo Bootstrap j d Inclusão de um nodo afeta apenas vizinhos imediatos g Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 10. Topologia em Anel RF=3 Nodo é removido a Disponível? Hinting Handoff Anota num nodo j d existente. g Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 11. Bootstrap adicionando novos nodos Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 12. Bootstrap X localiza nodo sobrecarregado Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 13. Bootstrap posiciona nodo e redistribui intervalo Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 14. Modelo de Dados Keyspace ColumnFamily Row(indexed) Chave Colunas Nome(ordenado) Valor Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 15. Modelo de Dados Uma única coluna Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 16. Modelo de Dados Registro único Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 17. Modelo de Dados Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 18. Modelo de Dados Representação em JSON da estrutura key -> column families -> column "mccv":{ "Users":{ "emailAddress":{"name":"emailAddress", "value":"foo@bar.com"}, "webSite":{"name":"webSite", "value":"http://bar.com"} }, "Stats":{ "visits":{"name":"visits", "value":"243"} } }, "user2":{ "Users":{ "emailAddress":{"name":"emailAddress", "value":"user2@bar.com"}, "twitter":{"name":"twitter", "value":"user2"} } } Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 19. Read/Write request identifica os nodos que tem os dados da chave redireciona a requisição para o nodo e aguarda resposta se as respostas não chegaram de acordo com o timeout configurado, concela a requisição e retorna ao cliente verifica a última resposta, baseado no timestamp agenda o reparo dos dados na replica se não tiverem o último pedaço do dado Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 20. Escrita Commit log para durabilidade Fsync configurável Apenas escrita sequencial Memtable – sem acesso ao disco (sem leituras ou seeks) Sstables são o final (torna-se read only) Índices Bloom filter (probabilístico) Dados cru Base dos dados: Rápida!!! Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 21. Escrita Key (CF1 , CF2 , CF3) Data size Number of Objects Memtable ( CF1) Lifetime Commit Log Memtable ( CF2) Binary serialized Key ( CF1 , CF2 , CF3 ) Memtable ( CF2) Arquivos de dados em disco K128 Offset <Key name><Size of key Data><Index of columns/supercolumns>< Serialized column family> --- K256 Offset BLOCK Index <Key Name> Offset, <Key Name> Offset --- Disco K384 Offset --- Dedicado <Key name><Size of key Data><Index of columns/supercolumns>< Bloom Filter Serialized column family> (Índice em memória) Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 22. Leitura Praticamente livre de lock Proliferação de Sstable Cache de Registro (evita sstable lookup,sem write- through) Cache de chave (evita index scan) Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 23. Leitura Cliente Consulta Resultado Cassandra Cluster Replica próxima Resultado Replica A Compila Consulta Compila Respota Compila Respota Replica B Replica C Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 24. Avaliação do Artigo Título "Cassandra - A Descentralized Structured Storage System" Abstract Sem contextualização, resultados ou conclusão Introdução Contextualiza/motiva o problema Descreve o Cassandra Objetivo implícito Organização Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 25. Avaliação do Artigo Trabalhos Relacionados Retoma o problema Apresenta outros trabalhos Conteúdo Artigo da indústria Parece "comprimido" Falta de clareza nas explicações Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 26. Avaliação do Artigo Experiências práticas Problemas encontrados Poucos dados de performance Não há comparação Conclusão MUITO sucinta - 3 frases Lista de TODOs Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 27. Avaliação dos Autores Avinash Lakshman h-index: 8 Software 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 2009 Dynamo: amazon's highly available key-value store. SOSP 2007 Citation Count (ACM): 94 Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!
  • 28. Avaliação dos Autores Prashant Malik h-index: 3 Research 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!
  • 29. 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/qualis h-index: 22 (2010), 87 (SIGOPS) h-index: 11 (2009),42 Introdução >>>> Topologia >>> Bootstrap >> Modelo >>>> Read/Write >>>> Avaliação >>>>> Obrigado!