SlideShare a Scribd company logo
1 of 21
1
Comparação de desempenho
entre bancos SQL e NoSQL
Msc. Mauro Pichiliani (@pichiliani)
mauro@pichiliani.com.br
2
Quem sou eu
• Mestre e doutorando em computação pelo ITA
• Escritor da SQL Magazine, Fórum Access, Java
Magazine, SQLServerCentral.com e outras
• Colaborador do iMasters há 10 anos
• Autor do livro “Conversando sobre banco de dados”
• Co-autor do podcast DatabaseCast
• 12 anos de experiência com programação e banco
de dados
3
Roteiro
• Bancos SQL e NoSQL
• Players
• Por quê comparar?
• Escopo da comparação
• Ambientes de testes
• Testes de desempenho
• Análise dos resultados
• Conclusão
Apresentação disponível em:
http://slideshare.net/pichiliani
4
Bancos SQL e NoSQL
 Sistemas Gerenciadores de Bancos de Dados Relacional (SGBDR):
 Armazenamento tabular (linhas e colunas)
 SQL é a linguagem padrão
 Suporte transacional
 Normalização e desnormalização
 Esquema rígido
 Abordagens NoSQL:
 Schema free design
 Nível de consistência variado (Consistency, Availability, Partition
tolerance)
 Suporta SQL, linguagens próprias e integração com ling. programação
 Diferentes formas de armazenamento:
 Grafos
 Documentos
 Chave/valor
 Colunar
 Mundo SQL: Oracle, SQL Server, MySQL, PostgreSQL, DB2,
Sybase, SQLite, Firebird, etc
 Mundo NoSQL:
Grafos (Neo4J)
Documentos (MongoDB e CouchDB)
Chave/Valor (Redis, Cassandra e Riak)
Colunar (HBase, BigTable e Hadoop)
 Suporte ao Windows/Linux
 Restrição de comparações e estudos no EULA
 Teste padrão da indústrica TPC (Transaction Processing
Performance Council)
5
Players
6
Por quê comparar?
 NoSQL é encarado com cautela (SQL é muito tradicional)
 Comparação pode ajudar a tomada de decisão
 Um dos principais aspectos na escolha de banco de dados:
desempenho de execução de instruções que manipulam dados
 A comparação deve:
 Ser baseada em um cenário específico
 Rigor científico
 Possuir critérios e valores comparativos
 Confiança e tratamento estatístico
 Comparações ‘informais’ não formam um argumento válido:
 Não descrevem o ambiente e protocolo de experimento
 Não há tratamento estatístico
 Replicação e auditoria dificuldada
 Muito viés e dados qualitativos
 Não é representativo do cenário comum de uso do BD
7
Escopo da comparação
 Medir tempo de execução de instruções para inserir, alterar, excluir e
processar dados
 Comparação justa: bancos devem realizar a mesma tarefa (acessar
linhas e colunas dos dados)
 Mundo SQL: MySQL e PostgreSQL (devido à licença)
 Mudo NoSQL: apenas bancos que trabalham com documentos
(MongoDB e CouchDB)
 CouchDB não permite agregação de múltiplas colunas
 Neo4J, Redis, Cassandra, Riak, HBase, BigTable e Hadoop:
 Limitações para acesso de coluna individual
 Limitações para importação, alteração e processamento de
grandes quantidades de dados
 Falta de suporte no Windows e Linux
 Comparação apenas com uma instância (sem ambiente distribuído)
8
Ambiente de testes – Hardware e Software
 Hardware:
 Intel Core i950 (4 core @ 3.06 GHZ), 12GB RAM, 64KB Cache
L1, 256KB Cache L2, 8MB Cache L3, 1 TB SATA 2
 Virtualizado com o VMWare Workstation 8.0: 4 processadores
virtuais + 4GB RAM + 50 GB HD
 Software:
 PostgreSQL 9.1.5
 MySQL 5.5.25
 MongoDB 2.0.6
 Windows 2008 R2 +SP1 64 bits e RHEL 6 64 bits virtualizados
 Serviço de banco de dados exclusivo
 Ambiente, protoloco do experimento, dados e análises disponíveis no
site da revista SQL Magazine
9
Ambiente de testes – Dados
 Tabela/Coleção com 11 colunas/atributos: 1 int + 10 float
 Chave primária (índice clustered) na coluna int (sequêncial)
 Coluna _id interna do MongoDB
 Valores float aleatórios (entre 1,00 e 100.000,00)
 Número de linhas (N) variando de 100.000 a 1.000.000
 Nenhuma configuração especial no banco de dados
 Medição do tempo de execução:
 Ferramentas console: time (Linux) e ptime (Windows)
 MySQL: tempo retornado pela ferramenta mysql
 PostgreSQL: timing da ferramenta psql
 MongoDB: tempo real gravado no log do servidor mongod
 Tempos convertidos para segundo
 Espaço em disco alocado previamente (MySQL e PostgreSQL)
 Sem configurações de cache, lock, e parâmetros específicos
