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