SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
Problema Atual
                Nova Geração
                 Quando Usar
                Players Atuais




Sistemas de Armazenamento de Larga Escala

               Luís Carlos Dill Junges

                     Fundação Certi
         Universidade Federal de Santa Catarina

               23 de outubro de 2009




        Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                            Nova Geração
                             Quando Usar
                            Players Atuais



Conteúdo

  1   Problema Atual
        Descrição do problema
  2   Nova Geração
        Características
        Nomenclatura dos sistemas
        Comparação com BD relacional
        Vantagens - Desvantagens
  3   Quando Usar
        Critérios
  4   Players Atuais
        Lista de soluções
        Análise de Soluções

                    Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                           Nova Geração
                                             Descrição do problema
                            Quando Usar
                           Players Atuais



Problema Atual


  Descrição do Problema
  Atualmente com SGDBR alguns pontos não são resolvidos
  satisfatoriamente, a saber:
      Quantidade de dados muito grande
      Muitas requisições por segundo
      Não são facilmente escaláveis
      Somente as leituras são escaláveis (ACID)
      Distribuir escritas é praticamente impossível
      Escritas cam limitas a um node (SPOF)


                   Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual     Características
                           Nova Geração      Nomenclatura dos sistemas
                            Quando Usar      Comparação com BD relacional
                           Players Atuais    Vantagens - Desvantagens



Nova Geração

  Características
  Esta nova geração de sistemas se baseia, em geral, no aspectos:
       Alta disponibilidade
       Escalável através da adição de máquinas simples (horizontal)
       Balanceamento online de carga no cluster
       Esquema exível ou inexistente
       Tradeo entre disponibilidade e consistência
       Queries orientadas a chave-valor
       Respeito ao teorema CAP (escolha duas de:)
           Consistency (dados consistentes ao longo dos nodes)
           Availability (sempre disponível - nodes falham)
           Partition Tolerance (opera se nodes falham )
                   Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual     Características
                          Nova Geração      Nomenclatura dos sistemas
                           Quando Usar      Comparação com BD relacional
                          Players Atuais    Vantagens - Desvantagens



Nova Geração

  Nomeclatura
  Tais sistemas, embora não possuam um nome própria ainda, são
  conhecidos como:
       Key-Value Database
       Document-Oriented
       Attribute-Oriented
       Distributed Database
       Distributed Hash Table (DHT)
       Internet-Facing
       Sharded sorted arrays


                  Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual     Características
                           Nova Geração      Nomenclatura dos sistemas
                            Quando Usar      Comparação com BD relacional
                           Players Atuais    Vantagens - Desvantagens



Nova Geração

  SGDB vs Chave-Valor
                   Contém tabelas, colunas, linhas (tuplas)
                   ACID (Atomicidade, Consistência, Isolamento, Durabilidade)
                   Normalizado para remover duplicação de dados
      Relacional   Pode-se colocar lógica (triggers, procedures)
                   Vários tipos de queries
                   Denição do esquema
                   Mapeamento objeto-relational (hibernate)
                   Domínios parecidos com tabelas
                   Items identicados somente pela chave
                   Alta duplicação de dados
     Chave-Valor   Sem esquema denido
                   Suporte a queries extremamente simples
                   Lógica e integridade de dados no código da aplicação
                   Consistência eventual
                   Mapeamento dos objetos para chave-valor é simples




                   Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual     Características
                          Nova Geração      Nomenclatura dos sistemas
                           Quando Usar      Comparação com BD relacional
                          Players Atuais    Vantagens - Desvantagens



Nova Geração

  Vantagens
      Facilmente escalável horizontalmente
      Sem mapeamento objeto-relational (maiores velocidades)

  Desvantagens
      Sem restrições de integridade
      Aplicação responsável pela integridade
      Banco de dados é uma representação da aplicação (dados
      restrito à aplicação)
      Todos em fase alpha/beta e sem padrão denido para
      comunicação (ANSI-SQL92 Standard)

                  Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                          Nova Geração
                                            Critérios
                           Quando Usar
                          Players Atuais