10
Testes de desempenho - Inserção
 Importação em massa de arquivos CSV (comma separated values)
 Ferramentas recomendadas:
 MySQL: LOAD DATA LOCAL INFILE…INTO TABLE…
 PostgreSQL: COPY…FROM
 MongoDB: utilitário mongoimport

 Teste:
 Importação de N linhas separadas por arquivos (n=100.000,
n=200.000, etc)
 Todos os arquivos na mesma pasta e disco do BD
 Log de transações adequado (50% acima do máximo)
 Para cada N o teste foi realizado 10 vezes
 Médias de tempo utilizados na comparação
 Melhor resultado: PostgreSQL no Linux e MySQL no Windows. Em média:
 No Linux: PostgreSQL 24,58% > MySQL e PostgreSQL 72,21% > MongoDB
 No Windows: MySQL 46,85% > PostgreSQL e MySQL 75,96% > MongoDB
 Na média geral o Linux foi 49,77% mais rápido que o Windows
11
Testes de desempenho – Resultado inserção
12
Testes de desempenho - Alteração
 Alteração das colunas float da tabela: incrementar em 1 o valor
 MySQL e PostgreSQL:
UPDATE <nome_tabela> SET C1 = C1 + 1,C2 = C2 + 1,C3 = C3 + 1,C4 = C4 +
1,C5 = C5 + 1,C6 = C6 + 1 ,C7 = C7 + 1,C8 = C8 + 1 ,C9 = C9 + 1,C10 = C10 + 1
WHERE ID > 0;
 MongoDB:
db.<nome_coleção>.update( {_id: {$gt: 0} }, {$inc: {c1:1, c2:1,c3:1, c4:1,
c5:1, c6:1, c7:1, c8:1, c9:1, c10:1} } ,true,true);
 Teste:
 Valores float adequados para evitar overflow (1,00 e 100.000,00)
 Log de transações adequado (50% acima do máximo)
 Para cada N o teste foi realizado 10 vezes
 Médias de tempo utilizados na comparação
 Melhor resultado: MySQL no Linux e MySQL no Windows. Em média:
 No Linux: MySQL 11,04% > PostgreSQL e MySQL 36,06% > MongoDB
 No Windows: MySQL 57% > PostgreSQL e MySQL 42,18% > MongoDB
 Na média geral o Linux foi 21,02% mais rápido que o Windows
13
Testes de desempenho – Resultado alteração
14
Testes de desempenho – Exclusão
 Apagar todas as linhas da tabela/documento
 MySQL e PostgreSQL: DELETE <nome_tabela>
 MongoDB: db.<nome_coleção>.remove({});
 Teste:
 Teste teórico: é possível remover a tabela e elimiar os dados ou
usar truncate (sem passar pelo log)
 Log de transações adequado (50% acima do máximo)
 Para cada N o teste foi realizado 10 vezes
 Médias de tempo utilizados na comparação
 Melhor resultado: PostgreSQL no Linux e MySQL no Windows. Em média:
 No Linux: PostgreSQL 1,48% > MySQL e PostgreSQL 14,12% > MongoDB
 No Windows: MySQL 47,98% > PostgreSQL e MySQL 28,61% > MongoDB
 Na média geral o Linux foi 28,59% mais rápido que o Windows
15
Testes de desempenho – Resultado exclusão
16
Testes de desempenho – Processamento
 Somar os valor para cara uma das 10 colunas float (sem agregar)
 MySQL e PostgreSQL:
select sum(c1),
sum(c2),sum(c3),sum(c4),sum(c5),sum(c6),sum(c7),sum(c8),sum(c9),sum(c10)
from <nome_tabela>;
 MongoDB:
db.<nome_coleção>.aggregate( {$group: { _id: null, c1_sum : { $sum :
"$c1" }, c2_sum : { $sum : "$c2"} , c3_sum : { $sum : "$c3"} , c4_sum :
{ $sum : "$c4"} , c5_sum : { $sum : "$c5"} , c6_sum : { $sum : "$c6"} ,
c7_sum : { $sum : "$c7"} , c8_sum : { $sum : "$c8"} , c9_sum : { $sum :
"$c9"} , c10_sum : { $sum : "$c10"} }} );
 Teste:
 Valores float adequados para evitar overflow (1,00 e 100.000,00)
 Para cada N o teste foi realizado 10 vezes
 Médias de tempo utilizados na comparação
 Melhor resultado: PostgreSQL no Linux e MySQL no Windows. Em média:
 No Linux: PostgreSQL 17,03% > MySQL e PostgreSQL 91,23% > MongoDB
 No Windows: MySQL 14,26% > PostgreSQL e MySQL 77,20% > MongoDB
 Na média geral o Linux foi 22% mais rápido que o Windows
17
Testes de desempenho – Resultado processamento
18
Análise dos resultados - Geral
 PostgreSQL e MySQL tiveram melhor desempenho
 MongoDB requer conversão para formato JSON
 Linux teve melhor desempenho que o Windows
 Formato de arquivo ext4 x NTFS
 Recomendação: PostgreSQL no Linux e MySQL no Windows
 Memória virtual não foi usada em nenhum dos cenários de teste
 Processamento e memória não foi foram gargalo
 Tempos de conexão foram insignificantes
 Críticas:
 Virtualizador não foi versão enterprise (VMWare Worstation)
 Nenhum cuidado como Log de transações
 Testes apenas em ambiente não distribuído
 Descartar maior e menor resultado
