mongodb: comparando a escalabilidade
TRANSCRIPT
MongoDB: comparando escalabilidade
Dr. Mauro Pichiliani ([email protected])@pichiliani
@databasecast
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!
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:
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!
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
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
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
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