Quando Usar


  Critérios
       Os dados são visivelmente document-oriented de tal modo que
       o armazenamento é mais fácil quando comparado ao relacional.
       O desenvolvimento é pesadamente orientado a objetos e os
       sistemas chave-valor minimizam a necessidade de camadas
       adicionais para mapeamento objeto-relational.
       O futuro da aplicação levará o sistema a ter alta-demanda,
       necessidade de alta-escalabilidade, muitos dados na ordem de
       TB, escalabilidade distribuída. Fatores que necessitam
       escalabilidade horizontal.



                  Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                              Nova Geração      Lista de soluções
                               Quando Usar      Análise de Soluções
                              Players Atuais



Players Atuais
  Lista de Soluções
   Nome                   Client API                          Aplicação
   Voldemort              Java                                linkedin.com
   Cassandra              Thrift                              facebook,digg,rackspace
   HBase                  Thrift Custom API, RESTFul Yahoo cluster
   CouchDB                HTTP, Json                          Várias aplicações
   MongoDB                Python, Ruby, Java, C++             Várias aplicações pequenas
   Redis                  Python, Ruby, Java, Erlang          lloogg.com
   Memcache               Python, Ruby, Java, Erlang          Várias aplicações grandes
   Tokyo Cabinet/Tyrant Java, Perl, Ruby                      mixi.jp
   ThruDB                 Thrift                              junkdepot.com



                      Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                                Nova Geração      Lista de soluções
                                 Quando Usar      Análise de Soluções
                                Players Atuais



Voldemort


  Características
      Sistema baseado em chave valor
      Duas funções (set e get)
      Para persistência utiliza BDB, MySQL
      Usa sistema de versão nos dados

  Aplicação Prática
  Voldemort é usado no LinkedIn.com para o armazenamento de certas relações que
  necessitam de alta disponibilidade. As velocidades de leitura são da ordem de 19 384
  req/segundo e para escrita 16 559 req/segundo conforme relatado pelo
  desenvolvedores.



                        Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                             Nova Geração      Lista de soluções
                              Quando Usar      Análise de Soluções
                             Players Atuais



Voldemort


  Pontos Fortes
      Boa documentação
      Replicação e particionamento de dados
      Adaptado a load balancer com propostas de cluster
      Satisfaz as propriedades ACID
      Sem SPOF (Single Point of Failure)


  Pontos Fracos
      Inserir novo node em live mode não é possível
      BDB não otimizado para grandes valores
      Os dados precisam caber confortavelmente na memória para processamento




                     Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                        Nova Geração      Lista de soluções
                         Quando Usar      Análise de Soluções
                        Players Atuais



Voldemort




            Figura: Arquiteturas para uso do Voldemort

                Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                               Nova Geração      Lista de soluções
                                Quando Usar      Análise de Soluções
                               Players Atuais



Cassandra

  Características
      Um sistema chave valor mais completo
      Conceitos do BigTable do Google e Dynamo da Amazon
      4 a 5 Níveis de armazenamento (KeySpace, ColumnFamilies,
      SuperColumnsa , Columns, Value)
      Usa conceito de versão para os dados
     a
         opcional


  Aplicação Prática
  Atualmente está em uso no Facebook, rackspace e digg. No facebook aparentemente
  esta em uso no inbox search onde há 40 TB de dados distribuídos entre 120 máquinas
  em centros separados.


                       Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                             Nova Geração      Lista de soluções
                              Quando Usar      Análise de Soluções
                             Players Atuais



Cassandra

  Pontos Fortes
      Alta disponibilidade
      Escalabilidade incremental
      Sem SPOF (Single Point of Failure)
      Replicação de dados
      Adicionar nodes on cluster em live mode
      Leituras e Escritas atômicas dentro de um    ColumnFamily

      Baixa Administração


  Pontos Fracos
      Sem documentação
      API versão atual nebulosa e obscura
      Diculdade em rodar o exemplo mais simples
      Consistência Eventual

                     Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                          Nova Geração      Lista de soluções
                           Quando Usar      Análise de Soluções
                          Players Atuais



HBase

  Características
      Cópia do BigTable do google
      Orientado a colunas (chave-valor)
      Performance associada ao número de nodes
      Arquitetura master-slave

  Aplicação Prática
  HBase esta em uso por um cluster de 10 000 PCs dentro da
  estrutura do Yahoo. O Baidu (google chinês) também usa HBase
  para algumas aplicações. Há um lista extensa das soluções em
  http://wiki.apache.org/hadoop/Hbase/PoweredBy


                  Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                               Nova Geração      Lista de soluções
                                Quando Usar      Análise de Soluções
                               Players Atuais