Análise dos resultados - Tempos
Tarefa
Primeiro
colocado
Linux
Tempo
médio
Linux (s)
Primeiro
colocado
Windows
Tempo
Médio
Windows
(s)
Média
tempo
Linux
(s)
(todos)
Média
tempo
Windows (s)
(todos)
Inserção PostgreSQL 6,28 MySQL 11,14 12,94 25,76
Alteração PostgreSQL 4,54 MySQL 4,91 5,13 7,19
Exclusão MySQL 10,96 MySQL 11,43 14,13 17,89
Processamento PostgreSQL 0,28 MySQL 0,72 1,32 1,69
20
Conclusão
 Comparações científicas rigorosas fornecem envidências
sobre desempenho em bancos SQL e NoSQL
 Sempre considerar ambiente de software, hardware, dados e
características dos produtos em comparações
 Comparações de inclusão, alteração, exclusão e
processamento nivelam os bancos de dados
 Há evidências que sugerem melhor desempenho do
PostgreSQL e do MySQL em relação ao MongoDB
 Há evidência que sugerem melhor desempenho no Linux do
que no Windows
 Muitas técnicas de otimização podem ser aplicadas para
melhorar tempos de execução
 Não concorda com os resultados?
 Replique o experimento
21
Perguntas?
Mauro Pichiliani (@pichiliani)
mauro@pichiliani.com.br
databasecast@gmail.com

More Related Content

What's hot

NoSQL Familia de Colunas Monografia
NoSQL Familia de Colunas MonografiaNoSQL Familia de Colunas Monografia
NoSQL Familia de Colunas MonografiaAugusto Giles
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggersDaniel Maia
 
Dns name resolution process
Dns name resolution processDns name resolution process
Dns name resolution processkannanragothaman
 
Apresentacao Veeam Backup & Replication
Apresentacao Veeam Backup & ReplicationApresentacao Veeam Backup & Replication
Apresentacao Veeam Backup & ReplicationBlue Solutions
 
Segurança da informação
Segurança da informaçãoSegurança da informação
Segurança da informaçãoEmerson Rocha
 
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Leinylson Fontinele
 
Redes de Computadores - Aula 02
Redes de Computadores - Aula 02Redes de Computadores - Aula 02
Redes de Computadores - Aula 02thomasdacosta
 
Metodologia e Linguagem de Programação - Aula 1
Metodologia e Linguagem de Programação - Aula 1Metodologia e Linguagem de Programação - Aula 1
Metodologia e Linguagem de Programação - Aula 1Thyago Maia
 
Auditoria em tecnologia da informação
Auditoria em tecnologia da informaçãoAuditoria em tecnologia da informação
Auditoria em tecnologia da informaçãoFernando Palma
 
Banco de Dados Conceitos
Banco de Dados ConceitosBanco de Dados Conceitos
Banco de Dados ConceitosCleber Ramos
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPAricelio Souza
 
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)Gustavo Zimmermann
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScriptClaudio Gamboa
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasAdriano Teixeira de Souza
 
Banco de Dados - Transações e Controle de Concorrência
Banco de Dados - Transações e Controle de ConcorrênciaBanco de Dados - Transações e Controle de Concorrência
Banco de Dados - Transações e Controle de ConcorrênciaJuliano Padilha
 
Utilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggersUtilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggersDaniel Maia
 

What's hot (20)

NoSQL Familia de Colunas Monografia
NoSQL Familia de Colunas MonografiaNoSQL Familia de Colunas Monografia
NoSQL Familia de Colunas Monografia
 
Sistema acadêmico
Sistema acadêmicoSistema acadêmico
Sistema acadêmico
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggers
 
Dns name resolution process
Dns name resolution processDns name resolution process
Dns name resolution process
 
Apresentacao Veeam Backup & Replication
Apresentacao Veeam Backup & ReplicationApresentacao Veeam Backup & Replication
Apresentacao Veeam Backup & Replication
 
Segurança da informação
Segurança da informaçãoSegurança da informação
Segurança da informação
 
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
 
Redes de Computadores - Aula 02
Redes de Computadores - Aula 02Redes de Computadores - Aula 02
Redes de Computadores - Aula 02
 
Metodologia e Linguagem de Programação - Aula 1
Metodologia e Linguagem de Programação - Aula 1Metodologia e Linguagem de Programação - Aula 1
Metodologia e Linguagem de Programação - Aula 1
 
Auditoria em tecnologia da informação
Auditoria em tecnologia da informaçãoAuditoria em tecnologia da informação
Auditoria em tecnologia da informação
 
Modelos de base de dados
Modelos de base de dadosModelos de base de dados
Modelos de base de dados
 
Banco de Dados Conceitos
Banco de Dados ConceitosBanco de Dados Conceitos
Banco de Dados Conceitos
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAP
 
Aula 06 - TEP - Introdução SQLite
Aula 06 - TEP - Introdução SQLiteAula 06 - TEP - Introdução SQLite
Aula 06 - TEP - Introdução SQLite
 
Linguagem SQL
Linguagem SQLLinguagem SQL
Linguagem SQL
 
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
Banco de Dados II: Normalização de dados e as Formas Normais (aula 5)
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScript
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores Binárias
 
