SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Was ist angesagt?

Guia Rápido de Referência Java
Guia Rápido de Referência JavaGuia Rápido de Referência Java
Guia Rápido de Referência JavaMario Jorge Pereira
 
Introdução ao Firebase
Introdução ao FirebaseIntrodução ao Firebase
Introdução ao FirebaseJose Papo, MSc
 
State management
State managementState management
State managementIblesoft
 
Aula 1 - Introdução ao Conteúdo de Banco de Dados
Aula 1 - Introdução ao Conteúdo de Banco de DadosAula 1 - Introdução ao Conteúdo de Banco de Dados
Aula 1 - Introdução ao Conteúdo de Banco de DadosHenrique Nunweiler
 
Mongo Nosql CRUD Operations
Mongo Nosql CRUD OperationsMongo Nosql CRUD Operations
Mongo Nosql CRUD Operationsanujaggarwal49
 
Presentation slides of Sequence Query Language (SQL)
Presentation slides of Sequence Query Language (SQL)Presentation slides of Sequence Query Language (SQL)
Presentation slides of Sequence Query Language (SQL)Punjab University
 
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorialsMongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorialsSpringPeople
 
Version Control System - for Agile Software Project Management.
Version Control System - for Agile Software Project Management.Version Control System - for Agile Software Project Management.
Version Control System - for Agile Software Project Management.Bhavya Chawla
 
Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Jukka Zitting
 
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...Leinylson Fontinele
 
Banco de Dados II: Aspectos de Segurança em Banco de Dados (aula 13)
Banco de Dados II: Aspectos de Segurança em Banco de Dados (aula 13)Banco de Dados II: Aspectos de Segurança em Banco de Dados (aula 13)
Banco de Dados II: Aspectos de Segurança em Banco de Dados (aula 13)Gustavo Zimmermann
 

Was ist angesagt? (20)

Pascal Arquivos
Pascal ArquivosPascal Arquivos
Pascal Arquivos
 
Ms sql-server
Ms sql-serverMs sql-server
Ms sql-server
 
Guia Rápido de Referência Java
Guia Rápido de Referência JavaGuia Rápido de Referência Java
Guia Rápido de Referência Java
 
Introdução ao Firebase
Introdução ao FirebaseIntrodução ao Firebase
Introdução ao Firebase
 
State management
State managementState management
State management
 
#5 CRUD no MongoDB
#5   CRUD  no MongoDB#5   CRUD  no MongoDB
#5 CRUD no MongoDB
 
Aula 1 - Introdução ao Conteúdo de Banco de Dados
Aula 1 - Introdução ao Conteúdo de Banco de DadosAula 1 - Introdução ao Conteúdo de Banco de Dados
Aula 1 - Introdução ao Conteúdo de Banco de Dados
 
Mongo Nosql CRUD Operations
Mongo Nosql CRUD OperationsMongo Nosql CRUD Operations
Mongo Nosql CRUD Operations
 
Processos e threads cap 02 (i unidade)
Processos e threads   cap 02 (i unidade)Processos e threads   cap 02 (i unidade)
Processos e threads cap 02 (i unidade)
 
Presentation slides of Sequence Query Language (SQL)
Presentation slides of Sequence Query Language (SQL)Presentation slides of Sequence Query Language (SQL)
Presentation slides of Sequence Query Language (SQL)
 
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorialsMongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
Mongo DB: Fundamentals & Basics/ An Overview of MongoDB/ Mongo DB tutorials
 
Version Control System - for Agile Software Project Management.
Version Control System - for Agile Software Project Management.Version Control System - for Agile Software Project Management.
Version Control System - for Agile Software Project Management.
 
Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3
 
SQL
SQLSQL
SQL
 
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
Banco de Dados II Aula 11 - Gerenciamento de transação (transações - fundamen...
 
Linguagem SQL
Linguagem SQLLinguagem SQL
Linguagem SQL
 
Banco de Dados II: Aspectos de Segurança em Banco de Dados (aula 13)
Banco de Dados II: Aspectos de Segurança em Banco de Dados (aula 13)Banco de Dados II: Aspectos de Segurança em Banco de Dados (aula 13)
Banco de Dados II: Aspectos de Segurança em Banco de Dados (aula 13)
 
Mini Curso de PHP
Mini Curso de PHPMini Curso de PHP
Mini Curso de PHP
 
Aula 2 - Comandos DDL DML DQL E DCL
Aula 2 - Comandos DDL DML DQL E DCLAula 2 - Comandos DDL DML DQL E DCL
Aula 2 - Comandos DDL DML DQL E DCL
 
Redis basics
Redis basicsRedis basics
Redis basics
 

Andere mochten auch

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
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionaisalexculpado
 
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
 

Andere mochten auch (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
 
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados RelacionaisBanco de Dados Não Relacionais vs Banco de Dados Relacionais
Banco de Dados Não Relacionais vs Banco de Dados Relacionais
 
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
 

Ähnlich wie Comparação de desempenho entre 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
 

Ähnlich wie Comparação de desempenho entre 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...
 

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 

Kürzlich hochgeladen (6)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Comparação de desempenho entre 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