Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

Share

SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos - Adamo Tonete

Download to read offline

Neste bate papo vamos discutir quais as vantagens de cada banco de dados no mundo real. Quando devemos utilizar o NoSQL ao invés do SQL ou vice-versa comparando os principais bancos de dados open source de cada segmento, o MongoDB e o MySQL

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos - Adamo Tonete

  1. 1. SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos
  2. 2. Agenda ● Definição de MongoDB e MySQL ● Conceitos de bancos relacionais e não relacionais ● Principais diferenças entre o MySQL e o MongoDB ● Similaridades ● Query Language; ● Comparação de performance ● Segurança; ● Melhores use cases ● Q&A
  3. 3. Sobre mim ● Adamo Tonete ○ MongoDB Support Engineer @Percona DBA Easy Taxi /adamotonete
  4. 4. MongoDB e MySQL
  5. 5. O que é MongoDB ● Document Oriented Database ● NoSQL ● Open source ● Banco de Dados NoSQL mais popular atualmente ● Alta performance
  6. 6. ● Relational Database Management System ● Segundo banco de dados mais popular de acordo com DBEngines ● Feito para ser utilizado com diferentes storage engines ● Suporta diferentes topologias de replicação O que é MySQL
  7. 7. Conceitos de NoSQL e Relacional
  8. 8. Conceito de Banco de Dados Um gerenciador de banco de dados é organizado da seguinte maneira ● Dados ● Schema ● Tabelas ● Query Language ● Relatórios ● Views ● Other elements.
  9. 9. Conceito de Banco de Dados Relacionais ● Foram escritos na época de 1970 ● Linhas e atributos definem relações entre tabelas ● Dados Normalizados ● SQL Language ● Procedures ● Triggers ● Foreign keys ● Transações - ACID
  10. 10. Conceitos de Bancos de Dados não relacionais ● Primeiros NoSQL surgiram no começo dos anos 2000s; ● Conceito de não relacional, sem tabelas ou relações entre elas; ● Não utiliza padrão T-SQL ● Criado para encaixar-se melhor com linguagens mais novas ● De fácil desenvolvimento
  11. 11. Principais diferenças entre MongoDB e MySQL
  12. 12. Diferenças entre MongoDB e MySQL ● Algumas das features que vamos comparar ○ Normalização ○ Transações ○ Linguagem de consulta ○ Forma de salvar dados no disco (storage engine) ○ Diferenças de indexes ○ Modo de escalar e distribuir o banco de dados (HA)
  13. 13. MongoDB e MySQL são diferentes? ● NoSQL e SQL não são inimigos ○ Eles são complementos um dos outros ● Enquanto o MongoDB é um banco de dados relativamente novo O MySQL já é um banco de dados relacional consolidado no mercado. ● Para alguns use-cases MongoDB como principal Banco de dados não é a melhor coisa a se fazer. ● No entanto, o MongoDB pode oferecer uma facilidade muito grande para startups e metodologias ágeis.
  14. 14. MongoDB e MySQL são diferentes? ● Comparando distribuição de dados ○ MongoDB é projetado para manipular altas cargas de dados ○ MySQL pode ser shardeado utilizando alguns add-ons ○ MySQL foi a princípio desenvolvido para funcionar numa máquina apenas
  15. 15. Normalização ● MongoDB sugere boas práticas para salvar seus dados mas não o força a fazer isso. ● MySQL por outro lado força um schema pré-definido onde na maioria dos bancos é utilizado a 3 forma normal para evitar duplicação de dados. Normalização
  16. 16. Normalização
  17. 17. { "_id" : ObjectId("507f1f77bcf86cd799439011"), "studentID" : 100, "firstName" : "Jonathan", "middleName" : "Eli", "lastName" : "Tobin", "classes" : [ { "courseID" : "PHY101", "grade" : "B", "courseName" : "Physics 101", "credits" : 3 }, { "courseID" : "BUS101", "grade" : "B+", "courseName" : "Business 101", "credits" : 3 } ] Normalização
  18. 18. ACID ● O que é ACID ○ Atomicidade ○ Consistência ○ Isolamento ○ Durabilidade
  19. 19. ● Como o ACID é representado no MySQL. ○ Atomicidade ■ Se autocommit=ON (default), todo comando é salvo imediatamente ■ Se não, COMMIT or ROLLBACK deve ser usado explicitamente ○ Consistencia ■ Utiliza doublewrite e crash recovery ○ Isolation ■ Diferente níveis de isolamento, RC, RU ○ Durabilidade ■ Existem várias configurações, sendo as principais innodb_flush_log_at_trx_commit and sync_binlog ACID
  20. 20. ● Como ACID é representada no MongoDB? ○ Atomicidade ■ Documento é atômico ○ Consistência ■ primário = garantida ■ secondários = depende do write Concern ○ Isolamento ■ Não é 100% podendo forçar com $snapshot ○ Durabilidade ■ configurável w:majority and/or j:true ACID
  21. 21. CAP theorem - MongoDB ● Teorema CAP foi proposto por Eric Allen em 2000 ● Um sistema distribuído não pode ter 3 garantias ao mesmo tempo. Uma deve ser sacrificado
  22. 22. CAP theorem - MongoDB A PC ● Consistência ● Disponibilidade ● Tolerancia a Particionamento Todos receberão a mesma resposta independente do nó.
  23. 23. ● Consistência ● Disponibilidade ● Tolerancia a Particionamento O sistema sempre responde os requests CAP theorem - MongoDB A PC
  24. 24. CAP theorem - MongoDB A PC ● Consistência ● Disponibilidade ● Tolerância a Particionamento Sistema pode se recuperar de um erro de rede ou máquina
  25. 25. CAP theorem - MongoDB A PC Relacional MySQL Postgres Cassandra Riaki MongoDB Redis
  26. 26. ● MySql contem tabelas pré definidas. ● Cada coluna pode ter um e somente um tipo de dados pre definido. ● Limites de tamanos de linhas/colunas ○ Colunas máximas numa tabela: 4096 ● SQL é uma linguagem declarativa ● Diversos conectores ○ https://www.mysql.com/products/connector/ Salvando e consultando dados
  27. 27. Salvando e consultando dados ● Diferentemente do MySQL o MongoDB não tem um schema pre-definido. ● Os documentos podem ter diferentes valores para as mesmas colunas {x : 1, y : ['test']} e {x : 'percona', y : ISODate('2018-01-01')} São validos.
  28. 28. ● MongoDB não utiliza-se de normalização, ao contrario de boas praticas do MySQL ● Todos os documentos devem conter o máximo de informação possível pois não há joins. ● Tamanho máximo de um documento é de 16MB Salvando e consultando dados
  29. 29. ● Replica-sets ● Cluster e shards ● Master Slave Comparando Topologias
  30. 30. ● O que é escalabilidade? ○ "Habilidade de adicionar mais recursos" ● Scale up (a.k.a.: verticalmente) ○ Melhorar hardware (máquina maior) ● Scale out (a.k.a.: horizontalmente) ○ Add mais instâncias Escalabilidade
  31. 31. ● MongoDB: ○ Utiliza sharding para escalar escritas ○ Utiliza secundários para escalar leituras ● MySQL: ○ Pode utilizar particionamento e "sharding" para escalar escritas (mas não tão fácil quanto o mongodb) ○ Utiliza escravos (secundários) para escalar leituras Scalability
  32. 32. Similaridades entre MongoDB e MySQL
  33. 33. ● Mas esses bancos de dados não são completamente diferentes ● Eles compartilham ○ Segurança ○ Indexes ○ Multi usuário/multi threaded ○ Concorrência Similaridades
  34. 34. ● Database terms and concept mapping Similaridades MySQL MongoDB Database Database Table Collection Row Document Column Key
  35. 35. Security: ● Diferentes níveis de segurança ● Roles Diferentes storage engines ● Ambos MongoDB e MySQL compartilham a ideia de storage plugável ● Os storages para MongoDB são: WiredTiger, MMAPv1, InMemory, RocksDB ● MySQL são: InnoDB, MyISAM, MyRocks, Memory, and many more Similaridades
  36. 36. Query Language
  37. 37. ● Vamos comparar brevemente os padrões de linguagem entre o MongoDB e o SQL, ○ Criar banco de dados ○ Criar tabela ○ Fazer um insert ○ Fazer um select ○ Como executar update ou delete ○ Joins (SQL) / $lookup mongodb Query Language
  38. 38. Query Language - MySQL
  39. 39. Query Language - MySQL
  40. 40. Query Language - MongoDB
  41. 41. ● NoSQL ● CQL ● Graph ● Javascript "NoSQL" Query Language
  42. 42. Segurança
  43. 43. ● Ambos os bancos de dados contém controle de usuário e de roles e bibliotecas para integração com LDAP, certificados. ● Percona Server for MongoDB e Percona Server for MySQL oferecem melhorias como auditoria em sua versão free. Segurança
  44. 44. ● MongoDB contém controle por roles desde a versão 2.4 ● Atualmente não é possível limitar acesso a campos de forma fácil. ● Plugin de auditoria (enterprise) Segurança - MongoDB
  45. 45. ● MySQL contém roles a partir da versão 8.0 ● Pode-se setar permissões a nível de banco de dados e colunas ● Podemos controlar actions em tabelas por meio de grants de: ○ CREATE ○ SELECT ○ INSERT ○ UPDATE ○ ... ● MySQL enterprise contém ○ LDAP authentication ○ Encryption ○ Audit Segurança - MySQL
  46. 46. Comparando Performance
  47. 47. Não existe como comparar a performance de ambos diretamente. Cada banco de dados tem sua particularidade Documentos são mais fáceis de trafegar, não existe o custo de um join. Lookups demoram uma eternidade em MongoDB. MySQL por outro lado faz joins com maestria e anos de experiência. Estamos comparando prego e parafuso aqui Performance
  48. 48. Conceitos genéricos para uma boa performance. ● Manter índices corretamente; ● Particionar ou excluir dados antigos para manter o banco de dados pequeno; ● Leia somente o necessário; ● Utilize discos rápidos quando nem todo o banco de dados cabe na RAM; ● Mais núcleos favorece queries em paralelo Performance
  49. 49. Qual é melhor?
  50. 50. ● Não existe uma resposta correta, apesar do MongoDB ser mais difundido em startups e empresas que utilizam metodologia ágeis MySQL - E relacionais - são muito fortes quando transações são requeridas https://www.percona.com/about-percona/customers https://www.percona.com/about-percona/case-studies Então qual é melhor?
  51. 51. Q&A
  52. 52. Q&A

Neste bate papo vamos discutir quais as vantagens de cada banco de dados no mundo real. Quando devemos utilizar o NoSQL ao invés do SQL ou vice-versa comparando os principais bancos de dados open source de cada segmento, o MongoDB e o MySQL

Views

Total views

1,306

On Slideshare

0

From embeds

0

Number of embeds

0

Actions

Downloads

16

Shares

0

Comments

0

Likes

0

×