distributed databases overview

33

Upload: teste999

Post on 30-Jun-2015

724 views

Category:

Documents


2 download

DESCRIPTION

This document gives an small overview of some currently available distributed databases. It includes the major players of this new database flavor

TRANSCRIPT

Page 1: Distributed Databases Overview

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

Page 2: Distributed Databases Overview

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

Page 3: Distributed Databases Overview

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

Page 4: Distributed Databases Overview

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

Page 5: Distributed Databases Overview

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

Page 6: Distributed Databases Overview

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

Page 7: Distributed Databases Overview

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

Page 8: Distributed Databases Overview

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

Page 9: Distributed Databases Overview

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

Page 10: Distributed Databases Overview

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

Page 11: Distributed Databases Overview

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

Page 12: Distributed Databases Overview

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

Page 13: Distributed Databases Overview

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

Page 14: Distributed Databases Overview

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

Page 15: Distributed Databases Overview

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

Page 16: Distributed Databases Overview

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

Page 17: Distributed Databases Overview

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

Page 18: Distributed Databases Overview

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

Page 19: Distributed Databases Overview

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

Page 20: Distributed Databases Overview

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

Page 21: Distributed Databases Overview

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

Page 22: Distributed Databases Overview

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

Page 23: Distributed Databases Overview

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

Page 24: Distributed Databases Overview

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

Page 25: Distributed Databases Overview

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

Page 26: Distributed Databases Overview

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

Page 27: Distributed Databases Overview

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

Page 28: Distributed Databases Overview

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

Page 29: Distributed Databases Overview

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

Page 30: Distributed Databases Overview

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

Page 31: Distributed Databases Overview

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

Page 32: Distributed Databases Overview

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

Page 33: Distributed Databases Overview

Problema AtualNova GeraçãoQuando UsarPlayers Atuais

Lista de soluçõesAnálise de Soluções

Contato

Luís Carlos Dill [email protected]

[email protected]

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