HBase


  Pontos Fortes
        Sem SPOF (Single Point of Failure) (versão 0.20)
        Latência diminuída drasticamente (versão 0.20)
        Roda em cima do HDFS (Hadoop Distributed File System)
        Capacidade de rodar tarefas MapReduce
        Boa Documentação
        Integração com sub projetos do Apache Hadoop


  Pontos Fracos
        Latência muito alta para páginas dinânicas (removido versão 0.20)
        Existência de SPOF (removido versão 0.20)




                       Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                Nova Geração      Lista de soluções
                 Quando Usar      Análise de Soluções
                Players Atuais



HBase




              Figura: Arquitetura HBase

        Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                         Nova Geração      Lista de soluções
                          Quando Usar      Análise de Soluções
                         Players Atuais



CouchDB

 Características
     Sistema orietando a documentos
     Sistema desestruturado (formato json para documentos)
     Muito similar ao SimpleDB da Amazon
     Replicação assíncrona
     Administração por interface gráca pelo browser

 Aplicação Prática
 Vários projetos usam CouchDB pela sua facilidade em
 armazenamento de dados. Uma lista completa pode ser encontrada
 em http://wiki.apache.org/couchdb/CouchDB

                 Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                             Nova Geração      Lista de soluções
                              Quando Usar      Análise de Soluções
                             Players Atuais



