Este documento apresenta uma análise comparativa entre sistemas gerenciadores de bancos de dados NoSQL no contexto da Internet das Coisas. O documento discute fundamentos teóricos sobre bancos de dados relacionais e NoSQL, tipos de dados na Internet das Coisas e trabalhos correlatos. Ele também descreve o desenvolvimento de um experimento para testar MongoDB, Couchbase e Redis usando uma base de dados real sobre qualidade do ar, apresentando e discutindo os resultados obtidos.
Análise comparativa entre SGBDs NoSQL no contexto de IoT
1. Uma Análise Comparativa
entre Sistemas Gerenciadores
de Bancos de Dados NoSQL
no contexto de Internet das
Coisas
Allexandre Sampaio Santos Soares
Pablo Freire Matos – Orientador (CSI/IFBA-VC)
Leonardo Barreto Campos – Coorientador (CSI/IFBA-VC)
4. INTRODUÇÃO
▰ Necessidade de armazenamento de dados
▰ Surgimento de Bancos de Dados (BDs)
▰ BDs relacionais
Introdução 4
NoSQL vs. IoT
5. INTRODUÇÃO
▰ Inviabilidade do modelo relacional
▰ Alternativas ao modelo relacional
▰ Modelo NoSQL
▻ Arquitetura flexível
▻ Velocidade
▻ Escalabilidade
Introdução 5
Fonte: https://goo.gl/vF6XwQ
NoSQL vs. IoT
6. INTRODUÇÃO
▰ Internet das Coisas (IoT)
▻ Grande fluxo de dados
▻ Pouco conteúdo
▻ Múltiplas fontes
▻ Dados não estruturados
Introdução 6
Fonte: https://goo.gl/SswbNo
NoSQL vs. IoT
7. MOTIVAÇÃO
▰ Busca constante pelo melhor desempenho
▰ Gargalos de desempenho
▰ Área de IoT em alta
▰ Melhor desempenho em armazenamento e
consulta de dados de aplicações de IoT
Introdução 7
NoSQL vs. IoT
8. JUSTIFICATIVA
▰ Aplicações de IoT têm demandado o uso de
BDs de alto desempenho
▰ Trabalhos com a mesma temática não são
conclusivos quanto às melhores escolhas
▰ Responsabilidade do desenvolvedor na
escolha de um BD
Introdução 8
NoSQL vs. IoT
9. PROBLEMA
Existe relação entre os desempenhos dos
Sistemas Gerenciadores de Bancos de Dados
não relacionais (NoSQL) quando estes são
utilizados em aplicações de Internet das Coisas?
Introdução 9
NoSQL vs. IoT
10. OBJETIVOS
▰ Desenvolver uma análise comparativa entre BDs NoSQL
no contexto de Internet das Coisas
▻ Desenvolver um levantamento de conteúdo teórico
▻ Utilizar BDs NoSQL para guardar e recuperar dados de
aplicações de IoT
▻ Realizar testes nos BDs NoSQL, visando verificar
desempenho, disponibilidade e consistência
▻ Usar resultados para guiar o uso de BDs NoSQL em
soluções de IoT
Introdução 10
NoSQL vs. IoT
11. HIPÓTESE
Um determinado Banco de Dados NoSQL tem
maior capacidade de manipulação de dados
oriundos de aplicações de IoT
Introdução 11
NoSQL vs. IoT
13. BANCOS DE DADOS RELACIONAIS
▰ Concorrência controlada e segura no acesso aos dados
▰ Integração com múltiplas aplicações
▰ Pouca diferença entre implementações
▰ Propriedades ACID
▻ Atomicidade: tudo ou nada
▻ Consistência: de estado válido para estado válido
▻ Isolamento: transações não interferem entre si
▻ Durabilidade: os dados permanecerão
Fundamentação 13
NoSQL vs. IoT
14. BANCOS DE DADOS RELACIONAIS
▰ Características
▻ Data-Definition Language (DDL)
▻ Data-Manipulation Language (DML)
▻ Incorporação DML
▻ Definição de visões
▻ Autorização
▻ Integridade
▻ Controle de transações
Fundamentação 14
Tabela Usuario
id: Interger
nome: Varchar(50)
email: Varchar(50)
senha: Varchar(20)
setor: char(8)
NoSQL vs. IoT
15. BANCOS DE DADOS NoSQL
▰ 1990: nome de um BD relacional de código aberto
▰ 2009: reunião para discutir formas de
armazenamento com BDs não relacionais,
distribuídos e de código aberto
Fundamentação 15
NoSQL vs. IoT
16. BANCOS DE DADOS NoSQL
▰ Focado em dados não estruturados
▰ Bancos com alto desempenho e escalabilidade
▰ Propriedades BASE
▻ Basicamente disponível: garante disponibilidade
▻ Estado leve: duplicações de dados podem ser inconsistentes
▻ Consistência eventual: a consistência se dá depois de certo
tempo sem atualizações no dado
Fundamentação 16
NoSQL vs. IoT
17. BANCOS DE DADOS NoSQL
▰ Teorema CAP
▰ Dados críticos x Alta disponibilidade
Fundamentação 17
NoSQL vs. IoT
18. BANCOS DE DADOS NoSQL
▰ Por quê?
▻ Dispor de grandes taxas de transferência
▻ Possibilitar escalabilidade horizontal
▻ Ter melhor desempenho, se confiabilidade não é ponto crítico
▻ Possibilitar o uso de novos frameworks e linguagens de
programação
▻ Facilitar o trabalho com computação na nuvem
▻ Garantir que no futuro as necessidades de armazenamento e
desempenho ainda sejam cumpridas
Fundamentação 18
NoSQL vs. IoT
19. TIPOS DE BDs NoSQL
▰ Chave-valor: tabela simples com
duas colunas, para a chave e
conteúdo do registro. Algumas
implementações permitem que
sejam armazenados, também,
estruturas complexas de dados
Fundamentação 19
NoSQL vs. IoT
20. TIPOS DE BDs NoSQL
▰ Documentos: é como um BD
chave-valor, onde cada chave
referencia um objeto (XML, JSON,
BSON, entre outros) que pode ser
examinado. Possibilita consultas
utilizando parâmetros dos objetos
gravados para a busca
Fundamentação 20
NoSQL vs. IoT
21. TIPOS DE BDs NoSQL
▰ Famílias de Colunas: várias
colunas de dados associados
a uma única chave. Se pode
ter, para a mesma linha de um
registro, colunas diversas com
seus atributos e valores para
cada um
Fundamentação 21
NoSQL vs. IoT
22. TIPOS DE BDs NoSQL
▰ Grafos: Guarda entidades e arestas.
Entidades são como objetos, com
propriedades, e as arestas indicam
como esses se relacionam
Fundamentação 22
NoSQL vs. IoT
24. “integração de objetos físicos e virtuais
em redes conectadas à Internet,
permitindo que “coisas” coletem,
troquem e armazenem uma enorme
quantidade de dados numa nuvem, em
que uma vez processados e analisados
esses dados, gerem informações e
serviços em escala inimaginável.
Fundamentação 24
INTERNET DAS COISAS
(ALMEIDA, 2015, p.7)
NoSQL vs. IoT
25. INTERNET DAS COISAS
▰ Tipos de dados
▻ provêm de várias fontes e são heterogêneos
▻ têm grande escala
▻ têm correlação temporal e espacial
▻ necessitam de interoperabilidade
▻ são de multidimensionalidade
Fundamentação 25
NoSQL vs. IoT
26. $ 1.700.000.000.000
Mercado até 2020
44.000.000.000.000 GB
Dados manipulados diariamente em 2020
40.000.000.000
Dispositivos até 2020
Fundamentação 26
zettabytes
NoSQL vs. IoT
27. BENCHMARKING
▰ Nasceu com a gestão, no campo da administração
▰ Na computação, objetiva avaliar softwares, SGBDs, elementos
de hardware, dentre outros ativos, para verificar a sua
capacidade de suporte a alguma necessidade
Fundamentação 27
NoSQL vs. IoT
28. “nenhuma ferramenta pode
testar o desempenho de um
sistema por completo, havendo
a necessidade, então, de se
testar um sistema utilizando
ferramentas adequadas ao seu
domínio.
Fundamentação 28
BENCHMARKING
(GRAY, 1993)
NoSQL vs. IoT
30. NoSQL x Relacional
Correlatos 30
Autor Análise BDs
Carniel et al.
(2012)
Experimental com benchmarking e análise
de dados aplicada a Data warehouse
Fastbit, MongoDB, LucidDB,
PostgreSQL
Ferreira, Filipe Jr.
e Oliveira (2014)
Experimental aplicada a dados científicos Cassandra, PostgreSQL
Souza e Santos
(2015)
Experimental com benchmarking e análise
de maturidade de BDs
Redis, Cassandra, MySQL
Martins Filho
(2015)
Experimental com benchmarking e base de
dados real
MongoDB, PostgreSQL
NoSQL vs. IoT
31. NoSQL x NoSQL
Correlatos 31
Autor Análise BDs
Diana e Gerosa
(2010)
Proposta de análise
aplicada ao contexto da
Web 2.0
-
Bruhn (2011) Análise de características
de BDs
Cassandra, Riak, Project Voldemort, Hbase,
Redis, CouchDB, MongoDB, Membase
Tauro, Patil e
Prashanth (2013)
Análise de características
de BDs
dynamoDB, Hbase, MongoDB, Allegro,
Cassandra, Neo4j, CouchDB, Project Voldemort
Pinto et al. (2013) Experimental com
benchmarking próprio
MongoDB, DB4O
Prasad e Gohil
(2014)
Análise de características
de BDs
SimpleDB, Dynamo, MongoDB, CouchDB,
BigTable, Cassandra, Riak, Hbase, Redis
NoSQL vs. IoT
33. AMBIENTE DE TESTES
▰ Sistema Operacional dedicado
▻ Ubuntu 16.04.1
▰ Servidor
▻ Acer Aspire V5 – 472-6_BR826
▻ 8 GB de memória RAM
▻ 500 GB de armazenamento de disco rígido
▻ Processador Intel i3-3217U, com 2 núcleos
físicos e 4 threads, frequência base de 1,8 GHz
Desenvolvimento 33
NoSQL vs. IoT
34. FERRAMENTA DE TESTES
▰ Dificuldades em utilizar benchmarkings em contextos específicos
▰ Desenvolvimento de uma nova ferramenta em Java
▻ Familiaridade do desenvolvedor
▻ Uso de bibliotecas de acesso aos BDs
▻ Facilidade com threads/usuários
▻ Gerenciamento de memória
▻ Implementação de serviços nativos
▻ Uso da Máquina Virtual Java (e.g. JMeter)
Desenvolvimento 34
NoSQL vs. IoT
35. FERRAMENTA DE TESTES - INOBENCH*
▰ IoT & NoSQL Benchmarking
▰ GNU General Public License V.3
▰ Módulos
▻ Core
▻ CSV Reader
▻ Files
▻ MongoDB
▻ Couchbase
▻ Redis
Desenvolvimento 35* https://github.com/allexandresampaio/inobench
NoSQL vs. IoT
36. BASE DE DADOS UTILIZADA
▰ Base de dados real do universo da IoT
▰ Air Quality Data Set*, repositório da UCI Machine Learning
▻ Qualidade do ar em uma cidade da Itália
▻ Dados de 2004 a 2005 (por hora)
▻ 9.358 instâncias
▻ 15 dados por instância
▻ .xlsx ou .csv (transformação em JSON)
▻ Amostragem: 965 itens, confiança de 95,5%, erro amostral de 5%
(Fonseca e Martins, 2010)
Desenvolvimento 36* http://archive.ics.uci.edu/ml/datasets/Air+Quality
NoSQL vs. IoT
37. BASE DE DADOS UTILIZADA
▰ Exemplos de informações na base de dados
▻ Data e Hora
▻ Concentração de Monóxido de Carbono
▻ Concentração de Benzeno
▻ Concentração de Óxido Nítrico
▻ Concentração de Ozônio
▻ Temperatura
▻ Umidade
Desenvolvimento 37
NoSQL vs. IoT
38. BASE DE DADOS UTILIZADA
Conversão de dados
Desenvolvimento 38
NoSQL vs. IoT
39. BANCOS DE DADOS UTILIZADOS
▰ MongoDB
▻ Documentos (BSON)
▻ Desenvolvido em C++
▻ Alta escalabilidade e velocidade
▻ Uso gratuito sob GNU AGPL v3.0, versão 3.4.2
▻ Biblioteca mongo-java-driver 3.0.0
Desenvolvimento 39
NoSQL vs. IoT
40. BANCOS DE DADOS UTILIZADOS
▰ Couchbase
▻ Documentos (JSON)
▻ Bom desempenho com muitos clientes
▻ Replicação e arquitetura cluster
▻ Transações em N1QL
▻ Características do memcached
▻ Biblioteca Couchbase-Java-Client 2.4.2
Desenvolvimento 40
NoSQL vs. IoT
41. BANCOS DE DADOS UTILIZADOS
▰ Redis
▻ Chave-Valor
▻ Escrito em ANSI C
▻ Armazena strings, hashes, lists, sets…
▻ Velocidade em transações (RAM)
▻ Replicação (sentinelas e auto particionamento)
▻ Licença BSD, versão 3.2
▻ Biblioteca jedis 2.9.0
Desenvolvimento 41
NoSQL vs. IoT
57. Conclusões 57
NoSQL vs. IoT
Autor SQL NoSQL Contexto Base Real Software Abordagem
Diana e Gerosa (2010) X Web 2.0 Analítica
Bruhn (2011) X Analítica
Carniel et al. (2012) X X Data Warehouse X SSB Experimental
Tauro, Patil e Prashanth (2013) X Analítica
Pinto et al. (2013) X Específico* Experimental
Prasad e Gohil (2014) X Analítica
Ferreira, Filipe Jr. e Oliveira (2014) X X Dados Científicos X SciCumulus Experimental
Souza e Santos (2015) X X YCSB Experimental
Martins Filho (2015) X X X Jmeter Experimental
Soares (2017) X IoT X Inobench* Experimental
58. DISCUSSÃO
Em relação aos trabalhos correlatos, este trabalho teve como
diferenciais:
▰ Execução em um contexto específico (IoT), com poucas pesquisas com
mesmo foco
▰ Desenvolvimento de aplicação própria para testes em BDs NoSQL, com
possibilidade de expansão para novos BDs
▰ Execução prática dos testes em 3 BDs e com uso de dados reais
Conclusões 58
NoSQL vs. IoT
59. DISCUSSÃO
▰ Consumo de recursos pelo Java - influência em resultados
▰ Tentativa de testes em rede (arquitetura servidor - cliente)
▰ Tentativa de uso de BD chave-valor time-series - Riak TS
▰ Trabalhos futuros:
▻ Testes com replicação, verificando capacidade escalável
▻ Testes com BDs time-series
▻ Testes com outros BDs NoSQL e/ou SQL
Conclusões 59
NoSQL vs. IoT
61. CONCLUSÕES
▰ Foi possível analisar bancos de dados NoSQL no contexto de IoT
▰ Os resultados corroboram a hipótese
▰ Definição do melhor BD depende do contexto de atuação da
aplicação
▰ MongoDB: aplicações com restrições de confiabilidade e de espaço
para armazenamento em disco
▰ Couchbase: aplicações que demandam de alta velocidade
▰ Redis: aplicações onde há restrições de consumo de processamento
Conclusões 61
NoSQL vs. IoT
62. REFERÊNCIAS
ALMEIDA, Hyggo. Tudo Conectado. Computação Brasil: Revista da Sociedade Brasileira de Computação, Porto Alegre, v.
29, p.14-18, abr. 2015.
BRUHN, Dominik. Comparison of Distribution Technologies in Different NoSQL Database Systems. 2011. 56 f. TCC
(Graduação) Institute Of Applied Informatics And Formal Description Methods (AIFB), Karlsruhe Institute Of Technology
(KIT), Karlsruhe, Alemanha, 2011.
CARNIEL, Anderson C. et al. Análise Experimental de Bases de Dados Relacionais e NoSQL no Processamento de
Consultas sobre Data Warehouse. In: SIMPÓSIO BRASILEIRO DE BANCO DE DADOS, XXVII, 2012, São Paulo.
Proceedings... SBC, 2012, p. 113-120.
DATE, C. J. Introdução a Sistemas de Bancos de Dados. Tradução de Daniel Vieira. 8ª ed. Rio de Janeiro: Elsevier, 2003.
DIANA, Mauricio; GEROSA, Marco Aurélio. NOSQL na Web 2.0: Um Estudo Comparativo de Bancos Não-Relacionais para
Armazenamento de Dados na Web 2.0. In: WORKSHOP DE TESES E DISSERTAÇÕES EM BANCO DE DADOS, IX, 2010, Belo
Horizonte. Anais... 2010, p. 8.
ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de banco de dados, 6ª ed. São Paulo: Pearson Addison Wesley,
2011.
FERREIRA, Guilherme. F.; FILIPE Jr., Carlos; OLIVEIRA, Daniel. Uso de SGBDs NoSQL na Gerência da Proveniência
Distribuída em Workflows Científicos. In: SIMPÓSIO BRASILEIRO DE BANCO DE DADOS, XXIX, 2014, Curitiba. Anais...
SBC, 2014, p. 187-196.
62
NoSQL vs. IoT
63. REFERÊNCIAS
GRAY, J. The Benchmark Handbook for Database and Transaction Systems, 2ª ed. Morgan Kaufmann Publishers, 1993.
MARTINS FILHO, Marcos André Pereira. SQL X NOSQL: Análise de Desempenho do uso do MongoDB em Relação ao uso
do PostgreSQL. 2015. 54 f. TCC (Graduação) - Curso de Ciência da Computação, Centro de Informática, Universidade
Federal de Pernambuco, Recife, 2015.
PINTO, Alexandre P. et al. Testes de Performance Utilizando o DB4O e MongoDB. E_rac: Revista Eletrônica da Reunião
Anual de Ciência, v. 3, n. 1, 2013. Anual. Disponível em:
<http://www.computacao.unitri.edu.br/erac/index.php/e-rac/article/view/161>. Acesso em: 15 maio 2016.
PRASAD, Abhishek; GOHIL, Bhavesh N. A Comparative Study of NoSQL Databases. International Journal Of Advanced
Research In Computer Science. p. 170-176. maio 2014.
SOUZA, Vanessa C. O.; SANTOS, Marcus Vinícius C. Maturing, Consolidation and Performance of NoSQL Databases -
Comparative Study. In: BRAZILIAN SYMPOSIUM ON INFORMATION SYSTEMS (SBIS), XI, 2015, Goiânia. Proceedings...
AIS Electronic Library, 2015, p. 235-242.
TAURO, Clarence J. M.; PATIL, Baswanth R.; PRASHANTH, K. R. A Comparative Analysis of Different NoSQL Databases on
Data Model, Query Model and Replication Model. In: INTERNATIONAL CONFERENCE ON EMERGING RESEARCH IN
COMPUTING, INFORMATION, COMMUNICATION AND APLICATIONS (ERCICA). 2013, Bangalore, India. Proceedings...
Elsevier, 2013, p. 14-25.
63
NoSQL vs. IoT