SlideShare a Scribd company logo
1 of 52
SQL e NoSQL trabalhando juntos: uma comparação para obter o
melhor de ambos
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
Sobre mim
● Adamo Tonete
○ MongoDB Support Engineer @Percona
DBA Easy Taxi
/adamotonete
MongoDB e MySQL
O que é MongoDB
● Document Oriented Database
● NoSQL
● Open source
● Banco de Dados NoSQL mais popular atualmente
● Alta performance
● 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
Conceitos de NoSQL e Relacional
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.
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
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
Principais diferenças entre MongoDB e MySQL
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)
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.
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
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
Normalização
{
"_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
ACID
● O que é ACID
○ Atomicidade
○ Consistência
○ Isolamento
○ Durabilidade
● 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
● 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
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
CAP theorem - MongoDB
A
PC
● Consistência
● Disponibilidade
● Tolerancia a Particionamento
Todos receberão a mesma resposta
independente do nó.
● Consistência
● Disponibilidade
● Tolerancia a Particionamento
O sistema sempre responde os requests
CAP theorem - MongoDB
A
PC
CAP theorem - MongoDB
A
PC
● Consistência
● Disponibilidade
● Tolerância a Particionamento
Sistema pode se recuperar de um erro
de rede ou máquina
CAP theorem - MongoDB
A
PC
Relacional
MySQL
Postgres
Cassandra
Riaki
MongoDB
Redis
● 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
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.
● 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
● Replica-sets
● Cluster e shards
● Master Slave
Comparando Topologias
● 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
● 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
Similaridades entre MongoDB e MySQL
● Mas esses bancos de dados não são completamente diferentes
● Eles compartilham
○ Segurança
○ Indexes
○ Multi usuário/multi threaded
○ Concorrência
Similaridades
● Database terms and concept mapping
Similaridades
MySQL MongoDB
Database Database
Table Collection
Row Document
Column Key
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
Query Language
● 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
Query Language - MySQL
Query Language - MySQL
Query Language - MongoDB
● NoSQL
● CQL
● Graph
● Javascript
"NoSQL" Query Language
Segurança
● 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
● 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
● 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
Comparando Performance
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
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
Qual é melhor?
● 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?
Q&A
Q&A

More Related Content

What's hot

Aula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosAula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosRafael Albani
 
Banco de dados distribuídos mnt bd
Banco de dados distribuídos mnt bdBanco de dados distribuídos mnt bd
Banco de dados distribuídos mnt bdM Serafim
 
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Leinylson Fontinele
 
Banco de Dados I Aula 02 - Introdução aos Bancos de Dados
Banco de Dados I  Aula 02 - Introdução aos Bancos de DadosBanco de Dados I  Aula 02 - Introdução aos Bancos de Dados
Banco de Dados I Aula 02 - Introdução aos Bancos de DadosLeinylson Fontinele
 
Banco de Dados - Part01
Banco de Dados - Part01Banco de Dados - Part01
Banco de Dados - Part01Rangel Javier
 
Big Data, o que é isso?
Big Data, o que é isso?Big Data, o que é isso?
Big Data, o que é isso?Ambiente Livre
 
Características do jornalismo digital
Características do jornalismo digitalCaracterísticas do jornalismo digital
Características do jornalismo digitalLaércio Góes
 
Agile Data Engineering - Intro to Data Vault Modeling (2016)
Agile Data Engineering - Intro to Data Vault Modeling (2016)Agile Data Engineering - Intro to Data Vault Modeling (2016)
Agile Data Engineering - Intro to Data Vault Modeling (2016)Kent Graziano
 
Preparatório Santa Biblioteconomia - Foco UFF e Aeronáutica - Aula 2
Preparatório Santa Biblioteconomia - Foco UFF e Aeronáutica - Aula 2Preparatório Santa Biblioteconomia - Foco UFF e Aeronáutica - Aula 2
Preparatório Santa Biblioteconomia - Foco UFF e Aeronáutica - Aula 2Thalita Gama
 
Ciência de Dados: a revolução na tomada de decisões
Ciência de Dados: a revolução na tomada de decisõesCiência de Dados: a revolução na tomada de decisões
Ciência de Dados: a revolução na tomada de decisõesMarlesson Santana
 
Ciência de Dados: a revolução na tomada de decisões
Ciência de Dados: a revolução na tomada de decisõesCiência de Dados: a revolução na tomada de decisões
Ciência de Dados: a revolução na tomada de decisõesMarlesson Santana
 
Banco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoBanco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoLeinylson Fontinele
 
Is the traditional data warehouse dead?
Is the traditional data warehouse dead?Is the traditional data warehouse dead?
Is the traditional data warehouse dead?James Serra
 

What's hot (20)

Banco de Dados - NoSQL
Banco de Dados - NoSQLBanco de Dados - NoSQL
Banco de Dados - NoSQL
 
Aula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosAula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de Dados
 
Banco de dados distribuídos mnt bd
Banco de dados distribuídos mnt bdBanco de dados distribuídos mnt bd
Banco de dados distribuídos mnt bd
 
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
Banco de Dados I - Aula 11 - Linguagem de Consulta SQL (Comandos DDL)
 
Banco de Dados I Aula 02 - Introdução aos Bancos de Dados
Banco de Dados I  Aula 02 - Introdução aos Bancos de DadosBanco de Dados I  Aula 02 - Introdução aos Bancos de Dados
Banco de Dados I Aula 02 - Introdução aos Bancos de Dados
 
Banco de Dados - Part01
Banco de Dados - Part01Banco de Dados - Part01
Banco de Dados - Part01
 
Big Data - Conceitos Básicos
Big Data - Conceitos BásicosBig Data - Conceitos Básicos
Big Data - Conceitos Básicos
 
Big Data, o que é isso?
Big Data, o que é isso?Big Data, o que é isso?
Big Data, o que é isso?
 
Características do jornalismo digital
Características do jornalismo digitalCaracterísticas do jornalismo digital
Características do jornalismo digital
 
MongoDB e Bancos de Dados Orientados a Documentos
MongoDB e Bancos de Dados Orientados a DocumentosMongoDB e Bancos de Dados Orientados a Documentos
MongoDB e Bancos de Dados Orientados a Documentos
 
Agile Data Engineering - Intro to Data Vault Modeling (2016)
Agile Data Engineering - Intro to Data Vault Modeling (2016)Agile Data Engineering - Intro to Data Vault Modeling (2016)
Agile Data Engineering - Intro to Data Vault Modeling (2016)
 
Preparatório Santa Biblioteconomia - Foco UFF e Aeronáutica - Aula 2
Preparatório Santa Biblioteconomia - Foco UFF e Aeronáutica - Aula 2Preparatório Santa Biblioteconomia - Foco UFF e Aeronáutica - Aula 2
Preparatório Santa Biblioteconomia - Foco UFF e Aeronáutica - Aula 2
 
Introdução a Bancos de Dados
Introdução a Bancos de DadosIntrodução a Bancos de Dados
Introdução a Bancos de Dados
 
Ciência de Dados: a revolução na tomada de decisões
Ciência de Dados: a revolução na tomada de decisõesCiência de Dados: a revolução na tomada de decisões
Ciência de Dados: a revolução na tomada de decisões
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
Ciência de Dados: a revolução na tomada de decisões
Ciência de Dados: a revolução na tomada de decisõesCiência de Dados: a revolução na tomada de decisões
Ciência de Dados: a revolução na tomada de decisões
 
Banco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoBanco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e Especialização
 
Is the traditional data warehouse dead?
Is the traditional data warehouse dead?Is the traditional data warehouse dead?
Is the traditional data warehouse dead?
 
MongoDB Workshop
MongoDB WorkshopMongoDB Workshop
MongoDB Workshop
 
Servidor apache
Servidor apacheServidor apache
Servidor apache
 

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

Apostila NoSql.pdf
Apostila NoSql.pdfApostila NoSql.pdf
Apostila NoSql.pdfEizo Edson
 
Bancos de dados open source
Bancos de dados open sourceBancos de dados open source
Bancos de dados open sourceRodrigo Aurélio
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
 
Performance no MongoDB - TDC 2017 | Florianópolis
Performance no MongoDB - TDC 2017 | FlorianópolisPerformance no MongoDB - TDC 2017 | Florianópolis
Performance no MongoDB - TDC 2017 | FlorianópolisJefferson Martins de Andrade
 
Apresentação MongoDB
Apresentação MongoDBApresentação MongoDB
Apresentação MongoDBDavid de Lucca
 
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na WebMeritt - Cada Aluno é Único
 
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosBanco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosJoão Helis Bernardo
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2Flávio Lisboa
 
Introdução a NoSQL com MongoDB e FireDAC
Introdução a NoSQL com MongoDB e FireDAC Introdução a NoSQL com MongoDB e FireDAC
Introdução a NoSQL com MongoDB e FireDAC Fernando Rizzato
 
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Ambiente Livre
 
Apresentação new sql
Apresentação new sqlApresentação new sql
Apresentação new sqlw_barros
 

Similar to SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos - Adamo Tonete (20)

NoSql e NewSql
NoSql e NewSqlNoSql e NewSql
NoSql e NewSql
 
Apostila NoSql.pdf
Apostila NoSql.pdfApostila NoSql.pdf
Apostila NoSql.pdf
 
#1 Introdução ao MongoDB
#1   Introdução ao MongoDB#1   Introdução ao MongoDB
#1 Introdução ao MongoDB
 
Bancos de dados open source
Bancos de dados open sourceBancos de dados open source
Bancos de dados open source
 
Bancos de dados NoSQL
Bancos de dados NoSQLBancos de dados NoSQL
Bancos de dados NoSQL
 
Utilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentesUtilizando NoSQL no desenvolvimento de soluções inteligentes
Utilizando NoSQL no desenvolvimento de soluções inteligentes
 
Performance no MongoDB - TDC 2017 | Florianópolis
Performance no MongoDB - TDC 2017 | FlorianópolisPerformance no MongoDB - TDC 2017 | Florianópolis
Performance no MongoDB - TDC 2017 | Florianópolis
 
Apresentação MongoDB
Apresentação MongoDBApresentação MongoDB
Apresentação MongoDB
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
 
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosBanco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
 
NoSQL com Zend Framework 2
NoSQL com Zend Framework 2NoSQL com Zend Framework 2
NoSQL com Zend Framework 2
 
Introdução a NoSQL com MongoDB e FireDAC
Introdução a NoSQL com MongoDB e FireDAC Introdução a NoSQL com MongoDB e FireDAC
Introdução a NoSQL com MongoDB e FireDAC
 
Palestra nosql
Palestra nosqlPalestra nosql
Palestra nosql
 
mongodb.pdf
mongodb.pdfmongodb.pdf
mongodb.pdf
 
Mongo db
Mongo dbMongo db
Mongo db
 
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
 
Apresentação new sql
Apresentação new sqlApresentação new sql
Apresentação new sql
 
Web Scale Data Management
Web Scale Data ManagementWeb Scale Data Management
Web Scale Data Management
 
Banco de dados nas nuvens - aula 1
Banco de dados nas nuvens - aula 1Banco de dados nas nuvens - aula 1
Banco de dados nas nuvens - aula 1
 

More from iMasters

O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroO que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroiMasters
 
Postgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio TellesPostgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio TellesiMasters
 
Por que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen MoraesPor que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen MoraesiMasters
 
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...iMasters
 
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesiMasters
 
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsArquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsiMasters
 
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...iMasters
 
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudDesenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudiMasters
 
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
 Use MDD e faça as máquinas trabalharem para você - Andreza Leite Use MDD e faça as máquinas trabalharem para você - Andreza Leite
Use MDD e faça as máquinas trabalharem para você - Andreza LeiteiMasters
 
Entendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita BernardesEntendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita BernardesiMasters
 
Backend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana ArnosBackend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana ArnosiMasters
 
Dicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato GroffeDicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato GroffeiMasters
 
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle MonteiroiMasters
 
Quem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio MaujorQuem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio MaujoriMasters
 
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaService Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaiMasters
 
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto PascuttiErros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto PascuttiiMasters
 
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...iMasters
 
Construindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina KarklisConstruindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina KarklisiMasters
 
Monitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe RegalgoMonitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe RegalgoiMasters
 
Clean Architecture - Elton Minetto
Clean Architecture - Elton MinettoClean Architecture - Elton Minetto
Clean Architecture - Elton MinettoiMasters
 

More from iMasters (20)

O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani MonteiroO que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
O que você precisa saber para modelar bancos de dados NoSQL - Dani Monteiro
 
Postgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio TellesPostgres: wanted, beloved or dreaded? - Fabio Telles
Postgres: wanted, beloved or dreaded? - Fabio Telles
 
Por que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen MoraesPor que minha query esta lenta? - Suellen Moraes
Por que minha query esta lenta? - Suellen Moraes
 
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
Relato das trincheiras: o dia a dia de uma consultoria de banco de dados - Ig...
 
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalvesORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
ORMs heróis ou vilões dentro da arquitetura de dados? - Otávio gonçalves
 
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra MartinsArquitetando seus dados na prática para a LGPD - Alessandra Martins
Arquitetando seus dados na prática para a LGPD - Alessandra Martins
 
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
O papel do DBA no mundo de ciência de dados e machine learning - Mauro Pichil...
 
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana ChahoudDesenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
Desenvolvimento Mobile Híbrido, Nativo ou Web: Quando usá-los - Juliana Chahoud
 
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
 Use MDD e faça as máquinas trabalharem para você - Andreza Leite Use MDD e faça as máquinas trabalharem para você - Andreza Leite
Use MDD e faça as máquinas trabalharem para você - Andreza Leite
 
Entendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita BernardesEntendendo os porquês do seu servidor - Talita Bernardes
Entendendo os porquês do seu servidor - Talita Bernardes
 
Backend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana ArnosBackend performático além do "coloca mais máquina lá" - Diana Arnos
Backend performático além do "coloca mais máquina lá" - Diana Arnos
 
Dicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato GroffeDicas para uma maior performance em APIs REST - Renato Groffe
Dicas para uma maior performance em APIs REST - Renato Groffe
 
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
7 dicas de desempenho que equivalem por 21 - Danielle Monteiro
 
Quem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio MaujorQuem se importa com acessibilidade Web? - Mauricio Maujor
Quem se importa com acessibilidade Web? - Mauricio Maujor
 
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da SilvaService Mesh com Istio e Kubernetes - Wellington Figueira da Silva
Service Mesh com Istio e Kubernetes - Wellington Figueira da Silva
 
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto PascuttiErros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
Erros: Como eles vivem, se alimentam e se reproduzem? - Augusto Pascutti
 
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...Elasticidade e engenharia de banco de dados para alta performance  - Rubens G...
Elasticidade e engenharia de banco de dados para alta performance - Rubens G...
 
Construindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina KarklisConstruindo aplicações mais confiantes - Carolina Karklis
Construindo aplicações mais confiantes - Carolina Karklis
 
Monitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe RegalgoMonitoramento de Aplicações - Felipe Regalgo
Monitoramento de Aplicações - Felipe Regalgo
 
Clean Architecture - Elton Minetto
Clean Architecture - Elton MinettoClean Architecture - Elton Minetto
Clean Architecture - Elton Minetto
 

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

  • 1. SQL e NoSQL trabalhando juntos: uma comparação para obter o melhor de ambos
  • 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. Sobre mim ● Adamo Tonete ○ MongoDB Support Engineer @Percona DBA Easy Taxi /adamotonete
  • 5. O que é MongoDB ● Document Oriented Database ● NoSQL ● Open source ● Banco de Dados NoSQL mais popular atualmente ● Alta performance
  • 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. Conceitos de NoSQL e Relacional
  • 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. 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. 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. Principais diferenças entre MongoDB e MySQL
  • 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. 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. 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. 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
  • 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. ACID ● O que é ACID ○ Atomicidade ○ Consistência ○ Isolamento ○ Durabilidade
  • 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. ● 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. 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. CAP theorem - MongoDB A PC ● Consistência ● Disponibilidade ● Tolerancia a Particionamento Todos receberão a mesma resposta independente do nó.
  • 23. ● Consistência ● Disponibilidade ● Tolerancia a Particionamento O sistema sempre responde os requests CAP theorem - MongoDB A PC
  • 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. CAP theorem - MongoDB A PC Relacional MySQL Postgres Cassandra Riaki MongoDB Redis
  • 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. 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. ● 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. ● Replica-sets ● Cluster e shards ● Master Slave Comparando Topologias
  • 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. ● 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
  • 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. ● Database terms and concept mapping Similaridades MySQL MongoDB Database Database Table Collection Row Document Column Key
  • 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
  • 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
  • 40. Query Language - MongoDB
  • 41. ● NoSQL ● CQL ● Graph ● Javascript "NoSQL" Query Language
  • 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. ● 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. ● 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
  • 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. 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
  • 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. Q&A
  • 52. Q&A

Editor's Notes

  1. AT
  2. AG give brief summary on each point
  3. AT/AG
  4. AT
  5. AG RDBMS -> can be thought of in terms of "strongly typed" vs "loosely typed" in Mongo all data is represented in terms of tuples, grouped into relations popularity doesn't mean it's better or worse, but it gives a good idea on adoption (maturity, "battle" tested, etc) and potentially more sources of information from which to learn from SEs give flexibility, but also add more complexity there are many options to choose from, so it can be
  6. AG
  7. Atomicidade Consistencia Isolamento Durabilidade
  8. AT (we are going to discuss CAP it later) Document Key Value Time series Graphs database Strict schema
  9. *** Distribiut AT
  10. AT
  11. AT/AG Explain that there are technologies on MySQL that can support writes in many nodes, but they have their disadvantages: multimaster replication and PXC
  12. AG
  13. AG
  14. Lemme now shoiou. What a document looks like in mongodb. AT
  15. transactions should function as a single, indivisible unit of work the database should always move from one consistent state to the next the results of a transaction are (usually) invisible to other transactions until the transaction is finished once committed, a transaction's changes are permanent
  16. AGUSTIN we can use START TRANSACTION or BEGIN if autocommit=ON and we want multi-statement transactions interesting to mention that the manual talks about "losing up to one second worth of transactions"... but how many transactions can that be?
  17. AGUSTIN
  18. 3 minutes - Adamo CAP theorem was proposed by Eric Allen in 2000 2 out of 3 guarantess One must be sacrificed Availability replication of datas acrross machines Consistences Avaiability Partition Tolerance = Cassandra Consistence Partition Tolerance = MongoDB Consistence Availability = Normal Databases Ca doesn't have resilience https://www.youtube.com/watch?v=k1dtA14EYrk
  19. 3 minutes - Adamo CAP theorem was proposed by Eric Allen in 2000 2 out of 3 guarantess One must be sacrificed Availability replication of datas acrross machines Consistences Avaiability Partition Tolerance = Cassandra Consistence Partition Tolerance = MongoDB Consistence Availability = Normal Databases Ca doesn't have resilience https://www.youtube.com/watch?v=k1dtA14EYrk
  20. 3 minutes - Adamo CAP theorem was proposed by Eric Allen in 2000 2 out of 3 guarantess One must be sacrificed Availability replication of datas acrross machines Consistences Avaiability Partition Tolerance = Cassandra Consistence Partition Tolerance = MongoDB Consistence Availability = Normal Databases Ca doesn't have resilience https://www.youtube.com/watch?v=k1dtA14EYrk
  21. 3 minutes - Adamo CAP theorem was proposed by Eric Allen in 2000 2 out of 3 guarantess One must be sacrificed Availability replication of datas acrross machines Consistences Avaiability Partition Tolerance = Cassandra Consistence Partition Tolerance = MongoDB Consistence Availability = Normal Databases Ca doesn't have resilience https://www.youtube.com/watch?v=k1dtA14EYrk
  22. 3 minutes - Adamo CAP theorem was proposed by Eric Allen in 2000 2 out of 3 guarantess One must be sacrificed Availability replication of datas acrross machines Consistences Avaiability Partition Tolerance = Cassandra Consistence Partition Tolerance = MongoDB Consistence Availability = Normal Databases Ca doesn't have resilience https://www.youtube.com/watch?v=k1dtA14EYrk
  23. Agustin InnoDB columns -> 1,000 InnoDB row length -> "slightly less" than half a page (by default a page is 16Kb) talk about query optimizer a bit
  24. AT 30 seconds to 1 minute Talk about query optimizer How the indexes behaves when there are different data types
  25. AT
  26. X
  27. For most of the cases mongodb will prefer scale out, which is not the same for mysql X
  28. X Machine costs If we want to scale MongoDB, we can simple add more machines For MySQL this is not always true Compare mongodb and MySQL ways to scale out and UP
  29. AT Several other databases concepts/tools like backups, restore, export import
  30. AT
  31. AG/AT User roles only on MySQL 8.0+
  32. AG 30 seconds to 1 minute
  33. AG
  34. AG
  35. AG
  36. AT
  37. Standard for nosql databases AT
  38. AT
  39. AT
  40. AG
  41. X
  42. X
  43. MYSQL vs MongoDB - AG/AT Come with examples here like A bank will never use mongodb as the main financial database Mention that our customers use both Some for web and some for financial stuff like opensky for example
  44. 5 minutes