CouchDB


 Pontos Fortes
     Utilização de MapReduce
     Replicação entre nodes manualmente
     API via json bem intuitiva e simples
     Suporte a queries (suporte a criação de   views  )
     Views são funções Javascript

     Boa documentação


 Pontos Fracos
     Todo os dados precisam caber em cada node
     Implementação em estágio alpha
     Segurança inexistente (precisa rodar em ambiente seguro



                     Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                  Nova Geração      Lista de soluções
                   Quando Usar      Análise de Soluções
                  Players Atuais



CouchDB




             Figura: Arquitetura CouchDB

          Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                              Nova Geração      Lista de soluções
                               Quando Usar      Análise de Soluções
                              Players Atuais



MongoDB


 Características
     Orientado a documentos
     Utilizado formato json e bson (binary json)
     Suporte comercial

 Aplicação Prática
 Utilizado como armazenamento de dados do SourceForge para a página dos projetos e
 para as páginas de download de todos os projetos. Há um lista extensa das soluções
 em http://www.mongodb.org/display/DOCS/Production+Deployments




                      Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                            Nova Geração      Lista de soluções
                             Quando Usar      Análise de Soluções
                            Players Atuais



MongoDB



 Pontos Fortes
     Vasta gama de Queries dinâmicas
     Replicação de dados
     Eciente para armazenamento de grandes objetos (imagens, vídeos)
     Escalonamento horizontal (auto-sharding) em breve


 Pontos Fracos
     Replicação somente entre 2   nodes

     Vários pontos de SPOF




                    Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                  Nova Geração      Lista de soluções
                   Quando Usar      Análise de Soluções
                  Players Atuais



MongoDB




             Figura: Arquitetura MongoDB

          Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                               Nova Geração      Lista de soluções
                                Quando Usar      Análise de Soluções
                               Players Atuais



Redis


  Características
        Sistema chave-valor incrementado (mais operações que outros)
        Todas operações na memória (escritas assíncronas no HD)
        Possui jdbc para java (não é SQL o acesso)
        Sharding responsabilidade da biblioteca cliente

        Valores podem ser bytes, lists, sets


  Aplicação Prática
  Foi desenvolvido para um site que mapeia em tempo real os acessos ao website
  http://lloogg.com com informações do cliente.




                       Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                               Nova Geração      Lista de soluções
                                Quando Usar      Análise de Soluções
                               Players Atuais



Redis


  Pontos Fortes
        Velocidades de leitura e escrita da ordem de 100 000 req/segundo
        Pode-se inserir nova máquina em live mode com distribuiçãos de dados
        Possui uma gama maior de operações de procura além dos simples par set          - get

        Incrivelmente rápido nas leituras/escritas


  Pontos Fracos
        Todos os dados precisam caber na memória
        Possui SPOF em modo master-slave
        Pode haver perda de dados decorrente da escrita assíncrona




                       Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                          Nova Geração      Lista de soluções
                           Quando Usar      Análise de Soluções
                          Players Atuais



Memcache

  Características
      Sistema chave-valor in-memory
      Todas operações na memória (usado para cache)
      Sem um sistema de armazenamento de persitência
      Velocidades em tornode 38 000 req /segundo no Flickr

  Aplicação Prática
  Memcache é um produto largamento usado nas aplicações web que
  necessitem maiores velocidades. Esta em versão robusta e estável
  sendo usado por várias empresas dentre as quais se destaca a
  criadora do sistema, livejournal.com.

                  Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                             Nova Geração      Lista de soluções
                              Quando Usar      Análise de Soluções
                             Players Atuais



Memcache

  Pontos Fortes
      Extremamente rápido nas escritas/leituras
      Pode-se inserir nova máquina em live mode com distribuiçãos de dados (basta
      rodar daemon)
      Pode funcionar como second layer cache do hibernate para aumentar a
      velocidade
      Possui biblioteca de integração com PostgreSQL (procedure e triggers acessam
      o memcache diretamente)
      Integração similar para o MySQL
      Inexistência de SPOF (falha na máquina causa faz com que o BD seja
      requisitado novamente)


  Pontos Fracos
      Dados somente em RAM (dados jogados fora)
      Sem persitência de dados

                     Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                          Nova Geração      Lista de soluções
                           Quando Usar      Análise de Soluções
                          Players Atuais



Tokyo Cabinet/Tyrant


  Características
      Sistema chave-valor com persistência
      Replicação assíncrona entre servidores
      Sem um sistema de armazenamento de persitência
      Velocidades em tornode 38 000 req /segundo no Flickr

  Aplicação Prática
  Tokyo Cabinet/Tyrant é usado em mixi.jp. Um 'facebook' japonês.
  Neste exemplo, possui 20 milhões de dados (20 bytes cada) com
  mais de 10 000 udpates por segundo utilizando memcache.


                  Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                             Nova Geração      Lista de soluções
                              Quando Usar      Análise de Soluções
                             Players Atuais



Tokyo Cabinet/Tyrant


  Pontos Fortes
      Extremamente rápido nas escritas/leituras
      Várias formas de armazenamento (Hash, B-Tree, etc)
      Velocidades de acesso rápidas (58 000 reqs/segundo)
      Respeito às propriedades ACID
      Integração com várias linguagens de programação
      Integrado com o Tokyo Dystropia (framework para procura de texto)


  Pontos Fracos
      Pouca documentação
      Sem muitos casos de uso




                     Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                        Nova Geração      Lista de soluções
                         Quando Usar      Análise de Soluções
                        Players Atuais



ThruDB


 Características
     Sistema orientado a documentos Composto de 4 componentes
         Thrudoc (storage engine)
         Throxy (Service proxy and aggregator)
         Thrucene para indexação baseado em Lucene
         Componente de mensagens

     Pode ser usado em conjunto com HD e o Amazon S3

 Aplicação Prática
 Atualmente em uso no junkdepot.com



                Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                            Nova Geração      Lista de soluções
                             Quando Usar      Análise de Soluções
                            Players Atuais



ThruDB



 Pontos Fortes
     Possui boa integração para ser usado com Amaxon S3
     Parece ser escolha melhor para usar com Amazon EC2 ao invés de         CouchDB




 Pontos Fracos
     Pouca documentação
     Sem muitos casos de uso




                    Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                 Nova Geração      Lista de soluções
                  Quando Usar      Análise de Soluções
                 Players Atuais



ThruDB




         Figura: Integração com Amazon S3




         Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala
Problema Atual
                  Nova Geração      Lista de soluções
                   Quando Usar      Análise de Soluções
                  Players Atuais



Contato




            Luís Carlos Dill Junges
                  luis.junges@gmail.com
                    lcj@certi.org.br




          Luís Carlos Dill Junges   Sistemas de Armazenamento de Larga Escala

Más contenido relacionado

Similar a Distributed Databases Overview

Big Data, NoSQL e In Memory Databases
Big Data, NoSQL e In Memory DatabasesBig Data, NoSQL e In Memory Databases
Big Data, NoSQL e In Memory DatabasesCaio Louro
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPAricelio Souza
 
Banco de Dados NoSql - JornalJava
Banco de Dados NoSql - JornalJavaBanco de Dados NoSql - JornalJava
Banco de Dados NoSql - JornalJavajornaljava
 
Banco de Dados Ágeis e Refatoração
Banco de Dados Ágeis e RefatoraçãoBanco de Dados Ágeis e Refatoração
Banco de Dados Ágeis e Refatoraçãoelliando dias
 
Apresentação: Padrões de Projetos para Persistência de Dados
Apresentação: Padrões de Projetos para Persistência de DadosApresentação: Padrões de Projetos para Persistência de Dados
Apresentação: Padrões de Projetos para Persistência de DadosLuan Lima
 
TDC2013 Escalando Aplicações Java com In Memory Datagrids
TDC2013 Escalando Aplicações Java com In Memory DatagridsTDC2013 Escalando Aplicações Java com In Memory Datagrids
TDC2013 Escalando Aplicações Java com In Memory DatagridsWagner Roberto dos Santos
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento ORNécio de Lima Veras
 
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
[DTC21] Lucas Gomes - Do 0 ao 100 no Big DataDeep Tech Brasil
 
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Daniel Destro Do Carmo
 
Como escolher qual banco de dados utilizar?
Como escolher qual banco de dados utilizar?Como escolher qual banco de dados utilizar?
Como escolher qual banco de dados utilizar?Felipe Santos
 
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...Leinylson Fontinele
 

Similar a Distributed Databases Overview (20)

Pesquisa sobre no sql
Pesquisa sobre no sqlPesquisa sobre no sql
Pesquisa sobre no sql
 
Big Data, NoSQL e In Memory Databases
Big Data, NoSQL e In Memory DatabasesBig Data, NoSQL e In Memory Databases
Big Data, NoSQL e In Memory Databases
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 
Bancos de dados NoSQL (Not only sql)
Bancos de dados NoSQL (Not only sql)Bancos de dados NoSQL (Not only sql)
Bancos de dados NoSQL (Not only sql)
 
Artigo Nosql
Artigo NosqlArtigo Nosql
Artigo Nosql
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAP
 
No sql std
No sql stdNo sql std
No sql std
 
Banco de Dados NoSql - JornalJava
Banco de Dados NoSql - JornalJavaBanco de Dados NoSql - JornalJava
Banco de Dados NoSql - JornalJava
 
No sql o_que_e_isso.key
No sql o_que_e_isso.keyNo sql o_que_e_isso.key
No sql o_que_e_isso.key
 
Banco de Dados Ágeis e Refatoração
Banco de Dados Ágeis e RefatoraçãoBanco de Dados Ágeis e Refatoração
Banco de Dados Ágeis e Refatoração
 
Apresentação: Padrões de Projetos para Persistência de Dados
Apresentação: Padrões de Projetos para Persistência de DadosApresentação: Padrões de Projetos para Persistência de Dados
Apresentação: Padrões de Projetos para Persistência de Dados
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
TDC2013 Escalando Aplicações Java com In Memory Datagrids
TDC2013 Escalando Aplicações Java com In Memory DatagridsTDC2013 Escalando Aplicações Java com In Memory Datagrids
TDC2013 Escalando Aplicações Java com In Memory Datagrids
 
Processos iniciais do mapeamento OR
Processos iniciais do mapeamento ORProcessos iniciais do mapeamento OR
Processos iniciais do mapeamento OR
 
Bancos de dados NoSQL
Bancos de dados NoSQLBancos de dados NoSQL
Bancos de dados NoSQL
 
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
[DTC21] Lucas Gomes - Do 0 ao 100 no Big Data
 
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
 
Como escolher qual banco de dados utilizar?
Como escolher qual banco de dados utilizar?Como escolher qual banco de dados utilizar?
Como escolher qual banco de dados utilizar?
 
Banco aula 01
Banco aula 01Banco aula 01
Banco aula 01
 
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
Banco de Dados II Aula 14 - Projeto de Banco de Dados e Estudo de Caso (Postg...
 

Distributed Databases Overview

  • 1. Problema Atual Nova Geração Quando Usar Players Atuais Sistemas de Armazenamento de Larga Escala Luís Carlos Dill Junges Fundação Certi Universidade Federal de Santa Catarina 23 de outubro de 2009 Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 2. Problema Atual Nova Geração Quando Usar Players Atuais Conteúdo 1 Problema Atual Descrição do problema 2 Nova Geração Características Nomenclatura dos sistemas Comparação com BD relacional Vantagens - Desvantagens 3 Quando Usar Critérios 4 Players Atuais Lista de soluções Análise de Soluções Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 3. Problema Atual Nova Geração Descrição do problema Quando Usar Players Atuais Problema Atual Descrição do Problema Atualmente com SGDBR alguns pontos não são resolvidos satisfatoriamente, a saber: Quantidade de dados muito grande Muitas requisições por segundo Não são facilmente escaláveis Somente as leituras são escaláveis (ACID) Distribuir escritas é praticamente impossível Escritas cam limitas a um node (SPOF) Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 4. Problema Atual Características Nova Geração Nomenclatura dos sistemas Quando Usar Comparação com BD relacional Players Atuais Vantagens - Desvantagens Nova Geração Características Esta nova geração de sistemas se baseia, em geral, no aspectos: Alta disponibilidade Escalável através da adição de máquinas simples (horizontal) Balanceamento online de carga no cluster Esquema exível ou inexistente Tradeo entre disponibilidade e consistência Queries orientadas a chave-valor Respeito ao teorema CAP (escolha duas de:) Consistency (dados consistentes ao longo dos nodes) Availability (sempre disponível - nodes falham) Partition Tolerance (opera se nodes falham ) Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 5. Problema Atual Características Nova Geração Nomenclatura dos sistemas Quando Usar Comparação com BD relacional Players Atuais Vantagens - Desvantagens Nova Geração Nomeclatura Tais sistemas, embora não possuam um nome própria ainda, são conhecidos como: Key-Value Database Document-Oriented Attribute-Oriented Distributed Database Distributed Hash Table (DHT) Internet-Facing Sharded sorted arrays Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 6. Problema Atual Características Nova Geração Nomenclatura dos sistemas Quando Usar Comparação com BD relacional Players Atuais Vantagens - Desvantagens Nova Geração SGDB vs Chave-Valor Contém tabelas, colunas, linhas (tuplas) ACID (Atomicidade, Consistência, Isolamento, Durabilidade) Normalizado para remover duplicação de dados Relacional Pode-se colocar lógica (triggers, procedures) Vários tipos de queries Denição do esquema Mapeamento objeto-relational (hibernate) Domínios parecidos com tabelas Items identicados somente pela chave Alta duplicação de dados Chave-Valor Sem esquema denido Suporte a queries extremamente simples Lógica e integridade de dados no código da aplicação Consistência eventual Mapeamento dos objetos para chave-valor é simples Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 7. Problema Atual Características Nova Geração Nomenclatura dos sistemas Quando Usar Comparação com BD relacional Players Atuais Vantagens - Desvantagens Nova Geração Vantagens Facilmente escalável horizontalmente Sem mapeamento objeto-relational (maiores velocidades) Desvantagens Sem restrições de integridade Aplicação responsável pela integridade Banco de dados é uma representação da aplicação (dados restrito à aplicação) Todos em fase alpha/beta e sem padrão denido para comunicação (ANSI-SQL92 Standard) Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 8. Problema Atual Nova Geração Critérios Quando Usar Players Atuais Quando Usar Critérios Os dados são visivelmente document-oriented de tal modo que o armazenamento é mais fácil quando comparado ao relacional. O desenvolvimento é pesadamente orientado a objetos e os sistemas chave-valor minimizam a necessidade de camadas adicionais para mapeamento objeto-relational. O futuro da aplicação levará o sistema a ter alta-demanda, necessidade de alta-escalabilidade, muitos dados na ordem de TB, escalabilidade distribuída. Fatores que necessitam escalabilidade horizontal. Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 9. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais Players Atuais Lista de Soluções Nome Client API Aplicação Voldemort Java linkedin.com Cassandra Thrift facebook,digg,rackspace HBase Thrift Custom API, RESTFul Yahoo cluster CouchDB HTTP, Json Várias aplicações MongoDB Python, Ruby, Java, C++ Várias aplicações pequenas Redis Python, Ruby, Java, Erlang lloogg.com Memcache Python, Ruby, Java, Erlang Várias aplicações grandes Tokyo Cabinet/Tyrant Java, Perl, Ruby mixi.jp ThruDB Thrift junkdepot.com Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 10. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais Voldemort Características Sistema baseado em chave valor Duas funções (set e get) Para persistência utiliza BDB, MySQL Usa sistema de versão nos dados Aplicação Prática Voldemort é usado no LinkedIn.com para o armazenamento de certas relações que necessitam de alta disponibilidade. As velocidades de leitura são da ordem de 19 384 req/segundo e para escrita 16 559 req/segundo conforme relatado pelo desenvolvedores. Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 11. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais Voldemort Pontos Fortes Boa documentação Replicação e particionamento de dados Adaptado a load balancer com propostas de cluster Satisfaz as propriedades ACID Sem SPOF (Single Point of Failure) Pontos Fracos Inserir novo node em live mode não é possível BDB não otimizado para grandes valores Os dados precisam caber confortavelmente na memória para processamento Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 12. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais Voldemort Figura: Arquiteturas para uso do Voldemort Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 13. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais Cassandra Características Um sistema chave valor mais completo Conceitos do BigTable do Google e Dynamo da Amazon 4 a 5 Níveis de armazenamento (KeySpace, ColumnFamilies, SuperColumnsa , Columns, Value) Usa conceito de versão para os dados a opcional Aplicação Prática Atualmente está em uso no Facebook, rackspace e digg. No facebook aparentemente esta em uso no inbox search onde há 40 TB de dados distribuídos entre 120 máquinas em centros separados. Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 14. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais Cassandra Pontos Fortes Alta disponibilidade Escalabilidade incremental Sem SPOF (Single Point of Failure) Replicação de dados Adicionar nodes on cluster em live mode Leituras e Escritas atômicas dentro de um ColumnFamily Baixa Administração Pontos Fracos Sem documentação API versão atual nebulosa e obscura Diculdade em rodar o exemplo mais simples Consistência Eventual Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 15. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais HBase Características Cópia do BigTable do google Orientado a colunas (chave-valor) Performance associada ao número de nodes Arquitetura master-slave Aplicação Prática HBase esta em uso por um cluster de 10 000 PCs dentro da estrutura do Yahoo. O Baidu (google chinês) também usa HBase para algumas aplicações. Há um lista extensa das soluções em http://wiki.apache.org/hadoop/Hbase/PoweredBy Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 16. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais HBase Pontos Fortes Sem SPOF (Single Point of Failure) (versão 0.20) Latência diminuída drasticamente (versão 0.20) Roda em cima do HDFS (Hadoop Distributed File System) Capacidade de rodar tarefas MapReduce Boa Documentação Integração com sub projetos do Apache Hadoop Pontos Fracos Latência muito alta para páginas dinânicas (removido versão 0.20) Existência de SPOF (removido versão 0.20) Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 17. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais HBase Figura: Arquitetura HBase Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 18. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais CouchDB Características Sistema orietando a documentos Sistema desestruturado (formato json para documentos) Muito similar ao SimpleDB da Amazon Replicação assíncrona Administração por interface gráca pelo browser Aplicação Prática Vários projetos usam CouchDB pela sua facilidade em armazenamento de dados. Uma lista completa pode ser encontrada em http://wiki.apache.org/couchdb/CouchDB Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 19. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais CouchDB Pontos Fortes Utilização de MapReduce Replicação entre nodes manualmente API via json bem intuitiva e simples Suporte a queries (suporte a criação de views ) Views são funções Javascript Boa documentação Pontos Fracos Todo os dados precisam caber em cada node Implementação em estágio alpha Segurança inexistente (precisa rodar em ambiente seguro Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 20. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais CouchDB Figura: Arquitetura CouchDB Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 21. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais MongoDB Características Orientado a documentos Utilizado formato json e bson (binary json) Suporte comercial Aplicação Prática Utilizado como armazenamento de dados do SourceForge para a página dos projetos e para as páginas de download de todos os projetos. Há um lista extensa das soluções em http://www.mongodb.org/display/DOCS/Production+Deployments Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 22. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais MongoDB Pontos Fortes Vasta gama de Queries dinâmicas Replicação de dados Eciente para armazenamento de grandes objetos (imagens, vídeos) Escalonamento horizontal (auto-sharding) em breve Pontos Fracos Replicação somente entre 2 nodes Vários pontos de SPOF Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 23. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais MongoDB Figura: Arquitetura MongoDB Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 24. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais Redis Características Sistema chave-valor incrementado (mais operações que outros) Todas operações na memória (escritas assíncronas no HD) Possui jdbc para java (não é SQL o acesso) Sharding responsabilidade da biblioteca cliente Valores podem ser bytes, lists, sets Aplicação Prática Foi desenvolvido para um site que mapeia em tempo real os acessos ao website http://lloogg.com com informações do cliente. Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 25. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais Redis Pontos Fortes Velocidades de leitura e escrita da ordem de 100 000 req/segundo Pode-se inserir nova máquina em live mode com distribuiçãos de dados Possui uma gama maior de operações de procura além dos simples par set - get Incrivelmente rápido nas leituras/escritas Pontos Fracos Todos os dados precisam caber na memória Possui SPOF em modo master-slave Pode haver perda de dados decorrente da escrita assíncrona Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 26. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais Memcache Características Sistema chave-valor in-memory Todas operações na memória (usado para cache) Sem um sistema de armazenamento de persitência Velocidades em tornode 38 000 req /segundo no Flickr Aplicação Prática Memcache é um produto largamento usado nas aplicações web que necessitem maiores velocidades. Esta em versão robusta e estável sendo usado por várias empresas dentre as quais se destaca a criadora do sistema, livejournal.com. Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 27. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais Memcache Pontos Fortes Extremamente rápido nas escritas/leituras Pode-se inserir nova máquina em live mode com distribuiçãos de dados (basta rodar daemon) Pode funcionar como second layer cache do hibernate para aumentar a velocidade Possui biblioteca de integração com PostgreSQL (procedure e triggers acessam o memcache diretamente) Integração similar para o MySQL Inexistência de SPOF (falha na máquina causa faz com que o BD seja requisitado novamente) Pontos Fracos Dados somente em RAM (dados jogados fora) Sem persitência de dados Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 28. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais Tokyo Cabinet/Tyrant Características Sistema chave-valor com persistência Replicação assíncrona entre servidores Sem um sistema de armazenamento de persitência Velocidades em tornode 38 000 req /segundo no Flickr Aplicação Prática Tokyo Cabinet/Tyrant é usado em mixi.jp. Um 'facebook' japonês. Neste exemplo, possui 20 milhões de dados (20 bytes cada) com mais de 10 000 udpates por segundo utilizando memcache. Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 29. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais Tokyo Cabinet/Tyrant Pontos Fortes Extremamente rápido nas escritas/leituras Várias formas de armazenamento (Hash, B-Tree, etc) Velocidades de acesso rápidas (58 000 reqs/segundo) Respeito às propriedades ACID Integração com várias linguagens de programação Integrado com o Tokyo Dystropia (framework para procura de texto) Pontos Fracos Pouca documentação Sem muitos casos de uso Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 30. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais ThruDB Características Sistema orientado a documentos Composto de 4 componentes Thrudoc (storage engine) Throxy (Service proxy and aggregator) Thrucene para indexação baseado em Lucene Componente de mensagens Pode ser usado em conjunto com HD e o Amazon S3 Aplicação Prática Atualmente em uso no junkdepot.com Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 31. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais ThruDB Pontos Fortes Possui boa integração para ser usado com Amaxon S3 Parece ser escolha melhor para usar com Amazon EC2 ao invés de CouchDB Pontos Fracos Pouca documentação Sem muitos casos de uso Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 32. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais ThruDB Figura: Integração com Amazon S3 Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
  • 33. Problema Atual Nova Geração Lista de soluções Quando Usar Análise de Soluções Players Atuais Contato Luís Carlos Dill Junges luis.junges@gmail.com lcj@certi.org.br Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala