Download - Sistemas Armazenamento Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
Sistemas de Armazenamento de Larga Escala
Luís Carlos Dill Junges
Fundação CertiUniversidade Federal de Santa Catarina
23 de outubro de 2009
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
Conteúdo
1 Problema AtualDescrição do problema
2 Nova GeraçãoCaracterísticasNomenclatura dos sistemasComparação com BD relacionalVantagens - Desvantagens
3 Quando UsarCritérios
4 Players AtuaisLista de soluçõesAnálise de Soluções
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
Descrição do problema
Problema Atual
Descrição do Problema
Atualmente com SGDBR alguns pontos não são resolvidossatisfatoriamente, 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 AtualNova GeraçãoQuando UsarPlayers Atuais
CaracterísticasNomenclatura dos sistemasComparação com BD relacionalVantagens - 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 AtualNova GeraçãoQuando UsarPlayers Atuais
CaracterísticasNomenclatura dos sistemasComparação com BD relacionalVantagens - Desvantagens
Nova Geração
Nomeclatura
Tais sistemas, embora não possuam um nome própria ainda, sãoconhecidos 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 AtualNova GeraçãoQuando UsarPlayers Atuais
CaracterísticasNomenclatura dos sistemasComparação com BD relacionalVantagens - Desvantagens
Nova Geração
SGDB vs Chave-Valor
Relacional
Contém tabelas, colunas, linhas (tuplas)ACID (Atomicidade, Consistência, Isolamento, Durabilidade)Normalizado para remover duplicação de dadosPode-se colocar lógica (triggers, procedures)Vários tipos de queriesDe�nição do esquemaMapeamento objeto-relational (hibernate)
Chave-Valor
Domínios parecidos com tabelasItems identi�cados somente pela chaveAlta duplicação de dadosSem esquema de�nidoSuporte a queries extremamente simplesLógica e integridade de dados no código da aplicaçãoConsistência eventualMapeamento dos objetos para chave-valor é simples
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
CaracterísticasNomenclatura dos sistemasComparação com BD relacionalVantagens - 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 (dadosrestrito à aplicação)
Todos em fase alpha/beta e sem padrão de�nido paracomunicação (ANSI-SQL92 Standard)
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
Critérios
Quando Usar
Critérios
Os dados são visivelmente document-oriented de tal modo queo armazenamento é mais fácil quando comparado ao relacional.
O desenvolvimento é pesadamente orientado a objetos e ossistemas chave-valor minimizam a necessidade de camadasadicionais para mapeamento objeto-relational.
O futuro da aplicação levará o sistema a ter alta-demanda,necessidade de alta-escalabilidade, muitos dados na ordem deTB, escalabilidade distribuída. Fatores que necessitamescalabilidade horizontal.
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
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 AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
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 quenecessitam de alta disponibilidade. As velocidades de leitura são da ordem de 19 384req/segundo e para escrita 16 559 req/segundo conforme relatado pelodesenvolvedores.
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
Voldemort
Pontos FortesBoa 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 FracosInserir 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 AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
Voldemort
Figura: Arquiteturas para uso do Voldemort
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
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
aopcional
Aplicação Prática
Atualmente está em uso no Facebook, rackspace e digg. No facebook aparentementeesta em uso no inbox search onde há 40 TB de dados distribuídos entre 120 máquinasem centros separados.
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
Cassandra
Pontos FortesAlta 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 FracosSem documentação
API versão atual nebulosa e obscura
Di�culdade em rodar o exemplo mais simples
Consistência Eventual
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
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 daestrutura do Yahoo. O Baidu (google chinês) também usa HBasepara algumas aplicações. Há um lista extensa das soluções emhttp://wiki.apache.org/hadoop/Hbase/PoweredBy
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
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 AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
HBase
Figura: Arquitetura HBase
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
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 emarmazenamento de dados. Uma lista completa pode ser encontradaem http://wiki.apache.org/couchdb/CouchDB
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
CouchDB
Pontos FortesUtilizaçã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 FracosTodo 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 AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
CouchDB
Figura: Arquitetura CouchDB
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
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 epara as páginas de download de todos os projetos. Há um lista extensa das soluçõesem http://www.mongodb.org/display/DOCS/Production+Deployments
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
MongoDB
Pontos FortesVasta gama de Queries dinâmicas
Replicação de dados
E�ciente para armazenamento de grandes objetos (imagens, vídeos)
Escalonamento horizontal (auto-sharding) em breve
Pontos FracosReplicação somente entre 2 nodes
Vários pontos de SPOF
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
MongoDB
Figura: Arquitetura MongoDB
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
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 websitehttp://lloogg.com com informações do cliente.
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
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 FracosTodos 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 AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
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 quenecessitem maiores velocidades. Esta em versão robusta e estávelsendo usado por várias empresas dentre as quais se destaca acriadora do sistema, livejournal.com.
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
Memcache
Pontos Fortes
Extremamente rápido nas escritas/leituras
Pode-se inserir nova máquina em live mode com distribuiçãos de dados (bastarodar daemon)
Pode funcionar como second layer cache do hibernate para aumentar avelocidade
Possui biblioteca de integração com PostgreSQL (procedure e triggers acessamo memcache diretamente)
Integração similar para o MySQL
Inexistência de SPOF (falha na máquina causa faz com que o BD sejarequisitado 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 AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
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) commais de 10 000 udpates por segundo utilizando memcache.
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
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 FracosPouca documentação
Sem muitos casos de uso
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
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 AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
ThruDB
Pontos FortesPossui boa integração para ser usado com Amaxon S3
Parece ser escolha melhor para usar com Amazon EC2 ao invés de CouchDB
Pontos FracosPouca documentação
Sem muitos casos de uso
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
ThruDB
Figura: Integração com Amazon S3
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala
Problema AtualNova GeraçãoQuando UsarPlayers Atuais
Lista de soluçõesAnálise de Soluções
Contato
Luís Carlos Dill [email protected]
Luís Carlos Dill Junges Sistemas de Armazenamento de Larga Escala