mongodb: comparando a escalabilidade

8
MongoDB: comparando escalabilidade Dr. Mauro Pichiliani ([email protected]) @pichiliani @databasecast

Upload: pichiliani

Post on 14-Apr-2017

169 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: MongoDB: Comparando a escalabilidade

MongoDB: comparando escalabilidade

Dr. Mauro Pichiliani ([email protected])@pichiliani

@databasecast

Page 2: MongoDB: Comparando a escalabilidade

LANÇAMENTO: Livro de MongoDB Livro digial (EPUB) e impresso 129 páginas, 9 capítulos Para quem não conhece NADA de MongoDB ~ R$ 15,00 (digital) e R$ 46,03 (impresso) Clube de autores:

http://migre.me/uMvkM Amazon:

http://amzn.to/2bYKP5E Ajudem a divulgar nas redes sociais!

Page 3: MongoDB: Comparando a escalabilidade

Escalabilidade e particionamento Comparação de escalabilidade: foco no

particionamento Particionamento:

Não colocar todos os ovos em uma única cesta! (evitar ponto de falha) Ganhar desempenho com técnica dividir e conquistar (design de algoritmos)

Assunto complexo que precisa de muita discussão. Referências:

Page 4: MongoDB: Comparando a escalabilidade

Particionamento e distribuição Particionamento horizontal x vertical

Bancos SQL possuem diversos recursos: regras de particionamento (HASH, lista, intervalo), operações de partição, backup/restore, associação com tablespaces, filegroups e arquivos de dados

Bancos NoSQL associam particionamento com distribuição de dados!

Page 5: MongoDB: Comparando a escalabilidade

Particionamento com SQL SQL Server:

Partition function, partition schema Operações de partição (Slipt, Merge, etc) Cluster, replicação e alta disponibilidade por objeto/banco

Oracle: Cláusula PARTITION BY em CREATE/ALTER TABLE Lista, Hash e intervalo Subpartições Cluster, replicação e alta disponibilidade por objeto e banco

MySQL: Depende do engine utilizado Lista, Hash e intervalo Opção de indicar pasta do S.O. para guardar partições Cláusula PARTITION() do SELECT Cluster, replicação e alta disponibilidade por objeto

PostgreSQL: Implementação ad hoc com triggers, views, tabelas e constraints Cluster, replicação e alta disponibilidade por objeto

Page 6: MongoDB: Comparando a escalabilidade

Particionamento com NoSQL Bancos NoSQL implementam particionamento junto com distribuição de dados para

escalabilidade e performance (tipicamente na núvem)

Em geral é preciso implementar separadamente replicação por banco/instância para garantir tolerância a falhas

MongoDB: Sharding (shard key e shard index) Distribuição automática de documentos entre nós Servidores mongod, mongos e servidor de configuração Complementar com replicação para tolerância a falhas

Cassandra: Termo cluster é utilizado para particionamento e distribuição Particionamento aleatório (round robin) e ordenado Faz um hash por linha (algoritmo MD5) e distribui entre nós É preciso complementar Cassandra com replicação para tolerância a falhas

Page 7: MongoDB: Comparando a escalabilidade

Comparação de particionamento

Banco de dados Tipo departicionamento Flexibilidade Dificuldade de

implementaçãoAmbiente

distribuído

SQL Server 2016 Intervalo Baixa Média Não

Oracle 12c Intervalo, Lista, HASH Média Alta Não

MySQL 5.7 Intervalo, Lista, HASH, Hash linear Média Alta Não

PostgreSQL 9.5 Todos Alta Alta Não

MongoDB 3.0 HASH Baixa Média Sim

Cassandra 2.0.7 Intervalo e HASH Média Baixa Sim

Page 8: MongoDB: Comparando a escalabilidade

Conclusão Particionamento é importante para escalabilidade Bancos SQL possuem particionamento separado de alta

disponibilidade, distribuição de dados e recursos para performance

Bancos NoSQL associam particionamento com distribuição de dados e precisão de replicação para alta disponibilidade

Implementação requer mudança em objetos (SQL) e configuração de servidores (NoSQL)

Dificuldade varia de acordo com requisitos e implementação do banco

É possível implementar alta disponibilidade, balanceamento de carga (performance) e tolerância a falhas em bancos SQL e NoSQL