O documento discute bancos de dados NoSQL, incluindo sua escalabilidade horizontal sem limites, características como esquemas flexíveis e alta disponibilidade, exemplos de uso como sistemas com grandes quantidades de dados, e produtos populares como Cassandra, HBase, CouchDB e MongoDB.
Banco de Dados NoSQL: Escalabilidade de Dados sem Limites
1. Fulvio Longhi @jornaljava Banco de Dados NoSQL Escalabilidade de Dados sem Limites JornalJava.com Fev/2011
2. Informações Conceito Principais Características Exemplos Quem está Usando? Prós e Contras CAP Tipos de NoSQL DB Principais Produtos Casos Reais Inside NoSQL Referências Perguntas Agenda
3. A cada ano é criado quase 2x mais dados que o ano anterior (IDC 2007) Grandes sites viram que ACID não escala muito bem 99% dos casos de gargalo um sistema pelo IO (seja de rede ou de disco) Algumas Informações
4. E você acha que tem problemas com dados? Twitter ~ 1,2 milhões ops/sec (2010) Facebook ~ 500 milhões writes/day (2008) Google ~ 1 trilhão de páginas indexadas/day (2010)
5. NoSQL == “SQL” || “Not Only SQL” NoSQL == NoRDBMS também (geralmente) “ is a term used to designate database management systems that differ from classic relational database management systems in some way. These data stores may not require fixed table schemas, and usually avoid join operations and typically scale horizontally. ” (Wikipedia) Conceito
6. baixa latência suporte a falhas escalabilidade horizontal e dinâmica alta disponibilidade schemas flexiveis suporte a distribuição geográfica BAIXO CUSTO busca de dados através de heurística meta-index geralmente abrindo mão de: transação, locks, consistência, integridade (tarefas do RDBMS) queries complexas Principais Características
7. Escalabilidade: característica de aumentar sua capacidade para o seu sistema (seja de processamento, armazenamento ou IO) Escalabilidade Horizontal: escalar adicionando máquinas em paralelo (ex.: Cluster) desvantagens: sistemas e arquiteturas mais complexas Escalabilidade Vertical: escalar adicionando novos componentes na máquina (ex.: Aumentar memória) desvantagens: caro, e com limites físicos atingíveis Mas o que é Escalabilidade Horizontal?
8. sistemas com quantidade de dados massivo arquitetura essencialmente distribuída muitos servidores para suportar um sistema prover resultado de queries impossíveis de serem feitas com joins online sistema com mudanças constantes no schema Exemplos de Utilização
10. Prós alta disponibilidade escalabilidade horizontal baixo custo expansão dinâmico schemas flexíveis dados distribuídos semi-estruturados Prós e Contras
11. Contras queries dinâmicas limitadas consistência fica por conta do programa sem padrão sem controle de acesso Prós e Contras
13. Consistence - após a operação, o dado já está pronto pra consulta todos consultam os mesmos dados Availability - sempre disponível tolerante a falhas de máquinas individuais expansão sem downtime Partition Tolerance - os dados estão espalhados em várias máquinas (não apenas para leitura, mas para escrita também!) Teorema CAP
14. CA - RDBMS comuns (as vezes em pequenos Clusters) o único meio de escalar é verticalmente CP - Shard (Tabelas particionadas) se uma tabela estiver fora do ar, parte dos dados serão afetados programas mais complexos para manter a consistência AP - DNS, cache, NoSQL difícil manter consistência, resolver conflitos Combinações de CAP
15. Key/Value - no modelo de Distribuited Hash Table MemCached, Amazon S3, Google Storage, Azure DB, Yahoo Pnuts Column Store - pode-se buscar dados por key:column Apache Cassandra, Apache HBase, Amazon SimpleDB, Google DataStore Document Store - dados já sumarizados, geralmente com suporte a processamento batch mongodb, couchdb, TerraStore Graph DB - dados são agrupados conforme suas ligações Neo4j, InfoGrid, VertexDB, Tipos de NoSQL DB
16. MemCached usado para cache dados Transientes sem suporte a queries Principais Produtos
17. Cassandra e Hbase busca por índices pré-compilados consistência e transação por registro batch distribuído índice particionado suporte a datacenters distribuídos geograficamente Principais Produtos
18. CouchDB e MongoDB batch distribuído queries dinâmicas distribuídas (porém limitadas) suporte ao protocolo REST Principais Produtos
19. Twitter timeline == consolidação dos tweets tweet imutável. todos os dados do tweet são autocontidos (foto do perfil, @name, etc.) tweets da timeline são transientes 1 cópia do tweet é guardado no seu "perfil" e replicado async na timeline dos seus seguidores Descrições de Casos Reais
20. Facebook cada item do mural possui uma consolidação dos comentários desse item a cada atualização dos comentários de um item, ele é reescrito totalmente Descrições de Casos Reais
21. Google cópia de cada página web que é indexada emails do gmail anexos do gmail (truque da capacidade do gmail) Descrições de Casos Reais
23. Twitter, Google, Facebook deixaram de utilizar RDBMS? NÃO! Para sistemas internos e coisas mais simples ainda usam muito RDBMS, por causa de: maturidade manipulação de dados expertise RDBMS morreu?
25. Key/Valeu (Distributed Hash Table) Inside NoSQL D1 a b Qual a quantidade de servidores de dados? C1 c d D2 e f C2 g h ... ... Dn Cn M i j k
26. Key/Valeu (Distributed Hash Table) Inside NoSQL D1 a b C1 c d D2 Temos 8 servidores de dados e f C2 g h ... ... Dn Cn M i j k
27. Key/Valeu (Distributed Hash Table) Inside NoSQL D1 Bom, temos 8 servidores e o dado com chave “f” vai estar... (calcula) no servidor D2 a b C1 c d D2 e f C2 g h ... ... Dn Cn M i j k
28. Key/Valeu (Distributed Hash Table) Inside NoSQL D1 a b Quero o dado “f” C1 c d D2 e f C2 g h ... ... Dn Cn M i j k
29. Key/Valeu (Distributed Hash Table) Inside NoSQL D1 a b c d D2 e f C1 g h D9 C2 ... Chegou servidor novo! ... Dn Cn M i j k
30. Key/Valeu (Distributed Hash Table) Inside NoSQL D1 a b c d D2 e f C1 g h ReHash com 9 servidores agora! D9 C2 ... ... Dn Cn M i j k