SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

French IGCSE topic list
French IGCSE topic list French IGCSE topic list
French IGCSE topic list Marlène Fert
 
Leçon passé composé
Leçon   passé composéLeçon   passé composé
Leçon passé composéLfbLeopol
 
Pronoms relatifs invariables
Pronoms relatifs invariablesPronoms relatifs invariables
Pronoms relatifs invariablesPaulo Marques
 
Le comparatif et le superlatif des adjectifs
Le comparatif et le superlatif des adjectifsLe comparatif et le superlatif des adjectifs
Le comparatif et le superlatif des adjectifsRedWingates
 
French Adjectives - Adjectifs. All about French adjectives
French Adjectives - Adjectifs. All about French adjectivesFrench Adjectives - Adjectifs. All about French adjectives
French Adjectives - Adjectifs. All about French adjectivesTalk in French
 
La voix active et la voix passive
La voix active et la voix passiveLa voix active et la voix passive
La voix active et la voix passivejude louis
 
Utiliser la BD en classe de langue
Utiliser la BD en classe de langueUtiliser la BD en classe de langue
Utiliser la BD en classe de langueDiana Magalhães
 
Thanksgiving vocabulary-exercises-fun-activities-games-oneonone-activities-re...
Thanksgiving vocabulary-exercises-fun-activities-games-oneonone-activities-re...Thanksgiving vocabulary-exercises-fun-activities-games-oneonone-activities-re...
Thanksgiving vocabulary-exercises-fun-activities-games-oneonone-activities-re...Praxix
 
Les adjectifs BAGS/BANGS
Les adjectifs BAGS/BANGSLes adjectifs BAGS/BANGS
Les adjectifs BAGS/BANGSMmeStarman
 
Lexique l'ecole et les etudes (A2)
Lexique l'ecole et les etudes (A2)Lexique l'ecole et les etudes (A2)
Lexique l'ecole et les etudes (A2)lebaobabbleu
 
Systèmes de Gestion de Contenu (SGC)
Systèmes de Gestion de Contenu (SGC)Systèmes de Gestion de Contenu (SGC)
Systèmes de Gestion de Contenu (SGC)Laurent Moccozet
 
Lexique- les voyages et les vacances (A1)
Lexique- les voyages et les vacances (A1)Lexique- les voyages et les vacances (A1)
Lexique- les voyages et les vacances (A1)lebaobabbleu
 
Production écrite 6eme
Production écrite 6emeProduction écrite 6eme
Production écrite 6ememjnifen
 
MANUAL DO TURISTA EM LÍNGUA FRANCESA | Vous Parlez Français !
MANUAL DO TURISTA EM LÍNGUA FRANCESA  |  Vous Parlez Français !MANUAL DO TURISTA EM LÍNGUA FRANCESA  |  Vous Parlez Français !
MANUAL DO TURISTA EM LÍNGUA FRANCESA | Vous Parlez Français !Alex Martins
 
Participe présent et gérondif
Participe présent et gérondifParticipe présent et gérondif
Participe présent et gérondiflebaobabbleu
 
Passé recent, futur proche et présent continu
Passé recent, futur proche et présent continuPassé recent, futur proche et présent continu
Passé recent, futur proche et présent continuMaria Herrera
 
Lexique: la maison et les meubles (A2)
Lexique: la maison et les meubles (A2)Lexique: la maison et les meubles (A2)
Lexique: la maison et les meubles (A2)lebaobabbleu
 

Tendances (20)

French IGCSE topic list
French IGCSE topic list French IGCSE topic list
French IGCSE topic list
 
Devinettes1
Devinettes1Devinettes1
Devinettes1
 
Leçon passé composé
Leçon   passé composéLeçon   passé composé
Leçon passé composé
 
Pronoms relatifs invariables
Pronoms relatifs invariablesPronoms relatifs invariables
Pronoms relatifs invariables
 
Le comparatif et le superlatif des adjectifs
Le comparatif et le superlatif des adjectifsLe comparatif et le superlatif des adjectifs
Le comparatif et le superlatif des adjectifs
 
Can must
Can mustCan must
Can must
 
French Adjectives - Adjectifs. All about French adjectives
French Adjectives - Adjectifs. All about French adjectivesFrench Adjectives - Adjectifs. All about French adjectives
French Adjectives - Adjectifs. All about French adjectives
 
La voix active et la voix passive
La voix active et la voix passiveLa voix active et la voix passive
La voix active et la voix passive
 
Utiliser la BD en classe de langue
Utiliser la BD en classe de langueUtiliser la BD en classe de langue
Utiliser la BD en classe de langue
 
Thanksgiving vocabulary-exercises-fun-activities-games-oneonone-activities-re...
Thanksgiving vocabulary-exercises-fun-activities-games-oneonone-activities-re...Thanksgiving vocabulary-exercises-fun-activities-games-oneonone-activities-re...
Thanksgiving vocabulary-exercises-fun-activities-games-oneonone-activities-re...
 
Les adjectifs BAGS/BANGS
Les adjectifs BAGS/BANGSLes adjectifs BAGS/BANGS
Les adjectifs BAGS/BANGS
 
Lexique l'ecole et les etudes (A2)
Lexique l'ecole et les etudes (A2)Lexique l'ecole et les etudes (A2)
Lexique l'ecole et les etudes (A2)
 
Systèmes de Gestion de Contenu (SGC)
Systèmes de Gestion de Contenu (SGC)Systèmes de Gestion de Contenu (SGC)
Systèmes de Gestion de Contenu (SGC)
 
Lexique- les voyages et les vacances (A1)
Lexique- les voyages et les vacances (A1)Lexique- les voyages et les vacances (A1)
Lexique- les voyages et les vacances (A1)
 
Production écrite 6eme
Production écrite 6emeProduction écrite 6eme
Production écrite 6eme
 
MANUAL DO TURISTA EM LÍNGUA FRANCESA | Vous Parlez Français !
MANUAL DO TURISTA EM LÍNGUA FRANCESA  |  Vous Parlez Français !MANUAL DO TURISTA EM LÍNGUA FRANCESA  |  Vous Parlez Français !
MANUAL DO TURISTA EM LÍNGUA FRANCESA | Vous Parlez Français !
 
Participe présent et gérondif
Participe présent et gérondifParticipe présent et gérondif
Participe présent et gérondif
 
Passé recent, futur proche et présent continu
Passé recent, futur proche et présent continuPassé recent, futur proche et présent continu
Passé recent, futur proche et présent continu
 
Lexique: la maison et les meubles (A2)
Lexique: la maison et les meubles (A2)Lexique: la maison et les meubles (A2)
Lexique: la maison et les meubles (A2)
 
Les homonymes
Les homonymesLes homonymes
Les homonymes
 

En vedette

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
 

En vedette (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
 

Similaire à 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
 

Similaire à 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...
 

Plus de 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
 

Plus de 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
 

Dernier

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
 
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
 
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
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 
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
 
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
 

Dernier (6)

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
 
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
 
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
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
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
 
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
 

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