Banco de Dados - Transações e Controle de Concorrência
Banco de Dados - Transações e Controle de ConcorrênciaBanco de Dados - Transações e Controle de Concorrência
Banco de Dados - Transações e Controle de Concorrência
 
Utilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggersUtilizando views, stored procedures e triggers
Utilizando views, stored procedures e triggers
 

Viewers also liked

Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014Fernando Boaglio
 
NoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens ComputacionaisNoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens ComputacionaisCarlo Pires
 
Modelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência PoliglotaModelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência PoliglotaGlaucio Scheibel
 
NoSQL - Por que e quando usar?
NoSQL - Por que e quando usar?NoSQL - Por que e quando usar?
NoSQL - Por que e quando usar?Nico Steppat
 
Segurança da Informação e a utilização de Políticas de Segurança conforme a n...
Segurança da Informação e a utilização de Políticas de Segurança conforme a n...Segurança da Informação e a utilização de Políticas de Segurança conforme a n...
Segurança da Informação e a utilização de Políticas de Segurança conforme a n...Darly Goes
 
FISL12 - Redis e as facilidades de trabalhar com um banco de dados NoSQL
FISL12 - Redis e as facilidades de trabalhar com um banco de dados NoSQLFISL12 - Redis e as facilidades de trabalhar com um banco de dados NoSQL
FISL12 - Redis e as facilidades de trabalhar com um banco de dados NoSQLMaxwell Dayvson Da Silva
 
MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?Sébastien Prunier
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - ApresentaçãoTerra / Neo
 
MongoDB: introdução à sua próxima base de dados
MongoDB:  introdução à sua próxima base de dadosMongoDB:  introdução à sua próxima base de dados
MongoDB: introdução à sua próxima base de dadosJordan Kobellarz
 
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
 
Minicurso Epoca mongoDB
Minicurso Epoca mongoDBMinicurso Epoca mongoDB
Minicurso Epoca mongoDBLelyBarros
 
Mini-Curso de MongoDB
Mini-Curso de MongoDBMini-Curso de MongoDB
Mini-Curso de MongoDBBrunno Gomes
 
MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014Christiano Anderson
 
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...Rodrigo Cândido da Silva
 

Viewers also liked (20)

Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
Mais um comparativo MongoDB - Fernando Boaglio - abril.2014
 
NoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens ComputacionaisNoSQL x SQL: Bancos de Dados em Nuvens Computacionais
NoSQL x SQL: Bancos de Dados em Nuvens Computacionais
 
Modelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência PoliglotaModelos NoSQL e a Persistência Poliglota
Modelos NoSQL e a Persistência Poliglota
 
NoSQL - Por que e quando usar?
NoSQL - Por que e quando usar?NoSQL - Por que e quando usar?
NoSQL - Por que e quando usar?
 
Segurança da Informação e a utilização de Políticas de Segurança conforme a n...
Segurança da Informação e a utilização de Políticas de Segurança conforme a n...Segurança da Informação e a utilização de Políticas de Segurança conforme a n...
Segurança da Informação e a utilização de Políticas de Segurança conforme a n...
 
FISL12 - Redis e as facilidades de trabalhar com um banco de dados NoSQL
FISL12 - Redis e as facilidades de trabalhar com um banco de dados NoSQLFISL12 - Redis e as facilidades de trabalhar com um banco de dados NoSQL
FISL12 - Redis e as facilidades de trabalhar com um banco de dados NoSQL
 
MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?MongoDB et Elasticsearch, meilleurs ennemis ?
MongoDB et Elasticsearch, meilleurs ennemis ?
 
Banco de Dados - NoSQL
Banco de Dados - NoSQLBanco de Dados - NoSQL
Banco de Dados - NoSQL
 
MongoDB - Apresentação
MongoDB - ApresentaçãoMongoDB - Apresentação
MongoDB - Apresentação
 
Workshop MongoDB
Workshop MongoDBWorkshop MongoDB
Workshop MongoDB
 
NoSQL e MongoDB - ETEC
NoSQL e MongoDB - ETECNoSQL e MongoDB - ETEC
NoSQL e MongoDB - ETEC
 
MongoDB - Iniciando e Conhecendo
MongoDB - Iniciando e ConhecendoMongoDB - Iniciando e Conhecendo
MongoDB - Iniciando e Conhecendo
 
MongoDB: introdução à sua próxima base de dados
MongoDB:  introdução à sua próxima base de dadosMongoDB:  introdução à sua próxima base de dados
MongoDB: introdução à sua próxima base de dados
 
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
 
Palestra MongoDB
Palestra MongoDBPalestra MongoDB
Palestra MongoDB
 
NoSQL e MongoDB
NoSQL e MongoDBNoSQL e MongoDB
NoSQL e MongoDB
 
Minicurso Epoca mongoDB
Minicurso Epoca mongoDBMinicurso Epoca mongoDB
Minicurso Epoca mongoDB
 
Mini-Curso de MongoDB
Mini-Curso de MongoDBMini-Curso de MongoDB
Mini-Curso de MongoDB
 
MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014MongoDB - Tudo que você precisa saber - FGSL 2014
MongoDB - Tudo que você precisa saber - FGSL 2014
 
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
QCon SP 2016 - Construindo Microservices Auto-curáveis com Spring Cloud e Net...
 

Similar to Comparação de desempenho entre bancos SQL e NoSQL

Aplicando processamento paralelo em instruções SQL
Aplicando processamento paralelo em instruções SQLAplicando processamento paralelo em instruções SQL
Aplicando processamento paralelo em instruções SQLpichiliani
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLMatheus Espanhol
 
Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnapAndreano Lanusse
 
Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a Rômulo Jales
 
L'esprit de l'escalier
L'esprit de l'escalierL'esprit de l'escalier
L'esprit de l'escalierGleicon Moraes
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvccLocaweb
 
Precisamos falar sobre MERN stack
Precisamos falar sobre MERN stackPrecisamos falar sobre MERN stack
Precisamos falar sobre MERN stackSidney Roberto
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - IntroduçãoMarco Pinheiro
 
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Daniel Destro Do Carmo
 
SSD no banco de dados é bom mesmo?
SSD no banco de dados é bom mesmo?SSD no banco de dados é bom mesmo?
SSD no banco de dados é bom mesmo?pichiliani
 
Database Class - Pontos de defasagem e questões de brinde.
Database Class - Pontos de defasagem e questões de brinde.Database Class - Pontos de defasagem e questões de brinde.
Database Class - Pontos de defasagem e questões de brinde.Jann Claude Mousquer
 
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...Marcio Machado Pereira
 

Similar to Comparação de desempenho entre bancos SQL e NoSQL (20)

Aplicando processamento paralelo em instruções SQL
Aplicando processamento paralelo em instruções SQLAplicando processamento paralelo em instruções SQL
Aplicando processamento paralelo em instruções SQL
 
NoSql e NewSql
NoSql e NewSqlNoSql e NewSql
NoSql e NewSql
 
Funcionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQLFuncionalidades das versões 9.x do PostgreSQL
Funcionalidades das versões 9.x do PostgreSQL
 
Testando aplicações DataSnap
Testando aplicações DataSnapTestando aplicações DataSnap
Testando aplicações DataSnap
 
Azure Data Overview
Azure Data OverviewAzure Data Overview
Azure Data Overview
 
Uma implementação de suporte a
Uma implementação de suporte a Uma implementação de suporte a
Uma implementação de suporte a
 
L'esprit de l'escalier
L'esprit de l'escalierL'esprit de l'escalier
L'esprit de l'escalier
 
Introdução ao BD Postgre
Introdução ao BD PostgreIntrodução ao BD Postgre
Introdução ao BD Postgre
 
Isolamento e mvcc
Isolamento e mvccIsolamento e mvcc
Isolamento e mvcc
 
Precisamos falar sobre MERN stack
Precisamos falar sobre MERN stackPrecisamos falar sobre MERN stack
Precisamos falar sobre MERN stack
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - Introdução
 
Node.js: serious business
Node.js: serious businessNode.js: serious business
Node.js: serious business
 
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
Arquitetura de um sistema crítico de alta disponibilidade com soluções open s...
 
MAC5855 - NoSQL
MAC5855 - NoSQLMAC5855 - NoSQL
MAC5855 - NoSQL
 
SSD no banco de dados é bom mesmo?
SSD no banco de dados é bom mesmo?SSD no banco de dados é bom mesmo?
SSD no banco de dados é bom mesmo?
 
Introdução ao JDBC - BarreirasJUG
Introdução ao JDBC - BarreirasJUGIntrodução ao JDBC - BarreirasJUG
Introdução ao JDBC - BarreirasJUG
 
Database Class - Pontos de defasagem e questões de brinde.
Database Class - Pontos de defasagem e questões de brinde.Database Class - Pontos de defasagem e questões de brinde.
Database Class - Pontos de defasagem e questões de brinde.
 
No sql std
No sql stdNo sql std
No sql std
 
Apostila sql
Apostila sqlApostila sql
Apostila sql
 
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
[Pereira, IC'2013] Uma nova abordagem para detecção e extracao de paralelismo...
 

More from pichiliani

Rastreamento de Objetos em Realidade Virtual e Realidade Aumentada
Rastreamento de Objetos em Realidade Virtual e Realidade AumentadaRastreamento de Objetos em Realidade Virtual e Realidade Aumentada
Rastreamento de Objetos em Realidade Virtual e Realidade Aumentadapichiliani
 
Interfaces hands free para o mundo atual e pós-Corona vírus
Interfaces hands free para o mundo atual  e pós-Corona vírusInterfaces hands free para o mundo atual  e pós-Corona vírus
Interfaces hands free para o mundo atual e pós-Corona víruspichiliani
 
The Effect of Audiences On the User Experience of Conversational Interfaces i...
The Effect of Audiences On the User Experience of Conversational Interfaces i...The Effect of Audiences On the User Experience of Conversational Interfaces i...
The Effect of Audiences On the User Experience of Conversational Interfaces i...pichiliani
 
Machine Learning & Machine Teaching
Machine Learning & Machine TeachingMachine Learning & Machine Teaching
Machine Learning & Machine Teachingpichiliani
 
TJBot: Incorporando um chatbot em um robô
TJBot:  Incorporando um chatbot em um robôTJBot:  Incorporando um chatbot em um robô
TJBot: Incorporando um chatbot em um robôpichiliani
 
Carreira de cientista
Carreira de cientistaCarreira de cientista
Carreira de cientistapichiliani
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimentopichiliani
 
O papel do DBA no mundo de ciência de dados e machine learning
O papel do DBA no mundo de ciência de dados e machine learningO papel do DBA no mundo de ciência de dados e machine learning
O papel do DBA no mundo de ciência de dados e machine learningpichiliani
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowpichiliani
 
Alinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLAlinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLpichiliani
 
Python x R: mas e o Weka?
Python x R: mas e o Weka? Python x R: mas e o Weka?
Python x R: mas e o Weka? pichiliani
 
Rastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtualRastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtualpichiliani
 
MediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCastMediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCastpichiliani
 
Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015pichiliani
 
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...pichiliani
 
Evaluation of the Android Accessibility API Recognition Rate towards a Better...
Evaluation of the Android Accessibility API Recognition Rate towards a Better...Evaluation of the Android Accessibility API Recognition Rate towards a Better...
Evaluation of the Android Accessibility API Recognition Rate towards a Better...pichiliani
 
Como lidar com dados temporais e intervalos com a linguagem SQL
Como lidar com dados temporais e intervalos com a linguagem SQLComo lidar com dados temporais e intervalos com a linguagem SQL
Como lidar com dados temporais e intervalos com a linguagem SQLpichiliani
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimentopichiliani
 
Projeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement ApplicationProjeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement Applicationpichiliani
 
HTMA: Hand Tremor Measurement Application
HTMA: Hand Tremor Measurement ApplicationHTMA: Hand Tremor Measurement Application
HTMA: Hand Tremor Measurement Applicationpichiliani
 

More from pichiliani (20)

Rastreamento de Objetos em Realidade Virtual e Realidade Aumentada
Rastreamento de Objetos em Realidade Virtual e Realidade AumentadaRastreamento de Objetos em Realidade Virtual e Realidade Aumentada
Rastreamento de Objetos em Realidade Virtual e Realidade Aumentada
 
Interfaces hands free para o mundo atual e pós-Corona vírus
Interfaces hands free para o mundo atual  e pós-Corona vírusInterfaces hands free para o mundo atual  e pós-Corona vírus
Interfaces hands free para o mundo atual e pós-Corona vírus
 
The Effect of Audiences On the User Experience of Conversational Interfaces i...
The Effect of Audiences On the User Experience of Conversational Interfaces i...The Effect of Audiences On the User Experience of Conversational Interfaces i...
The Effect of Audiences On the User Experience of Conversational Interfaces i...
 
Machine Learning & Machine Teaching
Machine Learning & Machine TeachingMachine Learning & Machine Teaching
Machine Learning & Machine Teaching
 
TJBot: Incorporando um chatbot em um robô
TJBot:  Incorporando um chatbot em um robôTJBot:  Incorporando um chatbot em um robô
TJBot: Incorporando um chatbot em um robô
 
Carreira de cientista
Carreira de cientistaCarreira de cientista
Carreira de cientista
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimento
 
O papel do DBA no mundo de ciência de dados e machine learning
O papel do DBA no mundo de ciência de dados e machine learningO papel do DBA no mundo de ciência de dados e machine learning
O papel do DBA no mundo de ciência de dados e machine learning
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlow
 
Alinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLAlinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQL
 
Python x R: mas e o Weka?
Python x R: mas e o Weka? Python x R: mas e o Weka?
Python x R: mas e o Weka?
 
Rastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtualRastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtual
 
MediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCastMediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCast
 
Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015
 
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
 
Evaluation of the Android Accessibility API Recognition Rate towards a Better...
Evaluation of the Android Accessibility API Recognition Rate towards a Better...Evaluation of the Android Accessibility API Recognition Rate towards a Better...
Evaluation of the Android Accessibility API Recognition Rate towards a Better...
 
Como lidar com dados temporais e intervalos com a linguagem SQL
Como lidar com dados temporais e intervalos com a linguagem SQLComo lidar com dados temporais e intervalos com a linguagem SQL
Como lidar com dados temporais e intervalos com a linguagem SQL
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimento
 
Projeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement ApplicationProjeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement Application
 
HTMA: Hand Tremor Measurement Application
HTMA: Hand Tremor Measurement ApplicationHTMA: Hand Tremor Measurement Application
HTMA: Hand Tremor Measurement Application
 

Comparação de desempenho entre bancos SQL e NoSQL

  • 1. 1 Comparação de desempenho entre bancos SQL e NoSQL Msc. Mauro Pichiliani (@pichiliani) mauro@pichiliani.com.br
  • 2. 2 Quem sou eu • Mestre e doutorando em computação pelo ITA • Escritor da SQL Magazine, Fórum Access, Java Magazine, SQLServerCentral.com e outras • Colaborador do iMasters há 10 anos • Autor do livro “Conversando sobre banco de dados” • Co-autor do podcast DatabaseCast • 12 anos de experiência com programação e banco de dados
  • 3. 3 Roteiro • Bancos SQL e NoSQL • Players • Por quê comparar? • Escopo da comparação • Ambientes de testes • Testes de desempenho • Análise dos resultados • Conclusão Apresentação disponível em: http://slideshare.net/pichiliani
  • 4. 4 Bancos SQL e NoSQL  Sistemas Gerenciadores de Bancos de Dados Relacional (SGBDR):  Armazenamento tabular (linhas e colunas)  SQL é a linguagem padrão  Suporte transacional  Normalização e desnormalização  Esquema rígido  Abordagens NoSQL:  Schema free design  Nível de consistência variado (Consistency, Availability, Partition tolerance)  Suporta SQL, linguagens próprias e integração com ling. programação  Diferentes formas de armazenamento:  Grafos  Documentos  Chave/valor  Colunar
  • 5.  Mundo SQL: Oracle, SQL Server, MySQL, PostgreSQL, DB2, Sybase, SQLite, Firebird, etc  Mundo NoSQL: Grafos (Neo4J) Documentos (MongoDB e CouchDB) Chave/Valor (Redis, Cassandra e Riak) Colunar (HBase, BigTable e Hadoop)  Suporte ao Windows/Linux  Restrição de comparações e estudos no EULA  Teste padrão da indústrica TPC (Transaction Processing Performance Council) 5 Players
  • 6. 6 Por quê comparar?  NoSQL é encarado com cautela (SQL é muito tradicional)  Comparação pode ajudar a tomada de decisão  Um dos principais aspectos na escolha de banco de dados: desempenho de execução de instruções que manipulam dados  A comparação deve:  Ser baseada em um cenário específico  Rigor científico  Possuir critérios e valores comparativos  Confiança e tratamento estatístico  Comparações ‘informais’ não formam um argumento válido:  Não descrevem o ambiente e protocolo de experimento  Não há tratamento estatístico  Replicação e auditoria dificuldada  Muito viés e dados qualitativos  Não é representativo do cenário comum de uso do BD
  • 7. 7 Escopo da comparação  Medir tempo de execução de instruções para inserir, alterar, excluir e processar dados  Comparação justa: bancos devem realizar a mesma tarefa (acessar linhas e colunas dos dados)  Mundo SQL: MySQL e PostgreSQL (devido à licença)  Mudo NoSQL: apenas bancos que trabalham com documentos (MongoDB e CouchDB)  CouchDB não permite agregação de múltiplas colunas  Neo4J, Redis, Cassandra, Riak, HBase, BigTable e Hadoop:  Limitações para acesso de coluna individual  Limitações para importação, alteração e processamento de grandes quantidades de dados  Falta de suporte no Windows e Linux  Comparação apenas com uma instância (sem ambiente distribuído)
  • 8. 8 Ambiente de testes – Hardware e Software  Hardware:  Intel Core i950 (4 core @ 3.06 GHZ), 12GB RAM, 64KB Cache L1, 256KB Cache L2, 8MB Cache L3, 1 TB SATA 2  Virtualizado com o VMWare Workstation 8.0: 4 processadores virtuais + 4GB RAM + 50 GB HD  Software:  PostgreSQL 9.1.5  MySQL 5.5.25  MongoDB 2.0.6  Windows 2008 R2 +SP1 64 bits e RHEL 6 64 bits virtualizados  Serviço de banco de dados exclusivo  Ambiente, protoloco do experimento, dados e análises disponíveis no site da revista SQL Magazine
  • 9. 9 Ambiente de testes – Dados  Tabela/Coleção com 11 colunas/atributos: 1 int + 10 float  Chave primária (índice clustered) na coluna int (sequêncial)  Coluna _id interna do MongoDB  Valores float aleatórios (entre 1,00 e 100.000,00)  Número de linhas (N) variando de 100.000 a 1.000.000  Nenhuma configuração especial no banco de dados  Medição do tempo de execução:  Ferramentas console: time (Linux) e ptime (Windows)  MySQL: tempo retornado pela ferramenta mysql  PostgreSQL: timing da ferramenta psql  MongoDB: tempo real gravado no log do servidor mongod  Tempos convertidos para segundo  Espaço em disco alocado previamente (MySQL e PostgreSQL)  Sem configurações de cache, lock, e parâmetros específicos
  • 10. 10 Testes de desempenho - Inserção  Importação em massa de arquivos CSV (comma separated values)  Ferramentas recomendadas:  MySQL: LOAD DATA LOCAL INFILE…INTO TABLE…  PostgreSQL: COPY…FROM  MongoDB: utilitário mongoimport   Teste:  Importação de N linhas separadas por arquivos (n=100.000, n=200.000, etc)  Todos os arquivos na mesma pasta e disco do BD  Log de transações adequado (50% acima do máximo)  Para cada N o teste foi realizado 10 vezes  Médias de tempo utilizados na comparação
  • 11.  Melhor resultado: PostgreSQL no Linux e MySQL no Windows. Em média:  No Linux: PostgreSQL 24,58% > MySQL e PostgreSQL 72,21% > MongoDB  No Windows: MySQL 46,85% > PostgreSQL e MySQL 75,96% > MongoDB  Na média geral o Linux foi 49,77% mais rápido que o Windows 11 Testes de desempenho – Resultado inserção
  • 12. 12 Testes de desempenho - Alteração  Alteração das colunas float da tabela: incrementar em 1 o valor  MySQL e PostgreSQL: UPDATE <nome_tabela> SET C1 = C1 + 1,C2 = C2 + 1,C3 = C3 + 1,C4 = C4 + 1,C5 = C5 + 1,C6 = C6 + 1 ,C7 = C7 + 1,C8 = C8 + 1 ,C9 = C9 + 1,C10 = C10 + 1 WHERE ID > 0;  MongoDB: db.<nome_coleção>.update( {_id: {$gt: 0} }, {$inc: {c1:1, c2:1,c3:1, c4:1, c5:1, c6:1, c7:1, c8:1, c9:1, c10:1} } ,true,true);  Teste:  Valores float adequados para evitar overflow (1,00 e 100.000,00)  Log de transações adequado (50% acima do máximo)  Para cada N o teste foi realizado 10 vezes  Médias de tempo utilizados na comparação
  • 13.  Melhor resultado: MySQL no Linux e MySQL no Windows. Em média:  No Linux: MySQL 11,04% > PostgreSQL e MySQL 36,06% > MongoDB  No Windows: MySQL 57% > PostgreSQL e MySQL 42,18% > MongoDB  Na média geral o Linux foi 21,02% mais rápido que o Windows 13 Testes de desempenho – Resultado alteração
  • 14. 14 Testes de desempenho – Exclusão  Apagar todas as linhas da tabela/documento  MySQL e PostgreSQL: DELETE <nome_tabela>  MongoDB: db.<nome_coleção>.remove({});  Teste:  Teste teórico: é possível remover a tabela e elimiar os dados ou usar truncate (sem passar pelo log)  Log de transações adequado (50% acima do máximo)  Para cada N o teste foi realizado 10 vezes  Médias de tempo utilizados na comparação
  • 15.  Melhor resultado: PostgreSQL no Linux e MySQL no Windows. Em média:  No Linux: PostgreSQL 1,48% > MySQL e PostgreSQL 14,12% > MongoDB  No Windows: MySQL 47,98% > PostgreSQL e MySQL 28,61% > MongoDB  Na média geral o Linux foi 28,59% mais rápido que o Windows 15 Testes de desempenho – Resultado exclusão
  • 16. 16 Testes de desempenho – Processamento  Somar os valor para cara uma das 10 colunas float (sem agregar)  MySQL e PostgreSQL: select sum(c1), sum(c2),sum(c3),sum(c4),sum(c5),sum(c6),sum(c7),sum(c8),sum(c9),sum(c10) from <nome_tabela>;  MongoDB: db.<nome_coleção>.aggregate( {$group: { _id: null, c1_sum : { $sum : "$c1" }, c2_sum : { $sum : "$c2"} , c3_sum : { $sum : "$c3"} , c4_sum : { $sum : "$c4"} , c5_sum : { $sum : "$c5"} , c6_sum : { $sum : "$c6"} , c7_sum : { $sum : "$c7"} , c8_sum : { $sum : "$c8"} , c9_sum : { $sum : "$c9"} , c10_sum : { $sum : "$c10"} }} );  Teste:  Valores float adequados para evitar overflow (1,00 e 100.000,00)  Para cada N o teste foi realizado 10 vezes  Médias de tempo utilizados na comparação
  • 17.  Melhor resultado: PostgreSQL no Linux e MySQL no Windows. Em média:  No Linux: PostgreSQL 17,03% > MySQL e PostgreSQL 91,23% > MongoDB  No Windows: MySQL 14,26% > PostgreSQL e MySQL 77,20% > MongoDB  Na média geral o Linux foi 22% mais rápido que o Windows 17 Testes de desempenho – Resultado processamento
  • 18. 18 Análise dos resultados - Geral  PostgreSQL e MySQL tiveram melhor desempenho  MongoDB requer conversão para formato JSON  Linux teve melhor desempenho que o Windows  Formato de arquivo ext4 x NTFS  Recomendação: PostgreSQL no Linux e MySQL no Windows  Memória virtual não foi usada em nenhum dos cenários de teste  Processamento e memória não foi foram gargalo  Tempos de conexão foram insignificantes  Críticas:  Virtualizador não foi versão enterprise (VMWare Worstation)  Nenhum cuidado como Log de transações  Testes apenas em ambiente não distribuído  Descartar maior e menor resultado
  • 19. Análise dos resultados - Tempos Tarefa Primeiro colocado Linux Tempo médio Linux (s) Primeiro colocado Windows Tempo Médio Windows (s) Média tempo Linux (s) (todos) Média tempo Windows (s) (todos) Inserção PostgreSQL 6,28 MySQL 11,14 12,94 25,76 Alteração PostgreSQL 4,54 MySQL 4,91 5,13 7,19 Exclusão MySQL 10,96 MySQL 11,43 14,13 17,89 Processamento PostgreSQL 0,28 MySQL 0,72 1,32 1,69
  • 20. 20 Conclusão  Comparações científicas rigorosas fornecem envidências sobre desempenho em bancos SQL e NoSQL  Sempre considerar ambiente de software, hardware, dados e características dos produtos em comparações  Comparações de inclusão, alteração, exclusão e processamento nivelam os bancos de dados  Há evidências que sugerem melhor desempenho do PostgreSQL e do MySQL em relação ao MongoDB  Há evidência que sugerem melhor desempenho no Linux do que no Windows  Muitas técnicas de otimização podem ser aplicadas para melhorar tempos de execução  Não concorda com os resultados?  Replique o experimento