SGBD em embarcados: uma aplicação visando dados...

55
UNIVERSIDADE FEDERAL DE MATO GROSSO INSTITUTO DE COMPUTAÇÃO COORDENAÇÃO DE ENSINO DE ESPECIALIZAÇÃO EM BANCO DE DADOS SGBD EM EMBARCADOS: UMA APLICAÇÃO VISANDO DADOS CIENTÍFICOS IZANDRO MONTEIRO METELLO CUIABÁ - MT 2016

Transcript of SGBD em embarcados: uma aplicação visando dados...

Page 1: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

UNIVERSIDADE FEDERAL DE MATO GROSSOINSTITUTO DE COMPUTACcedilAtildeO

COORDENACcedilAtildeO DE ENSINO DE ESPECIALIZACcedilAtildeO EM

BANCO DE DADOS

SGBD EM EMBARCADOS UMA APLICACcedilAtildeOVISANDO DADOS CIENTIacuteFICOS

IZANDRO MONTEIRO METELLO

CUIABAacute - MT

2016

UNIVERSIDADE FEDERAL DE MATO GROSSOINSTITUTO DE COMPUTACcedilAtildeO

COORDENACcedilAtildeO DE ENSINO DE ESPECIALIZACcedilAtildeO EM

BANCO DE DADOS

SGBD EM EMBARCADOS UMA APLICACcedilAtildeOVISANDO DADOS CIENTIacuteFICOS

IZANDRO MONTEIRO METELLO

Orientador Prof Dr Roberto Benedito de Oliveira Pereira

Monografia apresentada ao Curso de Especializaccedilatildeoem Banco de Dados do Instituto de Computaccedilatildeoda Universidade Federal de Mato Grosso comorequisito para obtenccedilatildeo do tiacutetulo de Especialista emBanco de Dados

CUIABAacute - MT

2016

Este trabalho eacute dedicado a todos que acreditaram

em mim e me ajudaram nos ultimos anos durante

essa difiacutecil caminhada

AGRADECIMENTOS

Agradeccedilo a todos que me ajudaram a superar mais este desafio eu natildeo poderiame expressar de forma diferente Agradeccedilo ao professor Roberto que acreditou em mimque me ajudou sempre que precisei mesmo passando por dificuldades Agradeccedilo a todosque me deram uma segunda chance para poder concluir com sucesso mais esse passo naminha formaccedilatildeo Natildeo posso deixar de agradecer a minha querida Alice que me apoiasempre Agradeccedilo tambeacutem a minha famiacutelia e minha matildee que sempre me ajuda apesar dosmeus erros Aos amigos que sempre datildeo apoio e ideias e diminuem a dor das dificuldadesda vida

RESUMO

A coleta de dados automatizada estaacute presente em diversas atividades humanas Seja paraatividades que possam colocar a vida de um ser humano em perigo reduccedilatildeo do gasto derecursos melhoria de processos ou outras aplicaccedilotildees possiacuteveis pode-se utilizar sistemasembarcados em conjunto com sensores para a coleta de dados de forma automatizadaDados provenientes de coleta tem um ou alguns dos seguintes propoacutesitos descriccedilatildeoexplicaccedilatildeo ou prediccedilatildeo A descriccedilatildeo de cenaacuterios a busca de explicaccedilotildees ou prediccedilotildeesbaseadas na compreensatildeo da causa de eventos podem ser dependentes de coleta de dadosCom o crescente aumento de necessidade e oportunidade de coleta de dados visandoaplicaccedilotildees cientiacuteficas este trabalho busca demonstrar a aplicaccedilatildeo de SGBD em dadoscaracteriacutesticos de mediccedilotildees e monitoramento cientiacutefico Diversos fatores como qualidadee disponibilidade de comunicaccedilatildeo necessidade de disponibilidade imediata dos dados evolume de dados vatildeo influenciar no tipo de arquitetura e qual SGBD seraacute utilizado Osestudos de caso foram feitos com o SGBD dentro de um computador embarcado quefaz ou recebe dados de coleta Foram analisados um SGBD relacional e um NoSQLMySQL e Redis respectivamente em diversas fases desde a configuraccedilatildeo dos ambientesateacute a manipulaccedilatildeo dos dados de mediccedilotildees simulados Pode-se perceber a diferenccedila dasarquiteturas dos SGBDs nos estudos de caso Para realizar os experimentos foram utilizadoso pcDuino 1 e o Raspberry Pi 2 Ambos contecircm processadores de arquitetura ARM poreacutemnatildeo satildeo iguais em velocidade nuacutecleos de processamento e outras caracteriacutesticas Algumasdessas diferenccedilas de arquitetura foram percebidas nos estudos de caso Os estudos de casosugerem que a configuraccedilatildeo escolhida para gerenciar dados de aplicaccedilotildees de coleta dedados depende de caracteriacutesticas especiacuteficas da aplicaccedilatildeo e da necessidade de cada casoem particular jaacute que cada SGDB mostrou pontos favoraacuteveis e desfavoraacuteveis nos estudosrealizados

Palavras-chaves Banco de Dados Sensores NoSQL

ABSTRACT

Automatized data gathering makes part of various parts of human life Whether it beactivities poses a person life at risk resource spending reduction processes improvementsor many other applications possibles it is possible to use embedded systems along withsensors in automatized data gathering Data provided by gather has one or more purposedescription explanation or prediction A scenery description the search for explicationsor predictions based on comprehension of the causes of events can be dependents of datagathering As the need and opportunity of data gathering is increasing this study aims showa DBMS in management of usual scientific data The study cases have been done withDBMS inside the embedded computer which gathers metering data It has been analyzed arelational DBMS and a NoSQL DBMS MySQL and Redis respectively in various stagessince the enviroment setup to the data handling in study cases It has been possible observethe architectural differences in study cases results To run the experiments it has been useda pcDuino 1 and a Raspberry Pi 2 Both have ARM architecture processors however theyhavenrsquot the same speed nor same amount of processing cores among others differencesSome of those differences have been seen in the study cases results The study cases haveshown the best configuration to be chosen for an application is particular to that applicationas each DBMS have shown upsides and downsides in the study cases

Keywords Databases Sensors NoSQL

SUMAacuteRIO

1 INTRODUCcedilAtildeO 1

2 FUNDAMENTACcedilAtildeO TEOacuteRICA 5

21 Sistemas Gerenciadores de Banco de Dados 6

22 SGBDs relacionais 7

221 MySQL 8

23 SGBDs natildeo relacionais 9

231 Redis 10

24 Sistemas Embarcados 12

25 Resumo 13

3 MATERIAIS E MEacuteTODOS 14

31 Equipamentos utilizados 14

32 Preparaccedilatildeo do ambiente de pesquisa 17

33 Armazenamento utilizado 18

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs 18

35 Caracteriacutesticas da massa de teste 19

36 Carga dos dados 20

37 Consulta dos dados 21

38 Resumo 22

4 RESULTADOS E DISCUSSOtildeES 24

41 Estudo de caso 1 24

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1 24

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2 25

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino 26

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2 26

415 Tabela de resultados do estudo de caso 1 27

42 Estudo de caso 2 28

421 Consultas em 1 milhatildeo de elementos no pcDuino 28

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2 29

423 Consultas em 25 milhotildees de elementos no pcDuino 30

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2 30

425 Tabelas com os resultados do estudo de caso 2 31

5 CONCLUSOtildeES 32

6 TRABALHOS FUTUROS 34

REFEREcircNCIAS 35

A GERADOR DE DADOS DE MEDICcedilAtildeO DE SENSORES 37

B SCRIPT LUA DE CONSULTA NO SGBD REDIS 41

LISTA DE ILUSTRACcedilOtildeES

Figura 1 ndash pcDuino 1 15Figura 2 ndash Raspberry Pi 2 17Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis 24Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis 25Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis 25Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL 25Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Rasp-

berry Pi 2 26Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL 26Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL 26Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no

Raspberry Pi 2 27Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo 27Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis 27Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis 28Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis 28Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL 29Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis 29Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis 29Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL 30Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL 30Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL 31

LISTA DE TABELAS

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1 15Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2 16Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis 19Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL 20Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar 27Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos 31Tabela 7 ndash Consulta de dados - busca com intervalos de valores 31

LISTA DE QUADROS

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL 19Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis 20Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo 20Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados 21Quadro 5 ndash Comando utilizado para inserir dados no MySQL 21Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do

Redis e inserir dados no MySQL 21Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor

Redis 21Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso 22Quadro 9 ndash Condiccedilotildees para consulta de maior e menor 22Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso 22Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso 22

LISTA DE ABREVIATURAS E SIGLAS

ACID Atomicity Consistency Isolation Durability

API Application Programing Interface

ARM Advanced RISC Machine

BASE Basically Available Soft state Eventual consistency

CLI command-line interface

CPU Central Processing Unit

DDL Data Definition Language

DML Data Manipulation Language

GCC GNU Compiler Collection

GPS Global System Position

mA mili-Ampeacutere

NoSQL Not Only SQL

RAM Random-Access Memory

Redis Remote DIctionary Server

SGBD Sistema Gerenciador de Banco de Dados

SQL Structured Query Language

USB Universal Serial Bus

XML eXtensible Markup Language

XQuery XML Query

1

CAPIacuteTULO 1

INTRODUCcedilAtildeO

A coleta de dados por sensores estaacute presente em diversas atividades humanasAtividades como previsatildeo do tempo exploraccedilatildeo extraterrestre suporte a atividades cientiacute-ficas conforto residencial seguranccedila hospitalares industriais e inuacutemeras outras satildeo cadavez mais auxiliadas por coleta de dados

Dados provenientes de coleta tem um ou alguns dos seguintes propoacutesitosdescriccedilatildeo explicaccedilatildeo ou prediccedilatildeo (KUMAR 1988) Os dados descritivos respondemperguntas como ldquoquem rdquo ldquoo que rdquo e ldquoquandordquo mas natildeo perguntas como ldquocomordquo ouldquopor querdquo Uma explicaccedilatildeo necessita uma extrapolaccedilatildeo de um relacionamento causa eefeito no qual o investigador tenta entender por que um fenocircmeno processo ou eventoaconteceu ou natildeo Prediccedilotildees satildeo baseadas no entendimento da causa de eventos Dados satildeocoletados para esses fins e em aplicaccedilotildees cientiacuteficas a coleta de dados pode ser essencialpara todo o processo de pesquisa para identificar um problema auxiliar na soluccedilatildeo ouembasar uma teoria

Sensores associados a unidades de processamento satildeo cada vez mais utilizados(EVANS 2011) para executar coleta automatizada de dados Esses sistemas satildeo importan-tes pois executam a coleta na maior parte das vezes com mais facilidade e precisatildeo que umhumano e a um custo menor Ainda pode-se considerar os lugares aos quais os humanos

Capiacutetulo 1 Introduccedilatildeo 2

natildeo podem acessar como ambientes com radiaccedilatildeo ou amostragens de alta frequecircncia porexemplo

Dada a importacircncia de sistemas de coleta de dados este trabalho busca apre-sentar formas de gerenciar os dados armazenados em sistemas de coleta de dados voltadospara aplicaccedilotildees cientiacuteficas

Para verificar onde e como um banco de dados para sistemas embarcadospodem auxiliar o processo de coleta de dados eacute necessaacuterio mencionar o papel que outrastecnologias tem nas aplicaccedilotildees de anaacutelise de dados e como elas podem influenciar nautilizaccedilatildeo de bancos de dados em sistemas de coleta

Sistemas de coleta de dados em geral satildeo compostos por sistemas embarcadosdedicados exclusivamente a essa tarefa Podem ter ou natildeo acesso agrave internet A energiapode originar da rede eleacutetrica baterias descartaacuteveis ou alguma combinaccedilatildeo de alimentaccedilatildeoexterna com bateria recarregaacutevel A autonomia pode variar de dias ateacute anos O tipode amostragem pode ser desde baixa frequecircncia e baixa resoluccedilatildeo ateacute amostras de altafrequecircncia e alta resoluccedilatildeo Existem sistemas que natildeo podem atrasar no processo de coletae entrega da informaccedilatildeo e tem que ser extremamente previsiacuteveis (hard real-time ou soft

real-time) Com a diversidade de aplicaccedilotildees e avanccedilos tecnoloacutegicos existem incontaacuteveisaplicaccedilotildees com caracteriacutesticas variadas

Compreendendo que existe uma variedade muito grande de sistemas de medi-ccedilatildeo alguns casos podem tirar proveito de um armazenamento local dos dados de coletagerenciados por um banco de dados

Para imaginar o impacto da conectividade agrave Internet em sistemas de coletaseratildeo nomeadas caracteriacutesticas de conexotildees como velocidade disponibilidade e custoDentro dessas caracteriacutesticas pode-se analisar se o dado coletado consegue chegar aodestino (velocidade eou disponibilidade) e com que custo As atividades de coleta podemnecessitar de uma transmissatildeo ainda em tempo real (aplicaccedilotildees meacutedicas) ou de grandesvolumes de dados (coleta de imagens)

Se natildeo houver algum tipo de conexatildeo disponiacutevel ou sem todas as caracteriacutesticasnecessaacuterias para fazer os dados da coleta chegarem ao destino ainda eacute possiacutevel utilizaroutros meios para transferiacute-los Pode-se periodicamente transportar os dados por unidadesde armazenamento ou coleta-los manualmente com algum equipamento para esse fimPoreacutem esses meios simplesmente natildeo atendem atividades que necessitam de transmissotildeesem tempo real por exemplo Para as aplicaccedilotildees que o armazenamento local dos dadospode substituir ou auxiliar conexatildeo com a Internet para transmitir os dados coletadospode-se utilizar bancos de dados

Capiacutetulo 1 Introduccedilatildeo 3

Outro componente que estaacute presente em sistemas embarcados de coletas au-tomatizadas satildeo unidades de processamento O constante aumento na capacidade deprocessamento aumenta as possibilidades de coleta de dados Dessa forma pode-se adicio-nar um armazenamento local de dados Com os dados armazenados localmente eacute possiacutevelrealizar algum processamento preacutevio ou gerar estatiacutestica eou feedback para melhorar aproacutepria coleta de dados por exemplo Esse crescimento entatildeo aumenta as possibilidadesdo sistema de coleta

A eficiecircncia energeacutetica de sistemas de coleta baseados em sistemas embarcadosestaacute constantemente aumentando Em conjunto com a melhora constante de baterias exis-tem alguns cenaacuterios recorrentes dispositivos que usam muito pouca energia e funcionampor mais tempo (chegando a mais de um ano) ou dispositivos que aproveitam a eficiecircnciaenergeacutetica e aumentam muito a capacidade de processamento Pode-se ter situaccedilotildees derestriccedilatildeo de energia e necessidade de reduzir transmissotildees dos dados de medidoccedilotildees mascom um armazenamento local a atividade pode continuar com as transmissotildees sendo feitasposteriormente

Dependendo do tipo de configuraccedilatildeo de sistema de mediccedilatildeo utilizado o equi-pamento sequer tem um sistema operacional como pode ter recursos semelhantes a compu-tadores pessoais No primeiro caso satildeo equipamentos embarcados extremamente simplesque podem natildeo dispor de recursos para sustentar um SGBD Pela simplicidade da arquite-tura pode natildeo compensar o custo de desenvolvimento e manutenccedilatildeo No segundo casoequipamentos embarcados com mais recursos disponiacuteveis pode-se utilizar um SGBD

Quando a integraccedilatildeo da aplicaccedilatildeo de coleta eacute feita com o SGBD para arma-zenamento de dados locais podemos adicionar caracteriacutesticas como maior seguranccedila edisponibilidade dos dados melhor recuperaccedilatildeo dentre outras vantagens de se utilizar umSGBD

Espera-se apresentar e testar meacutetodos de gerenciamento de dados caracteriacutesti-cos de sensores visando aplicaccedilotildees cientiacuteficas Os objetivos especiacuteficos satildeo

1 Investigar as tendecircncias tecnologias de SGBD

2 Comparar a performance de sistemas embarcados com alguns SGBD investigados

3 Aplicar dois tipos de conjunto de dados para testar os sistemas embarcados e osSGBD

4 Realizar teste de leitura e acesso para avaliar desempenho tanto dos sistemasembarcados como dos SGBD

Capiacutetulo 1 Introduccedilatildeo 4

Este estudo pode contribuir na discussatildeo de como os dados de um sistema decoleta seratildeo gerenciados em funccedilatildeo de recursos disponiacuteveis configuraccedilatildeo do sistema e osresultados que se buscam atingir

Nesta introduccedilatildeo buscou-se descrever a importacircncia da coleta de dados natildeo soacutepara fins cientiacuteficos mas para vaacuterias atividades humanas atualmente Aleacutem disso foramdemonstrados alguns vaacuterios cenaacuterios e tecnologias dos quais alguns o uso de SGBD paraarmazenamento local beneficia a atividade de coleta de dados Por fim os objetivos queorientam esta pesquisa

No capiacutetulo 2 Revisatildeo de Literatura seratildeo levantados conceitos e teoriarelativo agrave SGBDs em geral como eles podem ajudar e sobre os dois utilizados nosexperimentos Dada a ligaccedilatildeo entre sistemas de coleta de dados exposta na introduccedilatildeoseratildeo abordados alguns conceitos relativos agrave sistemas embarcados

No capiacutetulo 3 Materiais e Meacutetodos seratildeo descritos todos os componentesfiacutesicos e de software selecionados para os testes Aleacutem disso seraacute descrito como foramfeitos os testes

No capiacutetulo 4 Estudos de Caso seratildeo apresentados os testes feitos com osrespectivos paracircmetros No capiacutetulo 5 Resultados seratildeo discutidos os resultados dosEstudos de Caso

No capiacutetulo 6 Trabalhos Futuros busca-se levantar partes desta monografiaque podem ser ainda mais explorados

O capiacutetulo seguinte a Conclusatildeo seratildeo revistas as hipoacuteteses iniciais compara-das aos resultados

CAPIacuteTULO 2

FUNDAMENTACcedilAtildeO TEOacuteRICA

A utilizaccedilatildeo de um SGBD (Sistema Gerenciador de Banco de Dados) trazimpactos positivos e negativos decorrentes da combinaccedilatildeo das variaacuteveis de caracteriacutesticasdo SGBD em si de sua arquitetura e da aplicaccedilatildeo

Sistemas de coleta automatizada de dados cientiacuteficos podem ser construiacutedosutilizando Sistemas Embarcados Um sistema embarcado eacute definido pela sua aplicaccedilatildeopois tendem a ser equipamentos com funccedilatildeo bem definida Ao variar a aplicaccedilatildeo mudam-sejunto os recursos e atributos do equipamento

Considerando essas combinaccedilotildees temos cenaacuterios favoraacuteveis ou natildeo a utilizaccedilatildeode um SGBD para gerenciar dados localmente em um sistema de coleta automatizadoNeste capitulo seratildeo apresentados os conceitos necessaacuterios para evidenciar as principaisvariaacuteveis dos elementos envolvidos neste experimento e como as mesmas podem influenciarna aplicaccedilatildeo

Seratildeo abordados conceitos gerais sobre SGBDs dos tipos relacionais e NoSQLEm seguida referecircncias sobre sistemas embarcados dado que o mesmo tem influecircncia nautilizaccedilatildeo ou natildeo de SGBD em uma aplicaccedilatildeo de coleta

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 6

21 Sistemas Gerenciadores de Banco de Dados

Um SGBD eacute um sistema computadorizado para armazenar registros segundo(DATE 2004) Bases de dados estatildeo presentes em computadores de diferentes escalasdesde pequenos sistemas embarcados ateacute clusters de mainframes Eacute normalmente utilizadapara o software que gerencia a base de dados enquanto a denominaccedilatildeo banco de dados oubase de dados se refere ao conjunto de dados gerenciado (DATE 2004)

A automaccedilatildeo do processamento de dados eacute mais antiga que os proacuteprios com-putadores Silberchatz (SUDARSHAN 2004) afirma que cartotildees perfurados inventadospor Herman Hollerith foram usados no comeccedilo do seacuteculo 20 nos Estados Unidos paraarmazenar dados de censo Sistemas mecacircnicos foram usados para processar os cartotildees eapresentar os resultados

Com a evoluccedilatildeo dos meios de armazenamento e processamento entre asdeacutecadas de 50 e 60 fitas magneacuteticas foram usadas para armazenamento de dados Comofitas tem forma de acesso sequencial os dados tinham que ser acessados ou modificadosde forma sequencial

Desde o fim dos anos 60 ateacute os anos 70 houve a disseminaccedilatildeo do uso dodisco riacutegido a utilizaccedilatildeo de vaacuterios discos o uso de sistemas de arquivos e aumento nasvelocidades de transferecircncia por conta de novos materiais e processos de fabricaccedilatildeo Aleacutemdisso o modelo de acesso aleatoacuterio alterou a forma como os dados eram acessados emodificados (SPELIOTIS 2000)

Nos aos 80 foi criado o modelo relacional de dados que foi implementado noSystem R da IBM que desenvolveu teacutecnicas eficientes de construccedilatildeo de bases de dadosrelacionais

No iniacutecio dos anos 90 a linguagem SQL foi escolhida para aplicaccedilotildees desuporte a decisatildeo que fazem muitos acessos ao banco de dados As bases de dadospassaram a ter que oferecer suporte a uma taxa muito alta de processamento de transaccedilotildeesaleacutem de ser mais confiaacuteveis manter disponibilidade 24x7 e suportar dados de interfaceWeb SQL fornece vaacuterios recursos como DDL (Data-Definition Language) para trabalharcom esquemas e relacionamentos por exemplo DML (Data Manipulation Language) parafazer consultas apagar inserir ou modificar tuplas no banco controles de integridadegeraccedilatildeo de visotildees controle transacional permissotildees de acesso e outros

No comeccedilo da deacutecada 2000 houve a adoccedilatildeo do XML em associaccedilatildeo com alinguagem XQuery como nova tecnologia de consulta Nesse periacuteodo tambeacutem houve umcrescimento na utilizaccedilatildeo de SGBDs open-source como o PostgresSQL e o MySQL

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 7

No fim da deacutecada de 2000 houve o crescimento de SGBDs especializados emanalises de dados como os column-store Novos sistemas de armazenamento de dadosdistribuiacutedos foram construiacutedos para ter capacidade para anaacutelise de dados de sites comoAmazon

Com o passar do tempo as mudanccedilas de hardware capacidade de processa-mento e armazenamento velocidades de conexotildees dados disponiacuteveis e necessidadesopor-tunidades influenciaram o desenvolvimento dos SGBDs Verificamos que esse processoteve duas vias o desenvolvimento de recursos gerou espaccedilo para mudanccedilas e as neces-sidades tambeacutem levaram ao desenvolvimento e popularizaccedilatildeo de outras tecnologias deSGBDs

22 SGBDs relacionais

SGBDs relacionais foram desenvolvidos nos anos 70 como uma tecnologiapara armazenar dados estruturados organizados como tabelas com sua proacutepria linguagem ndasho SQL (OUNALLI 2012)

Segundo (SUDARSHAN 2004) um SGBD relacional eacute baseado no modelorelacional e usa uma coleccedilatildeo de tabelas para representar os dados e os relacionamentosentre esses dados O tipo relacional de SGBD eacute hoje em dia o principal utilizado nomercado

Uma base relacional consiste em um conjunto de tabelas As tabelas tecircmvaacuterias colunas e cada coluna tem um uacutenico nome Em geral uma linha representa orelacionamento entre um conjunto de valores e satildeo chamadas de tuplas O esquema deuma base relacional conteacutem os atributos tipos e regras das relaccedilotildees como chaves primaacuteriase estrangeiras

As tuplas podem ter um atributo do tipo chave primaacuteria que eacute a identificaccedilatildeouacutenica e natildeo repetida daquele registro Essas chaves podem ser referenciadas por outrosregistros por meio de um atributo do tipo chave estrangeira

Uma caracteriacutestica dos SGBDs e linguagens relacionais eacute a implementaccedilatildeo daaacutelgebra relacional Ela define um conjunto de operaccedilotildees

1 Seleccedilatildeo - retorna as linhas que satisfazem a condiccedilatildeo de seleccedilatildeo

2 Projeccedilatildeo - retorna atributos especiacuteficos de todas as linhas da entrada da relaccedilatildeoRemove as linhas duplicadas da saiacuteda

3 Natural join - retorna os pares de linhas de duas entradas que tem o mesmo valor emtodos os atributos que tem o mesmo nome

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 8

4 Produto cartesiano - retorna todos os pares de linhas de duas relaccedilotildees de entradasindependente de ter os mesmos nomes ou valores em comum

5 Uniatildeo - retorna a uniatildeo de tuplas de duas relaccedilotildees

Linguagens como o SQL utilizadas para fazer operaccedilotildees nas bases de dadossatildeo baseadas em aacutelgebra relacional que provecirc vaacuterios recursos para gerar as consultas SQLeacute a linguagem relacional mais influente do mercado

221 MySQL

O MySQL eacute um SGBD do tipo relacional que implementa um padratildeo SQLcom algumas extensotildees Foi comprado pela Sun Microsystems em 2008 (WIDENIUS2008) e eacute parte da Oracle que ao comprar a Sun Microsystems comprou todos os seusprodutos tambeacutem O MySQL tem como pontos positivos um suporte bom dos usuaacuterios nosfoacuteruns e grande e bem detalhada documentaccedilatildeo Eacute um SGBD com baixo overhead o quepermite a execuccedilatildeo em computadores com poucos recursos de memoacuteria e processamento

Poreacutem a capacidade de execuccedilatildeo e armazenamento do SGBD seraacute propor-cional agrave arquitetura de hardware e software que o executa O MySQL eacute um SGBDopen-source e o banco de dados dependendo da arquitetura de execuccedilatildeo e mecanismo dearmazenamento pode chegar a ter ateacute 64TB de tamanho (MYSQL 2015)

Eacute escrito em C e C++ e tem compatibilidade com arquiteturas de hardwareSPARC 64 SPARC 32 x86 x86 64 IA64 e ARM Eacute possiacutevel acessar o banco de dadospor meio de uma interface CLI (command-line interface ndash interface de linha de comando)ou pelo ConnectorODBC Existe APIs para C C++ Eiffel Java PHP Python Ruby eTcl

O MySQL disponibiliza algumas opccedilotildees de armazenamento das bases de dados(MYSQL 2015)

1 InnoDB o mecanismo padratildeo de armazenamento do MySQL Eacute compatiacutevel comACID e dispotildeem de recursos como commit e rollback Eacute o mais indicado paraser usado na maioria das aplicaccedilotildees por ter alto desempenho e operar de formatransacional

2 MyISAM eacute uma forma de armazenamento mais simples A trava para escrita emniacutevel de tabela limita o desempenho para operaccedilotildees que envolvem leitura e escrita

Existem outros mecanismos de armazenamento poreacutem ou tem uso muitorestrito ou estatildeo em desuso como CSV Archive Federated e Merge Outro exemplo eacute

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 9

o mecanismo de armazenamento Memory que guarda os dados na memoacuteria RAM e deacordo com o manual estaacute caindo em desuso O mecanismo InnoDB pode ser configuradocom buffers que podem em alguns casos substituir o Memory e ainda com a vantagem depersistir os dados em um armazenamento natildeo volaacutetil

23 SGBDs natildeo relacionais

Com o constante aumento dos dados armazenados e analisados os SGBDsrelacionais estatildeo apresentando vaacuterias limitaccedilotildees As consultas aos dados estatildeo perdendoa eficiecircncia pelo grande volume de dados Esse volume de dados estaacute crescendo cadavez mais por conta da evoluccedilatildeo constante das tecnologias de captura de informaccedilatildeo deprocessamento e da inteligecircncia para dar significado a tudo isso Abramova (ABRAMOVABERNADINO FURTADO 2014) afirma que o NoSQL foi desenvolvido para superaralgumas dessas limitaccedilotildees das bases de dados atuais

Os bancos NoSQL satildeo representados pela natildeo existecircncia de uma estrutura dedados riacutegida comparado ao SQL Eacute possiacutevel ter num mesmo espaccedilo de armazenamentoobjetos com membros diferentes Isso natildeo acontece no SQL onde todos os registros tecircmque seguir o modelo das colunas da tabela onde estatildeo inseridos O conceito de NoSQLfoi usado pela primeira vez em 1998 por Carlo Strozzi (ABRAMOVA BERNADINOFURTADO 2014) para se referir a um banco que natildeo usa interface SQL

Os bancos NoSQL satildeo normalmente baseados no teorema BASE (Basically

Available Soft State and Eventually consistente) (VIEBRANTZ 2012) Os bancos relacio-nais satildeo representados pelo ACID (Atomicidade Consistecircncia Isolamento e Durabilidade)Diferente do ACID o BASE sacrifica um pouco da consistecircncia dos dados para ganhardesempenho Essa troca eacute descrita pelo teorema CAP (Consistency Availability Partition

tolerance) Segundo (BROWNE 2015) teorema CAP diz que somente eacute possiacutevel ter duasdas trecircs caracteriacutesticas ao mesmo tempo

Apesar de natildeo ser possiacutevel consultar dados usando SQL esta abordagempermite faacutecil armazenamento e consulta de dados independente da estrutura do conteuacutedo(ABRAMOVA BERNADINO FURTADO 2014) Bancos NoSQL tambeacutem demonstrammelhor escalabilidade horizontal (EVANS 2011) Isso significa que servidores de baixocusto podem satisfazer as requisiccedilotildees enquanto os custos satildeo reduzidos O gerenciamentodesse grande volume de dados seria difiacutecil porem essas bases de dados satildeo projetadaspara gerenciaacute-los automaticamente recuperar de falhas e consertar o sistema por completo(STOLERU 2010)

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 2: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

UNIVERSIDADE FEDERAL DE MATO GROSSOINSTITUTO DE COMPUTACcedilAtildeO

COORDENACcedilAtildeO DE ENSINO DE ESPECIALIZACcedilAtildeO EM

BANCO DE DADOS

SGBD EM EMBARCADOS UMA APLICACcedilAtildeOVISANDO DADOS CIENTIacuteFICOS

IZANDRO MONTEIRO METELLO

Orientador Prof Dr Roberto Benedito de Oliveira Pereira

Monografia apresentada ao Curso de Especializaccedilatildeoem Banco de Dados do Instituto de Computaccedilatildeoda Universidade Federal de Mato Grosso comorequisito para obtenccedilatildeo do tiacutetulo de Especialista emBanco de Dados

CUIABAacute - MT

2016

Este trabalho eacute dedicado a todos que acreditaram

em mim e me ajudaram nos ultimos anos durante

essa difiacutecil caminhada

AGRADECIMENTOS

Agradeccedilo a todos que me ajudaram a superar mais este desafio eu natildeo poderiame expressar de forma diferente Agradeccedilo ao professor Roberto que acreditou em mimque me ajudou sempre que precisei mesmo passando por dificuldades Agradeccedilo a todosque me deram uma segunda chance para poder concluir com sucesso mais esse passo naminha formaccedilatildeo Natildeo posso deixar de agradecer a minha querida Alice que me apoiasempre Agradeccedilo tambeacutem a minha famiacutelia e minha matildee que sempre me ajuda apesar dosmeus erros Aos amigos que sempre datildeo apoio e ideias e diminuem a dor das dificuldadesda vida

RESUMO

A coleta de dados automatizada estaacute presente em diversas atividades humanas Seja paraatividades que possam colocar a vida de um ser humano em perigo reduccedilatildeo do gasto derecursos melhoria de processos ou outras aplicaccedilotildees possiacuteveis pode-se utilizar sistemasembarcados em conjunto com sensores para a coleta de dados de forma automatizadaDados provenientes de coleta tem um ou alguns dos seguintes propoacutesitos descriccedilatildeoexplicaccedilatildeo ou prediccedilatildeo A descriccedilatildeo de cenaacuterios a busca de explicaccedilotildees ou prediccedilotildeesbaseadas na compreensatildeo da causa de eventos podem ser dependentes de coleta de dadosCom o crescente aumento de necessidade e oportunidade de coleta de dados visandoaplicaccedilotildees cientiacuteficas este trabalho busca demonstrar a aplicaccedilatildeo de SGBD em dadoscaracteriacutesticos de mediccedilotildees e monitoramento cientiacutefico Diversos fatores como qualidadee disponibilidade de comunicaccedilatildeo necessidade de disponibilidade imediata dos dados evolume de dados vatildeo influenciar no tipo de arquitetura e qual SGBD seraacute utilizado Osestudos de caso foram feitos com o SGBD dentro de um computador embarcado quefaz ou recebe dados de coleta Foram analisados um SGBD relacional e um NoSQLMySQL e Redis respectivamente em diversas fases desde a configuraccedilatildeo dos ambientesateacute a manipulaccedilatildeo dos dados de mediccedilotildees simulados Pode-se perceber a diferenccedila dasarquiteturas dos SGBDs nos estudos de caso Para realizar os experimentos foram utilizadoso pcDuino 1 e o Raspberry Pi 2 Ambos contecircm processadores de arquitetura ARM poreacutemnatildeo satildeo iguais em velocidade nuacutecleos de processamento e outras caracteriacutesticas Algumasdessas diferenccedilas de arquitetura foram percebidas nos estudos de caso Os estudos de casosugerem que a configuraccedilatildeo escolhida para gerenciar dados de aplicaccedilotildees de coleta dedados depende de caracteriacutesticas especiacuteficas da aplicaccedilatildeo e da necessidade de cada casoem particular jaacute que cada SGDB mostrou pontos favoraacuteveis e desfavoraacuteveis nos estudosrealizados

Palavras-chaves Banco de Dados Sensores NoSQL

ABSTRACT

Automatized data gathering makes part of various parts of human life Whether it beactivities poses a person life at risk resource spending reduction processes improvementsor many other applications possibles it is possible to use embedded systems along withsensors in automatized data gathering Data provided by gather has one or more purposedescription explanation or prediction A scenery description the search for explicationsor predictions based on comprehension of the causes of events can be dependents of datagathering As the need and opportunity of data gathering is increasing this study aims showa DBMS in management of usual scientific data The study cases have been done withDBMS inside the embedded computer which gathers metering data It has been analyzed arelational DBMS and a NoSQL DBMS MySQL and Redis respectively in various stagessince the enviroment setup to the data handling in study cases It has been possible observethe architectural differences in study cases results To run the experiments it has been useda pcDuino 1 and a Raspberry Pi 2 Both have ARM architecture processors however theyhavenrsquot the same speed nor same amount of processing cores among others differencesSome of those differences have been seen in the study cases results The study cases haveshown the best configuration to be chosen for an application is particular to that applicationas each DBMS have shown upsides and downsides in the study cases

Keywords Databases Sensors NoSQL

SUMAacuteRIO

1 INTRODUCcedilAtildeO 1

2 FUNDAMENTACcedilAtildeO TEOacuteRICA 5

21 Sistemas Gerenciadores de Banco de Dados 6

22 SGBDs relacionais 7

221 MySQL 8

23 SGBDs natildeo relacionais 9

231 Redis 10

24 Sistemas Embarcados 12

25 Resumo 13

3 MATERIAIS E MEacuteTODOS 14

31 Equipamentos utilizados 14

32 Preparaccedilatildeo do ambiente de pesquisa 17

33 Armazenamento utilizado 18

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs 18

35 Caracteriacutesticas da massa de teste 19

36 Carga dos dados 20

37 Consulta dos dados 21

38 Resumo 22

4 RESULTADOS E DISCUSSOtildeES 24

41 Estudo de caso 1 24

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1 24

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2 25

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino 26

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2 26

415 Tabela de resultados do estudo de caso 1 27

42 Estudo de caso 2 28

421 Consultas em 1 milhatildeo de elementos no pcDuino 28

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2 29

423 Consultas em 25 milhotildees de elementos no pcDuino 30

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2 30

425 Tabelas com os resultados do estudo de caso 2 31

5 CONCLUSOtildeES 32

6 TRABALHOS FUTUROS 34

REFEREcircNCIAS 35

A GERADOR DE DADOS DE MEDICcedilAtildeO DE SENSORES 37

B SCRIPT LUA DE CONSULTA NO SGBD REDIS 41

LISTA DE ILUSTRACcedilOtildeES

Figura 1 ndash pcDuino 1 15Figura 2 ndash Raspberry Pi 2 17Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis 24Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis 25Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis 25Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL 25Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Rasp-

berry Pi 2 26Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL 26Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL 26Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no

Raspberry Pi 2 27Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo 27Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis 27Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis 28Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis 28Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL 29Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis 29Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis 29Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL 30Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL 30Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL 31

LISTA DE TABELAS

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1 15Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2 16Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis 19Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL 20Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar 27Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos 31Tabela 7 ndash Consulta de dados - busca com intervalos de valores 31

LISTA DE QUADROS

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL 19Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis 20Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo 20Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados 21Quadro 5 ndash Comando utilizado para inserir dados no MySQL 21Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do

Redis e inserir dados no MySQL 21Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor

Redis 21Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso 22Quadro 9 ndash Condiccedilotildees para consulta de maior e menor 22Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso 22Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso 22

LISTA DE ABREVIATURAS E SIGLAS

ACID Atomicity Consistency Isolation Durability

API Application Programing Interface

ARM Advanced RISC Machine

BASE Basically Available Soft state Eventual consistency

CLI command-line interface

CPU Central Processing Unit

DDL Data Definition Language

DML Data Manipulation Language

GCC GNU Compiler Collection

GPS Global System Position

mA mili-Ampeacutere

NoSQL Not Only SQL

RAM Random-Access Memory

Redis Remote DIctionary Server

SGBD Sistema Gerenciador de Banco de Dados

SQL Structured Query Language

USB Universal Serial Bus

XML eXtensible Markup Language

XQuery XML Query

1

CAPIacuteTULO 1

INTRODUCcedilAtildeO

A coleta de dados por sensores estaacute presente em diversas atividades humanasAtividades como previsatildeo do tempo exploraccedilatildeo extraterrestre suporte a atividades cientiacute-ficas conforto residencial seguranccedila hospitalares industriais e inuacutemeras outras satildeo cadavez mais auxiliadas por coleta de dados

Dados provenientes de coleta tem um ou alguns dos seguintes propoacutesitosdescriccedilatildeo explicaccedilatildeo ou prediccedilatildeo (KUMAR 1988) Os dados descritivos respondemperguntas como ldquoquem rdquo ldquoo que rdquo e ldquoquandordquo mas natildeo perguntas como ldquocomordquo ouldquopor querdquo Uma explicaccedilatildeo necessita uma extrapolaccedilatildeo de um relacionamento causa eefeito no qual o investigador tenta entender por que um fenocircmeno processo ou eventoaconteceu ou natildeo Prediccedilotildees satildeo baseadas no entendimento da causa de eventos Dados satildeocoletados para esses fins e em aplicaccedilotildees cientiacuteficas a coleta de dados pode ser essencialpara todo o processo de pesquisa para identificar um problema auxiliar na soluccedilatildeo ouembasar uma teoria

Sensores associados a unidades de processamento satildeo cada vez mais utilizados(EVANS 2011) para executar coleta automatizada de dados Esses sistemas satildeo importan-tes pois executam a coleta na maior parte das vezes com mais facilidade e precisatildeo que umhumano e a um custo menor Ainda pode-se considerar os lugares aos quais os humanos

Capiacutetulo 1 Introduccedilatildeo 2

natildeo podem acessar como ambientes com radiaccedilatildeo ou amostragens de alta frequecircncia porexemplo

Dada a importacircncia de sistemas de coleta de dados este trabalho busca apre-sentar formas de gerenciar os dados armazenados em sistemas de coleta de dados voltadospara aplicaccedilotildees cientiacuteficas

Para verificar onde e como um banco de dados para sistemas embarcadospodem auxiliar o processo de coleta de dados eacute necessaacuterio mencionar o papel que outrastecnologias tem nas aplicaccedilotildees de anaacutelise de dados e como elas podem influenciar nautilizaccedilatildeo de bancos de dados em sistemas de coleta

Sistemas de coleta de dados em geral satildeo compostos por sistemas embarcadosdedicados exclusivamente a essa tarefa Podem ter ou natildeo acesso agrave internet A energiapode originar da rede eleacutetrica baterias descartaacuteveis ou alguma combinaccedilatildeo de alimentaccedilatildeoexterna com bateria recarregaacutevel A autonomia pode variar de dias ateacute anos O tipode amostragem pode ser desde baixa frequecircncia e baixa resoluccedilatildeo ateacute amostras de altafrequecircncia e alta resoluccedilatildeo Existem sistemas que natildeo podem atrasar no processo de coletae entrega da informaccedilatildeo e tem que ser extremamente previsiacuteveis (hard real-time ou soft

real-time) Com a diversidade de aplicaccedilotildees e avanccedilos tecnoloacutegicos existem incontaacuteveisaplicaccedilotildees com caracteriacutesticas variadas

Compreendendo que existe uma variedade muito grande de sistemas de medi-ccedilatildeo alguns casos podem tirar proveito de um armazenamento local dos dados de coletagerenciados por um banco de dados

Para imaginar o impacto da conectividade agrave Internet em sistemas de coletaseratildeo nomeadas caracteriacutesticas de conexotildees como velocidade disponibilidade e custoDentro dessas caracteriacutesticas pode-se analisar se o dado coletado consegue chegar aodestino (velocidade eou disponibilidade) e com que custo As atividades de coleta podemnecessitar de uma transmissatildeo ainda em tempo real (aplicaccedilotildees meacutedicas) ou de grandesvolumes de dados (coleta de imagens)

Se natildeo houver algum tipo de conexatildeo disponiacutevel ou sem todas as caracteriacutesticasnecessaacuterias para fazer os dados da coleta chegarem ao destino ainda eacute possiacutevel utilizaroutros meios para transferiacute-los Pode-se periodicamente transportar os dados por unidadesde armazenamento ou coleta-los manualmente com algum equipamento para esse fimPoreacutem esses meios simplesmente natildeo atendem atividades que necessitam de transmissotildeesem tempo real por exemplo Para as aplicaccedilotildees que o armazenamento local dos dadospode substituir ou auxiliar conexatildeo com a Internet para transmitir os dados coletadospode-se utilizar bancos de dados

Capiacutetulo 1 Introduccedilatildeo 3

Outro componente que estaacute presente em sistemas embarcados de coletas au-tomatizadas satildeo unidades de processamento O constante aumento na capacidade deprocessamento aumenta as possibilidades de coleta de dados Dessa forma pode-se adicio-nar um armazenamento local de dados Com os dados armazenados localmente eacute possiacutevelrealizar algum processamento preacutevio ou gerar estatiacutestica eou feedback para melhorar aproacutepria coleta de dados por exemplo Esse crescimento entatildeo aumenta as possibilidadesdo sistema de coleta

A eficiecircncia energeacutetica de sistemas de coleta baseados em sistemas embarcadosestaacute constantemente aumentando Em conjunto com a melhora constante de baterias exis-tem alguns cenaacuterios recorrentes dispositivos que usam muito pouca energia e funcionampor mais tempo (chegando a mais de um ano) ou dispositivos que aproveitam a eficiecircnciaenergeacutetica e aumentam muito a capacidade de processamento Pode-se ter situaccedilotildees derestriccedilatildeo de energia e necessidade de reduzir transmissotildees dos dados de medidoccedilotildees mascom um armazenamento local a atividade pode continuar com as transmissotildees sendo feitasposteriormente

Dependendo do tipo de configuraccedilatildeo de sistema de mediccedilatildeo utilizado o equi-pamento sequer tem um sistema operacional como pode ter recursos semelhantes a compu-tadores pessoais No primeiro caso satildeo equipamentos embarcados extremamente simplesque podem natildeo dispor de recursos para sustentar um SGBD Pela simplicidade da arquite-tura pode natildeo compensar o custo de desenvolvimento e manutenccedilatildeo No segundo casoequipamentos embarcados com mais recursos disponiacuteveis pode-se utilizar um SGBD

Quando a integraccedilatildeo da aplicaccedilatildeo de coleta eacute feita com o SGBD para arma-zenamento de dados locais podemos adicionar caracteriacutesticas como maior seguranccedila edisponibilidade dos dados melhor recuperaccedilatildeo dentre outras vantagens de se utilizar umSGBD

Espera-se apresentar e testar meacutetodos de gerenciamento de dados caracteriacutesti-cos de sensores visando aplicaccedilotildees cientiacuteficas Os objetivos especiacuteficos satildeo

1 Investigar as tendecircncias tecnologias de SGBD

2 Comparar a performance de sistemas embarcados com alguns SGBD investigados

3 Aplicar dois tipos de conjunto de dados para testar os sistemas embarcados e osSGBD

4 Realizar teste de leitura e acesso para avaliar desempenho tanto dos sistemasembarcados como dos SGBD

Capiacutetulo 1 Introduccedilatildeo 4

Este estudo pode contribuir na discussatildeo de como os dados de um sistema decoleta seratildeo gerenciados em funccedilatildeo de recursos disponiacuteveis configuraccedilatildeo do sistema e osresultados que se buscam atingir

Nesta introduccedilatildeo buscou-se descrever a importacircncia da coleta de dados natildeo soacutepara fins cientiacuteficos mas para vaacuterias atividades humanas atualmente Aleacutem disso foramdemonstrados alguns vaacuterios cenaacuterios e tecnologias dos quais alguns o uso de SGBD paraarmazenamento local beneficia a atividade de coleta de dados Por fim os objetivos queorientam esta pesquisa

No capiacutetulo 2 Revisatildeo de Literatura seratildeo levantados conceitos e teoriarelativo agrave SGBDs em geral como eles podem ajudar e sobre os dois utilizados nosexperimentos Dada a ligaccedilatildeo entre sistemas de coleta de dados exposta na introduccedilatildeoseratildeo abordados alguns conceitos relativos agrave sistemas embarcados

No capiacutetulo 3 Materiais e Meacutetodos seratildeo descritos todos os componentesfiacutesicos e de software selecionados para os testes Aleacutem disso seraacute descrito como foramfeitos os testes

No capiacutetulo 4 Estudos de Caso seratildeo apresentados os testes feitos com osrespectivos paracircmetros No capiacutetulo 5 Resultados seratildeo discutidos os resultados dosEstudos de Caso

No capiacutetulo 6 Trabalhos Futuros busca-se levantar partes desta monografiaque podem ser ainda mais explorados

O capiacutetulo seguinte a Conclusatildeo seratildeo revistas as hipoacuteteses iniciais compara-das aos resultados

CAPIacuteTULO 2

FUNDAMENTACcedilAtildeO TEOacuteRICA

A utilizaccedilatildeo de um SGBD (Sistema Gerenciador de Banco de Dados) trazimpactos positivos e negativos decorrentes da combinaccedilatildeo das variaacuteveis de caracteriacutesticasdo SGBD em si de sua arquitetura e da aplicaccedilatildeo

Sistemas de coleta automatizada de dados cientiacuteficos podem ser construiacutedosutilizando Sistemas Embarcados Um sistema embarcado eacute definido pela sua aplicaccedilatildeopois tendem a ser equipamentos com funccedilatildeo bem definida Ao variar a aplicaccedilatildeo mudam-sejunto os recursos e atributos do equipamento

Considerando essas combinaccedilotildees temos cenaacuterios favoraacuteveis ou natildeo a utilizaccedilatildeode um SGBD para gerenciar dados localmente em um sistema de coleta automatizadoNeste capitulo seratildeo apresentados os conceitos necessaacuterios para evidenciar as principaisvariaacuteveis dos elementos envolvidos neste experimento e como as mesmas podem influenciarna aplicaccedilatildeo

Seratildeo abordados conceitos gerais sobre SGBDs dos tipos relacionais e NoSQLEm seguida referecircncias sobre sistemas embarcados dado que o mesmo tem influecircncia nautilizaccedilatildeo ou natildeo de SGBD em uma aplicaccedilatildeo de coleta

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 6

21 Sistemas Gerenciadores de Banco de Dados

Um SGBD eacute um sistema computadorizado para armazenar registros segundo(DATE 2004) Bases de dados estatildeo presentes em computadores de diferentes escalasdesde pequenos sistemas embarcados ateacute clusters de mainframes Eacute normalmente utilizadapara o software que gerencia a base de dados enquanto a denominaccedilatildeo banco de dados oubase de dados se refere ao conjunto de dados gerenciado (DATE 2004)

A automaccedilatildeo do processamento de dados eacute mais antiga que os proacuteprios com-putadores Silberchatz (SUDARSHAN 2004) afirma que cartotildees perfurados inventadospor Herman Hollerith foram usados no comeccedilo do seacuteculo 20 nos Estados Unidos paraarmazenar dados de censo Sistemas mecacircnicos foram usados para processar os cartotildees eapresentar os resultados

Com a evoluccedilatildeo dos meios de armazenamento e processamento entre asdeacutecadas de 50 e 60 fitas magneacuteticas foram usadas para armazenamento de dados Comofitas tem forma de acesso sequencial os dados tinham que ser acessados ou modificadosde forma sequencial

Desde o fim dos anos 60 ateacute os anos 70 houve a disseminaccedilatildeo do uso dodisco riacutegido a utilizaccedilatildeo de vaacuterios discos o uso de sistemas de arquivos e aumento nasvelocidades de transferecircncia por conta de novos materiais e processos de fabricaccedilatildeo Aleacutemdisso o modelo de acesso aleatoacuterio alterou a forma como os dados eram acessados emodificados (SPELIOTIS 2000)

Nos aos 80 foi criado o modelo relacional de dados que foi implementado noSystem R da IBM que desenvolveu teacutecnicas eficientes de construccedilatildeo de bases de dadosrelacionais

No iniacutecio dos anos 90 a linguagem SQL foi escolhida para aplicaccedilotildees desuporte a decisatildeo que fazem muitos acessos ao banco de dados As bases de dadospassaram a ter que oferecer suporte a uma taxa muito alta de processamento de transaccedilotildeesaleacutem de ser mais confiaacuteveis manter disponibilidade 24x7 e suportar dados de interfaceWeb SQL fornece vaacuterios recursos como DDL (Data-Definition Language) para trabalharcom esquemas e relacionamentos por exemplo DML (Data Manipulation Language) parafazer consultas apagar inserir ou modificar tuplas no banco controles de integridadegeraccedilatildeo de visotildees controle transacional permissotildees de acesso e outros

No comeccedilo da deacutecada 2000 houve a adoccedilatildeo do XML em associaccedilatildeo com alinguagem XQuery como nova tecnologia de consulta Nesse periacuteodo tambeacutem houve umcrescimento na utilizaccedilatildeo de SGBDs open-source como o PostgresSQL e o MySQL

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 7

No fim da deacutecada de 2000 houve o crescimento de SGBDs especializados emanalises de dados como os column-store Novos sistemas de armazenamento de dadosdistribuiacutedos foram construiacutedos para ter capacidade para anaacutelise de dados de sites comoAmazon

Com o passar do tempo as mudanccedilas de hardware capacidade de processa-mento e armazenamento velocidades de conexotildees dados disponiacuteveis e necessidadesopor-tunidades influenciaram o desenvolvimento dos SGBDs Verificamos que esse processoteve duas vias o desenvolvimento de recursos gerou espaccedilo para mudanccedilas e as neces-sidades tambeacutem levaram ao desenvolvimento e popularizaccedilatildeo de outras tecnologias deSGBDs

22 SGBDs relacionais

SGBDs relacionais foram desenvolvidos nos anos 70 como uma tecnologiapara armazenar dados estruturados organizados como tabelas com sua proacutepria linguagem ndasho SQL (OUNALLI 2012)

Segundo (SUDARSHAN 2004) um SGBD relacional eacute baseado no modelorelacional e usa uma coleccedilatildeo de tabelas para representar os dados e os relacionamentosentre esses dados O tipo relacional de SGBD eacute hoje em dia o principal utilizado nomercado

Uma base relacional consiste em um conjunto de tabelas As tabelas tecircmvaacuterias colunas e cada coluna tem um uacutenico nome Em geral uma linha representa orelacionamento entre um conjunto de valores e satildeo chamadas de tuplas O esquema deuma base relacional conteacutem os atributos tipos e regras das relaccedilotildees como chaves primaacuteriase estrangeiras

As tuplas podem ter um atributo do tipo chave primaacuteria que eacute a identificaccedilatildeouacutenica e natildeo repetida daquele registro Essas chaves podem ser referenciadas por outrosregistros por meio de um atributo do tipo chave estrangeira

Uma caracteriacutestica dos SGBDs e linguagens relacionais eacute a implementaccedilatildeo daaacutelgebra relacional Ela define um conjunto de operaccedilotildees

1 Seleccedilatildeo - retorna as linhas que satisfazem a condiccedilatildeo de seleccedilatildeo

2 Projeccedilatildeo - retorna atributos especiacuteficos de todas as linhas da entrada da relaccedilatildeoRemove as linhas duplicadas da saiacuteda

3 Natural join - retorna os pares de linhas de duas entradas que tem o mesmo valor emtodos os atributos que tem o mesmo nome

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 8

4 Produto cartesiano - retorna todos os pares de linhas de duas relaccedilotildees de entradasindependente de ter os mesmos nomes ou valores em comum

5 Uniatildeo - retorna a uniatildeo de tuplas de duas relaccedilotildees

Linguagens como o SQL utilizadas para fazer operaccedilotildees nas bases de dadossatildeo baseadas em aacutelgebra relacional que provecirc vaacuterios recursos para gerar as consultas SQLeacute a linguagem relacional mais influente do mercado

221 MySQL

O MySQL eacute um SGBD do tipo relacional que implementa um padratildeo SQLcom algumas extensotildees Foi comprado pela Sun Microsystems em 2008 (WIDENIUS2008) e eacute parte da Oracle que ao comprar a Sun Microsystems comprou todos os seusprodutos tambeacutem O MySQL tem como pontos positivos um suporte bom dos usuaacuterios nosfoacuteruns e grande e bem detalhada documentaccedilatildeo Eacute um SGBD com baixo overhead o quepermite a execuccedilatildeo em computadores com poucos recursos de memoacuteria e processamento

Poreacutem a capacidade de execuccedilatildeo e armazenamento do SGBD seraacute propor-cional agrave arquitetura de hardware e software que o executa O MySQL eacute um SGBDopen-source e o banco de dados dependendo da arquitetura de execuccedilatildeo e mecanismo dearmazenamento pode chegar a ter ateacute 64TB de tamanho (MYSQL 2015)

Eacute escrito em C e C++ e tem compatibilidade com arquiteturas de hardwareSPARC 64 SPARC 32 x86 x86 64 IA64 e ARM Eacute possiacutevel acessar o banco de dadospor meio de uma interface CLI (command-line interface ndash interface de linha de comando)ou pelo ConnectorODBC Existe APIs para C C++ Eiffel Java PHP Python Ruby eTcl

O MySQL disponibiliza algumas opccedilotildees de armazenamento das bases de dados(MYSQL 2015)

1 InnoDB o mecanismo padratildeo de armazenamento do MySQL Eacute compatiacutevel comACID e dispotildeem de recursos como commit e rollback Eacute o mais indicado paraser usado na maioria das aplicaccedilotildees por ter alto desempenho e operar de formatransacional

2 MyISAM eacute uma forma de armazenamento mais simples A trava para escrita emniacutevel de tabela limita o desempenho para operaccedilotildees que envolvem leitura e escrita

Existem outros mecanismos de armazenamento poreacutem ou tem uso muitorestrito ou estatildeo em desuso como CSV Archive Federated e Merge Outro exemplo eacute

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 9

o mecanismo de armazenamento Memory que guarda os dados na memoacuteria RAM e deacordo com o manual estaacute caindo em desuso O mecanismo InnoDB pode ser configuradocom buffers que podem em alguns casos substituir o Memory e ainda com a vantagem depersistir os dados em um armazenamento natildeo volaacutetil

23 SGBDs natildeo relacionais

Com o constante aumento dos dados armazenados e analisados os SGBDsrelacionais estatildeo apresentando vaacuterias limitaccedilotildees As consultas aos dados estatildeo perdendoa eficiecircncia pelo grande volume de dados Esse volume de dados estaacute crescendo cadavez mais por conta da evoluccedilatildeo constante das tecnologias de captura de informaccedilatildeo deprocessamento e da inteligecircncia para dar significado a tudo isso Abramova (ABRAMOVABERNADINO FURTADO 2014) afirma que o NoSQL foi desenvolvido para superaralgumas dessas limitaccedilotildees das bases de dados atuais

Os bancos NoSQL satildeo representados pela natildeo existecircncia de uma estrutura dedados riacutegida comparado ao SQL Eacute possiacutevel ter num mesmo espaccedilo de armazenamentoobjetos com membros diferentes Isso natildeo acontece no SQL onde todos os registros tecircmque seguir o modelo das colunas da tabela onde estatildeo inseridos O conceito de NoSQLfoi usado pela primeira vez em 1998 por Carlo Strozzi (ABRAMOVA BERNADINOFURTADO 2014) para se referir a um banco que natildeo usa interface SQL

Os bancos NoSQL satildeo normalmente baseados no teorema BASE (Basically

Available Soft State and Eventually consistente) (VIEBRANTZ 2012) Os bancos relacio-nais satildeo representados pelo ACID (Atomicidade Consistecircncia Isolamento e Durabilidade)Diferente do ACID o BASE sacrifica um pouco da consistecircncia dos dados para ganhardesempenho Essa troca eacute descrita pelo teorema CAP (Consistency Availability Partition

tolerance) Segundo (BROWNE 2015) teorema CAP diz que somente eacute possiacutevel ter duasdas trecircs caracteriacutesticas ao mesmo tempo

Apesar de natildeo ser possiacutevel consultar dados usando SQL esta abordagempermite faacutecil armazenamento e consulta de dados independente da estrutura do conteuacutedo(ABRAMOVA BERNADINO FURTADO 2014) Bancos NoSQL tambeacutem demonstrammelhor escalabilidade horizontal (EVANS 2011) Isso significa que servidores de baixocusto podem satisfazer as requisiccedilotildees enquanto os custos satildeo reduzidos O gerenciamentodesse grande volume de dados seria difiacutecil porem essas bases de dados satildeo projetadaspara gerenciaacute-los automaticamente recuperar de falhas e consertar o sistema por completo(STOLERU 2010)

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 3: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Este trabalho eacute dedicado a todos que acreditaram

em mim e me ajudaram nos ultimos anos durante

essa difiacutecil caminhada

AGRADECIMENTOS

Agradeccedilo a todos que me ajudaram a superar mais este desafio eu natildeo poderiame expressar de forma diferente Agradeccedilo ao professor Roberto que acreditou em mimque me ajudou sempre que precisei mesmo passando por dificuldades Agradeccedilo a todosque me deram uma segunda chance para poder concluir com sucesso mais esse passo naminha formaccedilatildeo Natildeo posso deixar de agradecer a minha querida Alice que me apoiasempre Agradeccedilo tambeacutem a minha famiacutelia e minha matildee que sempre me ajuda apesar dosmeus erros Aos amigos que sempre datildeo apoio e ideias e diminuem a dor das dificuldadesda vida

RESUMO

A coleta de dados automatizada estaacute presente em diversas atividades humanas Seja paraatividades que possam colocar a vida de um ser humano em perigo reduccedilatildeo do gasto derecursos melhoria de processos ou outras aplicaccedilotildees possiacuteveis pode-se utilizar sistemasembarcados em conjunto com sensores para a coleta de dados de forma automatizadaDados provenientes de coleta tem um ou alguns dos seguintes propoacutesitos descriccedilatildeoexplicaccedilatildeo ou prediccedilatildeo A descriccedilatildeo de cenaacuterios a busca de explicaccedilotildees ou prediccedilotildeesbaseadas na compreensatildeo da causa de eventos podem ser dependentes de coleta de dadosCom o crescente aumento de necessidade e oportunidade de coleta de dados visandoaplicaccedilotildees cientiacuteficas este trabalho busca demonstrar a aplicaccedilatildeo de SGBD em dadoscaracteriacutesticos de mediccedilotildees e monitoramento cientiacutefico Diversos fatores como qualidadee disponibilidade de comunicaccedilatildeo necessidade de disponibilidade imediata dos dados evolume de dados vatildeo influenciar no tipo de arquitetura e qual SGBD seraacute utilizado Osestudos de caso foram feitos com o SGBD dentro de um computador embarcado quefaz ou recebe dados de coleta Foram analisados um SGBD relacional e um NoSQLMySQL e Redis respectivamente em diversas fases desde a configuraccedilatildeo dos ambientesateacute a manipulaccedilatildeo dos dados de mediccedilotildees simulados Pode-se perceber a diferenccedila dasarquiteturas dos SGBDs nos estudos de caso Para realizar os experimentos foram utilizadoso pcDuino 1 e o Raspberry Pi 2 Ambos contecircm processadores de arquitetura ARM poreacutemnatildeo satildeo iguais em velocidade nuacutecleos de processamento e outras caracteriacutesticas Algumasdessas diferenccedilas de arquitetura foram percebidas nos estudos de caso Os estudos de casosugerem que a configuraccedilatildeo escolhida para gerenciar dados de aplicaccedilotildees de coleta dedados depende de caracteriacutesticas especiacuteficas da aplicaccedilatildeo e da necessidade de cada casoem particular jaacute que cada SGDB mostrou pontos favoraacuteveis e desfavoraacuteveis nos estudosrealizados

Palavras-chaves Banco de Dados Sensores NoSQL

ABSTRACT

Automatized data gathering makes part of various parts of human life Whether it beactivities poses a person life at risk resource spending reduction processes improvementsor many other applications possibles it is possible to use embedded systems along withsensors in automatized data gathering Data provided by gather has one or more purposedescription explanation or prediction A scenery description the search for explicationsor predictions based on comprehension of the causes of events can be dependents of datagathering As the need and opportunity of data gathering is increasing this study aims showa DBMS in management of usual scientific data The study cases have been done withDBMS inside the embedded computer which gathers metering data It has been analyzed arelational DBMS and a NoSQL DBMS MySQL and Redis respectively in various stagessince the enviroment setup to the data handling in study cases It has been possible observethe architectural differences in study cases results To run the experiments it has been useda pcDuino 1 and a Raspberry Pi 2 Both have ARM architecture processors however theyhavenrsquot the same speed nor same amount of processing cores among others differencesSome of those differences have been seen in the study cases results The study cases haveshown the best configuration to be chosen for an application is particular to that applicationas each DBMS have shown upsides and downsides in the study cases

Keywords Databases Sensors NoSQL

SUMAacuteRIO

1 INTRODUCcedilAtildeO 1

2 FUNDAMENTACcedilAtildeO TEOacuteRICA 5

21 Sistemas Gerenciadores de Banco de Dados 6

22 SGBDs relacionais 7

221 MySQL 8

23 SGBDs natildeo relacionais 9

231 Redis 10

24 Sistemas Embarcados 12

25 Resumo 13

3 MATERIAIS E MEacuteTODOS 14

31 Equipamentos utilizados 14

32 Preparaccedilatildeo do ambiente de pesquisa 17

33 Armazenamento utilizado 18

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs 18

35 Caracteriacutesticas da massa de teste 19

36 Carga dos dados 20

37 Consulta dos dados 21

38 Resumo 22

4 RESULTADOS E DISCUSSOtildeES 24

41 Estudo de caso 1 24

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1 24

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2 25

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino 26

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2 26

415 Tabela de resultados do estudo de caso 1 27

42 Estudo de caso 2 28

421 Consultas em 1 milhatildeo de elementos no pcDuino 28

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2 29

423 Consultas em 25 milhotildees de elementos no pcDuino 30

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2 30

425 Tabelas com os resultados do estudo de caso 2 31

5 CONCLUSOtildeES 32

6 TRABALHOS FUTUROS 34

REFEREcircNCIAS 35

A GERADOR DE DADOS DE MEDICcedilAtildeO DE SENSORES 37

B SCRIPT LUA DE CONSULTA NO SGBD REDIS 41

LISTA DE ILUSTRACcedilOtildeES

Figura 1 ndash pcDuino 1 15Figura 2 ndash Raspberry Pi 2 17Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis 24Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis 25Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis 25Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL 25Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Rasp-

berry Pi 2 26Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL 26Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL 26Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no

Raspberry Pi 2 27Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo 27Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis 27Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis 28Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis 28Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL 29Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis 29Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis 29Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL 30Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL 30Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL 31

LISTA DE TABELAS

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1 15Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2 16Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis 19Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL 20Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar 27Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos 31Tabela 7 ndash Consulta de dados - busca com intervalos de valores 31

LISTA DE QUADROS

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL 19Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis 20Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo 20Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados 21Quadro 5 ndash Comando utilizado para inserir dados no MySQL 21Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do

Redis e inserir dados no MySQL 21Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor

Redis 21Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso 22Quadro 9 ndash Condiccedilotildees para consulta de maior e menor 22Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso 22Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso 22

LISTA DE ABREVIATURAS E SIGLAS

ACID Atomicity Consistency Isolation Durability

API Application Programing Interface

ARM Advanced RISC Machine

BASE Basically Available Soft state Eventual consistency

CLI command-line interface

CPU Central Processing Unit

DDL Data Definition Language

DML Data Manipulation Language

GCC GNU Compiler Collection

GPS Global System Position

mA mili-Ampeacutere

NoSQL Not Only SQL

RAM Random-Access Memory

Redis Remote DIctionary Server

SGBD Sistema Gerenciador de Banco de Dados

SQL Structured Query Language

USB Universal Serial Bus

XML eXtensible Markup Language

XQuery XML Query

1

CAPIacuteTULO 1

INTRODUCcedilAtildeO

A coleta de dados por sensores estaacute presente em diversas atividades humanasAtividades como previsatildeo do tempo exploraccedilatildeo extraterrestre suporte a atividades cientiacute-ficas conforto residencial seguranccedila hospitalares industriais e inuacutemeras outras satildeo cadavez mais auxiliadas por coleta de dados

Dados provenientes de coleta tem um ou alguns dos seguintes propoacutesitosdescriccedilatildeo explicaccedilatildeo ou prediccedilatildeo (KUMAR 1988) Os dados descritivos respondemperguntas como ldquoquem rdquo ldquoo que rdquo e ldquoquandordquo mas natildeo perguntas como ldquocomordquo ouldquopor querdquo Uma explicaccedilatildeo necessita uma extrapolaccedilatildeo de um relacionamento causa eefeito no qual o investigador tenta entender por que um fenocircmeno processo ou eventoaconteceu ou natildeo Prediccedilotildees satildeo baseadas no entendimento da causa de eventos Dados satildeocoletados para esses fins e em aplicaccedilotildees cientiacuteficas a coleta de dados pode ser essencialpara todo o processo de pesquisa para identificar um problema auxiliar na soluccedilatildeo ouembasar uma teoria

Sensores associados a unidades de processamento satildeo cada vez mais utilizados(EVANS 2011) para executar coleta automatizada de dados Esses sistemas satildeo importan-tes pois executam a coleta na maior parte das vezes com mais facilidade e precisatildeo que umhumano e a um custo menor Ainda pode-se considerar os lugares aos quais os humanos

Capiacutetulo 1 Introduccedilatildeo 2

natildeo podem acessar como ambientes com radiaccedilatildeo ou amostragens de alta frequecircncia porexemplo

Dada a importacircncia de sistemas de coleta de dados este trabalho busca apre-sentar formas de gerenciar os dados armazenados em sistemas de coleta de dados voltadospara aplicaccedilotildees cientiacuteficas

Para verificar onde e como um banco de dados para sistemas embarcadospodem auxiliar o processo de coleta de dados eacute necessaacuterio mencionar o papel que outrastecnologias tem nas aplicaccedilotildees de anaacutelise de dados e como elas podem influenciar nautilizaccedilatildeo de bancos de dados em sistemas de coleta

Sistemas de coleta de dados em geral satildeo compostos por sistemas embarcadosdedicados exclusivamente a essa tarefa Podem ter ou natildeo acesso agrave internet A energiapode originar da rede eleacutetrica baterias descartaacuteveis ou alguma combinaccedilatildeo de alimentaccedilatildeoexterna com bateria recarregaacutevel A autonomia pode variar de dias ateacute anos O tipode amostragem pode ser desde baixa frequecircncia e baixa resoluccedilatildeo ateacute amostras de altafrequecircncia e alta resoluccedilatildeo Existem sistemas que natildeo podem atrasar no processo de coletae entrega da informaccedilatildeo e tem que ser extremamente previsiacuteveis (hard real-time ou soft

real-time) Com a diversidade de aplicaccedilotildees e avanccedilos tecnoloacutegicos existem incontaacuteveisaplicaccedilotildees com caracteriacutesticas variadas

Compreendendo que existe uma variedade muito grande de sistemas de medi-ccedilatildeo alguns casos podem tirar proveito de um armazenamento local dos dados de coletagerenciados por um banco de dados

Para imaginar o impacto da conectividade agrave Internet em sistemas de coletaseratildeo nomeadas caracteriacutesticas de conexotildees como velocidade disponibilidade e custoDentro dessas caracteriacutesticas pode-se analisar se o dado coletado consegue chegar aodestino (velocidade eou disponibilidade) e com que custo As atividades de coleta podemnecessitar de uma transmissatildeo ainda em tempo real (aplicaccedilotildees meacutedicas) ou de grandesvolumes de dados (coleta de imagens)

Se natildeo houver algum tipo de conexatildeo disponiacutevel ou sem todas as caracteriacutesticasnecessaacuterias para fazer os dados da coleta chegarem ao destino ainda eacute possiacutevel utilizaroutros meios para transferiacute-los Pode-se periodicamente transportar os dados por unidadesde armazenamento ou coleta-los manualmente com algum equipamento para esse fimPoreacutem esses meios simplesmente natildeo atendem atividades que necessitam de transmissotildeesem tempo real por exemplo Para as aplicaccedilotildees que o armazenamento local dos dadospode substituir ou auxiliar conexatildeo com a Internet para transmitir os dados coletadospode-se utilizar bancos de dados

Capiacutetulo 1 Introduccedilatildeo 3

Outro componente que estaacute presente em sistemas embarcados de coletas au-tomatizadas satildeo unidades de processamento O constante aumento na capacidade deprocessamento aumenta as possibilidades de coleta de dados Dessa forma pode-se adicio-nar um armazenamento local de dados Com os dados armazenados localmente eacute possiacutevelrealizar algum processamento preacutevio ou gerar estatiacutestica eou feedback para melhorar aproacutepria coleta de dados por exemplo Esse crescimento entatildeo aumenta as possibilidadesdo sistema de coleta

A eficiecircncia energeacutetica de sistemas de coleta baseados em sistemas embarcadosestaacute constantemente aumentando Em conjunto com a melhora constante de baterias exis-tem alguns cenaacuterios recorrentes dispositivos que usam muito pouca energia e funcionampor mais tempo (chegando a mais de um ano) ou dispositivos que aproveitam a eficiecircnciaenergeacutetica e aumentam muito a capacidade de processamento Pode-se ter situaccedilotildees derestriccedilatildeo de energia e necessidade de reduzir transmissotildees dos dados de medidoccedilotildees mascom um armazenamento local a atividade pode continuar com as transmissotildees sendo feitasposteriormente

Dependendo do tipo de configuraccedilatildeo de sistema de mediccedilatildeo utilizado o equi-pamento sequer tem um sistema operacional como pode ter recursos semelhantes a compu-tadores pessoais No primeiro caso satildeo equipamentos embarcados extremamente simplesque podem natildeo dispor de recursos para sustentar um SGBD Pela simplicidade da arquite-tura pode natildeo compensar o custo de desenvolvimento e manutenccedilatildeo No segundo casoequipamentos embarcados com mais recursos disponiacuteveis pode-se utilizar um SGBD

Quando a integraccedilatildeo da aplicaccedilatildeo de coleta eacute feita com o SGBD para arma-zenamento de dados locais podemos adicionar caracteriacutesticas como maior seguranccedila edisponibilidade dos dados melhor recuperaccedilatildeo dentre outras vantagens de se utilizar umSGBD

Espera-se apresentar e testar meacutetodos de gerenciamento de dados caracteriacutesti-cos de sensores visando aplicaccedilotildees cientiacuteficas Os objetivos especiacuteficos satildeo

1 Investigar as tendecircncias tecnologias de SGBD

2 Comparar a performance de sistemas embarcados com alguns SGBD investigados

3 Aplicar dois tipos de conjunto de dados para testar os sistemas embarcados e osSGBD

4 Realizar teste de leitura e acesso para avaliar desempenho tanto dos sistemasembarcados como dos SGBD

Capiacutetulo 1 Introduccedilatildeo 4

Este estudo pode contribuir na discussatildeo de como os dados de um sistema decoleta seratildeo gerenciados em funccedilatildeo de recursos disponiacuteveis configuraccedilatildeo do sistema e osresultados que se buscam atingir

Nesta introduccedilatildeo buscou-se descrever a importacircncia da coleta de dados natildeo soacutepara fins cientiacuteficos mas para vaacuterias atividades humanas atualmente Aleacutem disso foramdemonstrados alguns vaacuterios cenaacuterios e tecnologias dos quais alguns o uso de SGBD paraarmazenamento local beneficia a atividade de coleta de dados Por fim os objetivos queorientam esta pesquisa

No capiacutetulo 2 Revisatildeo de Literatura seratildeo levantados conceitos e teoriarelativo agrave SGBDs em geral como eles podem ajudar e sobre os dois utilizados nosexperimentos Dada a ligaccedilatildeo entre sistemas de coleta de dados exposta na introduccedilatildeoseratildeo abordados alguns conceitos relativos agrave sistemas embarcados

No capiacutetulo 3 Materiais e Meacutetodos seratildeo descritos todos os componentesfiacutesicos e de software selecionados para os testes Aleacutem disso seraacute descrito como foramfeitos os testes

No capiacutetulo 4 Estudos de Caso seratildeo apresentados os testes feitos com osrespectivos paracircmetros No capiacutetulo 5 Resultados seratildeo discutidos os resultados dosEstudos de Caso

No capiacutetulo 6 Trabalhos Futuros busca-se levantar partes desta monografiaque podem ser ainda mais explorados

O capiacutetulo seguinte a Conclusatildeo seratildeo revistas as hipoacuteteses iniciais compara-das aos resultados

CAPIacuteTULO 2

FUNDAMENTACcedilAtildeO TEOacuteRICA

A utilizaccedilatildeo de um SGBD (Sistema Gerenciador de Banco de Dados) trazimpactos positivos e negativos decorrentes da combinaccedilatildeo das variaacuteveis de caracteriacutesticasdo SGBD em si de sua arquitetura e da aplicaccedilatildeo

Sistemas de coleta automatizada de dados cientiacuteficos podem ser construiacutedosutilizando Sistemas Embarcados Um sistema embarcado eacute definido pela sua aplicaccedilatildeopois tendem a ser equipamentos com funccedilatildeo bem definida Ao variar a aplicaccedilatildeo mudam-sejunto os recursos e atributos do equipamento

Considerando essas combinaccedilotildees temos cenaacuterios favoraacuteveis ou natildeo a utilizaccedilatildeode um SGBD para gerenciar dados localmente em um sistema de coleta automatizadoNeste capitulo seratildeo apresentados os conceitos necessaacuterios para evidenciar as principaisvariaacuteveis dos elementos envolvidos neste experimento e como as mesmas podem influenciarna aplicaccedilatildeo

Seratildeo abordados conceitos gerais sobre SGBDs dos tipos relacionais e NoSQLEm seguida referecircncias sobre sistemas embarcados dado que o mesmo tem influecircncia nautilizaccedilatildeo ou natildeo de SGBD em uma aplicaccedilatildeo de coleta

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 6

21 Sistemas Gerenciadores de Banco de Dados

Um SGBD eacute um sistema computadorizado para armazenar registros segundo(DATE 2004) Bases de dados estatildeo presentes em computadores de diferentes escalasdesde pequenos sistemas embarcados ateacute clusters de mainframes Eacute normalmente utilizadapara o software que gerencia a base de dados enquanto a denominaccedilatildeo banco de dados oubase de dados se refere ao conjunto de dados gerenciado (DATE 2004)

A automaccedilatildeo do processamento de dados eacute mais antiga que os proacuteprios com-putadores Silberchatz (SUDARSHAN 2004) afirma que cartotildees perfurados inventadospor Herman Hollerith foram usados no comeccedilo do seacuteculo 20 nos Estados Unidos paraarmazenar dados de censo Sistemas mecacircnicos foram usados para processar os cartotildees eapresentar os resultados

Com a evoluccedilatildeo dos meios de armazenamento e processamento entre asdeacutecadas de 50 e 60 fitas magneacuteticas foram usadas para armazenamento de dados Comofitas tem forma de acesso sequencial os dados tinham que ser acessados ou modificadosde forma sequencial

Desde o fim dos anos 60 ateacute os anos 70 houve a disseminaccedilatildeo do uso dodisco riacutegido a utilizaccedilatildeo de vaacuterios discos o uso de sistemas de arquivos e aumento nasvelocidades de transferecircncia por conta de novos materiais e processos de fabricaccedilatildeo Aleacutemdisso o modelo de acesso aleatoacuterio alterou a forma como os dados eram acessados emodificados (SPELIOTIS 2000)

Nos aos 80 foi criado o modelo relacional de dados que foi implementado noSystem R da IBM que desenvolveu teacutecnicas eficientes de construccedilatildeo de bases de dadosrelacionais

No iniacutecio dos anos 90 a linguagem SQL foi escolhida para aplicaccedilotildees desuporte a decisatildeo que fazem muitos acessos ao banco de dados As bases de dadospassaram a ter que oferecer suporte a uma taxa muito alta de processamento de transaccedilotildeesaleacutem de ser mais confiaacuteveis manter disponibilidade 24x7 e suportar dados de interfaceWeb SQL fornece vaacuterios recursos como DDL (Data-Definition Language) para trabalharcom esquemas e relacionamentos por exemplo DML (Data Manipulation Language) parafazer consultas apagar inserir ou modificar tuplas no banco controles de integridadegeraccedilatildeo de visotildees controle transacional permissotildees de acesso e outros

No comeccedilo da deacutecada 2000 houve a adoccedilatildeo do XML em associaccedilatildeo com alinguagem XQuery como nova tecnologia de consulta Nesse periacuteodo tambeacutem houve umcrescimento na utilizaccedilatildeo de SGBDs open-source como o PostgresSQL e o MySQL

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 7

No fim da deacutecada de 2000 houve o crescimento de SGBDs especializados emanalises de dados como os column-store Novos sistemas de armazenamento de dadosdistribuiacutedos foram construiacutedos para ter capacidade para anaacutelise de dados de sites comoAmazon

Com o passar do tempo as mudanccedilas de hardware capacidade de processa-mento e armazenamento velocidades de conexotildees dados disponiacuteveis e necessidadesopor-tunidades influenciaram o desenvolvimento dos SGBDs Verificamos que esse processoteve duas vias o desenvolvimento de recursos gerou espaccedilo para mudanccedilas e as neces-sidades tambeacutem levaram ao desenvolvimento e popularizaccedilatildeo de outras tecnologias deSGBDs

22 SGBDs relacionais

SGBDs relacionais foram desenvolvidos nos anos 70 como uma tecnologiapara armazenar dados estruturados organizados como tabelas com sua proacutepria linguagem ndasho SQL (OUNALLI 2012)

Segundo (SUDARSHAN 2004) um SGBD relacional eacute baseado no modelorelacional e usa uma coleccedilatildeo de tabelas para representar os dados e os relacionamentosentre esses dados O tipo relacional de SGBD eacute hoje em dia o principal utilizado nomercado

Uma base relacional consiste em um conjunto de tabelas As tabelas tecircmvaacuterias colunas e cada coluna tem um uacutenico nome Em geral uma linha representa orelacionamento entre um conjunto de valores e satildeo chamadas de tuplas O esquema deuma base relacional conteacutem os atributos tipos e regras das relaccedilotildees como chaves primaacuteriase estrangeiras

As tuplas podem ter um atributo do tipo chave primaacuteria que eacute a identificaccedilatildeouacutenica e natildeo repetida daquele registro Essas chaves podem ser referenciadas por outrosregistros por meio de um atributo do tipo chave estrangeira

Uma caracteriacutestica dos SGBDs e linguagens relacionais eacute a implementaccedilatildeo daaacutelgebra relacional Ela define um conjunto de operaccedilotildees

1 Seleccedilatildeo - retorna as linhas que satisfazem a condiccedilatildeo de seleccedilatildeo

2 Projeccedilatildeo - retorna atributos especiacuteficos de todas as linhas da entrada da relaccedilatildeoRemove as linhas duplicadas da saiacuteda

3 Natural join - retorna os pares de linhas de duas entradas que tem o mesmo valor emtodos os atributos que tem o mesmo nome

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 8

4 Produto cartesiano - retorna todos os pares de linhas de duas relaccedilotildees de entradasindependente de ter os mesmos nomes ou valores em comum

5 Uniatildeo - retorna a uniatildeo de tuplas de duas relaccedilotildees

Linguagens como o SQL utilizadas para fazer operaccedilotildees nas bases de dadossatildeo baseadas em aacutelgebra relacional que provecirc vaacuterios recursos para gerar as consultas SQLeacute a linguagem relacional mais influente do mercado

221 MySQL

O MySQL eacute um SGBD do tipo relacional que implementa um padratildeo SQLcom algumas extensotildees Foi comprado pela Sun Microsystems em 2008 (WIDENIUS2008) e eacute parte da Oracle que ao comprar a Sun Microsystems comprou todos os seusprodutos tambeacutem O MySQL tem como pontos positivos um suporte bom dos usuaacuterios nosfoacuteruns e grande e bem detalhada documentaccedilatildeo Eacute um SGBD com baixo overhead o quepermite a execuccedilatildeo em computadores com poucos recursos de memoacuteria e processamento

Poreacutem a capacidade de execuccedilatildeo e armazenamento do SGBD seraacute propor-cional agrave arquitetura de hardware e software que o executa O MySQL eacute um SGBDopen-source e o banco de dados dependendo da arquitetura de execuccedilatildeo e mecanismo dearmazenamento pode chegar a ter ateacute 64TB de tamanho (MYSQL 2015)

Eacute escrito em C e C++ e tem compatibilidade com arquiteturas de hardwareSPARC 64 SPARC 32 x86 x86 64 IA64 e ARM Eacute possiacutevel acessar o banco de dadospor meio de uma interface CLI (command-line interface ndash interface de linha de comando)ou pelo ConnectorODBC Existe APIs para C C++ Eiffel Java PHP Python Ruby eTcl

O MySQL disponibiliza algumas opccedilotildees de armazenamento das bases de dados(MYSQL 2015)

1 InnoDB o mecanismo padratildeo de armazenamento do MySQL Eacute compatiacutevel comACID e dispotildeem de recursos como commit e rollback Eacute o mais indicado paraser usado na maioria das aplicaccedilotildees por ter alto desempenho e operar de formatransacional

2 MyISAM eacute uma forma de armazenamento mais simples A trava para escrita emniacutevel de tabela limita o desempenho para operaccedilotildees que envolvem leitura e escrita

Existem outros mecanismos de armazenamento poreacutem ou tem uso muitorestrito ou estatildeo em desuso como CSV Archive Federated e Merge Outro exemplo eacute

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 9

o mecanismo de armazenamento Memory que guarda os dados na memoacuteria RAM e deacordo com o manual estaacute caindo em desuso O mecanismo InnoDB pode ser configuradocom buffers que podem em alguns casos substituir o Memory e ainda com a vantagem depersistir os dados em um armazenamento natildeo volaacutetil

23 SGBDs natildeo relacionais

Com o constante aumento dos dados armazenados e analisados os SGBDsrelacionais estatildeo apresentando vaacuterias limitaccedilotildees As consultas aos dados estatildeo perdendoa eficiecircncia pelo grande volume de dados Esse volume de dados estaacute crescendo cadavez mais por conta da evoluccedilatildeo constante das tecnologias de captura de informaccedilatildeo deprocessamento e da inteligecircncia para dar significado a tudo isso Abramova (ABRAMOVABERNADINO FURTADO 2014) afirma que o NoSQL foi desenvolvido para superaralgumas dessas limitaccedilotildees das bases de dados atuais

Os bancos NoSQL satildeo representados pela natildeo existecircncia de uma estrutura dedados riacutegida comparado ao SQL Eacute possiacutevel ter num mesmo espaccedilo de armazenamentoobjetos com membros diferentes Isso natildeo acontece no SQL onde todos os registros tecircmque seguir o modelo das colunas da tabela onde estatildeo inseridos O conceito de NoSQLfoi usado pela primeira vez em 1998 por Carlo Strozzi (ABRAMOVA BERNADINOFURTADO 2014) para se referir a um banco que natildeo usa interface SQL

Os bancos NoSQL satildeo normalmente baseados no teorema BASE (Basically

Available Soft State and Eventually consistente) (VIEBRANTZ 2012) Os bancos relacio-nais satildeo representados pelo ACID (Atomicidade Consistecircncia Isolamento e Durabilidade)Diferente do ACID o BASE sacrifica um pouco da consistecircncia dos dados para ganhardesempenho Essa troca eacute descrita pelo teorema CAP (Consistency Availability Partition

tolerance) Segundo (BROWNE 2015) teorema CAP diz que somente eacute possiacutevel ter duasdas trecircs caracteriacutesticas ao mesmo tempo

Apesar de natildeo ser possiacutevel consultar dados usando SQL esta abordagempermite faacutecil armazenamento e consulta de dados independente da estrutura do conteuacutedo(ABRAMOVA BERNADINO FURTADO 2014) Bancos NoSQL tambeacutem demonstrammelhor escalabilidade horizontal (EVANS 2011) Isso significa que servidores de baixocusto podem satisfazer as requisiccedilotildees enquanto os custos satildeo reduzidos O gerenciamentodesse grande volume de dados seria difiacutecil porem essas bases de dados satildeo projetadaspara gerenciaacute-los automaticamente recuperar de falhas e consertar o sistema por completo(STOLERU 2010)

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 4: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

AGRADECIMENTOS

Agradeccedilo a todos que me ajudaram a superar mais este desafio eu natildeo poderiame expressar de forma diferente Agradeccedilo ao professor Roberto que acreditou em mimque me ajudou sempre que precisei mesmo passando por dificuldades Agradeccedilo a todosque me deram uma segunda chance para poder concluir com sucesso mais esse passo naminha formaccedilatildeo Natildeo posso deixar de agradecer a minha querida Alice que me apoiasempre Agradeccedilo tambeacutem a minha famiacutelia e minha matildee que sempre me ajuda apesar dosmeus erros Aos amigos que sempre datildeo apoio e ideias e diminuem a dor das dificuldadesda vida

RESUMO

A coleta de dados automatizada estaacute presente em diversas atividades humanas Seja paraatividades que possam colocar a vida de um ser humano em perigo reduccedilatildeo do gasto derecursos melhoria de processos ou outras aplicaccedilotildees possiacuteveis pode-se utilizar sistemasembarcados em conjunto com sensores para a coleta de dados de forma automatizadaDados provenientes de coleta tem um ou alguns dos seguintes propoacutesitos descriccedilatildeoexplicaccedilatildeo ou prediccedilatildeo A descriccedilatildeo de cenaacuterios a busca de explicaccedilotildees ou prediccedilotildeesbaseadas na compreensatildeo da causa de eventos podem ser dependentes de coleta de dadosCom o crescente aumento de necessidade e oportunidade de coleta de dados visandoaplicaccedilotildees cientiacuteficas este trabalho busca demonstrar a aplicaccedilatildeo de SGBD em dadoscaracteriacutesticos de mediccedilotildees e monitoramento cientiacutefico Diversos fatores como qualidadee disponibilidade de comunicaccedilatildeo necessidade de disponibilidade imediata dos dados evolume de dados vatildeo influenciar no tipo de arquitetura e qual SGBD seraacute utilizado Osestudos de caso foram feitos com o SGBD dentro de um computador embarcado quefaz ou recebe dados de coleta Foram analisados um SGBD relacional e um NoSQLMySQL e Redis respectivamente em diversas fases desde a configuraccedilatildeo dos ambientesateacute a manipulaccedilatildeo dos dados de mediccedilotildees simulados Pode-se perceber a diferenccedila dasarquiteturas dos SGBDs nos estudos de caso Para realizar os experimentos foram utilizadoso pcDuino 1 e o Raspberry Pi 2 Ambos contecircm processadores de arquitetura ARM poreacutemnatildeo satildeo iguais em velocidade nuacutecleos de processamento e outras caracteriacutesticas Algumasdessas diferenccedilas de arquitetura foram percebidas nos estudos de caso Os estudos de casosugerem que a configuraccedilatildeo escolhida para gerenciar dados de aplicaccedilotildees de coleta dedados depende de caracteriacutesticas especiacuteficas da aplicaccedilatildeo e da necessidade de cada casoem particular jaacute que cada SGDB mostrou pontos favoraacuteveis e desfavoraacuteveis nos estudosrealizados

Palavras-chaves Banco de Dados Sensores NoSQL

ABSTRACT

Automatized data gathering makes part of various parts of human life Whether it beactivities poses a person life at risk resource spending reduction processes improvementsor many other applications possibles it is possible to use embedded systems along withsensors in automatized data gathering Data provided by gather has one or more purposedescription explanation or prediction A scenery description the search for explicationsor predictions based on comprehension of the causes of events can be dependents of datagathering As the need and opportunity of data gathering is increasing this study aims showa DBMS in management of usual scientific data The study cases have been done withDBMS inside the embedded computer which gathers metering data It has been analyzed arelational DBMS and a NoSQL DBMS MySQL and Redis respectively in various stagessince the enviroment setup to the data handling in study cases It has been possible observethe architectural differences in study cases results To run the experiments it has been useda pcDuino 1 and a Raspberry Pi 2 Both have ARM architecture processors however theyhavenrsquot the same speed nor same amount of processing cores among others differencesSome of those differences have been seen in the study cases results The study cases haveshown the best configuration to be chosen for an application is particular to that applicationas each DBMS have shown upsides and downsides in the study cases

Keywords Databases Sensors NoSQL

SUMAacuteRIO

1 INTRODUCcedilAtildeO 1

2 FUNDAMENTACcedilAtildeO TEOacuteRICA 5

21 Sistemas Gerenciadores de Banco de Dados 6

22 SGBDs relacionais 7

221 MySQL 8

23 SGBDs natildeo relacionais 9

231 Redis 10

24 Sistemas Embarcados 12

25 Resumo 13

3 MATERIAIS E MEacuteTODOS 14

31 Equipamentos utilizados 14

32 Preparaccedilatildeo do ambiente de pesquisa 17

33 Armazenamento utilizado 18

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs 18

35 Caracteriacutesticas da massa de teste 19

36 Carga dos dados 20

37 Consulta dos dados 21

38 Resumo 22

4 RESULTADOS E DISCUSSOtildeES 24

41 Estudo de caso 1 24

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1 24

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2 25

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino 26

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2 26

415 Tabela de resultados do estudo de caso 1 27

42 Estudo de caso 2 28

421 Consultas em 1 milhatildeo de elementos no pcDuino 28

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2 29

423 Consultas em 25 milhotildees de elementos no pcDuino 30

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2 30

425 Tabelas com os resultados do estudo de caso 2 31

5 CONCLUSOtildeES 32

6 TRABALHOS FUTUROS 34

REFEREcircNCIAS 35

A GERADOR DE DADOS DE MEDICcedilAtildeO DE SENSORES 37

B SCRIPT LUA DE CONSULTA NO SGBD REDIS 41

LISTA DE ILUSTRACcedilOtildeES

Figura 1 ndash pcDuino 1 15Figura 2 ndash Raspberry Pi 2 17Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis 24Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis 25Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis 25Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL 25Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Rasp-

berry Pi 2 26Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL 26Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL 26Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no

Raspberry Pi 2 27Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo 27Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis 27Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis 28Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis 28Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL 29Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis 29Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis 29Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL 30Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL 30Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL 31

LISTA DE TABELAS

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1 15Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2 16Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis 19Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL 20Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar 27Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos 31Tabela 7 ndash Consulta de dados - busca com intervalos de valores 31

LISTA DE QUADROS

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL 19Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis 20Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo 20Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados 21Quadro 5 ndash Comando utilizado para inserir dados no MySQL 21Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do

Redis e inserir dados no MySQL 21Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor

Redis 21Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso 22Quadro 9 ndash Condiccedilotildees para consulta de maior e menor 22Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso 22Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso 22

LISTA DE ABREVIATURAS E SIGLAS

ACID Atomicity Consistency Isolation Durability

API Application Programing Interface

ARM Advanced RISC Machine

BASE Basically Available Soft state Eventual consistency

CLI command-line interface

CPU Central Processing Unit

DDL Data Definition Language

DML Data Manipulation Language

GCC GNU Compiler Collection

GPS Global System Position

mA mili-Ampeacutere

NoSQL Not Only SQL

RAM Random-Access Memory

Redis Remote DIctionary Server

SGBD Sistema Gerenciador de Banco de Dados

SQL Structured Query Language

USB Universal Serial Bus

XML eXtensible Markup Language

XQuery XML Query

1

CAPIacuteTULO 1

INTRODUCcedilAtildeO

A coleta de dados por sensores estaacute presente em diversas atividades humanasAtividades como previsatildeo do tempo exploraccedilatildeo extraterrestre suporte a atividades cientiacute-ficas conforto residencial seguranccedila hospitalares industriais e inuacutemeras outras satildeo cadavez mais auxiliadas por coleta de dados

Dados provenientes de coleta tem um ou alguns dos seguintes propoacutesitosdescriccedilatildeo explicaccedilatildeo ou prediccedilatildeo (KUMAR 1988) Os dados descritivos respondemperguntas como ldquoquem rdquo ldquoo que rdquo e ldquoquandordquo mas natildeo perguntas como ldquocomordquo ouldquopor querdquo Uma explicaccedilatildeo necessita uma extrapolaccedilatildeo de um relacionamento causa eefeito no qual o investigador tenta entender por que um fenocircmeno processo ou eventoaconteceu ou natildeo Prediccedilotildees satildeo baseadas no entendimento da causa de eventos Dados satildeocoletados para esses fins e em aplicaccedilotildees cientiacuteficas a coleta de dados pode ser essencialpara todo o processo de pesquisa para identificar um problema auxiliar na soluccedilatildeo ouembasar uma teoria

Sensores associados a unidades de processamento satildeo cada vez mais utilizados(EVANS 2011) para executar coleta automatizada de dados Esses sistemas satildeo importan-tes pois executam a coleta na maior parte das vezes com mais facilidade e precisatildeo que umhumano e a um custo menor Ainda pode-se considerar os lugares aos quais os humanos

Capiacutetulo 1 Introduccedilatildeo 2

natildeo podem acessar como ambientes com radiaccedilatildeo ou amostragens de alta frequecircncia porexemplo

Dada a importacircncia de sistemas de coleta de dados este trabalho busca apre-sentar formas de gerenciar os dados armazenados em sistemas de coleta de dados voltadospara aplicaccedilotildees cientiacuteficas

Para verificar onde e como um banco de dados para sistemas embarcadospodem auxiliar o processo de coleta de dados eacute necessaacuterio mencionar o papel que outrastecnologias tem nas aplicaccedilotildees de anaacutelise de dados e como elas podem influenciar nautilizaccedilatildeo de bancos de dados em sistemas de coleta

Sistemas de coleta de dados em geral satildeo compostos por sistemas embarcadosdedicados exclusivamente a essa tarefa Podem ter ou natildeo acesso agrave internet A energiapode originar da rede eleacutetrica baterias descartaacuteveis ou alguma combinaccedilatildeo de alimentaccedilatildeoexterna com bateria recarregaacutevel A autonomia pode variar de dias ateacute anos O tipode amostragem pode ser desde baixa frequecircncia e baixa resoluccedilatildeo ateacute amostras de altafrequecircncia e alta resoluccedilatildeo Existem sistemas que natildeo podem atrasar no processo de coletae entrega da informaccedilatildeo e tem que ser extremamente previsiacuteveis (hard real-time ou soft

real-time) Com a diversidade de aplicaccedilotildees e avanccedilos tecnoloacutegicos existem incontaacuteveisaplicaccedilotildees com caracteriacutesticas variadas

Compreendendo que existe uma variedade muito grande de sistemas de medi-ccedilatildeo alguns casos podem tirar proveito de um armazenamento local dos dados de coletagerenciados por um banco de dados

Para imaginar o impacto da conectividade agrave Internet em sistemas de coletaseratildeo nomeadas caracteriacutesticas de conexotildees como velocidade disponibilidade e custoDentro dessas caracteriacutesticas pode-se analisar se o dado coletado consegue chegar aodestino (velocidade eou disponibilidade) e com que custo As atividades de coleta podemnecessitar de uma transmissatildeo ainda em tempo real (aplicaccedilotildees meacutedicas) ou de grandesvolumes de dados (coleta de imagens)

Se natildeo houver algum tipo de conexatildeo disponiacutevel ou sem todas as caracteriacutesticasnecessaacuterias para fazer os dados da coleta chegarem ao destino ainda eacute possiacutevel utilizaroutros meios para transferiacute-los Pode-se periodicamente transportar os dados por unidadesde armazenamento ou coleta-los manualmente com algum equipamento para esse fimPoreacutem esses meios simplesmente natildeo atendem atividades que necessitam de transmissotildeesem tempo real por exemplo Para as aplicaccedilotildees que o armazenamento local dos dadospode substituir ou auxiliar conexatildeo com a Internet para transmitir os dados coletadospode-se utilizar bancos de dados

Capiacutetulo 1 Introduccedilatildeo 3

Outro componente que estaacute presente em sistemas embarcados de coletas au-tomatizadas satildeo unidades de processamento O constante aumento na capacidade deprocessamento aumenta as possibilidades de coleta de dados Dessa forma pode-se adicio-nar um armazenamento local de dados Com os dados armazenados localmente eacute possiacutevelrealizar algum processamento preacutevio ou gerar estatiacutestica eou feedback para melhorar aproacutepria coleta de dados por exemplo Esse crescimento entatildeo aumenta as possibilidadesdo sistema de coleta

A eficiecircncia energeacutetica de sistemas de coleta baseados em sistemas embarcadosestaacute constantemente aumentando Em conjunto com a melhora constante de baterias exis-tem alguns cenaacuterios recorrentes dispositivos que usam muito pouca energia e funcionampor mais tempo (chegando a mais de um ano) ou dispositivos que aproveitam a eficiecircnciaenergeacutetica e aumentam muito a capacidade de processamento Pode-se ter situaccedilotildees derestriccedilatildeo de energia e necessidade de reduzir transmissotildees dos dados de medidoccedilotildees mascom um armazenamento local a atividade pode continuar com as transmissotildees sendo feitasposteriormente

Dependendo do tipo de configuraccedilatildeo de sistema de mediccedilatildeo utilizado o equi-pamento sequer tem um sistema operacional como pode ter recursos semelhantes a compu-tadores pessoais No primeiro caso satildeo equipamentos embarcados extremamente simplesque podem natildeo dispor de recursos para sustentar um SGBD Pela simplicidade da arquite-tura pode natildeo compensar o custo de desenvolvimento e manutenccedilatildeo No segundo casoequipamentos embarcados com mais recursos disponiacuteveis pode-se utilizar um SGBD

Quando a integraccedilatildeo da aplicaccedilatildeo de coleta eacute feita com o SGBD para arma-zenamento de dados locais podemos adicionar caracteriacutesticas como maior seguranccedila edisponibilidade dos dados melhor recuperaccedilatildeo dentre outras vantagens de se utilizar umSGBD

Espera-se apresentar e testar meacutetodos de gerenciamento de dados caracteriacutesti-cos de sensores visando aplicaccedilotildees cientiacuteficas Os objetivos especiacuteficos satildeo

1 Investigar as tendecircncias tecnologias de SGBD

2 Comparar a performance de sistemas embarcados com alguns SGBD investigados

3 Aplicar dois tipos de conjunto de dados para testar os sistemas embarcados e osSGBD

4 Realizar teste de leitura e acesso para avaliar desempenho tanto dos sistemasembarcados como dos SGBD

Capiacutetulo 1 Introduccedilatildeo 4

Este estudo pode contribuir na discussatildeo de como os dados de um sistema decoleta seratildeo gerenciados em funccedilatildeo de recursos disponiacuteveis configuraccedilatildeo do sistema e osresultados que se buscam atingir

Nesta introduccedilatildeo buscou-se descrever a importacircncia da coleta de dados natildeo soacutepara fins cientiacuteficos mas para vaacuterias atividades humanas atualmente Aleacutem disso foramdemonstrados alguns vaacuterios cenaacuterios e tecnologias dos quais alguns o uso de SGBD paraarmazenamento local beneficia a atividade de coleta de dados Por fim os objetivos queorientam esta pesquisa

No capiacutetulo 2 Revisatildeo de Literatura seratildeo levantados conceitos e teoriarelativo agrave SGBDs em geral como eles podem ajudar e sobre os dois utilizados nosexperimentos Dada a ligaccedilatildeo entre sistemas de coleta de dados exposta na introduccedilatildeoseratildeo abordados alguns conceitos relativos agrave sistemas embarcados

No capiacutetulo 3 Materiais e Meacutetodos seratildeo descritos todos os componentesfiacutesicos e de software selecionados para os testes Aleacutem disso seraacute descrito como foramfeitos os testes

No capiacutetulo 4 Estudos de Caso seratildeo apresentados os testes feitos com osrespectivos paracircmetros No capiacutetulo 5 Resultados seratildeo discutidos os resultados dosEstudos de Caso

No capiacutetulo 6 Trabalhos Futuros busca-se levantar partes desta monografiaque podem ser ainda mais explorados

O capiacutetulo seguinte a Conclusatildeo seratildeo revistas as hipoacuteteses iniciais compara-das aos resultados

CAPIacuteTULO 2

FUNDAMENTACcedilAtildeO TEOacuteRICA

A utilizaccedilatildeo de um SGBD (Sistema Gerenciador de Banco de Dados) trazimpactos positivos e negativos decorrentes da combinaccedilatildeo das variaacuteveis de caracteriacutesticasdo SGBD em si de sua arquitetura e da aplicaccedilatildeo

Sistemas de coleta automatizada de dados cientiacuteficos podem ser construiacutedosutilizando Sistemas Embarcados Um sistema embarcado eacute definido pela sua aplicaccedilatildeopois tendem a ser equipamentos com funccedilatildeo bem definida Ao variar a aplicaccedilatildeo mudam-sejunto os recursos e atributos do equipamento

Considerando essas combinaccedilotildees temos cenaacuterios favoraacuteveis ou natildeo a utilizaccedilatildeode um SGBD para gerenciar dados localmente em um sistema de coleta automatizadoNeste capitulo seratildeo apresentados os conceitos necessaacuterios para evidenciar as principaisvariaacuteveis dos elementos envolvidos neste experimento e como as mesmas podem influenciarna aplicaccedilatildeo

Seratildeo abordados conceitos gerais sobre SGBDs dos tipos relacionais e NoSQLEm seguida referecircncias sobre sistemas embarcados dado que o mesmo tem influecircncia nautilizaccedilatildeo ou natildeo de SGBD em uma aplicaccedilatildeo de coleta

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 6

21 Sistemas Gerenciadores de Banco de Dados

Um SGBD eacute um sistema computadorizado para armazenar registros segundo(DATE 2004) Bases de dados estatildeo presentes em computadores de diferentes escalasdesde pequenos sistemas embarcados ateacute clusters de mainframes Eacute normalmente utilizadapara o software que gerencia a base de dados enquanto a denominaccedilatildeo banco de dados oubase de dados se refere ao conjunto de dados gerenciado (DATE 2004)

A automaccedilatildeo do processamento de dados eacute mais antiga que os proacuteprios com-putadores Silberchatz (SUDARSHAN 2004) afirma que cartotildees perfurados inventadospor Herman Hollerith foram usados no comeccedilo do seacuteculo 20 nos Estados Unidos paraarmazenar dados de censo Sistemas mecacircnicos foram usados para processar os cartotildees eapresentar os resultados

Com a evoluccedilatildeo dos meios de armazenamento e processamento entre asdeacutecadas de 50 e 60 fitas magneacuteticas foram usadas para armazenamento de dados Comofitas tem forma de acesso sequencial os dados tinham que ser acessados ou modificadosde forma sequencial

Desde o fim dos anos 60 ateacute os anos 70 houve a disseminaccedilatildeo do uso dodisco riacutegido a utilizaccedilatildeo de vaacuterios discos o uso de sistemas de arquivos e aumento nasvelocidades de transferecircncia por conta de novos materiais e processos de fabricaccedilatildeo Aleacutemdisso o modelo de acesso aleatoacuterio alterou a forma como os dados eram acessados emodificados (SPELIOTIS 2000)

Nos aos 80 foi criado o modelo relacional de dados que foi implementado noSystem R da IBM que desenvolveu teacutecnicas eficientes de construccedilatildeo de bases de dadosrelacionais

No iniacutecio dos anos 90 a linguagem SQL foi escolhida para aplicaccedilotildees desuporte a decisatildeo que fazem muitos acessos ao banco de dados As bases de dadospassaram a ter que oferecer suporte a uma taxa muito alta de processamento de transaccedilotildeesaleacutem de ser mais confiaacuteveis manter disponibilidade 24x7 e suportar dados de interfaceWeb SQL fornece vaacuterios recursos como DDL (Data-Definition Language) para trabalharcom esquemas e relacionamentos por exemplo DML (Data Manipulation Language) parafazer consultas apagar inserir ou modificar tuplas no banco controles de integridadegeraccedilatildeo de visotildees controle transacional permissotildees de acesso e outros

No comeccedilo da deacutecada 2000 houve a adoccedilatildeo do XML em associaccedilatildeo com alinguagem XQuery como nova tecnologia de consulta Nesse periacuteodo tambeacutem houve umcrescimento na utilizaccedilatildeo de SGBDs open-source como o PostgresSQL e o MySQL

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 7

No fim da deacutecada de 2000 houve o crescimento de SGBDs especializados emanalises de dados como os column-store Novos sistemas de armazenamento de dadosdistribuiacutedos foram construiacutedos para ter capacidade para anaacutelise de dados de sites comoAmazon

Com o passar do tempo as mudanccedilas de hardware capacidade de processa-mento e armazenamento velocidades de conexotildees dados disponiacuteveis e necessidadesopor-tunidades influenciaram o desenvolvimento dos SGBDs Verificamos que esse processoteve duas vias o desenvolvimento de recursos gerou espaccedilo para mudanccedilas e as neces-sidades tambeacutem levaram ao desenvolvimento e popularizaccedilatildeo de outras tecnologias deSGBDs

22 SGBDs relacionais

SGBDs relacionais foram desenvolvidos nos anos 70 como uma tecnologiapara armazenar dados estruturados organizados como tabelas com sua proacutepria linguagem ndasho SQL (OUNALLI 2012)

Segundo (SUDARSHAN 2004) um SGBD relacional eacute baseado no modelorelacional e usa uma coleccedilatildeo de tabelas para representar os dados e os relacionamentosentre esses dados O tipo relacional de SGBD eacute hoje em dia o principal utilizado nomercado

Uma base relacional consiste em um conjunto de tabelas As tabelas tecircmvaacuterias colunas e cada coluna tem um uacutenico nome Em geral uma linha representa orelacionamento entre um conjunto de valores e satildeo chamadas de tuplas O esquema deuma base relacional conteacutem os atributos tipos e regras das relaccedilotildees como chaves primaacuteriase estrangeiras

As tuplas podem ter um atributo do tipo chave primaacuteria que eacute a identificaccedilatildeouacutenica e natildeo repetida daquele registro Essas chaves podem ser referenciadas por outrosregistros por meio de um atributo do tipo chave estrangeira

Uma caracteriacutestica dos SGBDs e linguagens relacionais eacute a implementaccedilatildeo daaacutelgebra relacional Ela define um conjunto de operaccedilotildees

1 Seleccedilatildeo - retorna as linhas que satisfazem a condiccedilatildeo de seleccedilatildeo

2 Projeccedilatildeo - retorna atributos especiacuteficos de todas as linhas da entrada da relaccedilatildeoRemove as linhas duplicadas da saiacuteda

3 Natural join - retorna os pares de linhas de duas entradas que tem o mesmo valor emtodos os atributos que tem o mesmo nome

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 8

4 Produto cartesiano - retorna todos os pares de linhas de duas relaccedilotildees de entradasindependente de ter os mesmos nomes ou valores em comum

5 Uniatildeo - retorna a uniatildeo de tuplas de duas relaccedilotildees

Linguagens como o SQL utilizadas para fazer operaccedilotildees nas bases de dadossatildeo baseadas em aacutelgebra relacional que provecirc vaacuterios recursos para gerar as consultas SQLeacute a linguagem relacional mais influente do mercado

221 MySQL

O MySQL eacute um SGBD do tipo relacional que implementa um padratildeo SQLcom algumas extensotildees Foi comprado pela Sun Microsystems em 2008 (WIDENIUS2008) e eacute parte da Oracle que ao comprar a Sun Microsystems comprou todos os seusprodutos tambeacutem O MySQL tem como pontos positivos um suporte bom dos usuaacuterios nosfoacuteruns e grande e bem detalhada documentaccedilatildeo Eacute um SGBD com baixo overhead o quepermite a execuccedilatildeo em computadores com poucos recursos de memoacuteria e processamento

Poreacutem a capacidade de execuccedilatildeo e armazenamento do SGBD seraacute propor-cional agrave arquitetura de hardware e software que o executa O MySQL eacute um SGBDopen-source e o banco de dados dependendo da arquitetura de execuccedilatildeo e mecanismo dearmazenamento pode chegar a ter ateacute 64TB de tamanho (MYSQL 2015)

Eacute escrito em C e C++ e tem compatibilidade com arquiteturas de hardwareSPARC 64 SPARC 32 x86 x86 64 IA64 e ARM Eacute possiacutevel acessar o banco de dadospor meio de uma interface CLI (command-line interface ndash interface de linha de comando)ou pelo ConnectorODBC Existe APIs para C C++ Eiffel Java PHP Python Ruby eTcl

O MySQL disponibiliza algumas opccedilotildees de armazenamento das bases de dados(MYSQL 2015)

1 InnoDB o mecanismo padratildeo de armazenamento do MySQL Eacute compatiacutevel comACID e dispotildeem de recursos como commit e rollback Eacute o mais indicado paraser usado na maioria das aplicaccedilotildees por ter alto desempenho e operar de formatransacional

2 MyISAM eacute uma forma de armazenamento mais simples A trava para escrita emniacutevel de tabela limita o desempenho para operaccedilotildees que envolvem leitura e escrita

Existem outros mecanismos de armazenamento poreacutem ou tem uso muitorestrito ou estatildeo em desuso como CSV Archive Federated e Merge Outro exemplo eacute

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 9

o mecanismo de armazenamento Memory que guarda os dados na memoacuteria RAM e deacordo com o manual estaacute caindo em desuso O mecanismo InnoDB pode ser configuradocom buffers que podem em alguns casos substituir o Memory e ainda com a vantagem depersistir os dados em um armazenamento natildeo volaacutetil

23 SGBDs natildeo relacionais

Com o constante aumento dos dados armazenados e analisados os SGBDsrelacionais estatildeo apresentando vaacuterias limitaccedilotildees As consultas aos dados estatildeo perdendoa eficiecircncia pelo grande volume de dados Esse volume de dados estaacute crescendo cadavez mais por conta da evoluccedilatildeo constante das tecnologias de captura de informaccedilatildeo deprocessamento e da inteligecircncia para dar significado a tudo isso Abramova (ABRAMOVABERNADINO FURTADO 2014) afirma que o NoSQL foi desenvolvido para superaralgumas dessas limitaccedilotildees das bases de dados atuais

Os bancos NoSQL satildeo representados pela natildeo existecircncia de uma estrutura dedados riacutegida comparado ao SQL Eacute possiacutevel ter num mesmo espaccedilo de armazenamentoobjetos com membros diferentes Isso natildeo acontece no SQL onde todos os registros tecircmque seguir o modelo das colunas da tabela onde estatildeo inseridos O conceito de NoSQLfoi usado pela primeira vez em 1998 por Carlo Strozzi (ABRAMOVA BERNADINOFURTADO 2014) para se referir a um banco que natildeo usa interface SQL

Os bancos NoSQL satildeo normalmente baseados no teorema BASE (Basically

Available Soft State and Eventually consistente) (VIEBRANTZ 2012) Os bancos relacio-nais satildeo representados pelo ACID (Atomicidade Consistecircncia Isolamento e Durabilidade)Diferente do ACID o BASE sacrifica um pouco da consistecircncia dos dados para ganhardesempenho Essa troca eacute descrita pelo teorema CAP (Consistency Availability Partition

tolerance) Segundo (BROWNE 2015) teorema CAP diz que somente eacute possiacutevel ter duasdas trecircs caracteriacutesticas ao mesmo tempo

Apesar de natildeo ser possiacutevel consultar dados usando SQL esta abordagempermite faacutecil armazenamento e consulta de dados independente da estrutura do conteuacutedo(ABRAMOVA BERNADINO FURTADO 2014) Bancos NoSQL tambeacutem demonstrammelhor escalabilidade horizontal (EVANS 2011) Isso significa que servidores de baixocusto podem satisfazer as requisiccedilotildees enquanto os custos satildeo reduzidos O gerenciamentodesse grande volume de dados seria difiacutecil porem essas bases de dados satildeo projetadaspara gerenciaacute-los automaticamente recuperar de falhas e consertar o sistema por completo(STOLERU 2010)

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 5: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

RESUMO

A coleta de dados automatizada estaacute presente em diversas atividades humanas Seja paraatividades que possam colocar a vida de um ser humano em perigo reduccedilatildeo do gasto derecursos melhoria de processos ou outras aplicaccedilotildees possiacuteveis pode-se utilizar sistemasembarcados em conjunto com sensores para a coleta de dados de forma automatizadaDados provenientes de coleta tem um ou alguns dos seguintes propoacutesitos descriccedilatildeoexplicaccedilatildeo ou prediccedilatildeo A descriccedilatildeo de cenaacuterios a busca de explicaccedilotildees ou prediccedilotildeesbaseadas na compreensatildeo da causa de eventos podem ser dependentes de coleta de dadosCom o crescente aumento de necessidade e oportunidade de coleta de dados visandoaplicaccedilotildees cientiacuteficas este trabalho busca demonstrar a aplicaccedilatildeo de SGBD em dadoscaracteriacutesticos de mediccedilotildees e monitoramento cientiacutefico Diversos fatores como qualidadee disponibilidade de comunicaccedilatildeo necessidade de disponibilidade imediata dos dados evolume de dados vatildeo influenciar no tipo de arquitetura e qual SGBD seraacute utilizado Osestudos de caso foram feitos com o SGBD dentro de um computador embarcado quefaz ou recebe dados de coleta Foram analisados um SGBD relacional e um NoSQLMySQL e Redis respectivamente em diversas fases desde a configuraccedilatildeo dos ambientesateacute a manipulaccedilatildeo dos dados de mediccedilotildees simulados Pode-se perceber a diferenccedila dasarquiteturas dos SGBDs nos estudos de caso Para realizar os experimentos foram utilizadoso pcDuino 1 e o Raspberry Pi 2 Ambos contecircm processadores de arquitetura ARM poreacutemnatildeo satildeo iguais em velocidade nuacutecleos de processamento e outras caracteriacutesticas Algumasdessas diferenccedilas de arquitetura foram percebidas nos estudos de caso Os estudos de casosugerem que a configuraccedilatildeo escolhida para gerenciar dados de aplicaccedilotildees de coleta dedados depende de caracteriacutesticas especiacuteficas da aplicaccedilatildeo e da necessidade de cada casoem particular jaacute que cada SGDB mostrou pontos favoraacuteveis e desfavoraacuteveis nos estudosrealizados

Palavras-chaves Banco de Dados Sensores NoSQL

ABSTRACT

Automatized data gathering makes part of various parts of human life Whether it beactivities poses a person life at risk resource spending reduction processes improvementsor many other applications possibles it is possible to use embedded systems along withsensors in automatized data gathering Data provided by gather has one or more purposedescription explanation or prediction A scenery description the search for explicationsor predictions based on comprehension of the causes of events can be dependents of datagathering As the need and opportunity of data gathering is increasing this study aims showa DBMS in management of usual scientific data The study cases have been done withDBMS inside the embedded computer which gathers metering data It has been analyzed arelational DBMS and a NoSQL DBMS MySQL and Redis respectively in various stagessince the enviroment setup to the data handling in study cases It has been possible observethe architectural differences in study cases results To run the experiments it has been useda pcDuino 1 and a Raspberry Pi 2 Both have ARM architecture processors however theyhavenrsquot the same speed nor same amount of processing cores among others differencesSome of those differences have been seen in the study cases results The study cases haveshown the best configuration to be chosen for an application is particular to that applicationas each DBMS have shown upsides and downsides in the study cases

Keywords Databases Sensors NoSQL

SUMAacuteRIO

1 INTRODUCcedilAtildeO 1

2 FUNDAMENTACcedilAtildeO TEOacuteRICA 5

21 Sistemas Gerenciadores de Banco de Dados 6

22 SGBDs relacionais 7

221 MySQL 8

23 SGBDs natildeo relacionais 9

231 Redis 10

24 Sistemas Embarcados 12

25 Resumo 13

3 MATERIAIS E MEacuteTODOS 14

31 Equipamentos utilizados 14

32 Preparaccedilatildeo do ambiente de pesquisa 17

33 Armazenamento utilizado 18

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs 18

35 Caracteriacutesticas da massa de teste 19

36 Carga dos dados 20

37 Consulta dos dados 21

38 Resumo 22

4 RESULTADOS E DISCUSSOtildeES 24

41 Estudo de caso 1 24

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1 24

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2 25

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino 26

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2 26

415 Tabela de resultados do estudo de caso 1 27

42 Estudo de caso 2 28

421 Consultas em 1 milhatildeo de elementos no pcDuino 28

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2 29

423 Consultas em 25 milhotildees de elementos no pcDuino 30

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2 30

425 Tabelas com os resultados do estudo de caso 2 31

5 CONCLUSOtildeES 32

6 TRABALHOS FUTUROS 34

REFEREcircNCIAS 35

A GERADOR DE DADOS DE MEDICcedilAtildeO DE SENSORES 37

B SCRIPT LUA DE CONSULTA NO SGBD REDIS 41

LISTA DE ILUSTRACcedilOtildeES

Figura 1 ndash pcDuino 1 15Figura 2 ndash Raspberry Pi 2 17Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis 24Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis 25Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis 25Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL 25Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Rasp-

berry Pi 2 26Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL 26Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL 26Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no

Raspberry Pi 2 27Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo 27Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis 27Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis 28Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis 28Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL 29Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis 29Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis 29Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL 30Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL 30Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL 31

LISTA DE TABELAS

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1 15Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2 16Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis 19Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL 20Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar 27Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos 31Tabela 7 ndash Consulta de dados - busca com intervalos de valores 31

LISTA DE QUADROS

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL 19Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis 20Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo 20Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados 21Quadro 5 ndash Comando utilizado para inserir dados no MySQL 21Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do

Redis e inserir dados no MySQL 21Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor

Redis 21Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso 22Quadro 9 ndash Condiccedilotildees para consulta de maior e menor 22Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso 22Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso 22

LISTA DE ABREVIATURAS E SIGLAS

ACID Atomicity Consistency Isolation Durability

API Application Programing Interface

ARM Advanced RISC Machine

BASE Basically Available Soft state Eventual consistency

CLI command-line interface

CPU Central Processing Unit

DDL Data Definition Language

DML Data Manipulation Language

GCC GNU Compiler Collection

GPS Global System Position

mA mili-Ampeacutere

NoSQL Not Only SQL

RAM Random-Access Memory

Redis Remote DIctionary Server

SGBD Sistema Gerenciador de Banco de Dados

SQL Structured Query Language

USB Universal Serial Bus

XML eXtensible Markup Language

XQuery XML Query

1

CAPIacuteTULO 1

INTRODUCcedilAtildeO

A coleta de dados por sensores estaacute presente em diversas atividades humanasAtividades como previsatildeo do tempo exploraccedilatildeo extraterrestre suporte a atividades cientiacute-ficas conforto residencial seguranccedila hospitalares industriais e inuacutemeras outras satildeo cadavez mais auxiliadas por coleta de dados

Dados provenientes de coleta tem um ou alguns dos seguintes propoacutesitosdescriccedilatildeo explicaccedilatildeo ou prediccedilatildeo (KUMAR 1988) Os dados descritivos respondemperguntas como ldquoquem rdquo ldquoo que rdquo e ldquoquandordquo mas natildeo perguntas como ldquocomordquo ouldquopor querdquo Uma explicaccedilatildeo necessita uma extrapolaccedilatildeo de um relacionamento causa eefeito no qual o investigador tenta entender por que um fenocircmeno processo ou eventoaconteceu ou natildeo Prediccedilotildees satildeo baseadas no entendimento da causa de eventos Dados satildeocoletados para esses fins e em aplicaccedilotildees cientiacuteficas a coleta de dados pode ser essencialpara todo o processo de pesquisa para identificar um problema auxiliar na soluccedilatildeo ouembasar uma teoria

Sensores associados a unidades de processamento satildeo cada vez mais utilizados(EVANS 2011) para executar coleta automatizada de dados Esses sistemas satildeo importan-tes pois executam a coleta na maior parte das vezes com mais facilidade e precisatildeo que umhumano e a um custo menor Ainda pode-se considerar os lugares aos quais os humanos

Capiacutetulo 1 Introduccedilatildeo 2

natildeo podem acessar como ambientes com radiaccedilatildeo ou amostragens de alta frequecircncia porexemplo

Dada a importacircncia de sistemas de coleta de dados este trabalho busca apre-sentar formas de gerenciar os dados armazenados em sistemas de coleta de dados voltadospara aplicaccedilotildees cientiacuteficas

Para verificar onde e como um banco de dados para sistemas embarcadospodem auxiliar o processo de coleta de dados eacute necessaacuterio mencionar o papel que outrastecnologias tem nas aplicaccedilotildees de anaacutelise de dados e como elas podem influenciar nautilizaccedilatildeo de bancos de dados em sistemas de coleta

Sistemas de coleta de dados em geral satildeo compostos por sistemas embarcadosdedicados exclusivamente a essa tarefa Podem ter ou natildeo acesso agrave internet A energiapode originar da rede eleacutetrica baterias descartaacuteveis ou alguma combinaccedilatildeo de alimentaccedilatildeoexterna com bateria recarregaacutevel A autonomia pode variar de dias ateacute anos O tipode amostragem pode ser desde baixa frequecircncia e baixa resoluccedilatildeo ateacute amostras de altafrequecircncia e alta resoluccedilatildeo Existem sistemas que natildeo podem atrasar no processo de coletae entrega da informaccedilatildeo e tem que ser extremamente previsiacuteveis (hard real-time ou soft

real-time) Com a diversidade de aplicaccedilotildees e avanccedilos tecnoloacutegicos existem incontaacuteveisaplicaccedilotildees com caracteriacutesticas variadas

Compreendendo que existe uma variedade muito grande de sistemas de medi-ccedilatildeo alguns casos podem tirar proveito de um armazenamento local dos dados de coletagerenciados por um banco de dados

Para imaginar o impacto da conectividade agrave Internet em sistemas de coletaseratildeo nomeadas caracteriacutesticas de conexotildees como velocidade disponibilidade e custoDentro dessas caracteriacutesticas pode-se analisar se o dado coletado consegue chegar aodestino (velocidade eou disponibilidade) e com que custo As atividades de coleta podemnecessitar de uma transmissatildeo ainda em tempo real (aplicaccedilotildees meacutedicas) ou de grandesvolumes de dados (coleta de imagens)

Se natildeo houver algum tipo de conexatildeo disponiacutevel ou sem todas as caracteriacutesticasnecessaacuterias para fazer os dados da coleta chegarem ao destino ainda eacute possiacutevel utilizaroutros meios para transferiacute-los Pode-se periodicamente transportar os dados por unidadesde armazenamento ou coleta-los manualmente com algum equipamento para esse fimPoreacutem esses meios simplesmente natildeo atendem atividades que necessitam de transmissotildeesem tempo real por exemplo Para as aplicaccedilotildees que o armazenamento local dos dadospode substituir ou auxiliar conexatildeo com a Internet para transmitir os dados coletadospode-se utilizar bancos de dados

Capiacutetulo 1 Introduccedilatildeo 3

Outro componente que estaacute presente em sistemas embarcados de coletas au-tomatizadas satildeo unidades de processamento O constante aumento na capacidade deprocessamento aumenta as possibilidades de coleta de dados Dessa forma pode-se adicio-nar um armazenamento local de dados Com os dados armazenados localmente eacute possiacutevelrealizar algum processamento preacutevio ou gerar estatiacutestica eou feedback para melhorar aproacutepria coleta de dados por exemplo Esse crescimento entatildeo aumenta as possibilidadesdo sistema de coleta

A eficiecircncia energeacutetica de sistemas de coleta baseados em sistemas embarcadosestaacute constantemente aumentando Em conjunto com a melhora constante de baterias exis-tem alguns cenaacuterios recorrentes dispositivos que usam muito pouca energia e funcionampor mais tempo (chegando a mais de um ano) ou dispositivos que aproveitam a eficiecircnciaenergeacutetica e aumentam muito a capacidade de processamento Pode-se ter situaccedilotildees derestriccedilatildeo de energia e necessidade de reduzir transmissotildees dos dados de medidoccedilotildees mascom um armazenamento local a atividade pode continuar com as transmissotildees sendo feitasposteriormente

Dependendo do tipo de configuraccedilatildeo de sistema de mediccedilatildeo utilizado o equi-pamento sequer tem um sistema operacional como pode ter recursos semelhantes a compu-tadores pessoais No primeiro caso satildeo equipamentos embarcados extremamente simplesque podem natildeo dispor de recursos para sustentar um SGBD Pela simplicidade da arquite-tura pode natildeo compensar o custo de desenvolvimento e manutenccedilatildeo No segundo casoequipamentos embarcados com mais recursos disponiacuteveis pode-se utilizar um SGBD

Quando a integraccedilatildeo da aplicaccedilatildeo de coleta eacute feita com o SGBD para arma-zenamento de dados locais podemos adicionar caracteriacutesticas como maior seguranccedila edisponibilidade dos dados melhor recuperaccedilatildeo dentre outras vantagens de se utilizar umSGBD

Espera-se apresentar e testar meacutetodos de gerenciamento de dados caracteriacutesti-cos de sensores visando aplicaccedilotildees cientiacuteficas Os objetivos especiacuteficos satildeo

1 Investigar as tendecircncias tecnologias de SGBD

2 Comparar a performance de sistemas embarcados com alguns SGBD investigados

3 Aplicar dois tipos de conjunto de dados para testar os sistemas embarcados e osSGBD

4 Realizar teste de leitura e acesso para avaliar desempenho tanto dos sistemasembarcados como dos SGBD

Capiacutetulo 1 Introduccedilatildeo 4

Este estudo pode contribuir na discussatildeo de como os dados de um sistema decoleta seratildeo gerenciados em funccedilatildeo de recursos disponiacuteveis configuraccedilatildeo do sistema e osresultados que se buscam atingir

Nesta introduccedilatildeo buscou-se descrever a importacircncia da coleta de dados natildeo soacutepara fins cientiacuteficos mas para vaacuterias atividades humanas atualmente Aleacutem disso foramdemonstrados alguns vaacuterios cenaacuterios e tecnologias dos quais alguns o uso de SGBD paraarmazenamento local beneficia a atividade de coleta de dados Por fim os objetivos queorientam esta pesquisa

No capiacutetulo 2 Revisatildeo de Literatura seratildeo levantados conceitos e teoriarelativo agrave SGBDs em geral como eles podem ajudar e sobre os dois utilizados nosexperimentos Dada a ligaccedilatildeo entre sistemas de coleta de dados exposta na introduccedilatildeoseratildeo abordados alguns conceitos relativos agrave sistemas embarcados

No capiacutetulo 3 Materiais e Meacutetodos seratildeo descritos todos os componentesfiacutesicos e de software selecionados para os testes Aleacutem disso seraacute descrito como foramfeitos os testes

No capiacutetulo 4 Estudos de Caso seratildeo apresentados os testes feitos com osrespectivos paracircmetros No capiacutetulo 5 Resultados seratildeo discutidos os resultados dosEstudos de Caso

No capiacutetulo 6 Trabalhos Futuros busca-se levantar partes desta monografiaque podem ser ainda mais explorados

O capiacutetulo seguinte a Conclusatildeo seratildeo revistas as hipoacuteteses iniciais compara-das aos resultados

CAPIacuteTULO 2

FUNDAMENTACcedilAtildeO TEOacuteRICA

A utilizaccedilatildeo de um SGBD (Sistema Gerenciador de Banco de Dados) trazimpactos positivos e negativos decorrentes da combinaccedilatildeo das variaacuteveis de caracteriacutesticasdo SGBD em si de sua arquitetura e da aplicaccedilatildeo

Sistemas de coleta automatizada de dados cientiacuteficos podem ser construiacutedosutilizando Sistemas Embarcados Um sistema embarcado eacute definido pela sua aplicaccedilatildeopois tendem a ser equipamentos com funccedilatildeo bem definida Ao variar a aplicaccedilatildeo mudam-sejunto os recursos e atributos do equipamento

Considerando essas combinaccedilotildees temos cenaacuterios favoraacuteveis ou natildeo a utilizaccedilatildeode um SGBD para gerenciar dados localmente em um sistema de coleta automatizadoNeste capitulo seratildeo apresentados os conceitos necessaacuterios para evidenciar as principaisvariaacuteveis dos elementos envolvidos neste experimento e como as mesmas podem influenciarna aplicaccedilatildeo

Seratildeo abordados conceitos gerais sobre SGBDs dos tipos relacionais e NoSQLEm seguida referecircncias sobre sistemas embarcados dado que o mesmo tem influecircncia nautilizaccedilatildeo ou natildeo de SGBD em uma aplicaccedilatildeo de coleta

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 6

21 Sistemas Gerenciadores de Banco de Dados

Um SGBD eacute um sistema computadorizado para armazenar registros segundo(DATE 2004) Bases de dados estatildeo presentes em computadores de diferentes escalasdesde pequenos sistemas embarcados ateacute clusters de mainframes Eacute normalmente utilizadapara o software que gerencia a base de dados enquanto a denominaccedilatildeo banco de dados oubase de dados se refere ao conjunto de dados gerenciado (DATE 2004)

A automaccedilatildeo do processamento de dados eacute mais antiga que os proacuteprios com-putadores Silberchatz (SUDARSHAN 2004) afirma que cartotildees perfurados inventadospor Herman Hollerith foram usados no comeccedilo do seacuteculo 20 nos Estados Unidos paraarmazenar dados de censo Sistemas mecacircnicos foram usados para processar os cartotildees eapresentar os resultados

Com a evoluccedilatildeo dos meios de armazenamento e processamento entre asdeacutecadas de 50 e 60 fitas magneacuteticas foram usadas para armazenamento de dados Comofitas tem forma de acesso sequencial os dados tinham que ser acessados ou modificadosde forma sequencial

Desde o fim dos anos 60 ateacute os anos 70 houve a disseminaccedilatildeo do uso dodisco riacutegido a utilizaccedilatildeo de vaacuterios discos o uso de sistemas de arquivos e aumento nasvelocidades de transferecircncia por conta de novos materiais e processos de fabricaccedilatildeo Aleacutemdisso o modelo de acesso aleatoacuterio alterou a forma como os dados eram acessados emodificados (SPELIOTIS 2000)

Nos aos 80 foi criado o modelo relacional de dados que foi implementado noSystem R da IBM que desenvolveu teacutecnicas eficientes de construccedilatildeo de bases de dadosrelacionais

No iniacutecio dos anos 90 a linguagem SQL foi escolhida para aplicaccedilotildees desuporte a decisatildeo que fazem muitos acessos ao banco de dados As bases de dadospassaram a ter que oferecer suporte a uma taxa muito alta de processamento de transaccedilotildeesaleacutem de ser mais confiaacuteveis manter disponibilidade 24x7 e suportar dados de interfaceWeb SQL fornece vaacuterios recursos como DDL (Data-Definition Language) para trabalharcom esquemas e relacionamentos por exemplo DML (Data Manipulation Language) parafazer consultas apagar inserir ou modificar tuplas no banco controles de integridadegeraccedilatildeo de visotildees controle transacional permissotildees de acesso e outros

No comeccedilo da deacutecada 2000 houve a adoccedilatildeo do XML em associaccedilatildeo com alinguagem XQuery como nova tecnologia de consulta Nesse periacuteodo tambeacutem houve umcrescimento na utilizaccedilatildeo de SGBDs open-source como o PostgresSQL e o MySQL

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 7

No fim da deacutecada de 2000 houve o crescimento de SGBDs especializados emanalises de dados como os column-store Novos sistemas de armazenamento de dadosdistribuiacutedos foram construiacutedos para ter capacidade para anaacutelise de dados de sites comoAmazon

Com o passar do tempo as mudanccedilas de hardware capacidade de processa-mento e armazenamento velocidades de conexotildees dados disponiacuteveis e necessidadesopor-tunidades influenciaram o desenvolvimento dos SGBDs Verificamos que esse processoteve duas vias o desenvolvimento de recursos gerou espaccedilo para mudanccedilas e as neces-sidades tambeacutem levaram ao desenvolvimento e popularizaccedilatildeo de outras tecnologias deSGBDs

22 SGBDs relacionais

SGBDs relacionais foram desenvolvidos nos anos 70 como uma tecnologiapara armazenar dados estruturados organizados como tabelas com sua proacutepria linguagem ndasho SQL (OUNALLI 2012)

Segundo (SUDARSHAN 2004) um SGBD relacional eacute baseado no modelorelacional e usa uma coleccedilatildeo de tabelas para representar os dados e os relacionamentosentre esses dados O tipo relacional de SGBD eacute hoje em dia o principal utilizado nomercado

Uma base relacional consiste em um conjunto de tabelas As tabelas tecircmvaacuterias colunas e cada coluna tem um uacutenico nome Em geral uma linha representa orelacionamento entre um conjunto de valores e satildeo chamadas de tuplas O esquema deuma base relacional conteacutem os atributos tipos e regras das relaccedilotildees como chaves primaacuteriase estrangeiras

As tuplas podem ter um atributo do tipo chave primaacuteria que eacute a identificaccedilatildeouacutenica e natildeo repetida daquele registro Essas chaves podem ser referenciadas por outrosregistros por meio de um atributo do tipo chave estrangeira

Uma caracteriacutestica dos SGBDs e linguagens relacionais eacute a implementaccedilatildeo daaacutelgebra relacional Ela define um conjunto de operaccedilotildees

1 Seleccedilatildeo - retorna as linhas que satisfazem a condiccedilatildeo de seleccedilatildeo

2 Projeccedilatildeo - retorna atributos especiacuteficos de todas as linhas da entrada da relaccedilatildeoRemove as linhas duplicadas da saiacuteda

3 Natural join - retorna os pares de linhas de duas entradas que tem o mesmo valor emtodos os atributos que tem o mesmo nome

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 8

4 Produto cartesiano - retorna todos os pares de linhas de duas relaccedilotildees de entradasindependente de ter os mesmos nomes ou valores em comum

5 Uniatildeo - retorna a uniatildeo de tuplas de duas relaccedilotildees

Linguagens como o SQL utilizadas para fazer operaccedilotildees nas bases de dadossatildeo baseadas em aacutelgebra relacional que provecirc vaacuterios recursos para gerar as consultas SQLeacute a linguagem relacional mais influente do mercado

221 MySQL

O MySQL eacute um SGBD do tipo relacional que implementa um padratildeo SQLcom algumas extensotildees Foi comprado pela Sun Microsystems em 2008 (WIDENIUS2008) e eacute parte da Oracle que ao comprar a Sun Microsystems comprou todos os seusprodutos tambeacutem O MySQL tem como pontos positivos um suporte bom dos usuaacuterios nosfoacuteruns e grande e bem detalhada documentaccedilatildeo Eacute um SGBD com baixo overhead o quepermite a execuccedilatildeo em computadores com poucos recursos de memoacuteria e processamento

Poreacutem a capacidade de execuccedilatildeo e armazenamento do SGBD seraacute propor-cional agrave arquitetura de hardware e software que o executa O MySQL eacute um SGBDopen-source e o banco de dados dependendo da arquitetura de execuccedilatildeo e mecanismo dearmazenamento pode chegar a ter ateacute 64TB de tamanho (MYSQL 2015)

Eacute escrito em C e C++ e tem compatibilidade com arquiteturas de hardwareSPARC 64 SPARC 32 x86 x86 64 IA64 e ARM Eacute possiacutevel acessar o banco de dadospor meio de uma interface CLI (command-line interface ndash interface de linha de comando)ou pelo ConnectorODBC Existe APIs para C C++ Eiffel Java PHP Python Ruby eTcl

O MySQL disponibiliza algumas opccedilotildees de armazenamento das bases de dados(MYSQL 2015)

1 InnoDB o mecanismo padratildeo de armazenamento do MySQL Eacute compatiacutevel comACID e dispotildeem de recursos como commit e rollback Eacute o mais indicado paraser usado na maioria das aplicaccedilotildees por ter alto desempenho e operar de formatransacional

2 MyISAM eacute uma forma de armazenamento mais simples A trava para escrita emniacutevel de tabela limita o desempenho para operaccedilotildees que envolvem leitura e escrita

Existem outros mecanismos de armazenamento poreacutem ou tem uso muitorestrito ou estatildeo em desuso como CSV Archive Federated e Merge Outro exemplo eacute

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 9

o mecanismo de armazenamento Memory que guarda os dados na memoacuteria RAM e deacordo com o manual estaacute caindo em desuso O mecanismo InnoDB pode ser configuradocom buffers que podem em alguns casos substituir o Memory e ainda com a vantagem depersistir os dados em um armazenamento natildeo volaacutetil

23 SGBDs natildeo relacionais

Com o constante aumento dos dados armazenados e analisados os SGBDsrelacionais estatildeo apresentando vaacuterias limitaccedilotildees As consultas aos dados estatildeo perdendoa eficiecircncia pelo grande volume de dados Esse volume de dados estaacute crescendo cadavez mais por conta da evoluccedilatildeo constante das tecnologias de captura de informaccedilatildeo deprocessamento e da inteligecircncia para dar significado a tudo isso Abramova (ABRAMOVABERNADINO FURTADO 2014) afirma que o NoSQL foi desenvolvido para superaralgumas dessas limitaccedilotildees das bases de dados atuais

Os bancos NoSQL satildeo representados pela natildeo existecircncia de uma estrutura dedados riacutegida comparado ao SQL Eacute possiacutevel ter num mesmo espaccedilo de armazenamentoobjetos com membros diferentes Isso natildeo acontece no SQL onde todos os registros tecircmque seguir o modelo das colunas da tabela onde estatildeo inseridos O conceito de NoSQLfoi usado pela primeira vez em 1998 por Carlo Strozzi (ABRAMOVA BERNADINOFURTADO 2014) para se referir a um banco que natildeo usa interface SQL

Os bancos NoSQL satildeo normalmente baseados no teorema BASE (Basically

Available Soft State and Eventually consistente) (VIEBRANTZ 2012) Os bancos relacio-nais satildeo representados pelo ACID (Atomicidade Consistecircncia Isolamento e Durabilidade)Diferente do ACID o BASE sacrifica um pouco da consistecircncia dos dados para ganhardesempenho Essa troca eacute descrita pelo teorema CAP (Consistency Availability Partition

tolerance) Segundo (BROWNE 2015) teorema CAP diz que somente eacute possiacutevel ter duasdas trecircs caracteriacutesticas ao mesmo tempo

Apesar de natildeo ser possiacutevel consultar dados usando SQL esta abordagempermite faacutecil armazenamento e consulta de dados independente da estrutura do conteuacutedo(ABRAMOVA BERNADINO FURTADO 2014) Bancos NoSQL tambeacutem demonstrammelhor escalabilidade horizontal (EVANS 2011) Isso significa que servidores de baixocusto podem satisfazer as requisiccedilotildees enquanto os custos satildeo reduzidos O gerenciamentodesse grande volume de dados seria difiacutecil porem essas bases de dados satildeo projetadaspara gerenciaacute-los automaticamente recuperar de falhas e consertar o sistema por completo(STOLERU 2010)

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 6: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

ABSTRACT

Automatized data gathering makes part of various parts of human life Whether it beactivities poses a person life at risk resource spending reduction processes improvementsor many other applications possibles it is possible to use embedded systems along withsensors in automatized data gathering Data provided by gather has one or more purposedescription explanation or prediction A scenery description the search for explicationsor predictions based on comprehension of the causes of events can be dependents of datagathering As the need and opportunity of data gathering is increasing this study aims showa DBMS in management of usual scientific data The study cases have been done withDBMS inside the embedded computer which gathers metering data It has been analyzed arelational DBMS and a NoSQL DBMS MySQL and Redis respectively in various stagessince the enviroment setup to the data handling in study cases It has been possible observethe architectural differences in study cases results To run the experiments it has been useda pcDuino 1 and a Raspberry Pi 2 Both have ARM architecture processors however theyhavenrsquot the same speed nor same amount of processing cores among others differencesSome of those differences have been seen in the study cases results The study cases haveshown the best configuration to be chosen for an application is particular to that applicationas each DBMS have shown upsides and downsides in the study cases

Keywords Databases Sensors NoSQL

SUMAacuteRIO

1 INTRODUCcedilAtildeO 1

2 FUNDAMENTACcedilAtildeO TEOacuteRICA 5

21 Sistemas Gerenciadores de Banco de Dados 6

22 SGBDs relacionais 7

221 MySQL 8

23 SGBDs natildeo relacionais 9

231 Redis 10

24 Sistemas Embarcados 12

25 Resumo 13

3 MATERIAIS E MEacuteTODOS 14

31 Equipamentos utilizados 14

32 Preparaccedilatildeo do ambiente de pesquisa 17

33 Armazenamento utilizado 18

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs 18

35 Caracteriacutesticas da massa de teste 19

36 Carga dos dados 20

37 Consulta dos dados 21

38 Resumo 22

4 RESULTADOS E DISCUSSOtildeES 24

41 Estudo de caso 1 24

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1 24

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2 25

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino 26

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2 26

415 Tabela de resultados do estudo de caso 1 27

42 Estudo de caso 2 28

421 Consultas em 1 milhatildeo de elementos no pcDuino 28

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2 29

423 Consultas em 25 milhotildees de elementos no pcDuino 30

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2 30

425 Tabelas com os resultados do estudo de caso 2 31

5 CONCLUSOtildeES 32

6 TRABALHOS FUTUROS 34

REFEREcircNCIAS 35

A GERADOR DE DADOS DE MEDICcedilAtildeO DE SENSORES 37

B SCRIPT LUA DE CONSULTA NO SGBD REDIS 41

LISTA DE ILUSTRACcedilOtildeES

Figura 1 ndash pcDuino 1 15Figura 2 ndash Raspberry Pi 2 17Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis 24Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis 25Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis 25Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL 25Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Rasp-

berry Pi 2 26Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL 26Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL 26Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no

Raspberry Pi 2 27Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo 27Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis 27Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis 28Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis 28Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL 29Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis 29Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis 29Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL 30Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL 30Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL 31

LISTA DE TABELAS

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1 15Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2 16Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis 19Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL 20Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar 27Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos 31Tabela 7 ndash Consulta de dados - busca com intervalos de valores 31

LISTA DE QUADROS

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL 19Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis 20Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo 20Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados 21Quadro 5 ndash Comando utilizado para inserir dados no MySQL 21Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do

Redis e inserir dados no MySQL 21Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor

Redis 21Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso 22Quadro 9 ndash Condiccedilotildees para consulta de maior e menor 22Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso 22Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso 22

LISTA DE ABREVIATURAS E SIGLAS

ACID Atomicity Consistency Isolation Durability

API Application Programing Interface

ARM Advanced RISC Machine

BASE Basically Available Soft state Eventual consistency

CLI command-line interface

CPU Central Processing Unit

DDL Data Definition Language

DML Data Manipulation Language

GCC GNU Compiler Collection

GPS Global System Position

mA mili-Ampeacutere

NoSQL Not Only SQL

RAM Random-Access Memory

Redis Remote DIctionary Server

SGBD Sistema Gerenciador de Banco de Dados

SQL Structured Query Language

USB Universal Serial Bus

XML eXtensible Markup Language

XQuery XML Query

1

CAPIacuteTULO 1

INTRODUCcedilAtildeO

A coleta de dados por sensores estaacute presente em diversas atividades humanasAtividades como previsatildeo do tempo exploraccedilatildeo extraterrestre suporte a atividades cientiacute-ficas conforto residencial seguranccedila hospitalares industriais e inuacutemeras outras satildeo cadavez mais auxiliadas por coleta de dados

Dados provenientes de coleta tem um ou alguns dos seguintes propoacutesitosdescriccedilatildeo explicaccedilatildeo ou prediccedilatildeo (KUMAR 1988) Os dados descritivos respondemperguntas como ldquoquem rdquo ldquoo que rdquo e ldquoquandordquo mas natildeo perguntas como ldquocomordquo ouldquopor querdquo Uma explicaccedilatildeo necessita uma extrapolaccedilatildeo de um relacionamento causa eefeito no qual o investigador tenta entender por que um fenocircmeno processo ou eventoaconteceu ou natildeo Prediccedilotildees satildeo baseadas no entendimento da causa de eventos Dados satildeocoletados para esses fins e em aplicaccedilotildees cientiacuteficas a coleta de dados pode ser essencialpara todo o processo de pesquisa para identificar um problema auxiliar na soluccedilatildeo ouembasar uma teoria

Sensores associados a unidades de processamento satildeo cada vez mais utilizados(EVANS 2011) para executar coleta automatizada de dados Esses sistemas satildeo importan-tes pois executam a coleta na maior parte das vezes com mais facilidade e precisatildeo que umhumano e a um custo menor Ainda pode-se considerar os lugares aos quais os humanos

Capiacutetulo 1 Introduccedilatildeo 2

natildeo podem acessar como ambientes com radiaccedilatildeo ou amostragens de alta frequecircncia porexemplo

Dada a importacircncia de sistemas de coleta de dados este trabalho busca apre-sentar formas de gerenciar os dados armazenados em sistemas de coleta de dados voltadospara aplicaccedilotildees cientiacuteficas

Para verificar onde e como um banco de dados para sistemas embarcadospodem auxiliar o processo de coleta de dados eacute necessaacuterio mencionar o papel que outrastecnologias tem nas aplicaccedilotildees de anaacutelise de dados e como elas podem influenciar nautilizaccedilatildeo de bancos de dados em sistemas de coleta

Sistemas de coleta de dados em geral satildeo compostos por sistemas embarcadosdedicados exclusivamente a essa tarefa Podem ter ou natildeo acesso agrave internet A energiapode originar da rede eleacutetrica baterias descartaacuteveis ou alguma combinaccedilatildeo de alimentaccedilatildeoexterna com bateria recarregaacutevel A autonomia pode variar de dias ateacute anos O tipode amostragem pode ser desde baixa frequecircncia e baixa resoluccedilatildeo ateacute amostras de altafrequecircncia e alta resoluccedilatildeo Existem sistemas que natildeo podem atrasar no processo de coletae entrega da informaccedilatildeo e tem que ser extremamente previsiacuteveis (hard real-time ou soft

real-time) Com a diversidade de aplicaccedilotildees e avanccedilos tecnoloacutegicos existem incontaacuteveisaplicaccedilotildees com caracteriacutesticas variadas

Compreendendo que existe uma variedade muito grande de sistemas de medi-ccedilatildeo alguns casos podem tirar proveito de um armazenamento local dos dados de coletagerenciados por um banco de dados

Para imaginar o impacto da conectividade agrave Internet em sistemas de coletaseratildeo nomeadas caracteriacutesticas de conexotildees como velocidade disponibilidade e custoDentro dessas caracteriacutesticas pode-se analisar se o dado coletado consegue chegar aodestino (velocidade eou disponibilidade) e com que custo As atividades de coleta podemnecessitar de uma transmissatildeo ainda em tempo real (aplicaccedilotildees meacutedicas) ou de grandesvolumes de dados (coleta de imagens)

Se natildeo houver algum tipo de conexatildeo disponiacutevel ou sem todas as caracteriacutesticasnecessaacuterias para fazer os dados da coleta chegarem ao destino ainda eacute possiacutevel utilizaroutros meios para transferiacute-los Pode-se periodicamente transportar os dados por unidadesde armazenamento ou coleta-los manualmente com algum equipamento para esse fimPoreacutem esses meios simplesmente natildeo atendem atividades que necessitam de transmissotildeesem tempo real por exemplo Para as aplicaccedilotildees que o armazenamento local dos dadospode substituir ou auxiliar conexatildeo com a Internet para transmitir os dados coletadospode-se utilizar bancos de dados

Capiacutetulo 1 Introduccedilatildeo 3

Outro componente que estaacute presente em sistemas embarcados de coletas au-tomatizadas satildeo unidades de processamento O constante aumento na capacidade deprocessamento aumenta as possibilidades de coleta de dados Dessa forma pode-se adicio-nar um armazenamento local de dados Com os dados armazenados localmente eacute possiacutevelrealizar algum processamento preacutevio ou gerar estatiacutestica eou feedback para melhorar aproacutepria coleta de dados por exemplo Esse crescimento entatildeo aumenta as possibilidadesdo sistema de coleta

A eficiecircncia energeacutetica de sistemas de coleta baseados em sistemas embarcadosestaacute constantemente aumentando Em conjunto com a melhora constante de baterias exis-tem alguns cenaacuterios recorrentes dispositivos que usam muito pouca energia e funcionampor mais tempo (chegando a mais de um ano) ou dispositivos que aproveitam a eficiecircnciaenergeacutetica e aumentam muito a capacidade de processamento Pode-se ter situaccedilotildees derestriccedilatildeo de energia e necessidade de reduzir transmissotildees dos dados de medidoccedilotildees mascom um armazenamento local a atividade pode continuar com as transmissotildees sendo feitasposteriormente

Dependendo do tipo de configuraccedilatildeo de sistema de mediccedilatildeo utilizado o equi-pamento sequer tem um sistema operacional como pode ter recursos semelhantes a compu-tadores pessoais No primeiro caso satildeo equipamentos embarcados extremamente simplesque podem natildeo dispor de recursos para sustentar um SGBD Pela simplicidade da arquite-tura pode natildeo compensar o custo de desenvolvimento e manutenccedilatildeo No segundo casoequipamentos embarcados com mais recursos disponiacuteveis pode-se utilizar um SGBD

Quando a integraccedilatildeo da aplicaccedilatildeo de coleta eacute feita com o SGBD para arma-zenamento de dados locais podemos adicionar caracteriacutesticas como maior seguranccedila edisponibilidade dos dados melhor recuperaccedilatildeo dentre outras vantagens de se utilizar umSGBD

Espera-se apresentar e testar meacutetodos de gerenciamento de dados caracteriacutesti-cos de sensores visando aplicaccedilotildees cientiacuteficas Os objetivos especiacuteficos satildeo

1 Investigar as tendecircncias tecnologias de SGBD

2 Comparar a performance de sistemas embarcados com alguns SGBD investigados

3 Aplicar dois tipos de conjunto de dados para testar os sistemas embarcados e osSGBD

4 Realizar teste de leitura e acesso para avaliar desempenho tanto dos sistemasembarcados como dos SGBD

Capiacutetulo 1 Introduccedilatildeo 4

Este estudo pode contribuir na discussatildeo de como os dados de um sistema decoleta seratildeo gerenciados em funccedilatildeo de recursos disponiacuteveis configuraccedilatildeo do sistema e osresultados que se buscam atingir

Nesta introduccedilatildeo buscou-se descrever a importacircncia da coleta de dados natildeo soacutepara fins cientiacuteficos mas para vaacuterias atividades humanas atualmente Aleacutem disso foramdemonstrados alguns vaacuterios cenaacuterios e tecnologias dos quais alguns o uso de SGBD paraarmazenamento local beneficia a atividade de coleta de dados Por fim os objetivos queorientam esta pesquisa

No capiacutetulo 2 Revisatildeo de Literatura seratildeo levantados conceitos e teoriarelativo agrave SGBDs em geral como eles podem ajudar e sobre os dois utilizados nosexperimentos Dada a ligaccedilatildeo entre sistemas de coleta de dados exposta na introduccedilatildeoseratildeo abordados alguns conceitos relativos agrave sistemas embarcados

No capiacutetulo 3 Materiais e Meacutetodos seratildeo descritos todos os componentesfiacutesicos e de software selecionados para os testes Aleacutem disso seraacute descrito como foramfeitos os testes

No capiacutetulo 4 Estudos de Caso seratildeo apresentados os testes feitos com osrespectivos paracircmetros No capiacutetulo 5 Resultados seratildeo discutidos os resultados dosEstudos de Caso

No capiacutetulo 6 Trabalhos Futuros busca-se levantar partes desta monografiaque podem ser ainda mais explorados

O capiacutetulo seguinte a Conclusatildeo seratildeo revistas as hipoacuteteses iniciais compara-das aos resultados

CAPIacuteTULO 2

FUNDAMENTACcedilAtildeO TEOacuteRICA

A utilizaccedilatildeo de um SGBD (Sistema Gerenciador de Banco de Dados) trazimpactos positivos e negativos decorrentes da combinaccedilatildeo das variaacuteveis de caracteriacutesticasdo SGBD em si de sua arquitetura e da aplicaccedilatildeo

Sistemas de coleta automatizada de dados cientiacuteficos podem ser construiacutedosutilizando Sistemas Embarcados Um sistema embarcado eacute definido pela sua aplicaccedilatildeopois tendem a ser equipamentos com funccedilatildeo bem definida Ao variar a aplicaccedilatildeo mudam-sejunto os recursos e atributos do equipamento

Considerando essas combinaccedilotildees temos cenaacuterios favoraacuteveis ou natildeo a utilizaccedilatildeode um SGBD para gerenciar dados localmente em um sistema de coleta automatizadoNeste capitulo seratildeo apresentados os conceitos necessaacuterios para evidenciar as principaisvariaacuteveis dos elementos envolvidos neste experimento e como as mesmas podem influenciarna aplicaccedilatildeo

Seratildeo abordados conceitos gerais sobre SGBDs dos tipos relacionais e NoSQLEm seguida referecircncias sobre sistemas embarcados dado que o mesmo tem influecircncia nautilizaccedilatildeo ou natildeo de SGBD em uma aplicaccedilatildeo de coleta

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 6

21 Sistemas Gerenciadores de Banco de Dados

Um SGBD eacute um sistema computadorizado para armazenar registros segundo(DATE 2004) Bases de dados estatildeo presentes em computadores de diferentes escalasdesde pequenos sistemas embarcados ateacute clusters de mainframes Eacute normalmente utilizadapara o software que gerencia a base de dados enquanto a denominaccedilatildeo banco de dados oubase de dados se refere ao conjunto de dados gerenciado (DATE 2004)

A automaccedilatildeo do processamento de dados eacute mais antiga que os proacuteprios com-putadores Silberchatz (SUDARSHAN 2004) afirma que cartotildees perfurados inventadospor Herman Hollerith foram usados no comeccedilo do seacuteculo 20 nos Estados Unidos paraarmazenar dados de censo Sistemas mecacircnicos foram usados para processar os cartotildees eapresentar os resultados

Com a evoluccedilatildeo dos meios de armazenamento e processamento entre asdeacutecadas de 50 e 60 fitas magneacuteticas foram usadas para armazenamento de dados Comofitas tem forma de acesso sequencial os dados tinham que ser acessados ou modificadosde forma sequencial

Desde o fim dos anos 60 ateacute os anos 70 houve a disseminaccedilatildeo do uso dodisco riacutegido a utilizaccedilatildeo de vaacuterios discos o uso de sistemas de arquivos e aumento nasvelocidades de transferecircncia por conta de novos materiais e processos de fabricaccedilatildeo Aleacutemdisso o modelo de acesso aleatoacuterio alterou a forma como os dados eram acessados emodificados (SPELIOTIS 2000)

Nos aos 80 foi criado o modelo relacional de dados que foi implementado noSystem R da IBM que desenvolveu teacutecnicas eficientes de construccedilatildeo de bases de dadosrelacionais

No iniacutecio dos anos 90 a linguagem SQL foi escolhida para aplicaccedilotildees desuporte a decisatildeo que fazem muitos acessos ao banco de dados As bases de dadospassaram a ter que oferecer suporte a uma taxa muito alta de processamento de transaccedilotildeesaleacutem de ser mais confiaacuteveis manter disponibilidade 24x7 e suportar dados de interfaceWeb SQL fornece vaacuterios recursos como DDL (Data-Definition Language) para trabalharcom esquemas e relacionamentos por exemplo DML (Data Manipulation Language) parafazer consultas apagar inserir ou modificar tuplas no banco controles de integridadegeraccedilatildeo de visotildees controle transacional permissotildees de acesso e outros

No comeccedilo da deacutecada 2000 houve a adoccedilatildeo do XML em associaccedilatildeo com alinguagem XQuery como nova tecnologia de consulta Nesse periacuteodo tambeacutem houve umcrescimento na utilizaccedilatildeo de SGBDs open-source como o PostgresSQL e o MySQL

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 7

No fim da deacutecada de 2000 houve o crescimento de SGBDs especializados emanalises de dados como os column-store Novos sistemas de armazenamento de dadosdistribuiacutedos foram construiacutedos para ter capacidade para anaacutelise de dados de sites comoAmazon

Com o passar do tempo as mudanccedilas de hardware capacidade de processa-mento e armazenamento velocidades de conexotildees dados disponiacuteveis e necessidadesopor-tunidades influenciaram o desenvolvimento dos SGBDs Verificamos que esse processoteve duas vias o desenvolvimento de recursos gerou espaccedilo para mudanccedilas e as neces-sidades tambeacutem levaram ao desenvolvimento e popularizaccedilatildeo de outras tecnologias deSGBDs

22 SGBDs relacionais

SGBDs relacionais foram desenvolvidos nos anos 70 como uma tecnologiapara armazenar dados estruturados organizados como tabelas com sua proacutepria linguagem ndasho SQL (OUNALLI 2012)

Segundo (SUDARSHAN 2004) um SGBD relacional eacute baseado no modelorelacional e usa uma coleccedilatildeo de tabelas para representar os dados e os relacionamentosentre esses dados O tipo relacional de SGBD eacute hoje em dia o principal utilizado nomercado

Uma base relacional consiste em um conjunto de tabelas As tabelas tecircmvaacuterias colunas e cada coluna tem um uacutenico nome Em geral uma linha representa orelacionamento entre um conjunto de valores e satildeo chamadas de tuplas O esquema deuma base relacional conteacutem os atributos tipos e regras das relaccedilotildees como chaves primaacuteriase estrangeiras

As tuplas podem ter um atributo do tipo chave primaacuteria que eacute a identificaccedilatildeouacutenica e natildeo repetida daquele registro Essas chaves podem ser referenciadas por outrosregistros por meio de um atributo do tipo chave estrangeira

Uma caracteriacutestica dos SGBDs e linguagens relacionais eacute a implementaccedilatildeo daaacutelgebra relacional Ela define um conjunto de operaccedilotildees

1 Seleccedilatildeo - retorna as linhas que satisfazem a condiccedilatildeo de seleccedilatildeo

2 Projeccedilatildeo - retorna atributos especiacuteficos de todas as linhas da entrada da relaccedilatildeoRemove as linhas duplicadas da saiacuteda

3 Natural join - retorna os pares de linhas de duas entradas que tem o mesmo valor emtodos os atributos que tem o mesmo nome

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 8

4 Produto cartesiano - retorna todos os pares de linhas de duas relaccedilotildees de entradasindependente de ter os mesmos nomes ou valores em comum

5 Uniatildeo - retorna a uniatildeo de tuplas de duas relaccedilotildees

Linguagens como o SQL utilizadas para fazer operaccedilotildees nas bases de dadossatildeo baseadas em aacutelgebra relacional que provecirc vaacuterios recursos para gerar as consultas SQLeacute a linguagem relacional mais influente do mercado

221 MySQL

O MySQL eacute um SGBD do tipo relacional que implementa um padratildeo SQLcom algumas extensotildees Foi comprado pela Sun Microsystems em 2008 (WIDENIUS2008) e eacute parte da Oracle que ao comprar a Sun Microsystems comprou todos os seusprodutos tambeacutem O MySQL tem como pontos positivos um suporte bom dos usuaacuterios nosfoacuteruns e grande e bem detalhada documentaccedilatildeo Eacute um SGBD com baixo overhead o quepermite a execuccedilatildeo em computadores com poucos recursos de memoacuteria e processamento

Poreacutem a capacidade de execuccedilatildeo e armazenamento do SGBD seraacute propor-cional agrave arquitetura de hardware e software que o executa O MySQL eacute um SGBDopen-source e o banco de dados dependendo da arquitetura de execuccedilatildeo e mecanismo dearmazenamento pode chegar a ter ateacute 64TB de tamanho (MYSQL 2015)

Eacute escrito em C e C++ e tem compatibilidade com arquiteturas de hardwareSPARC 64 SPARC 32 x86 x86 64 IA64 e ARM Eacute possiacutevel acessar o banco de dadospor meio de uma interface CLI (command-line interface ndash interface de linha de comando)ou pelo ConnectorODBC Existe APIs para C C++ Eiffel Java PHP Python Ruby eTcl

O MySQL disponibiliza algumas opccedilotildees de armazenamento das bases de dados(MYSQL 2015)

1 InnoDB o mecanismo padratildeo de armazenamento do MySQL Eacute compatiacutevel comACID e dispotildeem de recursos como commit e rollback Eacute o mais indicado paraser usado na maioria das aplicaccedilotildees por ter alto desempenho e operar de formatransacional

2 MyISAM eacute uma forma de armazenamento mais simples A trava para escrita emniacutevel de tabela limita o desempenho para operaccedilotildees que envolvem leitura e escrita

Existem outros mecanismos de armazenamento poreacutem ou tem uso muitorestrito ou estatildeo em desuso como CSV Archive Federated e Merge Outro exemplo eacute

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 9

o mecanismo de armazenamento Memory que guarda os dados na memoacuteria RAM e deacordo com o manual estaacute caindo em desuso O mecanismo InnoDB pode ser configuradocom buffers que podem em alguns casos substituir o Memory e ainda com a vantagem depersistir os dados em um armazenamento natildeo volaacutetil

23 SGBDs natildeo relacionais

Com o constante aumento dos dados armazenados e analisados os SGBDsrelacionais estatildeo apresentando vaacuterias limitaccedilotildees As consultas aos dados estatildeo perdendoa eficiecircncia pelo grande volume de dados Esse volume de dados estaacute crescendo cadavez mais por conta da evoluccedilatildeo constante das tecnologias de captura de informaccedilatildeo deprocessamento e da inteligecircncia para dar significado a tudo isso Abramova (ABRAMOVABERNADINO FURTADO 2014) afirma que o NoSQL foi desenvolvido para superaralgumas dessas limitaccedilotildees das bases de dados atuais

Os bancos NoSQL satildeo representados pela natildeo existecircncia de uma estrutura dedados riacutegida comparado ao SQL Eacute possiacutevel ter num mesmo espaccedilo de armazenamentoobjetos com membros diferentes Isso natildeo acontece no SQL onde todos os registros tecircmque seguir o modelo das colunas da tabela onde estatildeo inseridos O conceito de NoSQLfoi usado pela primeira vez em 1998 por Carlo Strozzi (ABRAMOVA BERNADINOFURTADO 2014) para se referir a um banco que natildeo usa interface SQL

Os bancos NoSQL satildeo normalmente baseados no teorema BASE (Basically

Available Soft State and Eventually consistente) (VIEBRANTZ 2012) Os bancos relacio-nais satildeo representados pelo ACID (Atomicidade Consistecircncia Isolamento e Durabilidade)Diferente do ACID o BASE sacrifica um pouco da consistecircncia dos dados para ganhardesempenho Essa troca eacute descrita pelo teorema CAP (Consistency Availability Partition

tolerance) Segundo (BROWNE 2015) teorema CAP diz que somente eacute possiacutevel ter duasdas trecircs caracteriacutesticas ao mesmo tempo

Apesar de natildeo ser possiacutevel consultar dados usando SQL esta abordagempermite faacutecil armazenamento e consulta de dados independente da estrutura do conteuacutedo(ABRAMOVA BERNADINO FURTADO 2014) Bancos NoSQL tambeacutem demonstrammelhor escalabilidade horizontal (EVANS 2011) Isso significa que servidores de baixocusto podem satisfazer as requisiccedilotildees enquanto os custos satildeo reduzidos O gerenciamentodesse grande volume de dados seria difiacutecil porem essas bases de dados satildeo projetadaspara gerenciaacute-los automaticamente recuperar de falhas e consertar o sistema por completo(STOLERU 2010)

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 7: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

SUMAacuteRIO

1 INTRODUCcedilAtildeO 1

2 FUNDAMENTACcedilAtildeO TEOacuteRICA 5

21 Sistemas Gerenciadores de Banco de Dados 6

22 SGBDs relacionais 7

221 MySQL 8

23 SGBDs natildeo relacionais 9

231 Redis 10

24 Sistemas Embarcados 12

25 Resumo 13

3 MATERIAIS E MEacuteTODOS 14

31 Equipamentos utilizados 14

32 Preparaccedilatildeo do ambiente de pesquisa 17

33 Armazenamento utilizado 18

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs 18

35 Caracteriacutesticas da massa de teste 19

36 Carga dos dados 20

37 Consulta dos dados 21

38 Resumo 22

4 RESULTADOS E DISCUSSOtildeES 24

41 Estudo de caso 1 24

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1 24

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2 25

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino 26

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2 26

415 Tabela de resultados do estudo de caso 1 27

42 Estudo de caso 2 28

421 Consultas em 1 milhatildeo de elementos no pcDuino 28

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2 29

423 Consultas em 25 milhotildees de elementos no pcDuino 30

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2 30

425 Tabelas com os resultados do estudo de caso 2 31

5 CONCLUSOtildeES 32

6 TRABALHOS FUTUROS 34

REFEREcircNCIAS 35

A GERADOR DE DADOS DE MEDICcedilAtildeO DE SENSORES 37

B SCRIPT LUA DE CONSULTA NO SGBD REDIS 41

LISTA DE ILUSTRACcedilOtildeES

Figura 1 ndash pcDuino 1 15Figura 2 ndash Raspberry Pi 2 17Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis 24Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis 25Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis 25Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL 25Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Rasp-

berry Pi 2 26Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL 26Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL 26Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no

Raspberry Pi 2 27Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo 27Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis 27Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis 28Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis 28Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL 29Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis 29Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis 29Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL 30Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL 30Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL 31

LISTA DE TABELAS

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1 15Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2 16Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis 19Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL 20Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar 27Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos 31Tabela 7 ndash Consulta de dados - busca com intervalos de valores 31

LISTA DE QUADROS

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL 19Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis 20Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo 20Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados 21Quadro 5 ndash Comando utilizado para inserir dados no MySQL 21Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do

Redis e inserir dados no MySQL 21Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor

Redis 21Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso 22Quadro 9 ndash Condiccedilotildees para consulta de maior e menor 22Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso 22Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso 22

LISTA DE ABREVIATURAS E SIGLAS

ACID Atomicity Consistency Isolation Durability

API Application Programing Interface

ARM Advanced RISC Machine

BASE Basically Available Soft state Eventual consistency

CLI command-line interface

CPU Central Processing Unit

DDL Data Definition Language

DML Data Manipulation Language

GCC GNU Compiler Collection

GPS Global System Position

mA mili-Ampeacutere

NoSQL Not Only SQL

RAM Random-Access Memory

Redis Remote DIctionary Server

SGBD Sistema Gerenciador de Banco de Dados

SQL Structured Query Language

USB Universal Serial Bus

XML eXtensible Markup Language

XQuery XML Query

1

CAPIacuteTULO 1

INTRODUCcedilAtildeO

A coleta de dados por sensores estaacute presente em diversas atividades humanasAtividades como previsatildeo do tempo exploraccedilatildeo extraterrestre suporte a atividades cientiacute-ficas conforto residencial seguranccedila hospitalares industriais e inuacutemeras outras satildeo cadavez mais auxiliadas por coleta de dados

Dados provenientes de coleta tem um ou alguns dos seguintes propoacutesitosdescriccedilatildeo explicaccedilatildeo ou prediccedilatildeo (KUMAR 1988) Os dados descritivos respondemperguntas como ldquoquem rdquo ldquoo que rdquo e ldquoquandordquo mas natildeo perguntas como ldquocomordquo ouldquopor querdquo Uma explicaccedilatildeo necessita uma extrapolaccedilatildeo de um relacionamento causa eefeito no qual o investigador tenta entender por que um fenocircmeno processo ou eventoaconteceu ou natildeo Prediccedilotildees satildeo baseadas no entendimento da causa de eventos Dados satildeocoletados para esses fins e em aplicaccedilotildees cientiacuteficas a coleta de dados pode ser essencialpara todo o processo de pesquisa para identificar um problema auxiliar na soluccedilatildeo ouembasar uma teoria

Sensores associados a unidades de processamento satildeo cada vez mais utilizados(EVANS 2011) para executar coleta automatizada de dados Esses sistemas satildeo importan-tes pois executam a coleta na maior parte das vezes com mais facilidade e precisatildeo que umhumano e a um custo menor Ainda pode-se considerar os lugares aos quais os humanos

Capiacutetulo 1 Introduccedilatildeo 2

natildeo podem acessar como ambientes com radiaccedilatildeo ou amostragens de alta frequecircncia porexemplo

Dada a importacircncia de sistemas de coleta de dados este trabalho busca apre-sentar formas de gerenciar os dados armazenados em sistemas de coleta de dados voltadospara aplicaccedilotildees cientiacuteficas

Para verificar onde e como um banco de dados para sistemas embarcadospodem auxiliar o processo de coleta de dados eacute necessaacuterio mencionar o papel que outrastecnologias tem nas aplicaccedilotildees de anaacutelise de dados e como elas podem influenciar nautilizaccedilatildeo de bancos de dados em sistemas de coleta

Sistemas de coleta de dados em geral satildeo compostos por sistemas embarcadosdedicados exclusivamente a essa tarefa Podem ter ou natildeo acesso agrave internet A energiapode originar da rede eleacutetrica baterias descartaacuteveis ou alguma combinaccedilatildeo de alimentaccedilatildeoexterna com bateria recarregaacutevel A autonomia pode variar de dias ateacute anos O tipode amostragem pode ser desde baixa frequecircncia e baixa resoluccedilatildeo ateacute amostras de altafrequecircncia e alta resoluccedilatildeo Existem sistemas que natildeo podem atrasar no processo de coletae entrega da informaccedilatildeo e tem que ser extremamente previsiacuteveis (hard real-time ou soft

real-time) Com a diversidade de aplicaccedilotildees e avanccedilos tecnoloacutegicos existem incontaacuteveisaplicaccedilotildees com caracteriacutesticas variadas

Compreendendo que existe uma variedade muito grande de sistemas de medi-ccedilatildeo alguns casos podem tirar proveito de um armazenamento local dos dados de coletagerenciados por um banco de dados

Para imaginar o impacto da conectividade agrave Internet em sistemas de coletaseratildeo nomeadas caracteriacutesticas de conexotildees como velocidade disponibilidade e custoDentro dessas caracteriacutesticas pode-se analisar se o dado coletado consegue chegar aodestino (velocidade eou disponibilidade) e com que custo As atividades de coleta podemnecessitar de uma transmissatildeo ainda em tempo real (aplicaccedilotildees meacutedicas) ou de grandesvolumes de dados (coleta de imagens)

Se natildeo houver algum tipo de conexatildeo disponiacutevel ou sem todas as caracteriacutesticasnecessaacuterias para fazer os dados da coleta chegarem ao destino ainda eacute possiacutevel utilizaroutros meios para transferiacute-los Pode-se periodicamente transportar os dados por unidadesde armazenamento ou coleta-los manualmente com algum equipamento para esse fimPoreacutem esses meios simplesmente natildeo atendem atividades que necessitam de transmissotildeesem tempo real por exemplo Para as aplicaccedilotildees que o armazenamento local dos dadospode substituir ou auxiliar conexatildeo com a Internet para transmitir os dados coletadospode-se utilizar bancos de dados

Capiacutetulo 1 Introduccedilatildeo 3

Outro componente que estaacute presente em sistemas embarcados de coletas au-tomatizadas satildeo unidades de processamento O constante aumento na capacidade deprocessamento aumenta as possibilidades de coleta de dados Dessa forma pode-se adicio-nar um armazenamento local de dados Com os dados armazenados localmente eacute possiacutevelrealizar algum processamento preacutevio ou gerar estatiacutestica eou feedback para melhorar aproacutepria coleta de dados por exemplo Esse crescimento entatildeo aumenta as possibilidadesdo sistema de coleta

A eficiecircncia energeacutetica de sistemas de coleta baseados em sistemas embarcadosestaacute constantemente aumentando Em conjunto com a melhora constante de baterias exis-tem alguns cenaacuterios recorrentes dispositivos que usam muito pouca energia e funcionampor mais tempo (chegando a mais de um ano) ou dispositivos que aproveitam a eficiecircnciaenergeacutetica e aumentam muito a capacidade de processamento Pode-se ter situaccedilotildees derestriccedilatildeo de energia e necessidade de reduzir transmissotildees dos dados de medidoccedilotildees mascom um armazenamento local a atividade pode continuar com as transmissotildees sendo feitasposteriormente

Dependendo do tipo de configuraccedilatildeo de sistema de mediccedilatildeo utilizado o equi-pamento sequer tem um sistema operacional como pode ter recursos semelhantes a compu-tadores pessoais No primeiro caso satildeo equipamentos embarcados extremamente simplesque podem natildeo dispor de recursos para sustentar um SGBD Pela simplicidade da arquite-tura pode natildeo compensar o custo de desenvolvimento e manutenccedilatildeo No segundo casoequipamentos embarcados com mais recursos disponiacuteveis pode-se utilizar um SGBD

Quando a integraccedilatildeo da aplicaccedilatildeo de coleta eacute feita com o SGBD para arma-zenamento de dados locais podemos adicionar caracteriacutesticas como maior seguranccedila edisponibilidade dos dados melhor recuperaccedilatildeo dentre outras vantagens de se utilizar umSGBD

Espera-se apresentar e testar meacutetodos de gerenciamento de dados caracteriacutesti-cos de sensores visando aplicaccedilotildees cientiacuteficas Os objetivos especiacuteficos satildeo

1 Investigar as tendecircncias tecnologias de SGBD

2 Comparar a performance de sistemas embarcados com alguns SGBD investigados

3 Aplicar dois tipos de conjunto de dados para testar os sistemas embarcados e osSGBD

4 Realizar teste de leitura e acesso para avaliar desempenho tanto dos sistemasembarcados como dos SGBD

Capiacutetulo 1 Introduccedilatildeo 4

Este estudo pode contribuir na discussatildeo de como os dados de um sistema decoleta seratildeo gerenciados em funccedilatildeo de recursos disponiacuteveis configuraccedilatildeo do sistema e osresultados que se buscam atingir

Nesta introduccedilatildeo buscou-se descrever a importacircncia da coleta de dados natildeo soacutepara fins cientiacuteficos mas para vaacuterias atividades humanas atualmente Aleacutem disso foramdemonstrados alguns vaacuterios cenaacuterios e tecnologias dos quais alguns o uso de SGBD paraarmazenamento local beneficia a atividade de coleta de dados Por fim os objetivos queorientam esta pesquisa

No capiacutetulo 2 Revisatildeo de Literatura seratildeo levantados conceitos e teoriarelativo agrave SGBDs em geral como eles podem ajudar e sobre os dois utilizados nosexperimentos Dada a ligaccedilatildeo entre sistemas de coleta de dados exposta na introduccedilatildeoseratildeo abordados alguns conceitos relativos agrave sistemas embarcados

No capiacutetulo 3 Materiais e Meacutetodos seratildeo descritos todos os componentesfiacutesicos e de software selecionados para os testes Aleacutem disso seraacute descrito como foramfeitos os testes

No capiacutetulo 4 Estudos de Caso seratildeo apresentados os testes feitos com osrespectivos paracircmetros No capiacutetulo 5 Resultados seratildeo discutidos os resultados dosEstudos de Caso

No capiacutetulo 6 Trabalhos Futuros busca-se levantar partes desta monografiaque podem ser ainda mais explorados

O capiacutetulo seguinte a Conclusatildeo seratildeo revistas as hipoacuteteses iniciais compara-das aos resultados

CAPIacuteTULO 2

FUNDAMENTACcedilAtildeO TEOacuteRICA

A utilizaccedilatildeo de um SGBD (Sistema Gerenciador de Banco de Dados) trazimpactos positivos e negativos decorrentes da combinaccedilatildeo das variaacuteveis de caracteriacutesticasdo SGBD em si de sua arquitetura e da aplicaccedilatildeo

Sistemas de coleta automatizada de dados cientiacuteficos podem ser construiacutedosutilizando Sistemas Embarcados Um sistema embarcado eacute definido pela sua aplicaccedilatildeopois tendem a ser equipamentos com funccedilatildeo bem definida Ao variar a aplicaccedilatildeo mudam-sejunto os recursos e atributos do equipamento

Considerando essas combinaccedilotildees temos cenaacuterios favoraacuteveis ou natildeo a utilizaccedilatildeode um SGBD para gerenciar dados localmente em um sistema de coleta automatizadoNeste capitulo seratildeo apresentados os conceitos necessaacuterios para evidenciar as principaisvariaacuteveis dos elementos envolvidos neste experimento e como as mesmas podem influenciarna aplicaccedilatildeo

Seratildeo abordados conceitos gerais sobre SGBDs dos tipos relacionais e NoSQLEm seguida referecircncias sobre sistemas embarcados dado que o mesmo tem influecircncia nautilizaccedilatildeo ou natildeo de SGBD em uma aplicaccedilatildeo de coleta

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 6

21 Sistemas Gerenciadores de Banco de Dados

Um SGBD eacute um sistema computadorizado para armazenar registros segundo(DATE 2004) Bases de dados estatildeo presentes em computadores de diferentes escalasdesde pequenos sistemas embarcados ateacute clusters de mainframes Eacute normalmente utilizadapara o software que gerencia a base de dados enquanto a denominaccedilatildeo banco de dados oubase de dados se refere ao conjunto de dados gerenciado (DATE 2004)

A automaccedilatildeo do processamento de dados eacute mais antiga que os proacuteprios com-putadores Silberchatz (SUDARSHAN 2004) afirma que cartotildees perfurados inventadospor Herman Hollerith foram usados no comeccedilo do seacuteculo 20 nos Estados Unidos paraarmazenar dados de censo Sistemas mecacircnicos foram usados para processar os cartotildees eapresentar os resultados

Com a evoluccedilatildeo dos meios de armazenamento e processamento entre asdeacutecadas de 50 e 60 fitas magneacuteticas foram usadas para armazenamento de dados Comofitas tem forma de acesso sequencial os dados tinham que ser acessados ou modificadosde forma sequencial

Desde o fim dos anos 60 ateacute os anos 70 houve a disseminaccedilatildeo do uso dodisco riacutegido a utilizaccedilatildeo de vaacuterios discos o uso de sistemas de arquivos e aumento nasvelocidades de transferecircncia por conta de novos materiais e processos de fabricaccedilatildeo Aleacutemdisso o modelo de acesso aleatoacuterio alterou a forma como os dados eram acessados emodificados (SPELIOTIS 2000)

Nos aos 80 foi criado o modelo relacional de dados que foi implementado noSystem R da IBM que desenvolveu teacutecnicas eficientes de construccedilatildeo de bases de dadosrelacionais

No iniacutecio dos anos 90 a linguagem SQL foi escolhida para aplicaccedilotildees desuporte a decisatildeo que fazem muitos acessos ao banco de dados As bases de dadospassaram a ter que oferecer suporte a uma taxa muito alta de processamento de transaccedilotildeesaleacutem de ser mais confiaacuteveis manter disponibilidade 24x7 e suportar dados de interfaceWeb SQL fornece vaacuterios recursos como DDL (Data-Definition Language) para trabalharcom esquemas e relacionamentos por exemplo DML (Data Manipulation Language) parafazer consultas apagar inserir ou modificar tuplas no banco controles de integridadegeraccedilatildeo de visotildees controle transacional permissotildees de acesso e outros

No comeccedilo da deacutecada 2000 houve a adoccedilatildeo do XML em associaccedilatildeo com alinguagem XQuery como nova tecnologia de consulta Nesse periacuteodo tambeacutem houve umcrescimento na utilizaccedilatildeo de SGBDs open-source como o PostgresSQL e o MySQL

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 7

No fim da deacutecada de 2000 houve o crescimento de SGBDs especializados emanalises de dados como os column-store Novos sistemas de armazenamento de dadosdistribuiacutedos foram construiacutedos para ter capacidade para anaacutelise de dados de sites comoAmazon

Com o passar do tempo as mudanccedilas de hardware capacidade de processa-mento e armazenamento velocidades de conexotildees dados disponiacuteveis e necessidadesopor-tunidades influenciaram o desenvolvimento dos SGBDs Verificamos que esse processoteve duas vias o desenvolvimento de recursos gerou espaccedilo para mudanccedilas e as neces-sidades tambeacutem levaram ao desenvolvimento e popularizaccedilatildeo de outras tecnologias deSGBDs

22 SGBDs relacionais

SGBDs relacionais foram desenvolvidos nos anos 70 como uma tecnologiapara armazenar dados estruturados organizados como tabelas com sua proacutepria linguagem ndasho SQL (OUNALLI 2012)

Segundo (SUDARSHAN 2004) um SGBD relacional eacute baseado no modelorelacional e usa uma coleccedilatildeo de tabelas para representar os dados e os relacionamentosentre esses dados O tipo relacional de SGBD eacute hoje em dia o principal utilizado nomercado

Uma base relacional consiste em um conjunto de tabelas As tabelas tecircmvaacuterias colunas e cada coluna tem um uacutenico nome Em geral uma linha representa orelacionamento entre um conjunto de valores e satildeo chamadas de tuplas O esquema deuma base relacional conteacutem os atributos tipos e regras das relaccedilotildees como chaves primaacuteriase estrangeiras

As tuplas podem ter um atributo do tipo chave primaacuteria que eacute a identificaccedilatildeouacutenica e natildeo repetida daquele registro Essas chaves podem ser referenciadas por outrosregistros por meio de um atributo do tipo chave estrangeira

Uma caracteriacutestica dos SGBDs e linguagens relacionais eacute a implementaccedilatildeo daaacutelgebra relacional Ela define um conjunto de operaccedilotildees

1 Seleccedilatildeo - retorna as linhas que satisfazem a condiccedilatildeo de seleccedilatildeo

2 Projeccedilatildeo - retorna atributos especiacuteficos de todas as linhas da entrada da relaccedilatildeoRemove as linhas duplicadas da saiacuteda

3 Natural join - retorna os pares de linhas de duas entradas que tem o mesmo valor emtodos os atributos que tem o mesmo nome

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 8

4 Produto cartesiano - retorna todos os pares de linhas de duas relaccedilotildees de entradasindependente de ter os mesmos nomes ou valores em comum

5 Uniatildeo - retorna a uniatildeo de tuplas de duas relaccedilotildees

Linguagens como o SQL utilizadas para fazer operaccedilotildees nas bases de dadossatildeo baseadas em aacutelgebra relacional que provecirc vaacuterios recursos para gerar as consultas SQLeacute a linguagem relacional mais influente do mercado

221 MySQL

O MySQL eacute um SGBD do tipo relacional que implementa um padratildeo SQLcom algumas extensotildees Foi comprado pela Sun Microsystems em 2008 (WIDENIUS2008) e eacute parte da Oracle que ao comprar a Sun Microsystems comprou todos os seusprodutos tambeacutem O MySQL tem como pontos positivos um suporte bom dos usuaacuterios nosfoacuteruns e grande e bem detalhada documentaccedilatildeo Eacute um SGBD com baixo overhead o quepermite a execuccedilatildeo em computadores com poucos recursos de memoacuteria e processamento

Poreacutem a capacidade de execuccedilatildeo e armazenamento do SGBD seraacute propor-cional agrave arquitetura de hardware e software que o executa O MySQL eacute um SGBDopen-source e o banco de dados dependendo da arquitetura de execuccedilatildeo e mecanismo dearmazenamento pode chegar a ter ateacute 64TB de tamanho (MYSQL 2015)

Eacute escrito em C e C++ e tem compatibilidade com arquiteturas de hardwareSPARC 64 SPARC 32 x86 x86 64 IA64 e ARM Eacute possiacutevel acessar o banco de dadospor meio de uma interface CLI (command-line interface ndash interface de linha de comando)ou pelo ConnectorODBC Existe APIs para C C++ Eiffel Java PHP Python Ruby eTcl

O MySQL disponibiliza algumas opccedilotildees de armazenamento das bases de dados(MYSQL 2015)

1 InnoDB o mecanismo padratildeo de armazenamento do MySQL Eacute compatiacutevel comACID e dispotildeem de recursos como commit e rollback Eacute o mais indicado paraser usado na maioria das aplicaccedilotildees por ter alto desempenho e operar de formatransacional

2 MyISAM eacute uma forma de armazenamento mais simples A trava para escrita emniacutevel de tabela limita o desempenho para operaccedilotildees que envolvem leitura e escrita

Existem outros mecanismos de armazenamento poreacutem ou tem uso muitorestrito ou estatildeo em desuso como CSV Archive Federated e Merge Outro exemplo eacute

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 9

o mecanismo de armazenamento Memory que guarda os dados na memoacuteria RAM e deacordo com o manual estaacute caindo em desuso O mecanismo InnoDB pode ser configuradocom buffers que podem em alguns casos substituir o Memory e ainda com a vantagem depersistir os dados em um armazenamento natildeo volaacutetil

23 SGBDs natildeo relacionais

Com o constante aumento dos dados armazenados e analisados os SGBDsrelacionais estatildeo apresentando vaacuterias limitaccedilotildees As consultas aos dados estatildeo perdendoa eficiecircncia pelo grande volume de dados Esse volume de dados estaacute crescendo cadavez mais por conta da evoluccedilatildeo constante das tecnologias de captura de informaccedilatildeo deprocessamento e da inteligecircncia para dar significado a tudo isso Abramova (ABRAMOVABERNADINO FURTADO 2014) afirma que o NoSQL foi desenvolvido para superaralgumas dessas limitaccedilotildees das bases de dados atuais

Os bancos NoSQL satildeo representados pela natildeo existecircncia de uma estrutura dedados riacutegida comparado ao SQL Eacute possiacutevel ter num mesmo espaccedilo de armazenamentoobjetos com membros diferentes Isso natildeo acontece no SQL onde todos os registros tecircmque seguir o modelo das colunas da tabela onde estatildeo inseridos O conceito de NoSQLfoi usado pela primeira vez em 1998 por Carlo Strozzi (ABRAMOVA BERNADINOFURTADO 2014) para se referir a um banco que natildeo usa interface SQL

Os bancos NoSQL satildeo normalmente baseados no teorema BASE (Basically

Available Soft State and Eventually consistente) (VIEBRANTZ 2012) Os bancos relacio-nais satildeo representados pelo ACID (Atomicidade Consistecircncia Isolamento e Durabilidade)Diferente do ACID o BASE sacrifica um pouco da consistecircncia dos dados para ganhardesempenho Essa troca eacute descrita pelo teorema CAP (Consistency Availability Partition

tolerance) Segundo (BROWNE 2015) teorema CAP diz que somente eacute possiacutevel ter duasdas trecircs caracteriacutesticas ao mesmo tempo

Apesar de natildeo ser possiacutevel consultar dados usando SQL esta abordagempermite faacutecil armazenamento e consulta de dados independente da estrutura do conteuacutedo(ABRAMOVA BERNADINO FURTADO 2014) Bancos NoSQL tambeacutem demonstrammelhor escalabilidade horizontal (EVANS 2011) Isso significa que servidores de baixocusto podem satisfazer as requisiccedilotildees enquanto os custos satildeo reduzidos O gerenciamentodesse grande volume de dados seria difiacutecil porem essas bases de dados satildeo projetadaspara gerenciaacute-los automaticamente recuperar de falhas e consertar o sistema por completo(STOLERU 2010)

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 8: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

5 CONCLUSOtildeES 32

6 TRABALHOS FUTUROS 34

REFEREcircNCIAS 35

A GERADOR DE DADOS DE MEDICcedilAtildeO DE SENSORES 37

B SCRIPT LUA DE CONSULTA NO SGBD REDIS 41

LISTA DE ILUSTRACcedilOtildeES

Figura 1 ndash pcDuino 1 15Figura 2 ndash Raspberry Pi 2 17Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis 24Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis 25Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis 25Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL 25Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Rasp-

berry Pi 2 26Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL 26Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL 26Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no

Raspberry Pi 2 27Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo 27Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis 27Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis 28Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis 28Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL 29Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis 29Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis 29Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL 30Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL 30Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL 31

LISTA DE TABELAS

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1 15Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2 16Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis 19Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL 20Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar 27Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos 31Tabela 7 ndash Consulta de dados - busca com intervalos de valores 31

LISTA DE QUADROS

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL 19Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis 20Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo 20Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados 21Quadro 5 ndash Comando utilizado para inserir dados no MySQL 21Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do

Redis e inserir dados no MySQL 21Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor

Redis 21Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso 22Quadro 9 ndash Condiccedilotildees para consulta de maior e menor 22Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso 22Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso 22

LISTA DE ABREVIATURAS E SIGLAS

ACID Atomicity Consistency Isolation Durability

API Application Programing Interface

ARM Advanced RISC Machine

BASE Basically Available Soft state Eventual consistency

CLI command-line interface

CPU Central Processing Unit

DDL Data Definition Language

DML Data Manipulation Language

GCC GNU Compiler Collection

GPS Global System Position

mA mili-Ampeacutere

NoSQL Not Only SQL

RAM Random-Access Memory

Redis Remote DIctionary Server

SGBD Sistema Gerenciador de Banco de Dados

SQL Structured Query Language

USB Universal Serial Bus

XML eXtensible Markup Language

XQuery XML Query

1

CAPIacuteTULO 1

INTRODUCcedilAtildeO

A coleta de dados por sensores estaacute presente em diversas atividades humanasAtividades como previsatildeo do tempo exploraccedilatildeo extraterrestre suporte a atividades cientiacute-ficas conforto residencial seguranccedila hospitalares industriais e inuacutemeras outras satildeo cadavez mais auxiliadas por coleta de dados

Dados provenientes de coleta tem um ou alguns dos seguintes propoacutesitosdescriccedilatildeo explicaccedilatildeo ou prediccedilatildeo (KUMAR 1988) Os dados descritivos respondemperguntas como ldquoquem rdquo ldquoo que rdquo e ldquoquandordquo mas natildeo perguntas como ldquocomordquo ouldquopor querdquo Uma explicaccedilatildeo necessita uma extrapolaccedilatildeo de um relacionamento causa eefeito no qual o investigador tenta entender por que um fenocircmeno processo ou eventoaconteceu ou natildeo Prediccedilotildees satildeo baseadas no entendimento da causa de eventos Dados satildeocoletados para esses fins e em aplicaccedilotildees cientiacuteficas a coleta de dados pode ser essencialpara todo o processo de pesquisa para identificar um problema auxiliar na soluccedilatildeo ouembasar uma teoria

Sensores associados a unidades de processamento satildeo cada vez mais utilizados(EVANS 2011) para executar coleta automatizada de dados Esses sistemas satildeo importan-tes pois executam a coleta na maior parte das vezes com mais facilidade e precisatildeo que umhumano e a um custo menor Ainda pode-se considerar os lugares aos quais os humanos

Capiacutetulo 1 Introduccedilatildeo 2

natildeo podem acessar como ambientes com radiaccedilatildeo ou amostragens de alta frequecircncia porexemplo

Dada a importacircncia de sistemas de coleta de dados este trabalho busca apre-sentar formas de gerenciar os dados armazenados em sistemas de coleta de dados voltadospara aplicaccedilotildees cientiacuteficas

Para verificar onde e como um banco de dados para sistemas embarcadospodem auxiliar o processo de coleta de dados eacute necessaacuterio mencionar o papel que outrastecnologias tem nas aplicaccedilotildees de anaacutelise de dados e como elas podem influenciar nautilizaccedilatildeo de bancos de dados em sistemas de coleta

Sistemas de coleta de dados em geral satildeo compostos por sistemas embarcadosdedicados exclusivamente a essa tarefa Podem ter ou natildeo acesso agrave internet A energiapode originar da rede eleacutetrica baterias descartaacuteveis ou alguma combinaccedilatildeo de alimentaccedilatildeoexterna com bateria recarregaacutevel A autonomia pode variar de dias ateacute anos O tipode amostragem pode ser desde baixa frequecircncia e baixa resoluccedilatildeo ateacute amostras de altafrequecircncia e alta resoluccedilatildeo Existem sistemas que natildeo podem atrasar no processo de coletae entrega da informaccedilatildeo e tem que ser extremamente previsiacuteveis (hard real-time ou soft

real-time) Com a diversidade de aplicaccedilotildees e avanccedilos tecnoloacutegicos existem incontaacuteveisaplicaccedilotildees com caracteriacutesticas variadas

Compreendendo que existe uma variedade muito grande de sistemas de medi-ccedilatildeo alguns casos podem tirar proveito de um armazenamento local dos dados de coletagerenciados por um banco de dados

Para imaginar o impacto da conectividade agrave Internet em sistemas de coletaseratildeo nomeadas caracteriacutesticas de conexotildees como velocidade disponibilidade e custoDentro dessas caracteriacutesticas pode-se analisar se o dado coletado consegue chegar aodestino (velocidade eou disponibilidade) e com que custo As atividades de coleta podemnecessitar de uma transmissatildeo ainda em tempo real (aplicaccedilotildees meacutedicas) ou de grandesvolumes de dados (coleta de imagens)

Se natildeo houver algum tipo de conexatildeo disponiacutevel ou sem todas as caracteriacutesticasnecessaacuterias para fazer os dados da coleta chegarem ao destino ainda eacute possiacutevel utilizaroutros meios para transferiacute-los Pode-se periodicamente transportar os dados por unidadesde armazenamento ou coleta-los manualmente com algum equipamento para esse fimPoreacutem esses meios simplesmente natildeo atendem atividades que necessitam de transmissotildeesem tempo real por exemplo Para as aplicaccedilotildees que o armazenamento local dos dadospode substituir ou auxiliar conexatildeo com a Internet para transmitir os dados coletadospode-se utilizar bancos de dados

Capiacutetulo 1 Introduccedilatildeo 3

Outro componente que estaacute presente em sistemas embarcados de coletas au-tomatizadas satildeo unidades de processamento O constante aumento na capacidade deprocessamento aumenta as possibilidades de coleta de dados Dessa forma pode-se adicio-nar um armazenamento local de dados Com os dados armazenados localmente eacute possiacutevelrealizar algum processamento preacutevio ou gerar estatiacutestica eou feedback para melhorar aproacutepria coleta de dados por exemplo Esse crescimento entatildeo aumenta as possibilidadesdo sistema de coleta

A eficiecircncia energeacutetica de sistemas de coleta baseados em sistemas embarcadosestaacute constantemente aumentando Em conjunto com a melhora constante de baterias exis-tem alguns cenaacuterios recorrentes dispositivos que usam muito pouca energia e funcionampor mais tempo (chegando a mais de um ano) ou dispositivos que aproveitam a eficiecircnciaenergeacutetica e aumentam muito a capacidade de processamento Pode-se ter situaccedilotildees derestriccedilatildeo de energia e necessidade de reduzir transmissotildees dos dados de medidoccedilotildees mascom um armazenamento local a atividade pode continuar com as transmissotildees sendo feitasposteriormente

Dependendo do tipo de configuraccedilatildeo de sistema de mediccedilatildeo utilizado o equi-pamento sequer tem um sistema operacional como pode ter recursos semelhantes a compu-tadores pessoais No primeiro caso satildeo equipamentos embarcados extremamente simplesque podem natildeo dispor de recursos para sustentar um SGBD Pela simplicidade da arquite-tura pode natildeo compensar o custo de desenvolvimento e manutenccedilatildeo No segundo casoequipamentos embarcados com mais recursos disponiacuteveis pode-se utilizar um SGBD

Quando a integraccedilatildeo da aplicaccedilatildeo de coleta eacute feita com o SGBD para arma-zenamento de dados locais podemos adicionar caracteriacutesticas como maior seguranccedila edisponibilidade dos dados melhor recuperaccedilatildeo dentre outras vantagens de se utilizar umSGBD

Espera-se apresentar e testar meacutetodos de gerenciamento de dados caracteriacutesti-cos de sensores visando aplicaccedilotildees cientiacuteficas Os objetivos especiacuteficos satildeo

1 Investigar as tendecircncias tecnologias de SGBD

2 Comparar a performance de sistemas embarcados com alguns SGBD investigados

3 Aplicar dois tipos de conjunto de dados para testar os sistemas embarcados e osSGBD

4 Realizar teste de leitura e acesso para avaliar desempenho tanto dos sistemasembarcados como dos SGBD

Capiacutetulo 1 Introduccedilatildeo 4

Este estudo pode contribuir na discussatildeo de como os dados de um sistema decoleta seratildeo gerenciados em funccedilatildeo de recursos disponiacuteveis configuraccedilatildeo do sistema e osresultados que se buscam atingir

Nesta introduccedilatildeo buscou-se descrever a importacircncia da coleta de dados natildeo soacutepara fins cientiacuteficos mas para vaacuterias atividades humanas atualmente Aleacutem disso foramdemonstrados alguns vaacuterios cenaacuterios e tecnologias dos quais alguns o uso de SGBD paraarmazenamento local beneficia a atividade de coleta de dados Por fim os objetivos queorientam esta pesquisa

No capiacutetulo 2 Revisatildeo de Literatura seratildeo levantados conceitos e teoriarelativo agrave SGBDs em geral como eles podem ajudar e sobre os dois utilizados nosexperimentos Dada a ligaccedilatildeo entre sistemas de coleta de dados exposta na introduccedilatildeoseratildeo abordados alguns conceitos relativos agrave sistemas embarcados

No capiacutetulo 3 Materiais e Meacutetodos seratildeo descritos todos os componentesfiacutesicos e de software selecionados para os testes Aleacutem disso seraacute descrito como foramfeitos os testes

No capiacutetulo 4 Estudos de Caso seratildeo apresentados os testes feitos com osrespectivos paracircmetros No capiacutetulo 5 Resultados seratildeo discutidos os resultados dosEstudos de Caso

No capiacutetulo 6 Trabalhos Futuros busca-se levantar partes desta monografiaque podem ser ainda mais explorados

O capiacutetulo seguinte a Conclusatildeo seratildeo revistas as hipoacuteteses iniciais compara-das aos resultados

CAPIacuteTULO 2

FUNDAMENTACcedilAtildeO TEOacuteRICA

A utilizaccedilatildeo de um SGBD (Sistema Gerenciador de Banco de Dados) trazimpactos positivos e negativos decorrentes da combinaccedilatildeo das variaacuteveis de caracteriacutesticasdo SGBD em si de sua arquitetura e da aplicaccedilatildeo

Sistemas de coleta automatizada de dados cientiacuteficos podem ser construiacutedosutilizando Sistemas Embarcados Um sistema embarcado eacute definido pela sua aplicaccedilatildeopois tendem a ser equipamentos com funccedilatildeo bem definida Ao variar a aplicaccedilatildeo mudam-sejunto os recursos e atributos do equipamento

Considerando essas combinaccedilotildees temos cenaacuterios favoraacuteveis ou natildeo a utilizaccedilatildeode um SGBD para gerenciar dados localmente em um sistema de coleta automatizadoNeste capitulo seratildeo apresentados os conceitos necessaacuterios para evidenciar as principaisvariaacuteveis dos elementos envolvidos neste experimento e como as mesmas podem influenciarna aplicaccedilatildeo

Seratildeo abordados conceitos gerais sobre SGBDs dos tipos relacionais e NoSQLEm seguida referecircncias sobre sistemas embarcados dado que o mesmo tem influecircncia nautilizaccedilatildeo ou natildeo de SGBD em uma aplicaccedilatildeo de coleta

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 6

21 Sistemas Gerenciadores de Banco de Dados

Um SGBD eacute um sistema computadorizado para armazenar registros segundo(DATE 2004) Bases de dados estatildeo presentes em computadores de diferentes escalasdesde pequenos sistemas embarcados ateacute clusters de mainframes Eacute normalmente utilizadapara o software que gerencia a base de dados enquanto a denominaccedilatildeo banco de dados oubase de dados se refere ao conjunto de dados gerenciado (DATE 2004)

A automaccedilatildeo do processamento de dados eacute mais antiga que os proacuteprios com-putadores Silberchatz (SUDARSHAN 2004) afirma que cartotildees perfurados inventadospor Herman Hollerith foram usados no comeccedilo do seacuteculo 20 nos Estados Unidos paraarmazenar dados de censo Sistemas mecacircnicos foram usados para processar os cartotildees eapresentar os resultados

Com a evoluccedilatildeo dos meios de armazenamento e processamento entre asdeacutecadas de 50 e 60 fitas magneacuteticas foram usadas para armazenamento de dados Comofitas tem forma de acesso sequencial os dados tinham que ser acessados ou modificadosde forma sequencial

Desde o fim dos anos 60 ateacute os anos 70 houve a disseminaccedilatildeo do uso dodisco riacutegido a utilizaccedilatildeo de vaacuterios discos o uso de sistemas de arquivos e aumento nasvelocidades de transferecircncia por conta de novos materiais e processos de fabricaccedilatildeo Aleacutemdisso o modelo de acesso aleatoacuterio alterou a forma como os dados eram acessados emodificados (SPELIOTIS 2000)

Nos aos 80 foi criado o modelo relacional de dados que foi implementado noSystem R da IBM que desenvolveu teacutecnicas eficientes de construccedilatildeo de bases de dadosrelacionais

No iniacutecio dos anos 90 a linguagem SQL foi escolhida para aplicaccedilotildees desuporte a decisatildeo que fazem muitos acessos ao banco de dados As bases de dadospassaram a ter que oferecer suporte a uma taxa muito alta de processamento de transaccedilotildeesaleacutem de ser mais confiaacuteveis manter disponibilidade 24x7 e suportar dados de interfaceWeb SQL fornece vaacuterios recursos como DDL (Data-Definition Language) para trabalharcom esquemas e relacionamentos por exemplo DML (Data Manipulation Language) parafazer consultas apagar inserir ou modificar tuplas no banco controles de integridadegeraccedilatildeo de visotildees controle transacional permissotildees de acesso e outros

No comeccedilo da deacutecada 2000 houve a adoccedilatildeo do XML em associaccedilatildeo com alinguagem XQuery como nova tecnologia de consulta Nesse periacuteodo tambeacutem houve umcrescimento na utilizaccedilatildeo de SGBDs open-source como o PostgresSQL e o MySQL

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 7

No fim da deacutecada de 2000 houve o crescimento de SGBDs especializados emanalises de dados como os column-store Novos sistemas de armazenamento de dadosdistribuiacutedos foram construiacutedos para ter capacidade para anaacutelise de dados de sites comoAmazon

Com o passar do tempo as mudanccedilas de hardware capacidade de processa-mento e armazenamento velocidades de conexotildees dados disponiacuteveis e necessidadesopor-tunidades influenciaram o desenvolvimento dos SGBDs Verificamos que esse processoteve duas vias o desenvolvimento de recursos gerou espaccedilo para mudanccedilas e as neces-sidades tambeacutem levaram ao desenvolvimento e popularizaccedilatildeo de outras tecnologias deSGBDs

22 SGBDs relacionais

SGBDs relacionais foram desenvolvidos nos anos 70 como uma tecnologiapara armazenar dados estruturados organizados como tabelas com sua proacutepria linguagem ndasho SQL (OUNALLI 2012)

Segundo (SUDARSHAN 2004) um SGBD relacional eacute baseado no modelorelacional e usa uma coleccedilatildeo de tabelas para representar os dados e os relacionamentosentre esses dados O tipo relacional de SGBD eacute hoje em dia o principal utilizado nomercado

Uma base relacional consiste em um conjunto de tabelas As tabelas tecircmvaacuterias colunas e cada coluna tem um uacutenico nome Em geral uma linha representa orelacionamento entre um conjunto de valores e satildeo chamadas de tuplas O esquema deuma base relacional conteacutem os atributos tipos e regras das relaccedilotildees como chaves primaacuteriase estrangeiras

As tuplas podem ter um atributo do tipo chave primaacuteria que eacute a identificaccedilatildeouacutenica e natildeo repetida daquele registro Essas chaves podem ser referenciadas por outrosregistros por meio de um atributo do tipo chave estrangeira

Uma caracteriacutestica dos SGBDs e linguagens relacionais eacute a implementaccedilatildeo daaacutelgebra relacional Ela define um conjunto de operaccedilotildees

1 Seleccedilatildeo - retorna as linhas que satisfazem a condiccedilatildeo de seleccedilatildeo

2 Projeccedilatildeo - retorna atributos especiacuteficos de todas as linhas da entrada da relaccedilatildeoRemove as linhas duplicadas da saiacuteda

3 Natural join - retorna os pares de linhas de duas entradas que tem o mesmo valor emtodos os atributos que tem o mesmo nome

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 8

4 Produto cartesiano - retorna todos os pares de linhas de duas relaccedilotildees de entradasindependente de ter os mesmos nomes ou valores em comum

5 Uniatildeo - retorna a uniatildeo de tuplas de duas relaccedilotildees

Linguagens como o SQL utilizadas para fazer operaccedilotildees nas bases de dadossatildeo baseadas em aacutelgebra relacional que provecirc vaacuterios recursos para gerar as consultas SQLeacute a linguagem relacional mais influente do mercado

221 MySQL

O MySQL eacute um SGBD do tipo relacional que implementa um padratildeo SQLcom algumas extensotildees Foi comprado pela Sun Microsystems em 2008 (WIDENIUS2008) e eacute parte da Oracle que ao comprar a Sun Microsystems comprou todos os seusprodutos tambeacutem O MySQL tem como pontos positivos um suporte bom dos usuaacuterios nosfoacuteruns e grande e bem detalhada documentaccedilatildeo Eacute um SGBD com baixo overhead o quepermite a execuccedilatildeo em computadores com poucos recursos de memoacuteria e processamento

Poreacutem a capacidade de execuccedilatildeo e armazenamento do SGBD seraacute propor-cional agrave arquitetura de hardware e software que o executa O MySQL eacute um SGBDopen-source e o banco de dados dependendo da arquitetura de execuccedilatildeo e mecanismo dearmazenamento pode chegar a ter ateacute 64TB de tamanho (MYSQL 2015)

Eacute escrito em C e C++ e tem compatibilidade com arquiteturas de hardwareSPARC 64 SPARC 32 x86 x86 64 IA64 e ARM Eacute possiacutevel acessar o banco de dadospor meio de uma interface CLI (command-line interface ndash interface de linha de comando)ou pelo ConnectorODBC Existe APIs para C C++ Eiffel Java PHP Python Ruby eTcl

O MySQL disponibiliza algumas opccedilotildees de armazenamento das bases de dados(MYSQL 2015)

1 InnoDB o mecanismo padratildeo de armazenamento do MySQL Eacute compatiacutevel comACID e dispotildeem de recursos como commit e rollback Eacute o mais indicado paraser usado na maioria das aplicaccedilotildees por ter alto desempenho e operar de formatransacional

2 MyISAM eacute uma forma de armazenamento mais simples A trava para escrita emniacutevel de tabela limita o desempenho para operaccedilotildees que envolvem leitura e escrita

Existem outros mecanismos de armazenamento poreacutem ou tem uso muitorestrito ou estatildeo em desuso como CSV Archive Federated e Merge Outro exemplo eacute

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 9

o mecanismo de armazenamento Memory que guarda os dados na memoacuteria RAM e deacordo com o manual estaacute caindo em desuso O mecanismo InnoDB pode ser configuradocom buffers que podem em alguns casos substituir o Memory e ainda com a vantagem depersistir os dados em um armazenamento natildeo volaacutetil

23 SGBDs natildeo relacionais

Com o constante aumento dos dados armazenados e analisados os SGBDsrelacionais estatildeo apresentando vaacuterias limitaccedilotildees As consultas aos dados estatildeo perdendoa eficiecircncia pelo grande volume de dados Esse volume de dados estaacute crescendo cadavez mais por conta da evoluccedilatildeo constante das tecnologias de captura de informaccedilatildeo deprocessamento e da inteligecircncia para dar significado a tudo isso Abramova (ABRAMOVABERNADINO FURTADO 2014) afirma que o NoSQL foi desenvolvido para superaralgumas dessas limitaccedilotildees das bases de dados atuais

Os bancos NoSQL satildeo representados pela natildeo existecircncia de uma estrutura dedados riacutegida comparado ao SQL Eacute possiacutevel ter num mesmo espaccedilo de armazenamentoobjetos com membros diferentes Isso natildeo acontece no SQL onde todos os registros tecircmque seguir o modelo das colunas da tabela onde estatildeo inseridos O conceito de NoSQLfoi usado pela primeira vez em 1998 por Carlo Strozzi (ABRAMOVA BERNADINOFURTADO 2014) para se referir a um banco que natildeo usa interface SQL

Os bancos NoSQL satildeo normalmente baseados no teorema BASE (Basically

Available Soft State and Eventually consistente) (VIEBRANTZ 2012) Os bancos relacio-nais satildeo representados pelo ACID (Atomicidade Consistecircncia Isolamento e Durabilidade)Diferente do ACID o BASE sacrifica um pouco da consistecircncia dos dados para ganhardesempenho Essa troca eacute descrita pelo teorema CAP (Consistency Availability Partition

tolerance) Segundo (BROWNE 2015) teorema CAP diz que somente eacute possiacutevel ter duasdas trecircs caracteriacutesticas ao mesmo tempo

Apesar de natildeo ser possiacutevel consultar dados usando SQL esta abordagempermite faacutecil armazenamento e consulta de dados independente da estrutura do conteuacutedo(ABRAMOVA BERNADINO FURTADO 2014) Bancos NoSQL tambeacutem demonstrammelhor escalabilidade horizontal (EVANS 2011) Isso significa que servidores de baixocusto podem satisfazer as requisiccedilotildees enquanto os custos satildeo reduzidos O gerenciamentodesse grande volume de dados seria difiacutecil porem essas bases de dados satildeo projetadaspara gerenciaacute-los automaticamente recuperar de falhas e consertar o sistema por completo(STOLERU 2010)

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 9: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

LISTA DE ILUSTRACcedilOtildeES

Figura 1 ndash pcDuino 1 15Figura 2 ndash Raspberry Pi 2 17Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis 24Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis 25Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis 25Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL 25Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Rasp-

berry Pi 2 26Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL 26Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL 26Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no

Raspberry Pi 2 27Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo 27Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis 27Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis 28Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis 28Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL 29Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis 29Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis 29Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL 30Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL 30Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL 31

LISTA DE TABELAS

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1 15Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2 16Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis 19Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL 20Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar 27Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos 31Tabela 7 ndash Consulta de dados - busca com intervalos de valores 31

LISTA DE QUADROS

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL 19Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis 20Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo 20Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados 21Quadro 5 ndash Comando utilizado para inserir dados no MySQL 21Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do

Redis e inserir dados no MySQL 21Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor

Redis 21Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso 22Quadro 9 ndash Condiccedilotildees para consulta de maior e menor 22Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso 22Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso 22

LISTA DE ABREVIATURAS E SIGLAS

ACID Atomicity Consistency Isolation Durability

API Application Programing Interface

ARM Advanced RISC Machine

BASE Basically Available Soft state Eventual consistency

CLI command-line interface

CPU Central Processing Unit

DDL Data Definition Language

DML Data Manipulation Language

GCC GNU Compiler Collection

GPS Global System Position

mA mili-Ampeacutere

NoSQL Not Only SQL

RAM Random-Access Memory

Redis Remote DIctionary Server

SGBD Sistema Gerenciador de Banco de Dados

SQL Structured Query Language

USB Universal Serial Bus

XML eXtensible Markup Language

XQuery XML Query

1

CAPIacuteTULO 1

INTRODUCcedilAtildeO

A coleta de dados por sensores estaacute presente em diversas atividades humanasAtividades como previsatildeo do tempo exploraccedilatildeo extraterrestre suporte a atividades cientiacute-ficas conforto residencial seguranccedila hospitalares industriais e inuacutemeras outras satildeo cadavez mais auxiliadas por coleta de dados

Dados provenientes de coleta tem um ou alguns dos seguintes propoacutesitosdescriccedilatildeo explicaccedilatildeo ou prediccedilatildeo (KUMAR 1988) Os dados descritivos respondemperguntas como ldquoquem rdquo ldquoo que rdquo e ldquoquandordquo mas natildeo perguntas como ldquocomordquo ouldquopor querdquo Uma explicaccedilatildeo necessita uma extrapolaccedilatildeo de um relacionamento causa eefeito no qual o investigador tenta entender por que um fenocircmeno processo ou eventoaconteceu ou natildeo Prediccedilotildees satildeo baseadas no entendimento da causa de eventos Dados satildeocoletados para esses fins e em aplicaccedilotildees cientiacuteficas a coleta de dados pode ser essencialpara todo o processo de pesquisa para identificar um problema auxiliar na soluccedilatildeo ouembasar uma teoria

Sensores associados a unidades de processamento satildeo cada vez mais utilizados(EVANS 2011) para executar coleta automatizada de dados Esses sistemas satildeo importan-tes pois executam a coleta na maior parte das vezes com mais facilidade e precisatildeo que umhumano e a um custo menor Ainda pode-se considerar os lugares aos quais os humanos

Capiacutetulo 1 Introduccedilatildeo 2

natildeo podem acessar como ambientes com radiaccedilatildeo ou amostragens de alta frequecircncia porexemplo

Dada a importacircncia de sistemas de coleta de dados este trabalho busca apre-sentar formas de gerenciar os dados armazenados em sistemas de coleta de dados voltadospara aplicaccedilotildees cientiacuteficas

Para verificar onde e como um banco de dados para sistemas embarcadospodem auxiliar o processo de coleta de dados eacute necessaacuterio mencionar o papel que outrastecnologias tem nas aplicaccedilotildees de anaacutelise de dados e como elas podem influenciar nautilizaccedilatildeo de bancos de dados em sistemas de coleta

Sistemas de coleta de dados em geral satildeo compostos por sistemas embarcadosdedicados exclusivamente a essa tarefa Podem ter ou natildeo acesso agrave internet A energiapode originar da rede eleacutetrica baterias descartaacuteveis ou alguma combinaccedilatildeo de alimentaccedilatildeoexterna com bateria recarregaacutevel A autonomia pode variar de dias ateacute anos O tipode amostragem pode ser desde baixa frequecircncia e baixa resoluccedilatildeo ateacute amostras de altafrequecircncia e alta resoluccedilatildeo Existem sistemas que natildeo podem atrasar no processo de coletae entrega da informaccedilatildeo e tem que ser extremamente previsiacuteveis (hard real-time ou soft

real-time) Com a diversidade de aplicaccedilotildees e avanccedilos tecnoloacutegicos existem incontaacuteveisaplicaccedilotildees com caracteriacutesticas variadas

Compreendendo que existe uma variedade muito grande de sistemas de medi-ccedilatildeo alguns casos podem tirar proveito de um armazenamento local dos dados de coletagerenciados por um banco de dados

Para imaginar o impacto da conectividade agrave Internet em sistemas de coletaseratildeo nomeadas caracteriacutesticas de conexotildees como velocidade disponibilidade e custoDentro dessas caracteriacutesticas pode-se analisar se o dado coletado consegue chegar aodestino (velocidade eou disponibilidade) e com que custo As atividades de coleta podemnecessitar de uma transmissatildeo ainda em tempo real (aplicaccedilotildees meacutedicas) ou de grandesvolumes de dados (coleta de imagens)

Se natildeo houver algum tipo de conexatildeo disponiacutevel ou sem todas as caracteriacutesticasnecessaacuterias para fazer os dados da coleta chegarem ao destino ainda eacute possiacutevel utilizaroutros meios para transferiacute-los Pode-se periodicamente transportar os dados por unidadesde armazenamento ou coleta-los manualmente com algum equipamento para esse fimPoreacutem esses meios simplesmente natildeo atendem atividades que necessitam de transmissotildeesem tempo real por exemplo Para as aplicaccedilotildees que o armazenamento local dos dadospode substituir ou auxiliar conexatildeo com a Internet para transmitir os dados coletadospode-se utilizar bancos de dados

Capiacutetulo 1 Introduccedilatildeo 3

Outro componente que estaacute presente em sistemas embarcados de coletas au-tomatizadas satildeo unidades de processamento O constante aumento na capacidade deprocessamento aumenta as possibilidades de coleta de dados Dessa forma pode-se adicio-nar um armazenamento local de dados Com os dados armazenados localmente eacute possiacutevelrealizar algum processamento preacutevio ou gerar estatiacutestica eou feedback para melhorar aproacutepria coleta de dados por exemplo Esse crescimento entatildeo aumenta as possibilidadesdo sistema de coleta

A eficiecircncia energeacutetica de sistemas de coleta baseados em sistemas embarcadosestaacute constantemente aumentando Em conjunto com a melhora constante de baterias exis-tem alguns cenaacuterios recorrentes dispositivos que usam muito pouca energia e funcionampor mais tempo (chegando a mais de um ano) ou dispositivos que aproveitam a eficiecircnciaenergeacutetica e aumentam muito a capacidade de processamento Pode-se ter situaccedilotildees derestriccedilatildeo de energia e necessidade de reduzir transmissotildees dos dados de medidoccedilotildees mascom um armazenamento local a atividade pode continuar com as transmissotildees sendo feitasposteriormente

Dependendo do tipo de configuraccedilatildeo de sistema de mediccedilatildeo utilizado o equi-pamento sequer tem um sistema operacional como pode ter recursos semelhantes a compu-tadores pessoais No primeiro caso satildeo equipamentos embarcados extremamente simplesque podem natildeo dispor de recursos para sustentar um SGBD Pela simplicidade da arquite-tura pode natildeo compensar o custo de desenvolvimento e manutenccedilatildeo No segundo casoequipamentos embarcados com mais recursos disponiacuteveis pode-se utilizar um SGBD

Quando a integraccedilatildeo da aplicaccedilatildeo de coleta eacute feita com o SGBD para arma-zenamento de dados locais podemos adicionar caracteriacutesticas como maior seguranccedila edisponibilidade dos dados melhor recuperaccedilatildeo dentre outras vantagens de se utilizar umSGBD

Espera-se apresentar e testar meacutetodos de gerenciamento de dados caracteriacutesti-cos de sensores visando aplicaccedilotildees cientiacuteficas Os objetivos especiacuteficos satildeo

1 Investigar as tendecircncias tecnologias de SGBD

2 Comparar a performance de sistemas embarcados com alguns SGBD investigados

3 Aplicar dois tipos de conjunto de dados para testar os sistemas embarcados e osSGBD

4 Realizar teste de leitura e acesso para avaliar desempenho tanto dos sistemasembarcados como dos SGBD

Capiacutetulo 1 Introduccedilatildeo 4

Este estudo pode contribuir na discussatildeo de como os dados de um sistema decoleta seratildeo gerenciados em funccedilatildeo de recursos disponiacuteveis configuraccedilatildeo do sistema e osresultados que se buscam atingir

Nesta introduccedilatildeo buscou-se descrever a importacircncia da coleta de dados natildeo soacutepara fins cientiacuteficos mas para vaacuterias atividades humanas atualmente Aleacutem disso foramdemonstrados alguns vaacuterios cenaacuterios e tecnologias dos quais alguns o uso de SGBD paraarmazenamento local beneficia a atividade de coleta de dados Por fim os objetivos queorientam esta pesquisa

No capiacutetulo 2 Revisatildeo de Literatura seratildeo levantados conceitos e teoriarelativo agrave SGBDs em geral como eles podem ajudar e sobre os dois utilizados nosexperimentos Dada a ligaccedilatildeo entre sistemas de coleta de dados exposta na introduccedilatildeoseratildeo abordados alguns conceitos relativos agrave sistemas embarcados

No capiacutetulo 3 Materiais e Meacutetodos seratildeo descritos todos os componentesfiacutesicos e de software selecionados para os testes Aleacutem disso seraacute descrito como foramfeitos os testes

No capiacutetulo 4 Estudos de Caso seratildeo apresentados os testes feitos com osrespectivos paracircmetros No capiacutetulo 5 Resultados seratildeo discutidos os resultados dosEstudos de Caso

No capiacutetulo 6 Trabalhos Futuros busca-se levantar partes desta monografiaque podem ser ainda mais explorados

O capiacutetulo seguinte a Conclusatildeo seratildeo revistas as hipoacuteteses iniciais compara-das aos resultados

CAPIacuteTULO 2

FUNDAMENTACcedilAtildeO TEOacuteRICA

A utilizaccedilatildeo de um SGBD (Sistema Gerenciador de Banco de Dados) trazimpactos positivos e negativos decorrentes da combinaccedilatildeo das variaacuteveis de caracteriacutesticasdo SGBD em si de sua arquitetura e da aplicaccedilatildeo

Sistemas de coleta automatizada de dados cientiacuteficos podem ser construiacutedosutilizando Sistemas Embarcados Um sistema embarcado eacute definido pela sua aplicaccedilatildeopois tendem a ser equipamentos com funccedilatildeo bem definida Ao variar a aplicaccedilatildeo mudam-sejunto os recursos e atributos do equipamento

Considerando essas combinaccedilotildees temos cenaacuterios favoraacuteveis ou natildeo a utilizaccedilatildeode um SGBD para gerenciar dados localmente em um sistema de coleta automatizadoNeste capitulo seratildeo apresentados os conceitos necessaacuterios para evidenciar as principaisvariaacuteveis dos elementos envolvidos neste experimento e como as mesmas podem influenciarna aplicaccedilatildeo

Seratildeo abordados conceitos gerais sobre SGBDs dos tipos relacionais e NoSQLEm seguida referecircncias sobre sistemas embarcados dado que o mesmo tem influecircncia nautilizaccedilatildeo ou natildeo de SGBD em uma aplicaccedilatildeo de coleta

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 6

21 Sistemas Gerenciadores de Banco de Dados

Um SGBD eacute um sistema computadorizado para armazenar registros segundo(DATE 2004) Bases de dados estatildeo presentes em computadores de diferentes escalasdesde pequenos sistemas embarcados ateacute clusters de mainframes Eacute normalmente utilizadapara o software que gerencia a base de dados enquanto a denominaccedilatildeo banco de dados oubase de dados se refere ao conjunto de dados gerenciado (DATE 2004)

A automaccedilatildeo do processamento de dados eacute mais antiga que os proacuteprios com-putadores Silberchatz (SUDARSHAN 2004) afirma que cartotildees perfurados inventadospor Herman Hollerith foram usados no comeccedilo do seacuteculo 20 nos Estados Unidos paraarmazenar dados de censo Sistemas mecacircnicos foram usados para processar os cartotildees eapresentar os resultados

Com a evoluccedilatildeo dos meios de armazenamento e processamento entre asdeacutecadas de 50 e 60 fitas magneacuteticas foram usadas para armazenamento de dados Comofitas tem forma de acesso sequencial os dados tinham que ser acessados ou modificadosde forma sequencial

Desde o fim dos anos 60 ateacute os anos 70 houve a disseminaccedilatildeo do uso dodisco riacutegido a utilizaccedilatildeo de vaacuterios discos o uso de sistemas de arquivos e aumento nasvelocidades de transferecircncia por conta de novos materiais e processos de fabricaccedilatildeo Aleacutemdisso o modelo de acesso aleatoacuterio alterou a forma como os dados eram acessados emodificados (SPELIOTIS 2000)

Nos aos 80 foi criado o modelo relacional de dados que foi implementado noSystem R da IBM que desenvolveu teacutecnicas eficientes de construccedilatildeo de bases de dadosrelacionais

No iniacutecio dos anos 90 a linguagem SQL foi escolhida para aplicaccedilotildees desuporte a decisatildeo que fazem muitos acessos ao banco de dados As bases de dadospassaram a ter que oferecer suporte a uma taxa muito alta de processamento de transaccedilotildeesaleacutem de ser mais confiaacuteveis manter disponibilidade 24x7 e suportar dados de interfaceWeb SQL fornece vaacuterios recursos como DDL (Data-Definition Language) para trabalharcom esquemas e relacionamentos por exemplo DML (Data Manipulation Language) parafazer consultas apagar inserir ou modificar tuplas no banco controles de integridadegeraccedilatildeo de visotildees controle transacional permissotildees de acesso e outros

No comeccedilo da deacutecada 2000 houve a adoccedilatildeo do XML em associaccedilatildeo com alinguagem XQuery como nova tecnologia de consulta Nesse periacuteodo tambeacutem houve umcrescimento na utilizaccedilatildeo de SGBDs open-source como o PostgresSQL e o MySQL

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 7

No fim da deacutecada de 2000 houve o crescimento de SGBDs especializados emanalises de dados como os column-store Novos sistemas de armazenamento de dadosdistribuiacutedos foram construiacutedos para ter capacidade para anaacutelise de dados de sites comoAmazon

Com o passar do tempo as mudanccedilas de hardware capacidade de processa-mento e armazenamento velocidades de conexotildees dados disponiacuteveis e necessidadesopor-tunidades influenciaram o desenvolvimento dos SGBDs Verificamos que esse processoteve duas vias o desenvolvimento de recursos gerou espaccedilo para mudanccedilas e as neces-sidades tambeacutem levaram ao desenvolvimento e popularizaccedilatildeo de outras tecnologias deSGBDs

22 SGBDs relacionais

SGBDs relacionais foram desenvolvidos nos anos 70 como uma tecnologiapara armazenar dados estruturados organizados como tabelas com sua proacutepria linguagem ndasho SQL (OUNALLI 2012)

Segundo (SUDARSHAN 2004) um SGBD relacional eacute baseado no modelorelacional e usa uma coleccedilatildeo de tabelas para representar os dados e os relacionamentosentre esses dados O tipo relacional de SGBD eacute hoje em dia o principal utilizado nomercado

Uma base relacional consiste em um conjunto de tabelas As tabelas tecircmvaacuterias colunas e cada coluna tem um uacutenico nome Em geral uma linha representa orelacionamento entre um conjunto de valores e satildeo chamadas de tuplas O esquema deuma base relacional conteacutem os atributos tipos e regras das relaccedilotildees como chaves primaacuteriase estrangeiras

As tuplas podem ter um atributo do tipo chave primaacuteria que eacute a identificaccedilatildeouacutenica e natildeo repetida daquele registro Essas chaves podem ser referenciadas por outrosregistros por meio de um atributo do tipo chave estrangeira

Uma caracteriacutestica dos SGBDs e linguagens relacionais eacute a implementaccedilatildeo daaacutelgebra relacional Ela define um conjunto de operaccedilotildees

1 Seleccedilatildeo - retorna as linhas que satisfazem a condiccedilatildeo de seleccedilatildeo

2 Projeccedilatildeo - retorna atributos especiacuteficos de todas as linhas da entrada da relaccedilatildeoRemove as linhas duplicadas da saiacuteda

3 Natural join - retorna os pares de linhas de duas entradas que tem o mesmo valor emtodos os atributos que tem o mesmo nome

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 8

4 Produto cartesiano - retorna todos os pares de linhas de duas relaccedilotildees de entradasindependente de ter os mesmos nomes ou valores em comum

5 Uniatildeo - retorna a uniatildeo de tuplas de duas relaccedilotildees

Linguagens como o SQL utilizadas para fazer operaccedilotildees nas bases de dadossatildeo baseadas em aacutelgebra relacional que provecirc vaacuterios recursos para gerar as consultas SQLeacute a linguagem relacional mais influente do mercado

221 MySQL

O MySQL eacute um SGBD do tipo relacional que implementa um padratildeo SQLcom algumas extensotildees Foi comprado pela Sun Microsystems em 2008 (WIDENIUS2008) e eacute parte da Oracle que ao comprar a Sun Microsystems comprou todos os seusprodutos tambeacutem O MySQL tem como pontos positivos um suporte bom dos usuaacuterios nosfoacuteruns e grande e bem detalhada documentaccedilatildeo Eacute um SGBD com baixo overhead o quepermite a execuccedilatildeo em computadores com poucos recursos de memoacuteria e processamento

Poreacutem a capacidade de execuccedilatildeo e armazenamento do SGBD seraacute propor-cional agrave arquitetura de hardware e software que o executa O MySQL eacute um SGBDopen-source e o banco de dados dependendo da arquitetura de execuccedilatildeo e mecanismo dearmazenamento pode chegar a ter ateacute 64TB de tamanho (MYSQL 2015)

Eacute escrito em C e C++ e tem compatibilidade com arquiteturas de hardwareSPARC 64 SPARC 32 x86 x86 64 IA64 e ARM Eacute possiacutevel acessar o banco de dadospor meio de uma interface CLI (command-line interface ndash interface de linha de comando)ou pelo ConnectorODBC Existe APIs para C C++ Eiffel Java PHP Python Ruby eTcl

O MySQL disponibiliza algumas opccedilotildees de armazenamento das bases de dados(MYSQL 2015)

1 InnoDB o mecanismo padratildeo de armazenamento do MySQL Eacute compatiacutevel comACID e dispotildeem de recursos como commit e rollback Eacute o mais indicado paraser usado na maioria das aplicaccedilotildees por ter alto desempenho e operar de formatransacional

2 MyISAM eacute uma forma de armazenamento mais simples A trava para escrita emniacutevel de tabela limita o desempenho para operaccedilotildees que envolvem leitura e escrita

Existem outros mecanismos de armazenamento poreacutem ou tem uso muitorestrito ou estatildeo em desuso como CSV Archive Federated e Merge Outro exemplo eacute

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 9

o mecanismo de armazenamento Memory que guarda os dados na memoacuteria RAM e deacordo com o manual estaacute caindo em desuso O mecanismo InnoDB pode ser configuradocom buffers que podem em alguns casos substituir o Memory e ainda com a vantagem depersistir os dados em um armazenamento natildeo volaacutetil

23 SGBDs natildeo relacionais

Com o constante aumento dos dados armazenados e analisados os SGBDsrelacionais estatildeo apresentando vaacuterias limitaccedilotildees As consultas aos dados estatildeo perdendoa eficiecircncia pelo grande volume de dados Esse volume de dados estaacute crescendo cadavez mais por conta da evoluccedilatildeo constante das tecnologias de captura de informaccedilatildeo deprocessamento e da inteligecircncia para dar significado a tudo isso Abramova (ABRAMOVABERNADINO FURTADO 2014) afirma que o NoSQL foi desenvolvido para superaralgumas dessas limitaccedilotildees das bases de dados atuais

Os bancos NoSQL satildeo representados pela natildeo existecircncia de uma estrutura dedados riacutegida comparado ao SQL Eacute possiacutevel ter num mesmo espaccedilo de armazenamentoobjetos com membros diferentes Isso natildeo acontece no SQL onde todos os registros tecircmque seguir o modelo das colunas da tabela onde estatildeo inseridos O conceito de NoSQLfoi usado pela primeira vez em 1998 por Carlo Strozzi (ABRAMOVA BERNADINOFURTADO 2014) para se referir a um banco que natildeo usa interface SQL

Os bancos NoSQL satildeo normalmente baseados no teorema BASE (Basically

Available Soft State and Eventually consistente) (VIEBRANTZ 2012) Os bancos relacio-nais satildeo representados pelo ACID (Atomicidade Consistecircncia Isolamento e Durabilidade)Diferente do ACID o BASE sacrifica um pouco da consistecircncia dos dados para ganhardesempenho Essa troca eacute descrita pelo teorema CAP (Consistency Availability Partition

tolerance) Segundo (BROWNE 2015) teorema CAP diz que somente eacute possiacutevel ter duasdas trecircs caracteriacutesticas ao mesmo tempo

Apesar de natildeo ser possiacutevel consultar dados usando SQL esta abordagempermite faacutecil armazenamento e consulta de dados independente da estrutura do conteuacutedo(ABRAMOVA BERNADINO FURTADO 2014) Bancos NoSQL tambeacutem demonstrammelhor escalabilidade horizontal (EVANS 2011) Isso significa que servidores de baixocusto podem satisfazer as requisiccedilotildees enquanto os custos satildeo reduzidos O gerenciamentodesse grande volume de dados seria difiacutecil porem essas bases de dados satildeo projetadaspara gerenciaacute-los automaticamente recuperar de falhas e consertar o sistema por completo(STOLERU 2010)

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 10: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

LISTA DE TABELAS

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1 15Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2 16Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis 19Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL 20Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar 27Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos 31Tabela 7 ndash Consulta de dados - busca com intervalos de valores 31

LISTA DE QUADROS

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL 19Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis 20Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo 20Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados 21Quadro 5 ndash Comando utilizado para inserir dados no MySQL 21Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do

Redis e inserir dados no MySQL 21Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor

Redis 21Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso 22Quadro 9 ndash Condiccedilotildees para consulta de maior e menor 22Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso 22Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso 22

LISTA DE ABREVIATURAS E SIGLAS

ACID Atomicity Consistency Isolation Durability

API Application Programing Interface

ARM Advanced RISC Machine

BASE Basically Available Soft state Eventual consistency

CLI command-line interface

CPU Central Processing Unit

DDL Data Definition Language

DML Data Manipulation Language

GCC GNU Compiler Collection

GPS Global System Position

mA mili-Ampeacutere

NoSQL Not Only SQL

RAM Random-Access Memory

Redis Remote DIctionary Server

SGBD Sistema Gerenciador de Banco de Dados

SQL Structured Query Language

USB Universal Serial Bus

XML eXtensible Markup Language

XQuery XML Query

1

CAPIacuteTULO 1

INTRODUCcedilAtildeO

A coleta de dados por sensores estaacute presente em diversas atividades humanasAtividades como previsatildeo do tempo exploraccedilatildeo extraterrestre suporte a atividades cientiacute-ficas conforto residencial seguranccedila hospitalares industriais e inuacutemeras outras satildeo cadavez mais auxiliadas por coleta de dados

Dados provenientes de coleta tem um ou alguns dos seguintes propoacutesitosdescriccedilatildeo explicaccedilatildeo ou prediccedilatildeo (KUMAR 1988) Os dados descritivos respondemperguntas como ldquoquem rdquo ldquoo que rdquo e ldquoquandordquo mas natildeo perguntas como ldquocomordquo ouldquopor querdquo Uma explicaccedilatildeo necessita uma extrapolaccedilatildeo de um relacionamento causa eefeito no qual o investigador tenta entender por que um fenocircmeno processo ou eventoaconteceu ou natildeo Prediccedilotildees satildeo baseadas no entendimento da causa de eventos Dados satildeocoletados para esses fins e em aplicaccedilotildees cientiacuteficas a coleta de dados pode ser essencialpara todo o processo de pesquisa para identificar um problema auxiliar na soluccedilatildeo ouembasar uma teoria

Sensores associados a unidades de processamento satildeo cada vez mais utilizados(EVANS 2011) para executar coleta automatizada de dados Esses sistemas satildeo importan-tes pois executam a coleta na maior parte das vezes com mais facilidade e precisatildeo que umhumano e a um custo menor Ainda pode-se considerar os lugares aos quais os humanos

Capiacutetulo 1 Introduccedilatildeo 2

natildeo podem acessar como ambientes com radiaccedilatildeo ou amostragens de alta frequecircncia porexemplo

Dada a importacircncia de sistemas de coleta de dados este trabalho busca apre-sentar formas de gerenciar os dados armazenados em sistemas de coleta de dados voltadospara aplicaccedilotildees cientiacuteficas

Para verificar onde e como um banco de dados para sistemas embarcadospodem auxiliar o processo de coleta de dados eacute necessaacuterio mencionar o papel que outrastecnologias tem nas aplicaccedilotildees de anaacutelise de dados e como elas podem influenciar nautilizaccedilatildeo de bancos de dados em sistemas de coleta

Sistemas de coleta de dados em geral satildeo compostos por sistemas embarcadosdedicados exclusivamente a essa tarefa Podem ter ou natildeo acesso agrave internet A energiapode originar da rede eleacutetrica baterias descartaacuteveis ou alguma combinaccedilatildeo de alimentaccedilatildeoexterna com bateria recarregaacutevel A autonomia pode variar de dias ateacute anos O tipode amostragem pode ser desde baixa frequecircncia e baixa resoluccedilatildeo ateacute amostras de altafrequecircncia e alta resoluccedilatildeo Existem sistemas que natildeo podem atrasar no processo de coletae entrega da informaccedilatildeo e tem que ser extremamente previsiacuteveis (hard real-time ou soft

real-time) Com a diversidade de aplicaccedilotildees e avanccedilos tecnoloacutegicos existem incontaacuteveisaplicaccedilotildees com caracteriacutesticas variadas

Compreendendo que existe uma variedade muito grande de sistemas de medi-ccedilatildeo alguns casos podem tirar proveito de um armazenamento local dos dados de coletagerenciados por um banco de dados

Para imaginar o impacto da conectividade agrave Internet em sistemas de coletaseratildeo nomeadas caracteriacutesticas de conexotildees como velocidade disponibilidade e custoDentro dessas caracteriacutesticas pode-se analisar se o dado coletado consegue chegar aodestino (velocidade eou disponibilidade) e com que custo As atividades de coleta podemnecessitar de uma transmissatildeo ainda em tempo real (aplicaccedilotildees meacutedicas) ou de grandesvolumes de dados (coleta de imagens)

Se natildeo houver algum tipo de conexatildeo disponiacutevel ou sem todas as caracteriacutesticasnecessaacuterias para fazer os dados da coleta chegarem ao destino ainda eacute possiacutevel utilizaroutros meios para transferiacute-los Pode-se periodicamente transportar os dados por unidadesde armazenamento ou coleta-los manualmente com algum equipamento para esse fimPoreacutem esses meios simplesmente natildeo atendem atividades que necessitam de transmissotildeesem tempo real por exemplo Para as aplicaccedilotildees que o armazenamento local dos dadospode substituir ou auxiliar conexatildeo com a Internet para transmitir os dados coletadospode-se utilizar bancos de dados

Capiacutetulo 1 Introduccedilatildeo 3

Outro componente que estaacute presente em sistemas embarcados de coletas au-tomatizadas satildeo unidades de processamento O constante aumento na capacidade deprocessamento aumenta as possibilidades de coleta de dados Dessa forma pode-se adicio-nar um armazenamento local de dados Com os dados armazenados localmente eacute possiacutevelrealizar algum processamento preacutevio ou gerar estatiacutestica eou feedback para melhorar aproacutepria coleta de dados por exemplo Esse crescimento entatildeo aumenta as possibilidadesdo sistema de coleta

A eficiecircncia energeacutetica de sistemas de coleta baseados em sistemas embarcadosestaacute constantemente aumentando Em conjunto com a melhora constante de baterias exis-tem alguns cenaacuterios recorrentes dispositivos que usam muito pouca energia e funcionampor mais tempo (chegando a mais de um ano) ou dispositivos que aproveitam a eficiecircnciaenergeacutetica e aumentam muito a capacidade de processamento Pode-se ter situaccedilotildees derestriccedilatildeo de energia e necessidade de reduzir transmissotildees dos dados de medidoccedilotildees mascom um armazenamento local a atividade pode continuar com as transmissotildees sendo feitasposteriormente

Dependendo do tipo de configuraccedilatildeo de sistema de mediccedilatildeo utilizado o equi-pamento sequer tem um sistema operacional como pode ter recursos semelhantes a compu-tadores pessoais No primeiro caso satildeo equipamentos embarcados extremamente simplesque podem natildeo dispor de recursos para sustentar um SGBD Pela simplicidade da arquite-tura pode natildeo compensar o custo de desenvolvimento e manutenccedilatildeo No segundo casoequipamentos embarcados com mais recursos disponiacuteveis pode-se utilizar um SGBD

Quando a integraccedilatildeo da aplicaccedilatildeo de coleta eacute feita com o SGBD para arma-zenamento de dados locais podemos adicionar caracteriacutesticas como maior seguranccedila edisponibilidade dos dados melhor recuperaccedilatildeo dentre outras vantagens de se utilizar umSGBD

Espera-se apresentar e testar meacutetodos de gerenciamento de dados caracteriacutesti-cos de sensores visando aplicaccedilotildees cientiacuteficas Os objetivos especiacuteficos satildeo

1 Investigar as tendecircncias tecnologias de SGBD

2 Comparar a performance de sistemas embarcados com alguns SGBD investigados

3 Aplicar dois tipos de conjunto de dados para testar os sistemas embarcados e osSGBD

4 Realizar teste de leitura e acesso para avaliar desempenho tanto dos sistemasembarcados como dos SGBD

Capiacutetulo 1 Introduccedilatildeo 4

Este estudo pode contribuir na discussatildeo de como os dados de um sistema decoleta seratildeo gerenciados em funccedilatildeo de recursos disponiacuteveis configuraccedilatildeo do sistema e osresultados que se buscam atingir

Nesta introduccedilatildeo buscou-se descrever a importacircncia da coleta de dados natildeo soacutepara fins cientiacuteficos mas para vaacuterias atividades humanas atualmente Aleacutem disso foramdemonstrados alguns vaacuterios cenaacuterios e tecnologias dos quais alguns o uso de SGBD paraarmazenamento local beneficia a atividade de coleta de dados Por fim os objetivos queorientam esta pesquisa

No capiacutetulo 2 Revisatildeo de Literatura seratildeo levantados conceitos e teoriarelativo agrave SGBDs em geral como eles podem ajudar e sobre os dois utilizados nosexperimentos Dada a ligaccedilatildeo entre sistemas de coleta de dados exposta na introduccedilatildeoseratildeo abordados alguns conceitos relativos agrave sistemas embarcados

No capiacutetulo 3 Materiais e Meacutetodos seratildeo descritos todos os componentesfiacutesicos e de software selecionados para os testes Aleacutem disso seraacute descrito como foramfeitos os testes

No capiacutetulo 4 Estudos de Caso seratildeo apresentados os testes feitos com osrespectivos paracircmetros No capiacutetulo 5 Resultados seratildeo discutidos os resultados dosEstudos de Caso

No capiacutetulo 6 Trabalhos Futuros busca-se levantar partes desta monografiaque podem ser ainda mais explorados

O capiacutetulo seguinte a Conclusatildeo seratildeo revistas as hipoacuteteses iniciais compara-das aos resultados

CAPIacuteTULO 2

FUNDAMENTACcedilAtildeO TEOacuteRICA

A utilizaccedilatildeo de um SGBD (Sistema Gerenciador de Banco de Dados) trazimpactos positivos e negativos decorrentes da combinaccedilatildeo das variaacuteveis de caracteriacutesticasdo SGBD em si de sua arquitetura e da aplicaccedilatildeo

Sistemas de coleta automatizada de dados cientiacuteficos podem ser construiacutedosutilizando Sistemas Embarcados Um sistema embarcado eacute definido pela sua aplicaccedilatildeopois tendem a ser equipamentos com funccedilatildeo bem definida Ao variar a aplicaccedilatildeo mudam-sejunto os recursos e atributos do equipamento

Considerando essas combinaccedilotildees temos cenaacuterios favoraacuteveis ou natildeo a utilizaccedilatildeode um SGBD para gerenciar dados localmente em um sistema de coleta automatizadoNeste capitulo seratildeo apresentados os conceitos necessaacuterios para evidenciar as principaisvariaacuteveis dos elementos envolvidos neste experimento e como as mesmas podem influenciarna aplicaccedilatildeo

Seratildeo abordados conceitos gerais sobre SGBDs dos tipos relacionais e NoSQLEm seguida referecircncias sobre sistemas embarcados dado que o mesmo tem influecircncia nautilizaccedilatildeo ou natildeo de SGBD em uma aplicaccedilatildeo de coleta

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 6

21 Sistemas Gerenciadores de Banco de Dados

Um SGBD eacute um sistema computadorizado para armazenar registros segundo(DATE 2004) Bases de dados estatildeo presentes em computadores de diferentes escalasdesde pequenos sistemas embarcados ateacute clusters de mainframes Eacute normalmente utilizadapara o software que gerencia a base de dados enquanto a denominaccedilatildeo banco de dados oubase de dados se refere ao conjunto de dados gerenciado (DATE 2004)

A automaccedilatildeo do processamento de dados eacute mais antiga que os proacuteprios com-putadores Silberchatz (SUDARSHAN 2004) afirma que cartotildees perfurados inventadospor Herman Hollerith foram usados no comeccedilo do seacuteculo 20 nos Estados Unidos paraarmazenar dados de censo Sistemas mecacircnicos foram usados para processar os cartotildees eapresentar os resultados

Com a evoluccedilatildeo dos meios de armazenamento e processamento entre asdeacutecadas de 50 e 60 fitas magneacuteticas foram usadas para armazenamento de dados Comofitas tem forma de acesso sequencial os dados tinham que ser acessados ou modificadosde forma sequencial

Desde o fim dos anos 60 ateacute os anos 70 houve a disseminaccedilatildeo do uso dodisco riacutegido a utilizaccedilatildeo de vaacuterios discos o uso de sistemas de arquivos e aumento nasvelocidades de transferecircncia por conta de novos materiais e processos de fabricaccedilatildeo Aleacutemdisso o modelo de acesso aleatoacuterio alterou a forma como os dados eram acessados emodificados (SPELIOTIS 2000)

Nos aos 80 foi criado o modelo relacional de dados que foi implementado noSystem R da IBM que desenvolveu teacutecnicas eficientes de construccedilatildeo de bases de dadosrelacionais

No iniacutecio dos anos 90 a linguagem SQL foi escolhida para aplicaccedilotildees desuporte a decisatildeo que fazem muitos acessos ao banco de dados As bases de dadospassaram a ter que oferecer suporte a uma taxa muito alta de processamento de transaccedilotildeesaleacutem de ser mais confiaacuteveis manter disponibilidade 24x7 e suportar dados de interfaceWeb SQL fornece vaacuterios recursos como DDL (Data-Definition Language) para trabalharcom esquemas e relacionamentos por exemplo DML (Data Manipulation Language) parafazer consultas apagar inserir ou modificar tuplas no banco controles de integridadegeraccedilatildeo de visotildees controle transacional permissotildees de acesso e outros

No comeccedilo da deacutecada 2000 houve a adoccedilatildeo do XML em associaccedilatildeo com alinguagem XQuery como nova tecnologia de consulta Nesse periacuteodo tambeacutem houve umcrescimento na utilizaccedilatildeo de SGBDs open-source como o PostgresSQL e o MySQL

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 7

No fim da deacutecada de 2000 houve o crescimento de SGBDs especializados emanalises de dados como os column-store Novos sistemas de armazenamento de dadosdistribuiacutedos foram construiacutedos para ter capacidade para anaacutelise de dados de sites comoAmazon

Com o passar do tempo as mudanccedilas de hardware capacidade de processa-mento e armazenamento velocidades de conexotildees dados disponiacuteveis e necessidadesopor-tunidades influenciaram o desenvolvimento dos SGBDs Verificamos que esse processoteve duas vias o desenvolvimento de recursos gerou espaccedilo para mudanccedilas e as neces-sidades tambeacutem levaram ao desenvolvimento e popularizaccedilatildeo de outras tecnologias deSGBDs

22 SGBDs relacionais

SGBDs relacionais foram desenvolvidos nos anos 70 como uma tecnologiapara armazenar dados estruturados organizados como tabelas com sua proacutepria linguagem ndasho SQL (OUNALLI 2012)

Segundo (SUDARSHAN 2004) um SGBD relacional eacute baseado no modelorelacional e usa uma coleccedilatildeo de tabelas para representar os dados e os relacionamentosentre esses dados O tipo relacional de SGBD eacute hoje em dia o principal utilizado nomercado

Uma base relacional consiste em um conjunto de tabelas As tabelas tecircmvaacuterias colunas e cada coluna tem um uacutenico nome Em geral uma linha representa orelacionamento entre um conjunto de valores e satildeo chamadas de tuplas O esquema deuma base relacional conteacutem os atributos tipos e regras das relaccedilotildees como chaves primaacuteriase estrangeiras

As tuplas podem ter um atributo do tipo chave primaacuteria que eacute a identificaccedilatildeouacutenica e natildeo repetida daquele registro Essas chaves podem ser referenciadas por outrosregistros por meio de um atributo do tipo chave estrangeira

Uma caracteriacutestica dos SGBDs e linguagens relacionais eacute a implementaccedilatildeo daaacutelgebra relacional Ela define um conjunto de operaccedilotildees

1 Seleccedilatildeo - retorna as linhas que satisfazem a condiccedilatildeo de seleccedilatildeo

2 Projeccedilatildeo - retorna atributos especiacuteficos de todas as linhas da entrada da relaccedilatildeoRemove as linhas duplicadas da saiacuteda

3 Natural join - retorna os pares de linhas de duas entradas que tem o mesmo valor emtodos os atributos que tem o mesmo nome

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 8

4 Produto cartesiano - retorna todos os pares de linhas de duas relaccedilotildees de entradasindependente de ter os mesmos nomes ou valores em comum

5 Uniatildeo - retorna a uniatildeo de tuplas de duas relaccedilotildees

Linguagens como o SQL utilizadas para fazer operaccedilotildees nas bases de dadossatildeo baseadas em aacutelgebra relacional que provecirc vaacuterios recursos para gerar as consultas SQLeacute a linguagem relacional mais influente do mercado

221 MySQL

O MySQL eacute um SGBD do tipo relacional que implementa um padratildeo SQLcom algumas extensotildees Foi comprado pela Sun Microsystems em 2008 (WIDENIUS2008) e eacute parte da Oracle que ao comprar a Sun Microsystems comprou todos os seusprodutos tambeacutem O MySQL tem como pontos positivos um suporte bom dos usuaacuterios nosfoacuteruns e grande e bem detalhada documentaccedilatildeo Eacute um SGBD com baixo overhead o quepermite a execuccedilatildeo em computadores com poucos recursos de memoacuteria e processamento

Poreacutem a capacidade de execuccedilatildeo e armazenamento do SGBD seraacute propor-cional agrave arquitetura de hardware e software que o executa O MySQL eacute um SGBDopen-source e o banco de dados dependendo da arquitetura de execuccedilatildeo e mecanismo dearmazenamento pode chegar a ter ateacute 64TB de tamanho (MYSQL 2015)

Eacute escrito em C e C++ e tem compatibilidade com arquiteturas de hardwareSPARC 64 SPARC 32 x86 x86 64 IA64 e ARM Eacute possiacutevel acessar o banco de dadospor meio de uma interface CLI (command-line interface ndash interface de linha de comando)ou pelo ConnectorODBC Existe APIs para C C++ Eiffel Java PHP Python Ruby eTcl

O MySQL disponibiliza algumas opccedilotildees de armazenamento das bases de dados(MYSQL 2015)

1 InnoDB o mecanismo padratildeo de armazenamento do MySQL Eacute compatiacutevel comACID e dispotildeem de recursos como commit e rollback Eacute o mais indicado paraser usado na maioria das aplicaccedilotildees por ter alto desempenho e operar de formatransacional

2 MyISAM eacute uma forma de armazenamento mais simples A trava para escrita emniacutevel de tabela limita o desempenho para operaccedilotildees que envolvem leitura e escrita

Existem outros mecanismos de armazenamento poreacutem ou tem uso muitorestrito ou estatildeo em desuso como CSV Archive Federated e Merge Outro exemplo eacute

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 9

o mecanismo de armazenamento Memory que guarda os dados na memoacuteria RAM e deacordo com o manual estaacute caindo em desuso O mecanismo InnoDB pode ser configuradocom buffers que podem em alguns casos substituir o Memory e ainda com a vantagem depersistir os dados em um armazenamento natildeo volaacutetil

23 SGBDs natildeo relacionais

Com o constante aumento dos dados armazenados e analisados os SGBDsrelacionais estatildeo apresentando vaacuterias limitaccedilotildees As consultas aos dados estatildeo perdendoa eficiecircncia pelo grande volume de dados Esse volume de dados estaacute crescendo cadavez mais por conta da evoluccedilatildeo constante das tecnologias de captura de informaccedilatildeo deprocessamento e da inteligecircncia para dar significado a tudo isso Abramova (ABRAMOVABERNADINO FURTADO 2014) afirma que o NoSQL foi desenvolvido para superaralgumas dessas limitaccedilotildees das bases de dados atuais

Os bancos NoSQL satildeo representados pela natildeo existecircncia de uma estrutura dedados riacutegida comparado ao SQL Eacute possiacutevel ter num mesmo espaccedilo de armazenamentoobjetos com membros diferentes Isso natildeo acontece no SQL onde todos os registros tecircmque seguir o modelo das colunas da tabela onde estatildeo inseridos O conceito de NoSQLfoi usado pela primeira vez em 1998 por Carlo Strozzi (ABRAMOVA BERNADINOFURTADO 2014) para se referir a um banco que natildeo usa interface SQL

Os bancos NoSQL satildeo normalmente baseados no teorema BASE (Basically

Available Soft State and Eventually consistente) (VIEBRANTZ 2012) Os bancos relacio-nais satildeo representados pelo ACID (Atomicidade Consistecircncia Isolamento e Durabilidade)Diferente do ACID o BASE sacrifica um pouco da consistecircncia dos dados para ganhardesempenho Essa troca eacute descrita pelo teorema CAP (Consistency Availability Partition

tolerance) Segundo (BROWNE 2015) teorema CAP diz que somente eacute possiacutevel ter duasdas trecircs caracteriacutesticas ao mesmo tempo

Apesar de natildeo ser possiacutevel consultar dados usando SQL esta abordagempermite faacutecil armazenamento e consulta de dados independente da estrutura do conteuacutedo(ABRAMOVA BERNADINO FURTADO 2014) Bancos NoSQL tambeacutem demonstrammelhor escalabilidade horizontal (EVANS 2011) Isso significa que servidores de baixocusto podem satisfazer as requisiccedilotildees enquanto os custos satildeo reduzidos O gerenciamentodesse grande volume de dados seria difiacutecil porem essas bases de dados satildeo projetadaspara gerenciaacute-los automaticamente recuperar de falhas e consertar o sistema por completo(STOLERU 2010)

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 11: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

LISTA DE QUADROS

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL 19Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis 20Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo 20Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados 21Quadro 5 ndash Comando utilizado para inserir dados no MySQL 21Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do

Redis e inserir dados no MySQL 21Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor

Redis 21Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso 22Quadro 9 ndash Condiccedilotildees para consulta de maior e menor 22Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso 22Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso 22

LISTA DE ABREVIATURAS E SIGLAS

ACID Atomicity Consistency Isolation Durability

API Application Programing Interface

ARM Advanced RISC Machine

BASE Basically Available Soft state Eventual consistency

CLI command-line interface

CPU Central Processing Unit

DDL Data Definition Language

DML Data Manipulation Language

GCC GNU Compiler Collection

GPS Global System Position

mA mili-Ampeacutere

NoSQL Not Only SQL

RAM Random-Access Memory

Redis Remote DIctionary Server

SGBD Sistema Gerenciador de Banco de Dados

SQL Structured Query Language

USB Universal Serial Bus

XML eXtensible Markup Language

XQuery XML Query

1

CAPIacuteTULO 1

INTRODUCcedilAtildeO

A coleta de dados por sensores estaacute presente em diversas atividades humanasAtividades como previsatildeo do tempo exploraccedilatildeo extraterrestre suporte a atividades cientiacute-ficas conforto residencial seguranccedila hospitalares industriais e inuacutemeras outras satildeo cadavez mais auxiliadas por coleta de dados

Dados provenientes de coleta tem um ou alguns dos seguintes propoacutesitosdescriccedilatildeo explicaccedilatildeo ou prediccedilatildeo (KUMAR 1988) Os dados descritivos respondemperguntas como ldquoquem rdquo ldquoo que rdquo e ldquoquandordquo mas natildeo perguntas como ldquocomordquo ouldquopor querdquo Uma explicaccedilatildeo necessita uma extrapolaccedilatildeo de um relacionamento causa eefeito no qual o investigador tenta entender por que um fenocircmeno processo ou eventoaconteceu ou natildeo Prediccedilotildees satildeo baseadas no entendimento da causa de eventos Dados satildeocoletados para esses fins e em aplicaccedilotildees cientiacuteficas a coleta de dados pode ser essencialpara todo o processo de pesquisa para identificar um problema auxiliar na soluccedilatildeo ouembasar uma teoria

Sensores associados a unidades de processamento satildeo cada vez mais utilizados(EVANS 2011) para executar coleta automatizada de dados Esses sistemas satildeo importan-tes pois executam a coleta na maior parte das vezes com mais facilidade e precisatildeo que umhumano e a um custo menor Ainda pode-se considerar os lugares aos quais os humanos

Capiacutetulo 1 Introduccedilatildeo 2

natildeo podem acessar como ambientes com radiaccedilatildeo ou amostragens de alta frequecircncia porexemplo

Dada a importacircncia de sistemas de coleta de dados este trabalho busca apre-sentar formas de gerenciar os dados armazenados em sistemas de coleta de dados voltadospara aplicaccedilotildees cientiacuteficas

Para verificar onde e como um banco de dados para sistemas embarcadospodem auxiliar o processo de coleta de dados eacute necessaacuterio mencionar o papel que outrastecnologias tem nas aplicaccedilotildees de anaacutelise de dados e como elas podem influenciar nautilizaccedilatildeo de bancos de dados em sistemas de coleta

Sistemas de coleta de dados em geral satildeo compostos por sistemas embarcadosdedicados exclusivamente a essa tarefa Podem ter ou natildeo acesso agrave internet A energiapode originar da rede eleacutetrica baterias descartaacuteveis ou alguma combinaccedilatildeo de alimentaccedilatildeoexterna com bateria recarregaacutevel A autonomia pode variar de dias ateacute anos O tipode amostragem pode ser desde baixa frequecircncia e baixa resoluccedilatildeo ateacute amostras de altafrequecircncia e alta resoluccedilatildeo Existem sistemas que natildeo podem atrasar no processo de coletae entrega da informaccedilatildeo e tem que ser extremamente previsiacuteveis (hard real-time ou soft

real-time) Com a diversidade de aplicaccedilotildees e avanccedilos tecnoloacutegicos existem incontaacuteveisaplicaccedilotildees com caracteriacutesticas variadas

Compreendendo que existe uma variedade muito grande de sistemas de medi-ccedilatildeo alguns casos podem tirar proveito de um armazenamento local dos dados de coletagerenciados por um banco de dados

Para imaginar o impacto da conectividade agrave Internet em sistemas de coletaseratildeo nomeadas caracteriacutesticas de conexotildees como velocidade disponibilidade e custoDentro dessas caracteriacutesticas pode-se analisar se o dado coletado consegue chegar aodestino (velocidade eou disponibilidade) e com que custo As atividades de coleta podemnecessitar de uma transmissatildeo ainda em tempo real (aplicaccedilotildees meacutedicas) ou de grandesvolumes de dados (coleta de imagens)

Se natildeo houver algum tipo de conexatildeo disponiacutevel ou sem todas as caracteriacutesticasnecessaacuterias para fazer os dados da coleta chegarem ao destino ainda eacute possiacutevel utilizaroutros meios para transferiacute-los Pode-se periodicamente transportar os dados por unidadesde armazenamento ou coleta-los manualmente com algum equipamento para esse fimPoreacutem esses meios simplesmente natildeo atendem atividades que necessitam de transmissotildeesem tempo real por exemplo Para as aplicaccedilotildees que o armazenamento local dos dadospode substituir ou auxiliar conexatildeo com a Internet para transmitir os dados coletadospode-se utilizar bancos de dados

Capiacutetulo 1 Introduccedilatildeo 3

Outro componente que estaacute presente em sistemas embarcados de coletas au-tomatizadas satildeo unidades de processamento O constante aumento na capacidade deprocessamento aumenta as possibilidades de coleta de dados Dessa forma pode-se adicio-nar um armazenamento local de dados Com os dados armazenados localmente eacute possiacutevelrealizar algum processamento preacutevio ou gerar estatiacutestica eou feedback para melhorar aproacutepria coleta de dados por exemplo Esse crescimento entatildeo aumenta as possibilidadesdo sistema de coleta

A eficiecircncia energeacutetica de sistemas de coleta baseados em sistemas embarcadosestaacute constantemente aumentando Em conjunto com a melhora constante de baterias exis-tem alguns cenaacuterios recorrentes dispositivos que usam muito pouca energia e funcionampor mais tempo (chegando a mais de um ano) ou dispositivos que aproveitam a eficiecircnciaenergeacutetica e aumentam muito a capacidade de processamento Pode-se ter situaccedilotildees derestriccedilatildeo de energia e necessidade de reduzir transmissotildees dos dados de medidoccedilotildees mascom um armazenamento local a atividade pode continuar com as transmissotildees sendo feitasposteriormente

Dependendo do tipo de configuraccedilatildeo de sistema de mediccedilatildeo utilizado o equi-pamento sequer tem um sistema operacional como pode ter recursos semelhantes a compu-tadores pessoais No primeiro caso satildeo equipamentos embarcados extremamente simplesque podem natildeo dispor de recursos para sustentar um SGBD Pela simplicidade da arquite-tura pode natildeo compensar o custo de desenvolvimento e manutenccedilatildeo No segundo casoequipamentos embarcados com mais recursos disponiacuteveis pode-se utilizar um SGBD

Quando a integraccedilatildeo da aplicaccedilatildeo de coleta eacute feita com o SGBD para arma-zenamento de dados locais podemos adicionar caracteriacutesticas como maior seguranccedila edisponibilidade dos dados melhor recuperaccedilatildeo dentre outras vantagens de se utilizar umSGBD

Espera-se apresentar e testar meacutetodos de gerenciamento de dados caracteriacutesti-cos de sensores visando aplicaccedilotildees cientiacuteficas Os objetivos especiacuteficos satildeo

1 Investigar as tendecircncias tecnologias de SGBD

2 Comparar a performance de sistemas embarcados com alguns SGBD investigados

3 Aplicar dois tipos de conjunto de dados para testar os sistemas embarcados e osSGBD

4 Realizar teste de leitura e acesso para avaliar desempenho tanto dos sistemasembarcados como dos SGBD

Capiacutetulo 1 Introduccedilatildeo 4

Este estudo pode contribuir na discussatildeo de como os dados de um sistema decoleta seratildeo gerenciados em funccedilatildeo de recursos disponiacuteveis configuraccedilatildeo do sistema e osresultados que se buscam atingir

Nesta introduccedilatildeo buscou-se descrever a importacircncia da coleta de dados natildeo soacutepara fins cientiacuteficos mas para vaacuterias atividades humanas atualmente Aleacutem disso foramdemonstrados alguns vaacuterios cenaacuterios e tecnologias dos quais alguns o uso de SGBD paraarmazenamento local beneficia a atividade de coleta de dados Por fim os objetivos queorientam esta pesquisa

No capiacutetulo 2 Revisatildeo de Literatura seratildeo levantados conceitos e teoriarelativo agrave SGBDs em geral como eles podem ajudar e sobre os dois utilizados nosexperimentos Dada a ligaccedilatildeo entre sistemas de coleta de dados exposta na introduccedilatildeoseratildeo abordados alguns conceitos relativos agrave sistemas embarcados

No capiacutetulo 3 Materiais e Meacutetodos seratildeo descritos todos os componentesfiacutesicos e de software selecionados para os testes Aleacutem disso seraacute descrito como foramfeitos os testes

No capiacutetulo 4 Estudos de Caso seratildeo apresentados os testes feitos com osrespectivos paracircmetros No capiacutetulo 5 Resultados seratildeo discutidos os resultados dosEstudos de Caso

No capiacutetulo 6 Trabalhos Futuros busca-se levantar partes desta monografiaque podem ser ainda mais explorados

O capiacutetulo seguinte a Conclusatildeo seratildeo revistas as hipoacuteteses iniciais compara-das aos resultados

CAPIacuteTULO 2

FUNDAMENTACcedilAtildeO TEOacuteRICA

A utilizaccedilatildeo de um SGBD (Sistema Gerenciador de Banco de Dados) trazimpactos positivos e negativos decorrentes da combinaccedilatildeo das variaacuteveis de caracteriacutesticasdo SGBD em si de sua arquitetura e da aplicaccedilatildeo

Sistemas de coleta automatizada de dados cientiacuteficos podem ser construiacutedosutilizando Sistemas Embarcados Um sistema embarcado eacute definido pela sua aplicaccedilatildeopois tendem a ser equipamentos com funccedilatildeo bem definida Ao variar a aplicaccedilatildeo mudam-sejunto os recursos e atributos do equipamento

Considerando essas combinaccedilotildees temos cenaacuterios favoraacuteveis ou natildeo a utilizaccedilatildeode um SGBD para gerenciar dados localmente em um sistema de coleta automatizadoNeste capitulo seratildeo apresentados os conceitos necessaacuterios para evidenciar as principaisvariaacuteveis dos elementos envolvidos neste experimento e como as mesmas podem influenciarna aplicaccedilatildeo

Seratildeo abordados conceitos gerais sobre SGBDs dos tipos relacionais e NoSQLEm seguida referecircncias sobre sistemas embarcados dado que o mesmo tem influecircncia nautilizaccedilatildeo ou natildeo de SGBD em uma aplicaccedilatildeo de coleta

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 6

21 Sistemas Gerenciadores de Banco de Dados

Um SGBD eacute um sistema computadorizado para armazenar registros segundo(DATE 2004) Bases de dados estatildeo presentes em computadores de diferentes escalasdesde pequenos sistemas embarcados ateacute clusters de mainframes Eacute normalmente utilizadapara o software que gerencia a base de dados enquanto a denominaccedilatildeo banco de dados oubase de dados se refere ao conjunto de dados gerenciado (DATE 2004)

A automaccedilatildeo do processamento de dados eacute mais antiga que os proacuteprios com-putadores Silberchatz (SUDARSHAN 2004) afirma que cartotildees perfurados inventadospor Herman Hollerith foram usados no comeccedilo do seacuteculo 20 nos Estados Unidos paraarmazenar dados de censo Sistemas mecacircnicos foram usados para processar os cartotildees eapresentar os resultados

Com a evoluccedilatildeo dos meios de armazenamento e processamento entre asdeacutecadas de 50 e 60 fitas magneacuteticas foram usadas para armazenamento de dados Comofitas tem forma de acesso sequencial os dados tinham que ser acessados ou modificadosde forma sequencial

Desde o fim dos anos 60 ateacute os anos 70 houve a disseminaccedilatildeo do uso dodisco riacutegido a utilizaccedilatildeo de vaacuterios discos o uso de sistemas de arquivos e aumento nasvelocidades de transferecircncia por conta de novos materiais e processos de fabricaccedilatildeo Aleacutemdisso o modelo de acesso aleatoacuterio alterou a forma como os dados eram acessados emodificados (SPELIOTIS 2000)

Nos aos 80 foi criado o modelo relacional de dados que foi implementado noSystem R da IBM que desenvolveu teacutecnicas eficientes de construccedilatildeo de bases de dadosrelacionais

No iniacutecio dos anos 90 a linguagem SQL foi escolhida para aplicaccedilotildees desuporte a decisatildeo que fazem muitos acessos ao banco de dados As bases de dadospassaram a ter que oferecer suporte a uma taxa muito alta de processamento de transaccedilotildeesaleacutem de ser mais confiaacuteveis manter disponibilidade 24x7 e suportar dados de interfaceWeb SQL fornece vaacuterios recursos como DDL (Data-Definition Language) para trabalharcom esquemas e relacionamentos por exemplo DML (Data Manipulation Language) parafazer consultas apagar inserir ou modificar tuplas no banco controles de integridadegeraccedilatildeo de visotildees controle transacional permissotildees de acesso e outros

No comeccedilo da deacutecada 2000 houve a adoccedilatildeo do XML em associaccedilatildeo com alinguagem XQuery como nova tecnologia de consulta Nesse periacuteodo tambeacutem houve umcrescimento na utilizaccedilatildeo de SGBDs open-source como o PostgresSQL e o MySQL

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 7

No fim da deacutecada de 2000 houve o crescimento de SGBDs especializados emanalises de dados como os column-store Novos sistemas de armazenamento de dadosdistribuiacutedos foram construiacutedos para ter capacidade para anaacutelise de dados de sites comoAmazon

Com o passar do tempo as mudanccedilas de hardware capacidade de processa-mento e armazenamento velocidades de conexotildees dados disponiacuteveis e necessidadesopor-tunidades influenciaram o desenvolvimento dos SGBDs Verificamos que esse processoteve duas vias o desenvolvimento de recursos gerou espaccedilo para mudanccedilas e as neces-sidades tambeacutem levaram ao desenvolvimento e popularizaccedilatildeo de outras tecnologias deSGBDs

22 SGBDs relacionais

SGBDs relacionais foram desenvolvidos nos anos 70 como uma tecnologiapara armazenar dados estruturados organizados como tabelas com sua proacutepria linguagem ndasho SQL (OUNALLI 2012)

Segundo (SUDARSHAN 2004) um SGBD relacional eacute baseado no modelorelacional e usa uma coleccedilatildeo de tabelas para representar os dados e os relacionamentosentre esses dados O tipo relacional de SGBD eacute hoje em dia o principal utilizado nomercado

Uma base relacional consiste em um conjunto de tabelas As tabelas tecircmvaacuterias colunas e cada coluna tem um uacutenico nome Em geral uma linha representa orelacionamento entre um conjunto de valores e satildeo chamadas de tuplas O esquema deuma base relacional conteacutem os atributos tipos e regras das relaccedilotildees como chaves primaacuteriase estrangeiras

As tuplas podem ter um atributo do tipo chave primaacuteria que eacute a identificaccedilatildeouacutenica e natildeo repetida daquele registro Essas chaves podem ser referenciadas por outrosregistros por meio de um atributo do tipo chave estrangeira

Uma caracteriacutestica dos SGBDs e linguagens relacionais eacute a implementaccedilatildeo daaacutelgebra relacional Ela define um conjunto de operaccedilotildees

1 Seleccedilatildeo - retorna as linhas que satisfazem a condiccedilatildeo de seleccedilatildeo

2 Projeccedilatildeo - retorna atributos especiacuteficos de todas as linhas da entrada da relaccedilatildeoRemove as linhas duplicadas da saiacuteda

3 Natural join - retorna os pares de linhas de duas entradas que tem o mesmo valor emtodos os atributos que tem o mesmo nome

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 8

4 Produto cartesiano - retorna todos os pares de linhas de duas relaccedilotildees de entradasindependente de ter os mesmos nomes ou valores em comum

5 Uniatildeo - retorna a uniatildeo de tuplas de duas relaccedilotildees

Linguagens como o SQL utilizadas para fazer operaccedilotildees nas bases de dadossatildeo baseadas em aacutelgebra relacional que provecirc vaacuterios recursos para gerar as consultas SQLeacute a linguagem relacional mais influente do mercado

221 MySQL

O MySQL eacute um SGBD do tipo relacional que implementa um padratildeo SQLcom algumas extensotildees Foi comprado pela Sun Microsystems em 2008 (WIDENIUS2008) e eacute parte da Oracle que ao comprar a Sun Microsystems comprou todos os seusprodutos tambeacutem O MySQL tem como pontos positivos um suporte bom dos usuaacuterios nosfoacuteruns e grande e bem detalhada documentaccedilatildeo Eacute um SGBD com baixo overhead o quepermite a execuccedilatildeo em computadores com poucos recursos de memoacuteria e processamento

Poreacutem a capacidade de execuccedilatildeo e armazenamento do SGBD seraacute propor-cional agrave arquitetura de hardware e software que o executa O MySQL eacute um SGBDopen-source e o banco de dados dependendo da arquitetura de execuccedilatildeo e mecanismo dearmazenamento pode chegar a ter ateacute 64TB de tamanho (MYSQL 2015)

Eacute escrito em C e C++ e tem compatibilidade com arquiteturas de hardwareSPARC 64 SPARC 32 x86 x86 64 IA64 e ARM Eacute possiacutevel acessar o banco de dadospor meio de uma interface CLI (command-line interface ndash interface de linha de comando)ou pelo ConnectorODBC Existe APIs para C C++ Eiffel Java PHP Python Ruby eTcl

O MySQL disponibiliza algumas opccedilotildees de armazenamento das bases de dados(MYSQL 2015)

1 InnoDB o mecanismo padratildeo de armazenamento do MySQL Eacute compatiacutevel comACID e dispotildeem de recursos como commit e rollback Eacute o mais indicado paraser usado na maioria das aplicaccedilotildees por ter alto desempenho e operar de formatransacional

2 MyISAM eacute uma forma de armazenamento mais simples A trava para escrita emniacutevel de tabela limita o desempenho para operaccedilotildees que envolvem leitura e escrita

Existem outros mecanismos de armazenamento poreacutem ou tem uso muitorestrito ou estatildeo em desuso como CSV Archive Federated e Merge Outro exemplo eacute

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 9

o mecanismo de armazenamento Memory que guarda os dados na memoacuteria RAM e deacordo com o manual estaacute caindo em desuso O mecanismo InnoDB pode ser configuradocom buffers que podem em alguns casos substituir o Memory e ainda com a vantagem depersistir os dados em um armazenamento natildeo volaacutetil

23 SGBDs natildeo relacionais

Com o constante aumento dos dados armazenados e analisados os SGBDsrelacionais estatildeo apresentando vaacuterias limitaccedilotildees As consultas aos dados estatildeo perdendoa eficiecircncia pelo grande volume de dados Esse volume de dados estaacute crescendo cadavez mais por conta da evoluccedilatildeo constante das tecnologias de captura de informaccedilatildeo deprocessamento e da inteligecircncia para dar significado a tudo isso Abramova (ABRAMOVABERNADINO FURTADO 2014) afirma que o NoSQL foi desenvolvido para superaralgumas dessas limitaccedilotildees das bases de dados atuais

Os bancos NoSQL satildeo representados pela natildeo existecircncia de uma estrutura dedados riacutegida comparado ao SQL Eacute possiacutevel ter num mesmo espaccedilo de armazenamentoobjetos com membros diferentes Isso natildeo acontece no SQL onde todos os registros tecircmque seguir o modelo das colunas da tabela onde estatildeo inseridos O conceito de NoSQLfoi usado pela primeira vez em 1998 por Carlo Strozzi (ABRAMOVA BERNADINOFURTADO 2014) para se referir a um banco que natildeo usa interface SQL

Os bancos NoSQL satildeo normalmente baseados no teorema BASE (Basically

Available Soft State and Eventually consistente) (VIEBRANTZ 2012) Os bancos relacio-nais satildeo representados pelo ACID (Atomicidade Consistecircncia Isolamento e Durabilidade)Diferente do ACID o BASE sacrifica um pouco da consistecircncia dos dados para ganhardesempenho Essa troca eacute descrita pelo teorema CAP (Consistency Availability Partition

tolerance) Segundo (BROWNE 2015) teorema CAP diz que somente eacute possiacutevel ter duasdas trecircs caracteriacutesticas ao mesmo tempo

Apesar de natildeo ser possiacutevel consultar dados usando SQL esta abordagempermite faacutecil armazenamento e consulta de dados independente da estrutura do conteuacutedo(ABRAMOVA BERNADINO FURTADO 2014) Bancos NoSQL tambeacutem demonstrammelhor escalabilidade horizontal (EVANS 2011) Isso significa que servidores de baixocusto podem satisfazer as requisiccedilotildees enquanto os custos satildeo reduzidos O gerenciamentodesse grande volume de dados seria difiacutecil porem essas bases de dados satildeo projetadaspara gerenciaacute-los automaticamente recuperar de falhas e consertar o sistema por completo(STOLERU 2010)

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 12: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

LISTA DE ABREVIATURAS E SIGLAS

ACID Atomicity Consistency Isolation Durability

API Application Programing Interface

ARM Advanced RISC Machine

BASE Basically Available Soft state Eventual consistency

CLI command-line interface

CPU Central Processing Unit

DDL Data Definition Language

DML Data Manipulation Language

GCC GNU Compiler Collection

GPS Global System Position

mA mili-Ampeacutere

NoSQL Not Only SQL

RAM Random-Access Memory

Redis Remote DIctionary Server

SGBD Sistema Gerenciador de Banco de Dados

SQL Structured Query Language

USB Universal Serial Bus

XML eXtensible Markup Language

XQuery XML Query

1

CAPIacuteTULO 1

INTRODUCcedilAtildeO

A coleta de dados por sensores estaacute presente em diversas atividades humanasAtividades como previsatildeo do tempo exploraccedilatildeo extraterrestre suporte a atividades cientiacute-ficas conforto residencial seguranccedila hospitalares industriais e inuacutemeras outras satildeo cadavez mais auxiliadas por coleta de dados

Dados provenientes de coleta tem um ou alguns dos seguintes propoacutesitosdescriccedilatildeo explicaccedilatildeo ou prediccedilatildeo (KUMAR 1988) Os dados descritivos respondemperguntas como ldquoquem rdquo ldquoo que rdquo e ldquoquandordquo mas natildeo perguntas como ldquocomordquo ouldquopor querdquo Uma explicaccedilatildeo necessita uma extrapolaccedilatildeo de um relacionamento causa eefeito no qual o investigador tenta entender por que um fenocircmeno processo ou eventoaconteceu ou natildeo Prediccedilotildees satildeo baseadas no entendimento da causa de eventos Dados satildeocoletados para esses fins e em aplicaccedilotildees cientiacuteficas a coleta de dados pode ser essencialpara todo o processo de pesquisa para identificar um problema auxiliar na soluccedilatildeo ouembasar uma teoria

Sensores associados a unidades de processamento satildeo cada vez mais utilizados(EVANS 2011) para executar coleta automatizada de dados Esses sistemas satildeo importan-tes pois executam a coleta na maior parte das vezes com mais facilidade e precisatildeo que umhumano e a um custo menor Ainda pode-se considerar os lugares aos quais os humanos

Capiacutetulo 1 Introduccedilatildeo 2

natildeo podem acessar como ambientes com radiaccedilatildeo ou amostragens de alta frequecircncia porexemplo

Dada a importacircncia de sistemas de coleta de dados este trabalho busca apre-sentar formas de gerenciar os dados armazenados em sistemas de coleta de dados voltadospara aplicaccedilotildees cientiacuteficas

Para verificar onde e como um banco de dados para sistemas embarcadospodem auxiliar o processo de coleta de dados eacute necessaacuterio mencionar o papel que outrastecnologias tem nas aplicaccedilotildees de anaacutelise de dados e como elas podem influenciar nautilizaccedilatildeo de bancos de dados em sistemas de coleta

Sistemas de coleta de dados em geral satildeo compostos por sistemas embarcadosdedicados exclusivamente a essa tarefa Podem ter ou natildeo acesso agrave internet A energiapode originar da rede eleacutetrica baterias descartaacuteveis ou alguma combinaccedilatildeo de alimentaccedilatildeoexterna com bateria recarregaacutevel A autonomia pode variar de dias ateacute anos O tipode amostragem pode ser desde baixa frequecircncia e baixa resoluccedilatildeo ateacute amostras de altafrequecircncia e alta resoluccedilatildeo Existem sistemas que natildeo podem atrasar no processo de coletae entrega da informaccedilatildeo e tem que ser extremamente previsiacuteveis (hard real-time ou soft

real-time) Com a diversidade de aplicaccedilotildees e avanccedilos tecnoloacutegicos existem incontaacuteveisaplicaccedilotildees com caracteriacutesticas variadas

Compreendendo que existe uma variedade muito grande de sistemas de medi-ccedilatildeo alguns casos podem tirar proveito de um armazenamento local dos dados de coletagerenciados por um banco de dados

Para imaginar o impacto da conectividade agrave Internet em sistemas de coletaseratildeo nomeadas caracteriacutesticas de conexotildees como velocidade disponibilidade e custoDentro dessas caracteriacutesticas pode-se analisar se o dado coletado consegue chegar aodestino (velocidade eou disponibilidade) e com que custo As atividades de coleta podemnecessitar de uma transmissatildeo ainda em tempo real (aplicaccedilotildees meacutedicas) ou de grandesvolumes de dados (coleta de imagens)

Se natildeo houver algum tipo de conexatildeo disponiacutevel ou sem todas as caracteriacutesticasnecessaacuterias para fazer os dados da coleta chegarem ao destino ainda eacute possiacutevel utilizaroutros meios para transferiacute-los Pode-se periodicamente transportar os dados por unidadesde armazenamento ou coleta-los manualmente com algum equipamento para esse fimPoreacutem esses meios simplesmente natildeo atendem atividades que necessitam de transmissotildeesem tempo real por exemplo Para as aplicaccedilotildees que o armazenamento local dos dadospode substituir ou auxiliar conexatildeo com a Internet para transmitir os dados coletadospode-se utilizar bancos de dados

Capiacutetulo 1 Introduccedilatildeo 3

Outro componente que estaacute presente em sistemas embarcados de coletas au-tomatizadas satildeo unidades de processamento O constante aumento na capacidade deprocessamento aumenta as possibilidades de coleta de dados Dessa forma pode-se adicio-nar um armazenamento local de dados Com os dados armazenados localmente eacute possiacutevelrealizar algum processamento preacutevio ou gerar estatiacutestica eou feedback para melhorar aproacutepria coleta de dados por exemplo Esse crescimento entatildeo aumenta as possibilidadesdo sistema de coleta

A eficiecircncia energeacutetica de sistemas de coleta baseados em sistemas embarcadosestaacute constantemente aumentando Em conjunto com a melhora constante de baterias exis-tem alguns cenaacuterios recorrentes dispositivos que usam muito pouca energia e funcionampor mais tempo (chegando a mais de um ano) ou dispositivos que aproveitam a eficiecircnciaenergeacutetica e aumentam muito a capacidade de processamento Pode-se ter situaccedilotildees derestriccedilatildeo de energia e necessidade de reduzir transmissotildees dos dados de medidoccedilotildees mascom um armazenamento local a atividade pode continuar com as transmissotildees sendo feitasposteriormente

Dependendo do tipo de configuraccedilatildeo de sistema de mediccedilatildeo utilizado o equi-pamento sequer tem um sistema operacional como pode ter recursos semelhantes a compu-tadores pessoais No primeiro caso satildeo equipamentos embarcados extremamente simplesque podem natildeo dispor de recursos para sustentar um SGBD Pela simplicidade da arquite-tura pode natildeo compensar o custo de desenvolvimento e manutenccedilatildeo No segundo casoequipamentos embarcados com mais recursos disponiacuteveis pode-se utilizar um SGBD

Quando a integraccedilatildeo da aplicaccedilatildeo de coleta eacute feita com o SGBD para arma-zenamento de dados locais podemos adicionar caracteriacutesticas como maior seguranccedila edisponibilidade dos dados melhor recuperaccedilatildeo dentre outras vantagens de se utilizar umSGBD

Espera-se apresentar e testar meacutetodos de gerenciamento de dados caracteriacutesti-cos de sensores visando aplicaccedilotildees cientiacuteficas Os objetivos especiacuteficos satildeo

1 Investigar as tendecircncias tecnologias de SGBD

2 Comparar a performance de sistemas embarcados com alguns SGBD investigados

3 Aplicar dois tipos de conjunto de dados para testar os sistemas embarcados e osSGBD

4 Realizar teste de leitura e acesso para avaliar desempenho tanto dos sistemasembarcados como dos SGBD

Capiacutetulo 1 Introduccedilatildeo 4

Este estudo pode contribuir na discussatildeo de como os dados de um sistema decoleta seratildeo gerenciados em funccedilatildeo de recursos disponiacuteveis configuraccedilatildeo do sistema e osresultados que se buscam atingir

Nesta introduccedilatildeo buscou-se descrever a importacircncia da coleta de dados natildeo soacutepara fins cientiacuteficos mas para vaacuterias atividades humanas atualmente Aleacutem disso foramdemonstrados alguns vaacuterios cenaacuterios e tecnologias dos quais alguns o uso de SGBD paraarmazenamento local beneficia a atividade de coleta de dados Por fim os objetivos queorientam esta pesquisa

No capiacutetulo 2 Revisatildeo de Literatura seratildeo levantados conceitos e teoriarelativo agrave SGBDs em geral como eles podem ajudar e sobre os dois utilizados nosexperimentos Dada a ligaccedilatildeo entre sistemas de coleta de dados exposta na introduccedilatildeoseratildeo abordados alguns conceitos relativos agrave sistemas embarcados

No capiacutetulo 3 Materiais e Meacutetodos seratildeo descritos todos os componentesfiacutesicos e de software selecionados para os testes Aleacutem disso seraacute descrito como foramfeitos os testes

No capiacutetulo 4 Estudos de Caso seratildeo apresentados os testes feitos com osrespectivos paracircmetros No capiacutetulo 5 Resultados seratildeo discutidos os resultados dosEstudos de Caso

No capiacutetulo 6 Trabalhos Futuros busca-se levantar partes desta monografiaque podem ser ainda mais explorados

O capiacutetulo seguinte a Conclusatildeo seratildeo revistas as hipoacuteteses iniciais compara-das aos resultados

CAPIacuteTULO 2

FUNDAMENTACcedilAtildeO TEOacuteRICA

A utilizaccedilatildeo de um SGBD (Sistema Gerenciador de Banco de Dados) trazimpactos positivos e negativos decorrentes da combinaccedilatildeo das variaacuteveis de caracteriacutesticasdo SGBD em si de sua arquitetura e da aplicaccedilatildeo

Sistemas de coleta automatizada de dados cientiacuteficos podem ser construiacutedosutilizando Sistemas Embarcados Um sistema embarcado eacute definido pela sua aplicaccedilatildeopois tendem a ser equipamentos com funccedilatildeo bem definida Ao variar a aplicaccedilatildeo mudam-sejunto os recursos e atributos do equipamento

Considerando essas combinaccedilotildees temos cenaacuterios favoraacuteveis ou natildeo a utilizaccedilatildeode um SGBD para gerenciar dados localmente em um sistema de coleta automatizadoNeste capitulo seratildeo apresentados os conceitos necessaacuterios para evidenciar as principaisvariaacuteveis dos elementos envolvidos neste experimento e como as mesmas podem influenciarna aplicaccedilatildeo

Seratildeo abordados conceitos gerais sobre SGBDs dos tipos relacionais e NoSQLEm seguida referecircncias sobre sistemas embarcados dado que o mesmo tem influecircncia nautilizaccedilatildeo ou natildeo de SGBD em uma aplicaccedilatildeo de coleta

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 6

21 Sistemas Gerenciadores de Banco de Dados

Um SGBD eacute um sistema computadorizado para armazenar registros segundo(DATE 2004) Bases de dados estatildeo presentes em computadores de diferentes escalasdesde pequenos sistemas embarcados ateacute clusters de mainframes Eacute normalmente utilizadapara o software que gerencia a base de dados enquanto a denominaccedilatildeo banco de dados oubase de dados se refere ao conjunto de dados gerenciado (DATE 2004)

A automaccedilatildeo do processamento de dados eacute mais antiga que os proacuteprios com-putadores Silberchatz (SUDARSHAN 2004) afirma que cartotildees perfurados inventadospor Herman Hollerith foram usados no comeccedilo do seacuteculo 20 nos Estados Unidos paraarmazenar dados de censo Sistemas mecacircnicos foram usados para processar os cartotildees eapresentar os resultados

Com a evoluccedilatildeo dos meios de armazenamento e processamento entre asdeacutecadas de 50 e 60 fitas magneacuteticas foram usadas para armazenamento de dados Comofitas tem forma de acesso sequencial os dados tinham que ser acessados ou modificadosde forma sequencial

Desde o fim dos anos 60 ateacute os anos 70 houve a disseminaccedilatildeo do uso dodisco riacutegido a utilizaccedilatildeo de vaacuterios discos o uso de sistemas de arquivos e aumento nasvelocidades de transferecircncia por conta de novos materiais e processos de fabricaccedilatildeo Aleacutemdisso o modelo de acesso aleatoacuterio alterou a forma como os dados eram acessados emodificados (SPELIOTIS 2000)

Nos aos 80 foi criado o modelo relacional de dados que foi implementado noSystem R da IBM que desenvolveu teacutecnicas eficientes de construccedilatildeo de bases de dadosrelacionais

No iniacutecio dos anos 90 a linguagem SQL foi escolhida para aplicaccedilotildees desuporte a decisatildeo que fazem muitos acessos ao banco de dados As bases de dadospassaram a ter que oferecer suporte a uma taxa muito alta de processamento de transaccedilotildeesaleacutem de ser mais confiaacuteveis manter disponibilidade 24x7 e suportar dados de interfaceWeb SQL fornece vaacuterios recursos como DDL (Data-Definition Language) para trabalharcom esquemas e relacionamentos por exemplo DML (Data Manipulation Language) parafazer consultas apagar inserir ou modificar tuplas no banco controles de integridadegeraccedilatildeo de visotildees controle transacional permissotildees de acesso e outros

No comeccedilo da deacutecada 2000 houve a adoccedilatildeo do XML em associaccedilatildeo com alinguagem XQuery como nova tecnologia de consulta Nesse periacuteodo tambeacutem houve umcrescimento na utilizaccedilatildeo de SGBDs open-source como o PostgresSQL e o MySQL

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 7

No fim da deacutecada de 2000 houve o crescimento de SGBDs especializados emanalises de dados como os column-store Novos sistemas de armazenamento de dadosdistribuiacutedos foram construiacutedos para ter capacidade para anaacutelise de dados de sites comoAmazon

Com o passar do tempo as mudanccedilas de hardware capacidade de processa-mento e armazenamento velocidades de conexotildees dados disponiacuteveis e necessidadesopor-tunidades influenciaram o desenvolvimento dos SGBDs Verificamos que esse processoteve duas vias o desenvolvimento de recursos gerou espaccedilo para mudanccedilas e as neces-sidades tambeacutem levaram ao desenvolvimento e popularizaccedilatildeo de outras tecnologias deSGBDs

22 SGBDs relacionais

SGBDs relacionais foram desenvolvidos nos anos 70 como uma tecnologiapara armazenar dados estruturados organizados como tabelas com sua proacutepria linguagem ndasho SQL (OUNALLI 2012)

Segundo (SUDARSHAN 2004) um SGBD relacional eacute baseado no modelorelacional e usa uma coleccedilatildeo de tabelas para representar os dados e os relacionamentosentre esses dados O tipo relacional de SGBD eacute hoje em dia o principal utilizado nomercado

Uma base relacional consiste em um conjunto de tabelas As tabelas tecircmvaacuterias colunas e cada coluna tem um uacutenico nome Em geral uma linha representa orelacionamento entre um conjunto de valores e satildeo chamadas de tuplas O esquema deuma base relacional conteacutem os atributos tipos e regras das relaccedilotildees como chaves primaacuteriase estrangeiras

As tuplas podem ter um atributo do tipo chave primaacuteria que eacute a identificaccedilatildeouacutenica e natildeo repetida daquele registro Essas chaves podem ser referenciadas por outrosregistros por meio de um atributo do tipo chave estrangeira

Uma caracteriacutestica dos SGBDs e linguagens relacionais eacute a implementaccedilatildeo daaacutelgebra relacional Ela define um conjunto de operaccedilotildees

1 Seleccedilatildeo - retorna as linhas que satisfazem a condiccedilatildeo de seleccedilatildeo

2 Projeccedilatildeo - retorna atributos especiacuteficos de todas as linhas da entrada da relaccedilatildeoRemove as linhas duplicadas da saiacuteda

3 Natural join - retorna os pares de linhas de duas entradas que tem o mesmo valor emtodos os atributos que tem o mesmo nome

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 8

4 Produto cartesiano - retorna todos os pares de linhas de duas relaccedilotildees de entradasindependente de ter os mesmos nomes ou valores em comum

5 Uniatildeo - retorna a uniatildeo de tuplas de duas relaccedilotildees

Linguagens como o SQL utilizadas para fazer operaccedilotildees nas bases de dadossatildeo baseadas em aacutelgebra relacional que provecirc vaacuterios recursos para gerar as consultas SQLeacute a linguagem relacional mais influente do mercado

221 MySQL

O MySQL eacute um SGBD do tipo relacional que implementa um padratildeo SQLcom algumas extensotildees Foi comprado pela Sun Microsystems em 2008 (WIDENIUS2008) e eacute parte da Oracle que ao comprar a Sun Microsystems comprou todos os seusprodutos tambeacutem O MySQL tem como pontos positivos um suporte bom dos usuaacuterios nosfoacuteruns e grande e bem detalhada documentaccedilatildeo Eacute um SGBD com baixo overhead o quepermite a execuccedilatildeo em computadores com poucos recursos de memoacuteria e processamento

Poreacutem a capacidade de execuccedilatildeo e armazenamento do SGBD seraacute propor-cional agrave arquitetura de hardware e software que o executa O MySQL eacute um SGBDopen-source e o banco de dados dependendo da arquitetura de execuccedilatildeo e mecanismo dearmazenamento pode chegar a ter ateacute 64TB de tamanho (MYSQL 2015)

Eacute escrito em C e C++ e tem compatibilidade com arquiteturas de hardwareSPARC 64 SPARC 32 x86 x86 64 IA64 e ARM Eacute possiacutevel acessar o banco de dadospor meio de uma interface CLI (command-line interface ndash interface de linha de comando)ou pelo ConnectorODBC Existe APIs para C C++ Eiffel Java PHP Python Ruby eTcl

O MySQL disponibiliza algumas opccedilotildees de armazenamento das bases de dados(MYSQL 2015)

1 InnoDB o mecanismo padratildeo de armazenamento do MySQL Eacute compatiacutevel comACID e dispotildeem de recursos como commit e rollback Eacute o mais indicado paraser usado na maioria das aplicaccedilotildees por ter alto desempenho e operar de formatransacional

2 MyISAM eacute uma forma de armazenamento mais simples A trava para escrita emniacutevel de tabela limita o desempenho para operaccedilotildees que envolvem leitura e escrita

Existem outros mecanismos de armazenamento poreacutem ou tem uso muitorestrito ou estatildeo em desuso como CSV Archive Federated e Merge Outro exemplo eacute

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 9

o mecanismo de armazenamento Memory que guarda os dados na memoacuteria RAM e deacordo com o manual estaacute caindo em desuso O mecanismo InnoDB pode ser configuradocom buffers que podem em alguns casos substituir o Memory e ainda com a vantagem depersistir os dados em um armazenamento natildeo volaacutetil

23 SGBDs natildeo relacionais

Com o constante aumento dos dados armazenados e analisados os SGBDsrelacionais estatildeo apresentando vaacuterias limitaccedilotildees As consultas aos dados estatildeo perdendoa eficiecircncia pelo grande volume de dados Esse volume de dados estaacute crescendo cadavez mais por conta da evoluccedilatildeo constante das tecnologias de captura de informaccedilatildeo deprocessamento e da inteligecircncia para dar significado a tudo isso Abramova (ABRAMOVABERNADINO FURTADO 2014) afirma que o NoSQL foi desenvolvido para superaralgumas dessas limitaccedilotildees das bases de dados atuais

Os bancos NoSQL satildeo representados pela natildeo existecircncia de uma estrutura dedados riacutegida comparado ao SQL Eacute possiacutevel ter num mesmo espaccedilo de armazenamentoobjetos com membros diferentes Isso natildeo acontece no SQL onde todos os registros tecircmque seguir o modelo das colunas da tabela onde estatildeo inseridos O conceito de NoSQLfoi usado pela primeira vez em 1998 por Carlo Strozzi (ABRAMOVA BERNADINOFURTADO 2014) para se referir a um banco que natildeo usa interface SQL

Os bancos NoSQL satildeo normalmente baseados no teorema BASE (Basically

Available Soft State and Eventually consistente) (VIEBRANTZ 2012) Os bancos relacio-nais satildeo representados pelo ACID (Atomicidade Consistecircncia Isolamento e Durabilidade)Diferente do ACID o BASE sacrifica um pouco da consistecircncia dos dados para ganhardesempenho Essa troca eacute descrita pelo teorema CAP (Consistency Availability Partition

tolerance) Segundo (BROWNE 2015) teorema CAP diz que somente eacute possiacutevel ter duasdas trecircs caracteriacutesticas ao mesmo tempo

Apesar de natildeo ser possiacutevel consultar dados usando SQL esta abordagempermite faacutecil armazenamento e consulta de dados independente da estrutura do conteuacutedo(ABRAMOVA BERNADINO FURTADO 2014) Bancos NoSQL tambeacutem demonstrammelhor escalabilidade horizontal (EVANS 2011) Isso significa que servidores de baixocusto podem satisfazer as requisiccedilotildees enquanto os custos satildeo reduzidos O gerenciamentodesse grande volume de dados seria difiacutecil porem essas bases de dados satildeo projetadaspara gerenciaacute-los automaticamente recuperar de falhas e consertar o sistema por completo(STOLERU 2010)

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 13: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

SQL Structured Query Language

USB Universal Serial Bus

XML eXtensible Markup Language

XQuery XML Query

1

CAPIacuteTULO 1

INTRODUCcedilAtildeO

A coleta de dados por sensores estaacute presente em diversas atividades humanasAtividades como previsatildeo do tempo exploraccedilatildeo extraterrestre suporte a atividades cientiacute-ficas conforto residencial seguranccedila hospitalares industriais e inuacutemeras outras satildeo cadavez mais auxiliadas por coleta de dados

Dados provenientes de coleta tem um ou alguns dos seguintes propoacutesitosdescriccedilatildeo explicaccedilatildeo ou prediccedilatildeo (KUMAR 1988) Os dados descritivos respondemperguntas como ldquoquem rdquo ldquoo que rdquo e ldquoquandordquo mas natildeo perguntas como ldquocomordquo ouldquopor querdquo Uma explicaccedilatildeo necessita uma extrapolaccedilatildeo de um relacionamento causa eefeito no qual o investigador tenta entender por que um fenocircmeno processo ou eventoaconteceu ou natildeo Prediccedilotildees satildeo baseadas no entendimento da causa de eventos Dados satildeocoletados para esses fins e em aplicaccedilotildees cientiacuteficas a coleta de dados pode ser essencialpara todo o processo de pesquisa para identificar um problema auxiliar na soluccedilatildeo ouembasar uma teoria

Sensores associados a unidades de processamento satildeo cada vez mais utilizados(EVANS 2011) para executar coleta automatizada de dados Esses sistemas satildeo importan-tes pois executam a coleta na maior parte das vezes com mais facilidade e precisatildeo que umhumano e a um custo menor Ainda pode-se considerar os lugares aos quais os humanos

Capiacutetulo 1 Introduccedilatildeo 2

natildeo podem acessar como ambientes com radiaccedilatildeo ou amostragens de alta frequecircncia porexemplo

Dada a importacircncia de sistemas de coleta de dados este trabalho busca apre-sentar formas de gerenciar os dados armazenados em sistemas de coleta de dados voltadospara aplicaccedilotildees cientiacuteficas

Para verificar onde e como um banco de dados para sistemas embarcadospodem auxiliar o processo de coleta de dados eacute necessaacuterio mencionar o papel que outrastecnologias tem nas aplicaccedilotildees de anaacutelise de dados e como elas podem influenciar nautilizaccedilatildeo de bancos de dados em sistemas de coleta

Sistemas de coleta de dados em geral satildeo compostos por sistemas embarcadosdedicados exclusivamente a essa tarefa Podem ter ou natildeo acesso agrave internet A energiapode originar da rede eleacutetrica baterias descartaacuteveis ou alguma combinaccedilatildeo de alimentaccedilatildeoexterna com bateria recarregaacutevel A autonomia pode variar de dias ateacute anos O tipode amostragem pode ser desde baixa frequecircncia e baixa resoluccedilatildeo ateacute amostras de altafrequecircncia e alta resoluccedilatildeo Existem sistemas que natildeo podem atrasar no processo de coletae entrega da informaccedilatildeo e tem que ser extremamente previsiacuteveis (hard real-time ou soft

real-time) Com a diversidade de aplicaccedilotildees e avanccedilos tecnoloacutegicos existem incontaacuteveisaplicaccedilotildees com caracteriacutesticas variadas

Compreendendo que existe uma variedade muito grande de sistemas de medi-ccedilatildeo alguns casos podem tirar proveito de um armazenamento local dos dados de coletagerenciados por um banco de dados

Para imaginar o impacto da conectividade agrave Internet em sistemas de coletaseratildeo nomeadas caracteriacutesticas de conexotildees como velocidade disponibilidade e custoDentro dessas caracteriacutesticas pode-se analisar se o dado coletado consegue chegar aodestino (velocidade eou disponibilidade) e com que custo As atividades de coleta podemnecessitar de uma transmissatildeo ainda em tempo real (aplicaccedilotildees meacutedicas) ou de grandesvolumes de dados (coleta de imagens)

Se natildeo houver algum tipo de conexatildeo disponiacutevel ou sem todas as caracteriacutesticasnecessaacuterias para fazer os dados da coleta chegarem ao destino ainda eacute possiacutevel utilizaroutros meios para transferiacute-los Pode-se periodicamente transportar os dados por unidadesde armazenamento ou coleta-los manualmente com algum equipamento para esse fimPoreacutem esses meios simplesmente natildeo atendem atividades que necessitam de transmissotildeesem tempo real por exemplo Para as aplicaccedilotildees que o armazenamento local dos dadospode substituir ou auxiliar conexatildeo com a Internet para transmitir os dados coletadospode-se utilizar bancos de dados

Capiacutetulo 1 Introduccedilatildeo 3

Outro componente que estaacute presente em sistemas embarcados de coletas au-tomatizadas satildeo unidades de processamento O constante aumento na capacidade deprocessamento aumenta as possibilidades de coleta de dados Dessa forma pode-se adicio-nar um armazenamento local de dados Com os dados armazenados localmente eacute possiacutevelrealizar algum processamento preacutevio ou gerar estatiacutestica eou feedback para melhorar aproacutepria coleta de dados por exemplo Esse crescimento entatildeo aumenta as possibilidadesdo sistema de coleta

A eficiecircncia energeacutetica de sistemas de coleta baseados em sistemas embarcadosestaacute constantemente aumentando Em conjunto com a melhora constante de baterias exis-tem alguns cenaacuterios recorrentes dispositivos que usam muito pouca energia e funcionampor mais tempo (chegando a mais de um ano) ou dispositivos que aproveitam a eficiecircnciaenergeacutetica e aumentam muito a capacidade de processamento Pode-se ter situaccedilotildees derestriccedilatildeo de energia e necessidade de reduzir transmissotildees dos dados de medidoccedilotildees mascom um armazenamento local a atividade pode continuar com as transmissotildees sendo feitasposteriormente

Dependendo do tipo de configuraccedilatildeo de sistema de mediccedilatildeo utilizado o equi-pamento sequer tem um sistema operacional como pode ter recursos semelhantes a compu-tadores pessoais No primeiro caso satildeo equipamentos embarcados extremamente simplesque podem natildeo dispor de recursos para sustentar um SGBD Pela simplicidade da arquite-tura pode natildeo compensar o custo de desenvolvimento e manutenccedilatildeo No segundo casoequipamentos embarcados com mais recursos disponiacuteveis pode-se utilizar um SGBD

Quando a integraccedilatildeo da aplicaccedilatildeo de coleta eacute feita com o SGBD para arma-zenamento de dados locais podemos adicionar caracteriacutesticas como maior seguranccedila edisponibilidade dos dados melhor recuperaccedilatildeo dentre outras vantagens de se utilizar umSGBD

Espera-se apresentar e testar meacutetodos de gerenciamento de dados caracteriacutesti-cos de sensores visando aplicaccedilotildees cientiacuteficas Os objetivos especiacuteficos satildeo

1 Investigar as tendecircncias tecnologias de SGBD

2 Comparar a performance de sistemas embarcados com alguns SGBD investigados

3 Aplicar dois tipos de conjunto de dados para testar os sistemas embarcados e osSGBD

4 Realizar teste de leitura e acesso para avaliar desempenho tanto dos sistemasembarcados como dos SGBD

Capiacutetulo 1 Introduccedilatildeo 4

Este estudo pode contribuir na discussatildeo de como os dados de um sistema decoleta seratildeo gerenciados em funccedilatildeo de recursos disponiacuteveis configuraccedilatildeo do sistema e osresultados que se buscam atingir

Nesta introduccedilatildeo buscou-se descrever a importacircncia da coleta de dados natildeo soacutepara fins cientiacuteficos mas para vaacuterias atividades humanas atualmente Aleacutem disso foramdemonstrados alguns vaacuterios cenaacuterios e tecnologias dos quais alguns o uso de SGBD paraarmazenamento local beneficia a atividade de coleta de dados Por fim os objetivos queorientam esta pesquisa

No capiacutetulo 2 Revisatildeo de Literatura seratildeo levantados conceitos e teoriarelativo agrave SGBDs em geral como eles podem ajudar e sobre os dois utilizados nosexperimentos Dada a ligaccedilatildeo entre sistemas de coleta de dados exposta na introduccedilatildeoseratildeo abordados alguns conceitos relativos agrave sistemas embarcados

No capiacutetulo 3 Materiais e Meacutetodos seratildeo descritos todos os componentesfiacutesicos e de software selecionados para os testes Aleacutem disso seraacute descrito como foramfeitos os testes

No capiacutetulo 4 Estudos de Caso seratildeo apresentados os testes feitos com osrespectivos paracircmetros No capiacutetulo 5 Resultados seratildeo discutidos os resultados dosEstudos de Caso

No capiacutetulo 6 Trabalhos Futuros busca-se levantar partes desta monografiaque podem ser ainda mais explorados

O capiacutetulo seguinte a Conclusatildeo seratildeo revistas as hipoacuteteses iniciais compara-das aos resultados

CAPIacuteTULO 2

FUNDAMENTACcedilAtildeO TEOacuteRICA

A utilizaccedilatildeo de um SGBD (Sistema Gerenciador de Banco de Dados) trazimpactos positivos e negativos decorrentes da combinaccedilatildeo das variaacuteveis de caracteriacutesticasdo SGBD em si de sua arquitetura e da aplicaccedilatildeo

Sistemas de coleta automatizada de dados cientiacuteficos podem ser construiacutedosutilizando Sistemas Embarcados Um sistema embarcado eacute definido pela sua aplicaccedilatildeopois tendem a ser equipamentos com funccedilatildeo bem definida Ao variar a aplicaccedilatildeo mudam-sejunto os recursos e atributos do equipamento

Considerando essas combinaccedilotildees temos cenaacuterios favoraacuteveis ou natildeo a utilizaccedilatildeode um SGBD para gerenciar dados localmente em um sistema de coleta automatizadoNeste capitulo seratildeo apresentados os conceitos necessaacuterios para evidenciar as principaisvariaacuteveis dos elementos envolvidos neste experimento e como as mesmas podem influenciarna aplicaccedilatildeo

Seratildeo abordados conceitos gerais sobre SGBDs dos tipos relacionais e NoSQLEm seguida referecircncias sobre sistemas embarcados dado que o mesmo tem influecircncia nautilizaccedilatildeo ou natildeo de SGBD em uma aplicaccedilatildeo de coleta

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 6

21 Sistemas Gerenciadores de Banco de Dados

Um SGBD eacute um sistema computadorizado para armazenar registros segundo(DATE 2004) Bases de dados estatildeo presentes em computadores de diferentes escalasdesde pequenos sistemas embarcados ateacute clusters de mainframes Eacute normalmente utilizadapara o software que gerencia a base de dados enquanto a denominaccedilatildeo banco de dados oubase de dados se refere ao conjunto de dados gerenciado (DATE 2004)

A automaccedilatildeo do processamento de dados eacute mais antiga que os proacuteprios com-putadores Silberchatz (SUDARSHAN 2004) afirma que cartotildees perfurados inventadospor Herman Hollerith foram usados no comeccedilo do seacuteculo 20 nos Estados Unidos paraarmazenar dados de censo Sistemas mecacircnicos foram usados para processar os cartotildees eapresentar os resultados

Com a evoluccedilatildeo dos meios de armazenamento e processamento entre asdeacutecadas de 50 e 60 fitas magneacuteticas foram usadas para armazenamento de dados Comofitas tem forma de acesso sequencial os dados tinham que ser acessados ou modificadosde forma sequencial

Desde o fim dos anos 60 ateacute os anos 70 houve a disseminaccedilatildeo do uso dodisco riacutegido a utilizaccedilatildeo de vaacuterios discos o uso de sistemas de arquivos e aumento nasvelocidades de transferecircncia por conta de novos materiais e processos de fabricaccedilatildeo Aleacutemdisso o modelo de acesso aleatoacuterio alterou a forma como os dados eram acessados emodificados (SPELIOTIS 2000)

Nos aos 80 foi criado o modelo relacional de dados que foi implementado noSystem R da IBM que desenvolveu teacutecnicas eficientes de construccedilatildeo de bases de dadosrelacionais

No iniacutecio dos anos 90 a linguagem SQL foi escolhida para aplicaccedilotildees desuporte a decisatildeo que fazem muitos acessos ao banco de dados As bases de dadospassaram a ter que oferecer suporte a uma taxa muito alta de processamento de transaccedilotildeesaleacutem de ser mais confiaacuteveis manter disponibilidade 24x7 e suportar dados de interfaceWeb SQL fornece vaacuterios recursos como DDL (Data-Definition Language) para trabalharcom esquemas e relacionamentos por exemplo DML (Data Manipulation Language) parafazer consultas apagar inserir ou modificar tuplas no banco controles de integridadegeraccedilatildeo de visotildees controle transacional permissotildees de acesso e outros

No comeccedilo da deacutecada 2000 houve a adoccedilatildeo do XML em associaccedilatildeo com alinguagem XQuery como nova tecnologia de consulta Nesse periacuteodo tambeacutem houve umcrescimento na utilizaccedilatildeo de SGBDs open-source como o PostgresSQL e o MySQL

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 7

No fim da deacutecada de 2000 houve o crescimento de SGBDs especializados emanalises de dados como os column-store Novos sistemas de armazenamento de dadosdistribuiacutedos foram construiacutedos para ter capacidade para anaacutelise de dados de sites comoAmazon

Com o passar do tempo as mudanccedilas de hardware capacidade de processa-mento e armazenamento velocidades de conexotildees dados disponiacuteveis e necessidadesopor-tunidades influenciaram o desenvolvimento dos SGBDs Verificamos que esse processoteve duas vias o desenvolvimento de recursos gerou espaccedilo para mudanccedilas e as neces-sidades tambeacutem levaram ao desenvolvimento e popularizaccedilatildeo de outras tecnologias deSGBDs

22 SGBDs relacionais

SGBDs relacionais foram desenvolvidos nos anos 70 como uma tecnologiapara armazenar dados estruturados organizados como tabelas com sua proacutepria linguagem ndasho SQL (OUNALLI 2012)

Segundo (SUDARSHAN 2004) um SGBD relacional eacute baseado no modelorelacional e usa uma coleccedilatildeo de tabelas para representar os dados e os relacionamentosentre esses dados O tipo relacional de SGBD eacute hoje em dia o principal utilizado nomercado

Uma base relacional consiste em um conjunto de tabelas As tabelas tecircmvaacuterias colunas e cada coluna tem um uacutenico nome Em geral uma linha representa orelacionamento entre um conjunto de valores e satildeo chamadas de tuplas O esquema deuma base relacional conteacutem os atributos tipos e regras das relaccedilotildees como chaves primaacuteriase estrangeiras

As tuplas podem ter um atributo do tipo chave primaacuteria que eacute a identificaccedilatildeouacutenica e natildeo repetida daquele registro Essas chaves podem ser referenciadas por outrosregistros por meio de um atributo do tipo chave estrangeira

Uma caracteriacutestica dos SGBDs e linguagens relacionais eacute a implementaccedilatildeo daaacutelgebra relacional Ela define um conjunto de operaccedilotildees

1 Seleccedilatildeo - retorna as linhas que satisfazem a condiccedilatildeo de seleccedilatildeo

2 Projeccedilatildeo - retorna atributos especiacuteficos de todas as linhas da entrada da relaccedilatildeoRemove as linhas duplicadas da saiacuteda

3 Natural join - retorna os pares de linhas de duas entradas que tem o mesmo valor emtodos os atributos que tem o mesmo nome

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 8

4 Produto cartesiano - retorna todos os pares de linhas de duas relaccedilotildees de entradasindependente de ter os mesmos nomes ou valores em comum

5 Uniatildeo - retorna a uniatildeo de tuplas de duas relaccedilotildees

Linguagens como o SQL utilizadas para fazer operaccedilotildees nas bases de dadossatildeo baseadas em aacutelgebra relacional que provecirc vaacuterios recursos para gerar as consultas SQLeacute a linguagem relacional mais influente do mercado

221 MySQL

O MySQL eacute um SGBD do tipo relacional que implementa um padratildeo SQLcom algumas extensotildees Foi comprado pela Sun Microsystems em 2008 (WIDENIUS2008) e eacute parte da Oracle que ao comprar a Sun Microsystems comprou todos os seusprodutos tambeacutem O MySQL tem como pontos positivos um suporte bom dos usuaacuterios nosfoacuteruns e grande e bem detalhada documentaccedilatildeo Eacute um SGBD com baixo overhead o quepermite a execuccedilatildeo em computadores com poucos recursos de memoacuteria e processamento

Poreacutem a capacidade de execuccedilatildeo e armazenamento do SGBD seraacute propor-cional agrave arquitetura de hardware e software que o executa O MySQL eacute um SGBDopen-source e o banco de dados dependendo da arquitetura de execuccedilatildeo e mecanismo dearmazenamento pode chegar a ter ateacute 64TB de tamanho (MYSQL 2015)

Eacute escrito em C e C++ e tem compatibilidade com arquiteturas de hardwareSPARC 64 SPARC 32 x86 x86 64 IA64 e ARM Eacute possiacutevel acessar o banco de dadospor meio de uma interface CLI (command-line interface ndash interface de linha de comando)ou pelo ConnectorODBC Existe APIs para C C++ Eiffel Java PHP Python Ruby eTcl

O MySQL disponibiliza algumas opccedilotildees de armazenamento das bases de dados(MYSQL 2015)

1 InnoDB o mecanismo padratildeo de armazenamento do MySQL Eacute compatiacutevel comACID e dispotildeem de recursos como commit e rollback Eacute o mais indicado paraser usado na maioria das aplicaccedilotildees por ter alto desempenho e operar de formatransacional

2 MyISAM eacute uma forma de armazenamento mais simples A trava para escrita emniacutevel de tabela limita o desempenho para operaccedilotildees que envolvem leitura e escrita

Existem outros mecanismos de armazenamento poreacutem ou tem uso muitorestrito ou estatildeo em desuso como CSV Archive Federated e Merge Outro exemplo eacute

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 9

o mecanismo de armazenamento Memory que guarda os dados na memoacuteria RAM e deacordo com o manual estaacute caindo em desuso O mecanismo InnoDB pode ser configuradocom buffers que podem em alguns casos substituir o Memory e ainda com a vantagem depersistir os dados em um armazenamento natildeo volaacutetil

23 SGBDs natildeo relacionais

Com o constante aumento dos dados armazenados e analisados os SGBDsrelacionais estatildeo apresentando vaacuterias limitaccedilotildees As consultas aos dados estatildeo perdendoa eficiecircncia pelo grande volume de dados Esse volume de dados estaacute crescendo cadavez mais por conta da evoluccedilatildeo constante das tecnologias de captura de informaccedilatildeo deprocessamento e da inteligecircncia para dar significado a tudo isso Abramova (ABRAMOVABERNADINO FURTADO 2014) afirma que o NoSQL foi desenvolvido para superaralgumas dessas limitaccedilotildees das bases de dados atuais

Os bancos NoSQL satildeo representados pela natildeo existecircncia de uma estrutura dedados riacutegida comparado ao SQL Eacute possiacutevel ter num mesmo espaccedilo de armazenamentoobjetos com membros diferentes Isso natildeo acontece no SQL onde todos os registros tecircmque seguir o modelo das colunas da tabela onde estatildeo inseridos O conceito de NoSQLfoi usado pela primeira vez em 1998 por Carlo Strozzi (ABRAMOVA BERNADINOFURTADO 2014) para se referir a um banco que natildeo usa interface SQL

Os bancos NoSQL satildeo normalmente baseados no teorema BASE (Basically

Available Soft State and Eventually consistente) (VIEBRANTZ 2012) Os bancos relacio-nais satildeo representados pelo ACID (Atomicidade Consistecircncia Isolamento e Durabilidade)Diferente do ACID o BASE sacrifica um pouco da consistecircncia dos dados para ganhardesempenho Essa troca eacute descrita pelo teorema CAP (Consistency Availability Partition

tolerance) Segundo (BROWNE 2015) teorema CAP diz que somente eacute possiacutevel ter duasdas trecircs caracteriacutesticas ao mesmo tempo

Apesar de natildeo ser possiacutevel consultar dados usando SQL esta abordagempermite faacutecil armazenamento e consulta de dados independente da estrutura do conteuacutedo(ABRAMOVA BERNADINO FURTADO 2014) Bancos NoSQL tambeacutem demonstrammelhor escalabilidade horizontal (EVANS 2011) Isso significa que servidores de baixocusto podem satisfazer as requisiccedilotildees enquanto os custos satildeo reduzidos O gerenciamentodesse grande volume de dados seria difiacutecil porem essas bases de dados satildeo projetadaspara gerenciaacute-los automaticamente recuperar de falhas e consertar o sistema por completo(STOLERU 2010)

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 14: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

1

CAPIacuteTULO 1

INTRODUCcedilAtildeO

A coleta de dados por sensores estaacute presente em diversas atividades humanasAtividades como previsatildeo do tempo exploraccedilatildeo extraterrestre suporte a atividades cientiacute-ficas conforto residencial seguranccedila hospitalares industriais e inuacutemeras outras satildeo cadavez mais auxiliadas por coleta de dados

Dados provenientes de coleta tem um ou alguns dos seguintes propoacutesitosdescriccedilatildeo explicaccedilatildeo ou prediccedilatildeo (KUMAR 1988) Os dados descritivos respondemperguntas como ldquoquem rdquo ldquoo que rdquo e ldquoquandordquo mas natildeo perguntas como ldquocomordquo ouldquopor querdquo Uma explicaccedilatildeo necessita uma extrapolaccedilatildeo de um relacionamento causa eefeito no qual o investigador tenta entender por que um fenocircmeno processo ou eventoaconteceu ou natildeo Prediccedilotildees satildeo baseadas no entendimento da causa de eventos Dados satildeocoletados para esses fins e em aplicaccedilotildees cientiacuteficas a coleta de dados pode ser essencialpara todo o processo de pesquisa para identificar um problema auxiliar na soluccedilatildeo ouembasar uma teoria

Sensores associados a unidades de processamento satildeo cada vez mais utilizados(EVANS 2011) para executar coleta automatizada de dados Esses sistemas satildeo importan-tes pois executam a coleta na maior parte das vezes com mais facilidade e precisatildeo que umhumano e a um custo menor Ainda pode-se considerar os lugares aos quais os humanos

Capiacutetulo 1 Introduccedilatildeo 2

natildeo podem acessar como ambientes com radiaccedilatildeo ou amostragens de alta frequecircncia porexemplo

Dada a importacircncia de sistemas de coleta de dados este trabalho busca apre-sentar formas de gerenciar os dados armazenados em sistemas de coleta de dados voltadospara aplicaccedilotildees cientiacuteficas

Para verificar onde e como um banco de dados para sistemas embarcadospodem auxiliar o processo de coleta de dados eacute necessaacuterio mencionar o papel que outrastecnologias tem nas aplicaccedilotildees de anaacutelise de dados e como elas podem influenciar nautilizaccedilatildeo de bancos de dados em sistemas de coleta

Sistemas de coleta de dados em geral satildeo compostos por sistemas embarcadosdedicados exclusivamente a essa tarefa Podem ter ou natildeo acesso agrave internet A energiapode originar da rede eleacutetrica baterias descartaacuteveis ou alguma combinaccedilatildeo de alimentaccedilatildeoexterna com bateria recarregaacutevel A autonomia pode variar de dias ateacute anos O tipode amostragem pode ser desde baixa frequecircncia e baixa resoluccedilatildeo ateacute amostras de altafrequecircncia e alta resoluccedilatildeo Existem sistemas que natildeo podem atrasar no processo de coletae entrega da informaccedilatildeo e tem que ser extremamente previsiacuteveis (hard real-time ou soft

real-time) Com a diversidade de aplicaccedilotildees e avanccedilos tecnoloacutegicos existem incontaacuteveisaplicaccedilotildees com caracteriacutesticas variadas

Compreendendo que existe uma variedade muito grande de sistemas de medi-ccedilatildeo alguns casos podem tirar proveito de um armazenamento local dos dados de coletagerenciados por um banco de dados

Para imaginar o impacto da conectividade agrave Internet em sistemas de coletaseratildeo nomeadas caracteriacutesticas de conexotildees como velocidade disponibilidade e custoDentro dessas caracteriacutesticas pode-se analisar se o dado coletado consegue chegar aodestino (velocidade eou disponibilidade) e com que custo As atividades de coleta podemnecessitar de uma transmissatildeo ainda em tempo real (aplicaccedilotildees meacutedicas) ou de grandesvolumes de dados (coleta de imagens)

Se natildeo houver algum tipo de conexatildeo disponiacutevel ou sem todas as caracteriacutesticasnecessaacuterias para fazer os dados da coleta chegarem ao destino ainda eacute possiacutevel utilizaroutros meios para transferiacute-los Pode-se periodicamente transportar os dados por unidadesde armazenamento ou coleta-los manualmente com algum equipamento para esse fimPoreacutem esses meios simplesmente natildeo atendem atividades que necessitam de transmissotildeesem tempo real por exemplo Para as aplicaccedilotildees que o armazenamento local dos dadospode substituir ou auxiliar conexatildeo com a Internet para transmitir os dados coletadospode-se utilizar bancos de dados

Capiacutetulo 1 Introduccedilatildeo 3

Outro componente que estaacute presente em sistemas embarcados de coletas au-tomatizadas satildeo unidades de processamento O constante aumento na capacidade deprocessamento aumenta as possibilidades de coleta de dados Dessa forma pode-se adicio-nar um armazenamento local de dados Com os dados armazenados localmente eacute possiacutevelrealizar algum processamento preacutevio ou gerar estatiacutestica eou feedback para melhorar aproacutepria coleta de dados por exemplo Esse crescimento entatildeo aumenta as possibilidadesdo sistema de coleta

A eficiecircncia energeacutetica de sistemas de coleta baseados em sistemas embarcadosestaacute constantemente aumentando Em conjunto com a melhora constante de baterias exis-tem alguns cenaacuterios recorrentes dispositivos que usam muito pouca energia e funcionampor mais tempo (chegando a mais de um ano) ou dispositivos que aproveitam a eficiecircnciaenergeacutetica e aumentam muito a capacidade de processamento Pode-se ter situaccedilotildees derestriccedilatildeo de energia e necessidade de reduzir transmissotildees dos dados de medidoccedilotildees mascom um armazenamento local a atividade pode continuar com as transmissotildees sendo feitasposteriormente

Dependendo do tipo de configuraccedilatildeo de sistema de mediccedilatildeo utilizado o equi-pamento sequer tem um sistema operacional como pode ter recursos semelhantes a compu-tadores pessoais No primeiro caso satildeo equipamentos embarcados extremamente simplesque podem natildeo dispor de recursos para sustentar um SGBD Pela simplicidade da arquite-tura pode natildeo compensar o custo de desenvolvimento e manutenccedilatildeo No segundo casoequipamentos embarcados com mais recursos disponiacuteveis pode-se utilizar um SGBD

Quando a integraccedilatildeo da aplicaccedilatildeo de coleta eacute feita com o SGBD para arma-zenamento de dados locais podemos adicionar caracteriacutesticas como maior seguranccedila edisponibilidade dos dados melhor recuperaccedilatildeo dentre outras vantagens de se utilizar umSGBD

Espera-se apresentar e testar meacutetodos de gerenciamento de dados caracteriacutesti-cos de sensores visando aplicaccedilotildees cientiacuteficas Os objetivos especiacuteficos satildeo

1 Investigar as tendecircncias tecnologias de SGBD

2 Comparar a performance de sistemas embarcados com alguns SGBD investigados

3 Aplicar dois tipos de conjunto de dados para testar os sistemas embarcados e osSGBD

4 Realizar teste de leitura e acesso para avaliar desempenho tanto dos sistemasembarcados como dos SGBD

Capiacutetulo 1 Introduccedilatildeo 4

Este estudo pode contribuir na discussatildeo de como os dados de um sistema decoleta seratildeo gerenciados em funccedilatildeo de recursos disponiacuteveis configuraccedilatildeo do sistema e osresultados que se buscam atingir

Nesta introduccedilatildeo buscou-se descrever a importacircncia da coleta de dados natildeo soacutepara fins cientiacuteficos mas para vaacuterias atividades humanas atualmente Aleacutem disso foramdemonstrados alguns vaacuterios cenaacuterios e tecnologias dos quais alguns o uso de SGBD paraarmazenamento local beneficia a atividade de coleta de dados Por fim os objetivos queorientam esta pesquisa

No capiacutetulo 2 Revisatildeo de Literatura seratildeo levantados conceitos e teoriarelativo agrave SGBDs em geral como eles podem ajudar e sobre os dois utilizados nosexperimentos Dada a ligaccedilatildeo entre sistemas de coleta de dados exposta na introduccedilatildeoseratildeo abordados alguns conceitos relativos agrave sistemas embarcados

No capiacutetulo 3 Materiais e Meacutetodos seratildeo descritos todos os componentesfiacutesicos e de software selecionados para os testes Aleacutem disso seraacute descrito como foramfeitos os testes

No capiacutetulo 4 Estudos de Caso seratildeo apresentados os testes feitos com osrespectivos paracircmetros No capiacutetulo 5 Resultados seratildeo discutidos os resultados dosEstudos de Caso

No capiacutetulo 6 Trabalhos Futuros busca-se levantar partes desta monografiaque podem ser ainda mais explorados

O capiacutetulo seguinte a Conclusatildeo seratildeo revistas as hipoacuteteses iniciais compara-das aos resultados

CAPIacuteTULO 2

FUNDAMENTACcedilAtildeO TEOacuteRICA

A utilizaccedilatildeo de um SGBD (Sistema Gerenciador de Banco de Dados) trazimpactos positivos e negativos decorrentes da combinaccedilatildeo das variaacuteveis de caracteriacutesticasdo SGBD em si de sua arquitetura e da aplicaccedilatildeo

Sistemas de coleta automatizada de dados cientiacuteficos podem ser construiacutedosutilizando Sistemas Embarcados Um sistema embarcado eacute definido pela sua aplicaccedilatildeopois tendem a ser equipamentos com funccedilatildeo bem definida Ao variar a aplicaccedilatildeo mudam-sejunto os recursos e atributos do equipamento

Considerando essas combinaccedilotildees temos cenaacuterios favoraacuteveis ou natildeo a utilizaccedilatildeode um SGBD para gerenciar dados localmente em um sistema de coleta automatizadoNeste capitulo seratildeo apresentados os conceitos necessaacuterios para evidenciar as principaisvariaacuteveis dos elementos envolvidos neste experimento e como as mesmas podem influenciarna aplicaccedilatildeo

Seratildeo abordados conceitos gerais sobre SGBDs dos tipos relacionais e NoSQLEm seguida referecircncias sobre sistemas embarcados dado que o mesmo tem influecircncia nautilizaccedilatildeo ou natildeo de SGBD em uma aplicaccedilatildeo de coleta

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 6

21 Sistemas Gerenciadores de Banco de Dados

Um SGBD eacute um sistema computadorizado para armazenar registros segundo(DATE 2004) Bases de dados estatildeo presentes em computadores de diferentes escalasdesde pequenos sistemas embarcados ateacute clusters de mainframes Eacute normalmente utilizadapara o software que gerencia a base de dados enquanto a denominaccedilatildeo banco de dados oubase de dados se refere ao conjunto de dados gerenciado (DATE 2004)

A automaccedilatildeo do processamento de dados eacute mais antiga que os proacuteprios com-putadores Silberchatz (SUDARSHAN 2004) afirma que cartotildees perfurados inventadospor Herman Hollerith foram usados no comeccedilo do seacuteculo 20 nos Estados Unidos paraarmazenar dados de censo Sistemas mecacircnicos foram usados para processar os cartotildees eapresentar os resultados

Com a evoluccedilatildeo dos meios de armazenamento e processamento entre asdeacutecadas de 50 e 60 fitas magneacuteticas foram usadas para armazenamento de dados Comofitas tem forma de acesso sequencial os dados tinham que ser acessados ou modificadosde forma sequencial

Desde o fim dos anos 60 ateacute os anos 70 houve a disseminaccedilatildeo do uso dodisco riacutegido a utilizaccedilatildeo de vaacuterios discos o uso de sistemas de arquivos e aumento nasvelocidades de transferecircncia por conta de novos materiais e processos de fabricaccedilatildeo Aleacutemdisso o modelo de acesso aleatoacuterio alterou a forma como os dados eram acessados emodificados (SPELIOTIS 2000)

Nos aos 80 foi criado o modelo relacional de dados que foi implementado noSystem R da IBM que desenvolveu teacutecnicas eficientes de construccedilatildeo de bases de dadosrelacionais

No iniacutecio dos anos 90 a linguagem SQL foi escolhida para aplicaccedilotildees desuporte a decisatildeo que fazem muitos acessos ao banco de dados As bases de dadospassaram a ter que oferecer suporte a uma taxa muito alta de processamento de transaccedilotildeesaleacutem de ser mais confiaacuteveis manter disponibilidade 24x7 e suportar dados de interfaceWeb SQL fornece vaacuterios recursos como DDL (Data-Definition Language) para trabalharcom esquemas e relacionamentos por exemplo DML (Data Manipulation Language) parafazer consultas apagar inserir ou modificar tuplas no banco controles de integridadegeraccedilatildeo de visotildees controle transacional permissotildees de acesso e outros

No comeccedilo da deacutecada 2000 houve a adoccedilatildeo do XML em associaccedilatildeo com alinguagem XQuery como nova tecnologia de consulta Nesse periacuteodo tambeacutem houve umcrescimento na utilizaccedilatildeo de SGBDs open-source como o PostgresSQL e o MySQL

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 7

No fim da deacutecada de 2000 houve o crescimento de SGBDs especializados emanalises de dados como os column-store Novos sistemas de armazenamento de dadosdistribuiacutedos foram construiacutedos para ter capacidade para anaacutelise de dados de sites comoAmazon

Com o passar do tempo as mudanccedilas de hardware capacidade de processa-mento e armazenamento velocidades de conexotildees dados disponiacuteveis e necessidadesopor-tunidades influenciaram o desenvolvimento dos SGBDs Verificamos que esse processoteve duas vias o desenvolvimento de recursos gerou espaccedilo para mudanccedilas e as neces-sidades tambeacutem levaram ao desenvolvimento e popularizaccedilatildeo de outras tecnologias deSGBDs

22 SGBDs relacionais

SGBDs relacionais foram desenvolvidos nos anos 70 como uma tecnologiapara armazenar dados estruturados organizados como tabelas com sua proacutepria linguagem ndasho SQL (OUNALLI 2012)

Segundo (SUDARSHAN 2004) um SGBD relacional eacute baseado no modelorelacional e usa uma coleccedilatildeo de tabelas para representar os dados e os relacionamentosentre esses dados O tipo relacional de SGBD eacute hoje em dia o principal utilizado nomercado

Uma base relacional consiste em um conjunto de tabelas As tabelas tecircmvaacuterias colunas e cada coluna tem um uacutenico nome Em geral uma linha representa orelacionamento entre um conjunto de valores e satildeo chamadas de tuplas O esquema deuma base relacional conteacutem os atributos tipos e regras das relaccedilotildees como chaves primaacuteriase estrangeiras

As tuplas podem ter um atributo do tipo chave primaacuteria que eacute a identificaccedilatildeouacutenica e natildeo repetida daquele registro Essas chaves podem ser referenciadas por outrosregistros por meio de um atributo do tipo chave estrangeira

Uma caracteriacutestica dos SGBDs e linguagens relacionais eacute a implementaccedilatildeo daaacutelgebra relacional Ela define um conjunto de operaccedilotildees

1 Seleccedilatildeo - retorna as linhas que satisfazem a condiccedilatildeo de seleccedilatildeo

2 Projeccedilatildeo - retorna atributos especiacuteficos de todas as linhas da entrada da relaccedilatildeoRemove as linhas duplicadas da saiacuteda

3 Natural join - retorna os pares de linhas de duas entradas que tem o mesmo valor emtodos os atributos que tem o mesmo nome

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 8

4 Produto cartesiano - retorna todos os pares de linhas de duas relaccedilotildees de entradasindependente de ter os mesmos nomes ou valores em comum

5 Uniatildeo - retorna a uniatildeo de tuplas de duas relaccedilotildees

Linguagens como o SQL utilizadas para fazer operaccedilotildees nas bases de dadossatildeo baseadas em aacutelgebra relacional que provecirc vaacuterios recursos para gerar as consultas SQLeacute a linguagem relacional mais influente do mercado

221 MySQL

O MySQL eacute um SGBD do tipo relacional que implementa um padratildeo SQLcom algumas extensotildees Foi comprado pela Sun Microsystems em 2008 (WIDENIUS2008) e eacute parte da Oracle que ao comprar a Sun Microsystems comprou todos os seusprodutos tambeacutem O MySQL tem como pontos positivos um suporte bom dos usuaacuterios nosfoacuteruns e grande e bem detalhada documentaccedilatildeo Eacute um SGBD com baixo overhead o quepermite a execuccedilatildeo em computadores com poucos recursos de memoacuteria e processamento

Poreacutem a capacidade de execuccedilatildeo e armazenamento do SGBD seraacute propor-cional agrave arquitetura de hardware e software que o executa O MySQL eacute um SGBDopen-source e o banco de dados dependendo da arquitetura de execuccedilatildeo e mecanismo dearmazenamento pode chegar a ter ateacute 64TB de tamanho (MYSQL 2015)

Eacute escrito em C e C++ e tem compatibilidade com arquiteturas de hardwareSPARC 64 SPARC 32 x86 x86 64 IA64 e ARM Eacute possiacutevel acessar o banco de dadospor meio de uma interface CLI (command-line interface ndash interface de linha de comando)ou pelo ConnectorODBC Existe APIs para C C++ Eiffel Java PHP Python Ruby eTcl

O MySQL disponibiliza algumas opccedilotildees de armazenamento das bases de dados(MYSQL 2015)

1 InnoDB o mecanismo padratildeo de armazenamento do MySQL Eacute compatiacutevel comACID e dispotildeem de recursos como commit e rollback Eacute o mais indicado paraser usado na maioria das aplicaccedilotildees por ter alto desempenho e operar de formatransacional

2 MyISAM eacute uma forma de armazenamento mais simples A trava para escrita emniacutevel de tabela limita o desempenho para operaccedilotildees que envolvem leitura e escrita

Existem outros mecanismos de armazenamento poreacutem ou tem uso muitorestrito ou estatildeo em desuso como CSV Archive Federated e Merge Outro exemplo eacute

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 9

o mecanismo de armazenamento Memory que guarda os dados na memoacuteria RAM e deacordo com o manual estaacute caindo em desuso O mecanismo InnoDB pode ser configuradocom buffers que podem em alguns casos substituir o Memory e ainda com a vantagem depersistir os dados em um armazenamento natildeo volaacutetil

23 SGBDs natildeo relacionais

Com o constante aumento dos dados armazenados e analisados os SGBDsrelacionais estatildeo apresentando vaacuterias limitaccedilotildees As consultas aos dados estatildeo perdendoa eficiecircncia pelo grande volume de dados Esse volume de dados estaacute crescendo cadavez mais por conta da evoluccedilatildeo constante das tecnologias de captura de informaccedilatildeo deprocessamento e da inteligecircncia para dar significado a tudo isso Abramova (ABRAMOVABERNADINO FURTADO 2014) afirma que o NoSQL foi desenvolvido para superaralgumas dessas limitaccedilotildees das bases de dados atuais

Os bancos NoSQL satildeo representados pela natildeo existecircncia de uma estrutura dedados riacutegida comparado ao SQL Eacute possiacutevel ter num mesmo espaccedilo de armazenamentoobjetos com membros diferentes Isso natildeo acontece no SQL onde todos os registros tecircmque seguir o modelo das colunas da tabela onde estatildeo inseridos O conceito de NoSQLfoi usado pela primeira vez em 1998 por Carlo Strozzi (ABRAMOVA BERNADINOFURTADO 2014) para se referir a um banco que natildeo usa interface SQL

Os bancos NoSQL satildeo normalmente baseados no teorema BASE (Basically

Available Soft State and Eventually consistente) (VIEBRANTZ 2012) Os bancos relacio-nais satildeo representados pelo ACID (Atomicidade Consistecircncia Isolamento e Durabilidade)Diferente do ACID o BASE sacrifica um pouco da consistecircncia dos dados para ganhardesempenho Essa troca eacute descrita pelo teorema CAP (Consistency Availability Partition

tolerance) Segundo (BROWNE 2015) teorema CAP diz que somente eacute possiacutevel ter duasdas trecircs caracteriacutesticas ao mesmo tempo

Apesar de natildeo ser possiacutevel consultar dados usando SQL esta abordagempermite faacutecil armazenamento e consulta de dados independente da estrutura do conteuacutedo(ABRAMOVA BERNADINO FURTADO 2014) Bancos NoSQL tambeacutem demonstrammelhor escalabilidade horizontal (EVANS 2011) Isso significa que servidores de baixocusto podem satisfazer as requisiccedilotildees enquanto os custos satildeo reduzidos O gerenciamentodesse grande volume de dados seria difiacutecil porem essas bases de dados satildeo projetadaspara gerenciaacute-los automaticamente recuperar de falhas e consertar o sistema por completo(STOLERU 2010)

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 15: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 1 Introduccedilatildeo 2

natildeo podem acessar como ambientes com radiaccedilatildeo ou amostragens de alta frequecircncia porexemplo

Dada a importacircncia de sistemas de coleta de dados este trabalho busca apre-sentar formas de gerenciar os dados armazenados em sistemas de coleta de dados voltadospara aplicaccedilotildees cientiacuteficas

Para verificar onde e como um banco de dados para sistemas embarcadospodem auxiliar o processo de coleta de dados eacute necessaacuterio mencionar o papel que outrastecnologias tem nas aplicaccedilotildees de anaacutelise de dados e como elas podem influenciar nautilizaccedilatildeo de bancos de dados em sistemas de coleta

Sistemas de coleta de dados em geral satildeo compostos por sistemas embarcadosdedicados exclusivamente a essa tarefa Podem ter ou natildeo acesso agrave internet A energiapode originar da rede eleacutetrica baterias descartaacuteveis ou alguma combinaccedilatildeo de alimentaccedilatildeoexterna com bateria recarregaacutevel A autonomia pode variar de dias ateacute anos O tipode amostragem pode ser desde baixa frequecircncia e baixa resoluccedilatildeo ateacute amostras de altafrequecircncia e alta resoluccedilatildeo Existem sistemas que natildeo podem atrasar no processo de coletae entrega da informaccedilatildeo e tem que ser extremamente previsiacuteveis (hard real-time ou soft

real-time) Com a diversidade de aplicaccedilotildees e avanccedilos tecnoloacutegicos existem incontaacuteveisaplicaccedilotildees com caracteriacutesticas variadas

Compreendendo que existe uma variedade muito grande de sistemas de medi-ccedilatildeo alguns casos podem tirar proveito de um armazenamento local dos dados de coletagerenciados por um banco de dados

Para imaginar o impacto da conectividade agrave Internet em sistemas de coletaseratildeo nomeadas caracteriacutesticas de conexotildees como velocidade disponibilidade e custoDentro dessas caracteriacutesticas pode-se analisar se o dado coletado consegue chegar aodestino (velocidade eou disponibilidade) e com que custo As atividades de coleta podemnecessitar de uma transmissatildeo ainda em tempo real (aplicaccedilotildees meacutedicas) ou de grandesvolumes de dados (coleta de imagens)

Se natildeo houver algum tipo de conexatildeo disponiacutevel ou sem todas as caracteriacutesticasnecessaacuterias para fazer os dados da coleta chegarem ao destino ainda eacute possiacutevel utilizaroutros meios para transferiacute-los Pode-se periodicamente transportar os dados por unidadesde armazenamento ou coleta-los manualmente com algum equipamento para esse fimPoreacutem esses meios simplesmente natildeo atendem atividades que necessitam de transmissotildeesem tempo real por exemplo Para as aplicaccedilotildees que o armazenamento local dos dadospode substituir ou auxiliar conexatildeo com a Internet para transmitir os dados coletadospode-se utilizar bancos de dados

Capiacutetulo 1 Introduccedilatildeo 3

Outro componente que estaacute presente em sistemas embarcados de coletas au-tomatizadas satildeo unidades de processamento O constante aumento na capacidade deprocessamento aumenta as possibilidades de coleta de dados Dessa forma pode-se adicio-nar um armazenamento local de dados Com os dados armazenados localmente eacute possiacutevelrealizar algum processamento preacutevio ou gerar estatiacutestica eou feedback para melhorar aproacutepria coleta de dados por exemplo Esse crescimento entatildeo aumenta as possibilidadesdo sistema de coleta

A eficiecircncia energeacutetica de sistemas de coleta baseados em sistemas embarcadosestaacute constantemente aumentando Em conjunto com a melhora constante de baterias exis-tem alguns cenaacuterios recorrentes dispositivos que usam muito pouca energia e funcionampor mais tempo (chegando a mais de um ano) ou dispositivos que aproveitam a eficiecircnciaenergeacutetica e aumentam muito a capacidade de processamento Pode-se ter situaccedilotildees derestriccedilatildeo de energia e necessidade de reduzir transmissotildees dos dados de medidoccedilotildees mascom um armazenamento local a atividade pode continuar com as transmissotildees sendo feitasposteriormente

Dependendo do tipo de configuraccedilatildeo de sistema de mediccedilatildeo utilizado o equi-pamento sequer tem um sistema operacional como pode ter recursos semelhantes a compu-tadores pessoais No primeiro caso satildeo equipamentos embarcados extremamente simplesque podem natildeo dispor de recursos para sustentar um SGBD Pela simplicidade da arquite-tura pode natildeo compensar o custo de desenvolvimento e manutenccedilatildeo No segundo casoequipamentos embarcados com mais recursos disponiacuteveis pode-se utilizar um SGBD

Quando a integraccedilatildeo da aplicaccedilatildeo de coleta eacute feita com o SGBD para arma-zenamento de dados locais podemos adicionar caracteriacutesticas como maior seguranccedila edisponibilidade dos dados melhor recuperaccedilatildeo dentre outras vantagens de se utilizar umSGBD

Espera-se apresentar e testar meacutetodos de gerenciamento de dados caracteriacutesti-cos de sensores visando aplicaccedilotildees cientiacuteficas Os objetivos especiacuteficos satildeo

1 Investigar as tendecircncias tecnologias de SGBD

2 Comparar a performance de sistemas embarcados com alguns SGBD investigados

3 Aplicar dois tipos de conjunto de dados para testar os sistemas embarcados e osSGBD

4 Realizar teste de leitura e acesso para avaliar desempenho tanto dos sistemasembarcados como dos SGBD

Capiacutetulo 1 Introduccedilatildeo 4

Este estudo pode contribuir na discussatildeo de como os dados de um sistema decoleta seratildeo gerenciados em funccedilatildeo de recursos disponiacuteveis configuraccedilatildeo do sistema e osresultados que se buscam atingir

Nesta introduccedilatildeo buscou-se descrever a importacircncia da coleta de dados natildeo soacutepara fins cientiacuteficos mas para vaacuterias atividades humanas atualmente Aleacutem disso foramdemonstrados alguns vaacuterios cenaacuterios e tecnologias dos quais alguns o uso de SGBD paraarmazenamento local beneficia a atividade de coleta de dados Por fim os objetivos queorientam esta pesquisa

No capiacutetulo 2 Revisatildeo de Literatura seratildeo levantados conceitos e teoriarelativo agrave SGBDs em geral como eles podem ajudar e sobre os dois utilizados nosexperimentos Dada a ligaccedilatildeo entre sistemas de coleta de dados exposta na introduccedilatildeoseratildeo abordados alguns conceitos relativos agrave sistemas embarcados

No capiacutetulo 3 Materiais e Meacutetodos seratildeo descritos todos os componentesfiacutesicos e de software selecionados para os testes Aleacutem disso seraacute descrito como foramfeitos os testes

No capiacutetulo 4 Estudos de Caso seratildeo apresentados os testes feitos com osrespectivos paracircmetros No capiacutetulo 5 Resultados seratildeo discutidos os resultados dosEstudos de Caso

No capiacutetulo 6 Trabalhos Futuros busca-se levantar partes desta monografiaque podem ser ainda mais explorados

O capiacutetulo seguinte a Conclusatildeo seratildeo revistas as hipoacuteteses iniciais compara-das aos resultados

CAPIacuteTULO 2

FUNDAMENTACcedilAtildeO TEOacuteRICA

A utilizaccedilatildeo de um SGBD (Sistema Gerenciador de Banco de Dados) trazimpactos positivos e negativos decorrentes da combinaccedilatildeo das variaacuteveis de caracteriacutesticasdo SGBD em si de sua arquitetura e da aplicaccedilatildeo

Sistemas de coleta automatizada de dados cientiacuteficos podem ser construiacutedosutilizando Sistemas Embarcados Um sistema embarcado eacute definido pela sua aplicaccedilatildeopois tendem a ser equipamentos com funccedilatildeo bem definida Ao variar a aplicaccedilatildeo mudam-sejunto os recursos e atributos do equipamento

Considerando essas combinaccedilotildees temos cenaacuterios favoraacuteveis ou natildeo a utilizaccedilatildeode um SGBD para gerenciar dados localmente em um sistema de coleta automatizadoNeste capitulo seratildeo apresentados os conceitos necessaacuterios para evidenciar as principaisvariaacuteveis dos elementos envolvidos neste experimento e como as mesmas podem influenciarna aplicaccedilatildeo

Seratildeo abordados conceitos gerais sobre SGBDs dos tipos relacionais e NoSQLEm seguida referecircncias sobre sistemas embarcados dado que o mesmo tem influecircncia nautilizaccedilatildeo ou natildeo de SGBD em uma aplicaccedilatildeo de coleta

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 6

21 Sistemas Gerenciadores de Banco de Dados

Um SGBD eacute um sistema computadorizado para armazenar registros segundo(DATE 2004) Bases de dados estatildeo presentes em computadores de diferentes escalasdesde pequenos sistemas embarcados ateacute clusters de mainframes Eacute normalmente utilizadapara o software que gerencia a base de dados enquanto a denominaccedilatildeo banco de dados oubase de dados se refere ao conjunto de dados gerenciado (DATE 2004)

A automaccedilatildeo do processamento de dados eacute mais antiga que os proacuteprios com-putadores Silberchatz (SUDARSHAN 2004) afirma que cartotildees perfurados inventadospor Herman Hollerith foram usados no comeccedilo do seacuteculo 20 nos Estados Unidos paraarmazenar dados de censo Sistemas mecacircnicos foram usados para processar os cartotildees eapresentar os resultados

Com a evoluccedilatildeo dos meios de armazenamento e processamento entre asdeacutecadas de 50 e 60 fitas magneacuteticas foram usadas para armazenamento de dados Comofitas tem forma de acesso sequencial os dados tinham que ser acessados ou modificadosde forma sequencial

Desde o fim dos anos 60 ateacute os anos 70 houve a disseminaccedilatildeo do uso dodisco riacutegido a utilizaccedilatildeo de vaacuterios discos o uso de sistemas de arquivos e aumento nasvelocidades de transferecircncia por conta de novos materiais e processos de fabricaccedilatildeo Aleacutemdisso o modelo de acesso aleatoacuterio alterou a forma como os dados eram acessados emodificados (SPELIOTIS 2000)

Nos aos 80 foi criado o modelo relacional de dados que foi implementado noSystem R da IBM que desenvolveu teacutecnicas eficientes de construccedilatildeo de bases de dadosrelacionais

No iniacutecio dos anos 90 a linguagem SQL foi escolhida para aplicaccedilotildees desuporte a decisatildeo que fazem muitos acessos ao banco de dados As bases de dadospassaram a ter que oferecer suporte a uma taxa muito alta de processamento de transaccedilotildeesaleacutem de ser mais confiaacuteveis manter disponibilidade 24x7 e suportar dados de interfaceWeb SQL fornece vaacuterios recursos como DDL (Data-Definition Language) para trabalharcom esquemas e relacionamentos por exemplo DML (Data Manipulation Language) parafazer consultas apagar inserir ou modificar tuplas no banco controles de integridadegeraccedilatildeo de visotildees controle transacional permissotildees de acesso e outros

No comeccedilo da deacutecada 2000 houve a adoccedilatildeo do XML em associaccedilatildeo com alinguagem XQuery como nova tecnologia de consulta Nesse periacuteodo tambeacutem houve umcrescimento na utilizaccedilatildeo de SGBDs open-source como o PostgresSQL e o MySQL

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 7

No fim da deacutecada de 2000 houve o crescimento de SGBDs especializados emanalises de dados como os column-store Novos sistemas de armazenamento de dadosdistribuiacutedos foram construiacutedos para ter capacidade para anaacutelise de dados de sites comoAmazon

Com o passar do tempo as mudanccedilas de hardware capacidade de processa-mento e armazenamento velocidades de conexotildees dados disponiacuteveis e necessidadesopor-tunidades influenciaram o desenvolvimento dos SGBDs Verificamos que esse processoteve duas vias o desenvolvimento de recursos gerou espaccedilo para mudanccedilas e as neces-sidades tambeacutem levaram ao desenvolvimento e popularizaccedilatildeo de outras tecnologias deSGBDs

22 SGBDs relacionais

SGBDs relacionais foram desenvolvidos nos anos 70 como uma tecnologiapara armazenar dados estruturados organizados como tabelas com sua proacutepria linguagem ndasho SQL (OUNALLI 2012)

Segundo (SUDARSHAN 2004) um SGBD relacional eacute baseado no modelorelacional e usa uma coleccedilatildeo de tabelas para representar os dados e os relacionamentosentre esses dados O tipo relacional de SGBD eacute hoje em dia o principal utilizado nomercado

Uma base relacional consiste em um conjunto de tabelas As tabelas tecircmvaacuterias colunas e cada coluna tem um uacutenico nome Em geral uma linha representa orelacionamento entre um conjunto de valores e satildeo chamadas de tuplas O esquema deuma base relacional conteacutem os atributos tipos e regras das relaccedilotildees como chaves primaacuteriase estrangeiras

As tuplas podem ter um atributo do tipo chave primaacuteria que eacute a identificaccedilatildeouacutenica e natildeo repetida daquele registro Essas chaves podem ser referenciadas por outrosregistros por meio de um atributo do tipo chave estrangeira

Uma caracteriacutestica dos SGBDs e linguagens relacionais eacute a implementaccedilatildeo daaacutelgebra relacional Ela define um conjunto de operaccedilotildees

1 Seleccedilatildeo - retorna as linhas que satisfazem a condiccedilatildeo de seleccedilatildeo

2 Projeccedilatildeo - retorna atributos especiacuteficos de todas as linhas da entrada da relaccedilatildeoRemove as linhas duplicadas da saiacuteda

3 Natural join - retorna os pares de linhas de duas entradas que tem o mesmo valor emtodos os atributos que tem o mesmo nome

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 8

4 Produto cartesiano - retorna todos os pares de linhas de duas relaccedilotildees de entradasindependente de ter os mesmos nomes ou valores em comum

5 Uniatildeo - retorna a uniatildeo de tuplas de duas relaccedilotildees

Linguagens como o SQL utilizadas para fazer operaccedilotildees nas bases de dadossatildeo baseadas em aacutelgebra relacional que provecirc vaacuterios recursos para gerar as consultas SQLeacute a linguagem relacional mais influente do mercado

221 MySQL

O MySQL eacute um SGBD do tipo relacional que implementa um padratildeo SQLcom algumas extensotildees Foi comprado pela Sun Microsystems em 2008 (WIDENIUS2008) e eacute parte da Oracle que ao comprar a Sun Microsystems comprou todos os seusprodutos tambeacutem O MySQL tem como pontos positivos um suporte bom dos usuaacuterios nosfoacuteruns e grande e bem detalhada documentaccedilatildeo Eacute um SGBD com baixo overhead o quepermite a execuccedilatildeo em computadores com poucos recursos de memoacuteria e processamento

Poreacutem a capacidade de execuccedilatildeo e armazenamento do SGBD seraacute propor-cional agrave arquitetura de hardware e software que o executa O MySQL eacute um SGBDopen-source e o banco de dados dependendo da arquitetura de execuccedilatildeo e mecanismo dearmazenamento pode chegar a ter ateacute 64TB de tamanho (MYSQL 2015)

Eacute escrito em C e C++ e tem compatibilidade com arquiteturas de hardwareSPARC 64 SPARC 32 x86 x86 64 IA64 e ARM Eacute possiacutevel acessar o banco de dadospor meio de uma interface CLI (command-line interface ndash interface de linha de comando)ou pelo ConnectorODBC Existe APIs para C C++ Eiffel Java PHP Python Ruby eTcl

O MySQL disponibiliza algumas opccedilotildees de armazenamento das bases de dados(MYSQL 2015)

1 InnoDB o mecanismo padratildeo de armazenamento do MySQL Eacute compatiacutevel comACID e dispotildeem de recursos como commit e rollback Eacute o mais indicado paraser usado na maioria das aplicaccedilotildees por ter alto desempenho e operar de formatransacional

2 MyISAM eacute uma forma de armazenamento mais simples A trava para escrita emniacutevel de tabela limita o desempenho para operaccedilotildees que envolvem leitura e escrita

Existem outros mecanismos de armazenamento poreacutem ou tem uso muitorestrito ou estatildeo em desuso como CSV Archive Federated e Merge Outro exemplo eacute

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 9

o mecanismo de armazenamento Memory que guarda os dados na memoacuteria RAM e deacordo com o manual estaacute caindo em desuso O mecanismo InnoDB pode ser configuradocom buffers que podem em alguns casos substituir o Memory e ainda com a vantagem depersistir os dados em um armazenamento natildeo volaacutetil

23 SGBDs natildeo relacionais

Com o constante aumento dos dados armazenados e analisados os SGBDsrelacionais estatildeo apresentando vaacuterias limitaccedilotildees As consultas aos dados estatildeo perdendoa eficiecircncia pelo grande volume de dados Esse volume de dados estaacute crescendo cadavez mais por conta da evoluccedilatildeo constante das tecnologias de captura de informaccedilatildeo deprocessamento e da inteligecircncia para dar significado a tudo isso Abramova (ABRAMOVABERNADINO FURTADO 2014) afirma que o NoSQL foi desenvolvido para superaralgumas dessas limitaccedilotildees das bases de dados atuais

Os bancos NoSQL satildeo representados pela natildeo existecircncia de uma estrutura dedados riacutegida comparado ao SQL Eacute possiacutevel ter num mesmo espaccedilo de armazenamentoobjetos com membros diferentes Isso natildeo acontece no SQL onde todos os registros tecircmque seguir o modelo das colunas da tabela onde estatildeo inseridos O conceito de NoSQLfoi usado pela primeira vez em 1998 por Carlo Strozzi (ABRAMOVA BERNADINOFURTADO 2014) para se referir a um banco que natildeo usa interface SQL

Os bancos NoSQL satildeo normalmente baseados no teorema BASE (Basically

Available Soft State and Eventually consistente) (VIEBRANTZ 2012) Os bancos relacio-nais satildeo representados pelo ACID (Atomicidade Consistecircncia Isolamento e Durabilidade)Diferente do ACID o BASE sacrifica um pouco da consistecircncia dos dados para ganhardesempenho Essa troca eacute descrita pelo teorema CAP (Consistency Availability Partition

tolerance) Segundo (BROWNE 2015) teorema CAP diz que somente eacute possiacutevel ter duasdas trecircs caracteriacutesticas ao mesmo tempo

Apesar de natildeo ser possiacutevel consultar dados usando SQL esta abordagempermite faacutecil armazenamento e consulta de dados independente da estrutura do conteuacutedo(ABRAMOVA BERNADINO FURTADO 2014) Bancos NoSQL tambeacutem demonstrammelhor escalabilidade horizontal (EVANS 2011) Isso significa que servidores de baixocusto podem satisfazer as requisiccedilotildees enquanto os custos satildeo reduzidos O gerenciamentodesse grande volume de dados seria difiacutecil porem essas bases de dados satildeo projetadaspara gerenciaacute-los automaticamente recuperar de falhas e consertar o sistema por completo(STOLERU 2010)

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 16: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 1 Introduccedilatildeo 3

Outro componente que estaacute presente em sistemas embarcados de coletas au-tomatizadas satildeo unidades de processamento O constante aumento na capacidade deprocessamento aumenta as possibilidades de coleta de dados Dessa forma pode-se adicio-nar um armazenamento local de dados Com os dados armazenados localmente eacute possiacutevelrealizar algum processamento preacutevio ou gerar estatiacutestica eou feedback para melhorar aproacutepria coleta de dados por exemplo Esse crescimento entatildeo aumenta as possibilidadesdo sistema de coleta

A eficiecircncia energeacutetica de sistemas de coleta baseados em sistemas embarcadosestaacute constantemente aumentando Em conjunto com a melhora constante de baterias exis-tem alguns cenaacuterios recorrentes dispositivos que usam muito pouca energia e funcionampor mais tempo (chegando a mais de um ano) ou dispositivos que aproveitam a eficiecircnciaenergeacutetica e aumentam muito a capacidade de processamento Pode-se ter situaccedilotildees derestriccedilatildeo de energia e necessidade de reduzir transmissotildees dos dados de medidoccedilotildees mascom um armazenamento local a atividade pode continuar com as transmissotildees sendo feitasposteriormente

Dependendo do tipo de configuraccedilatildeo de sistema de mediccedilatildeo utilizado o equi-pamento sequer tem um sistema operacional como pode ter recursos semelhantes a compu-tadores pessoais No primeiro caso satildeo equipamentos embarcados extremamente simplesque podem natildeo dispor de recursos para sustentar um SGBD Pela simplicidade da arquite-tura pode natildeo compensar o custo de desenvolvimento e manutenccedilatildeo No segundo casoequipamentos embarcados com mais recursos disponiacuteveis pode-se utilizar um SGBD

Quando a integraccedilatildeo da aplicaccedilatildeo de coleta eacute feita com o SGBD para arma-zenamento de dados locais podemos adicionar caracteriacutesticas como maior seguranccedila edisponibilidade dos dados melhor recuperaccedilatildeo dentre outras vantagens de se utilizar umSGBD

Espera-se apresentar e testar meacutetodos de gerenciamento de dados caracteriacutesti-cos de sensores visando aplicaccedilotildees cientiacuteficas Os objetivos especiacuteficos satildeo

1 Investigar as tendecircncias tecnologias de SGBD

2 Comparar a performance de sistemas embarcados com alguns SGBD investigados

3 Aplicar dois tipos de conjunto de dados para testar os sistemas embarcados e osSGBD

4 Realizar teste de leitura e acesso para avaliar desempenho tanto dos sistemasembarcados como dos SGBD

Capiacutetulo 1 Introduccedilatildeo 4

Este estudo pode contribuir na discussatildeo de como os dados de um sistema decoleta seratildeo gerenciados em funccedilatildeo de recursos disponiacuteveis configuraccedilatildeo do sistema e osresultados que se buscam atingir

Nesta introduccedilatildeo buscou-se descrever a importacircncia da coleta de dados natildeo soacutepara fins cientiacuteficos mas para vaacuterias atividades humanas atualmente Aleacutem disso foramdemonstrados alguns vaacuterios cenaacuterios e tecnologias dos quais alguns o uso de SGBD paraarmazenamento local beneficia a atividade de coleta de dados Por fim os objetivos queorientam esta pesquisa

No capiacutetulo 2 Revisatildeo de Literatura seratildeo levantados conceitos e teoriarelativo agrave SGBDs em geral como eles podem ajudar e sobre os dois utilizados nosexperimentos Dada a ligaccedilatildeo entre sistemas de coleta de dados exposta na introduccedilatildeoseratildeo abordados alguns conceitos relativos agrave sistemas embarcados

No capiacutetulo 3 Materiais e Meacutetodos seratildeo descritos todos os componentesfiacutesicos e de software selecionados para os testes Aleacutem disso seraacute descrito como foramfeitos os testes

No capiacutetulo 4 Estudos de Caso seratildeo apresentados os testes feitos com osrespectivos paracircmetros No capiacutetulo 5 Resultados seratildeo discutidos os resultados dosEstudos de Caso

No capiacutetulo 6 Trabalhos Futuros busca-se levantar partes desta monografiaque podem ser ainda mais explorados

O capiacutetulo seguinte a Conclusatildeo seratildeo revistas as hipoacuteteses iniciais compara-das aos resultados

CAPIacuteTULO 2

FUNDAMENTACcedilAtildeO TEOacuteRICA

A utilizaccedilatildeo de um SGBD (Sistema Gerenciador de Banco de Dados) trazimpactos positivos e negativos decorrentes da combinaccedilatildeo das variaacuteveis de caracteriacutesticasdo SGBD em si de sua arquitetura e da aplicaccedilatildeo

Sistemas de coleta automatizada de dados cientiacuteficos podem ser construiacutedosutilizando Sistemas Embarcados Um sistema embarcado eacute definido pela sua aplicaccedilatildeopois tendem a ser equipamentos com funccedilatildeo bem definida Ao variar a aplicaccedilatildeo mudam-sejunto os recursos e atributos do equipamento

Considerando essas combinaccedilotildees temos cenaacuterios favoraacuteveis ou natildeo a utilizaccedilatildeode um SGBD para gerenciar dados localmente em um sistema de coleta automatizadoNeste capitulo seratildeo apresentados os conceitos necessaacuterios para evidenciar as principaisvariaacuteveis dos elementos envolvidos neste experimento e como as mesmas podem influenciarna aplicaccedilatildeo

Seratildeo abordados conceitos gerais sobre SGBDs dos tipos relacionais e NoSQLEm seguida referecircncias sobre sistemas embarcados dado que o mesmo tem influecircncia nautilizaccedilatildeo ou natildeo de SGBD em uma aplicaccedilatildeo de coleta

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 6

21 Sistemas Gerenciadores de Banco de Dados

Um SGBD eacute um sistema computadorizado para armazenar registros segundo(DATE 2004) Bases de dados estatildeo presentes em computadores de diferentes escalasdesde pequenos sistemas embarcados ateacute clusters de mainframes Eacute normalmente utilizadapara o software que gerencia a base de dados enquanto a denominaccedilatildeo banco de dados oubase de dados se refere ao conjunto de dados gerenciado (DATE 2004)

A automaccedilatildeo do processamento de dados eacute mais antiga que os proacuteprios com-putadores Silberchatz (SUDARSHAN 2004) afirma que cartotildees perfurados inventadospor Herman Hollerith foram usados no comeccedilo do seacuteculo 20 nos Estados Unidos paraarmazenar dados de censo Sistemas mecacircnicos foram usados para processar os cartotildees eapresentar os resultados

Com a evoluccedilatildeo dos meios de armazenamento e processamento entre asdeacutecadas de 50 e 60 fitas magneacuteticas foram usadas para armazenamento de dados Comofitas tem forma de acesso sequencial os dados tinham que ser acessados ou modificadosde forma sequencial

Desde o fim dos anos 60 ateacute os anos 70 houve a disseminaccedilatildeo do uso dodisco riacutegido a utilizaccedilatildeo de vaacuterios discos o uso de sistemas de arquivos e aumento nasvelocidades de transferecircncia por conta de novos materiais e processos de fabricaccedilatildeo Aleacutemdisso o modelo de acesso aleatoacuterio alterou a forma como os dados eram acessados emodificados (SPELIOTIS 2000)

Nos aos 80 foi criado o modelo relacional de dados que foi implementado noSystem R da IBM que desenvolveu teacutecnicas eficientes de construccedilatildeo de bases de dadosrelacionais

No iniacutecio dos anos 90 a linguagem SQL foi escolhida para aplicaccedilotildees desuporte a decisatildeo que fazem muitos acessos ao banco de dados As bases de dadospassaram a ter que oferecer suporte a uma taxa muito alta de processamento de transaccedilotildeesaleacutem de ser mais confiaacuteveis manter disponibilidade 24x7 e suportar dados de interfaceWeb SQL fornece vaacuterios recursos como DDL (Data-Definition Language) para trabalharcom esquemas e relacionamentos por exemplo DML (Data Manipulation Language) parafazer consultas apagar inserir ou modificar tuplas no banco controles de integridadegeraccedilatildeo de visotildees controle transacional permissotildees de acesso e outros

No comeccedilo da deacutecada 2000 houve a adoccedilatildeo do XML em associaccedilatildeo com alinguagem XQuery como nova tecnologia de consulta Nesse periacuteodo tambeacutem houve umcrescimento na utilizaccedilatildeo de SGBDs open-source como o PostgresSQL e o MySQL

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 7

No fim da deacutecada de 2000 houve o crescimento de SGBDs especializados emanalises de dados como os column-store Novos sistemas de armazenamento de dadosdistribuiacutedos foram construiacutedos para ter capacidade para anaacutelise de dados de sites comoAmazon

Com o passar do tempo as mudanccedilas de hardware capacidade de processa-mento e armazenamento velocidades de conexotildees dados disponiacuteveis e necessidadesopor-tunidades influenciaram o desenvolvimento dos SGBDs Verificamos que esse processoteve duas vias o desenvolvimento de recursos gerou espaccedilo para mudanccedilas e as neces-sidades tambeacutem levaram ao desenvolvimento e popularizaccedilatildeo de outras tecnologias deSGBDs

22 SGBDs relacionais

SGBDs relacionais foram desenvolvidos nos anos 70 como uma tecnologiapara armazenar dados estruturados organizados como tabelas com sua proacutepria linguagem ndasho SQL (OUNALLI 2012)

Segundo (SUDARSHAN 2004) um SGBD relacional eacute baseado no modelorelacional e usa uma coleccedilatildeo de tabelas para representar os dados e os relacionamentosentre esses dados O tipo relacional de SGBD eacute hoje em dia o principal utilizado nomercado

Uma base relacional consiste em um conjunto de tabelas As tabelas tecircmvaacuterias colunas e cada coluna tem um uacutenico nome Em geral uma linha representa orelacionamento entre um conjunto de valores e satildeo chamadas de tuplas O esquema deuma base relacional conteacutem os atributos tipos e regras das relaccedilotildees como chaves primaacuteriase estrangeiras

As tuplas podem ter um atributo do tipo chave primaacuteria que eacute a identificaccedilatildeouacutenica e natildeo repetida daquele registro Essas chaves podem ser referenciadas por outrosregistros por meio de um atributo do tipo chave estrangeira

Uma caracteriacutestica dos SGBDs e linguagens relacionais eacute a implementaccedilatildeo daaacutelgebra relacional Ela define um conjunto de operaccedilotildees

1 Seleccedilatildeo - retorna as linhas que satisfazem a condiccedilatildeo de seleccedilatildeo

2 Projeccedilatildeo - retorna atributos especiacuteficos de todas as linhas da entrada da relaccedilatildeoRemove as linhas duplicadas da saiacuteda

3 Natural join - retorna os pares de linhas de duas entradas que tem o mesmo valor emtodos os atributos que tem o mesmo nome

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 8

4 Produto cartesiano - retorna todos os pares de linhas de duas relaccedilotildees de entradasindependente de ter os mesmos nomes ou valores em comum

5 Uniatildeo - retorna a uniatildeo de tuplas de duas relaccedilotildees

Linguagens como o SQL utilizadas para fazer operaccedilotildees nas bases de dadossatildeo baseadas em aacutelgebra relacional que provecirc vaacuterios recursos para gerar as consultas SQLeacute a linguagem relacional mais influente do mercado

221 MySQL

O MySQL eacute um SGBD do tipo relacional que implementa um padratildeo SQLcom algumas extensotildees Foi comprado pela Sun Microsystems em 2008 (WIDENIUS2008) e eacute parte da Oracle que ao comprar a Sun Microsystems comprou todos os seusprodutos tambeacutem O MySQL tem como pontos positivos um suporte bom dos usuaacuterios nosfoacuteruns e grande e bem detalhada documentaccedilatildeo Eacute um SGBD com baixo overhead o quepermite a execuccedilatildeo em computadores com poucos recursos de memoacuteria e processamento

Poreacutem a capacidade de execuccedilatildeo e armazenamento do SGBD seraacute propor-cional agrave arquitetura de hardware e software que o executa O MySQL eacute um SGBDopen-source e o banco de dados dependendo da arquitetura de execuccedilatildeo e mecanismo dearmazenamento pode chegar a ter ateacute 64TB de tamanho (MYSQL 2015)

Eacute escrito em C e C++ e tem compatibilidade com arquiteturas de hardwareSPARC 64 SPARC 32 x86 x86 64 IA64 e ARM Eacute possiacutevel acessar o banco de dadospor meio de uma interface CLI (command-line interface ndash interface de linha de comando)ou pelo ConnectorODBC Existe APIs para C C++ Eiffel Java PHP Python Ruby eTcl

O MySQL disponibiliza algumas opccedilotildees de armazenamento das bases de dados(MYSQL 2015)

1 InnoDB o mecanismo padratildeo de armazenamento do MySQL Eacute compatiacutevel comACID e dispotildeem de recursos como commit e rollback Eacute o mais indicado paraser usado na maioria das aplicaccedilotildees por ter alto desempenho e operar de formatransacional

2 MyISAM eacute uma forma de armazenamento mais simples A trava para escrita emniacutevel de tabela limita o desempenho para operaccedilotildees que envolvem leitura e escrita

Existem outros mecanismos de armazenamento poreacutem ou tem uso muitorestrito ou estatildeo em desuso como CSV Archive Federated e Merge Outro exemplo eacute

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 9

o mecanismo de armazenamento Memory que guarda os dados na memoacuteria RAM e deacordo com o manual estaacute caindo em desuso O mecanismo InnoDB pode ser configuradocom buffers que podem em alguns casos substituir o Memory e ainda com a vantagem depersistir os dados em um armazenamento natildeo volaacutetil

23 SGBDs natildeo relacionais

Com o constante aumento dos dados armazenados e analisados os SGBDsrelacionais estatildeo apresentando vaacuterias limitaccedilotildees As consultas aos dados estatildeo perdendoa eficiecircncia pelo grande volume de dados Esse volume de dados estaacute crescendo cadavez mais por conta da evoluccedilatildeo constante das tecnologias de captura de informaccedilatildeo deprocessamento e da inteligecircncia para dar significado a tudo isso Abramova (ABRAMOVABERNADINO FURTADO 2014) afirma que o NoSQL foi desenvolvido para superaralgumas dessas limitaccedilotildees das bases de dados atuais

Os bancos NoSQL satildeo representados pela natildeo existecircncia de uma estrutura dedados riacutegida comparado ao SQL Eacute possiacutevel ter num mesmo espaccedilo de armazenamentoobjetos com membros diferentes Isso natildeo acontece no SQL onde todos os registros tecircmque seguir o modelo das colunas da tabela onde estatildeo inseridos O conceito de NoSQLfoi usado pela primeira vez em 1998 por Carlo Strozzi (ABRAMOVA BERNADINOFURTADO 2014) para se referir a um banco que natildeo usa interface SQL

Os bancos NoSQL satildeo normalmente baseados no teorema BASE (Basically

Available Soft State and Eventually consistente) (VIEBRANTZ 2012) Os bancos relacio-nais satildeo representados pelo ACID (Atomicidade Consistecircncia Isolamento e Durabilidade)Diferente do ACID o BASE sacrifica um pouco da consistecircncia dos dados para ganhardesempenho Essa troca eacute descrita pelo teorema CAP (Consistency Availability Partition

tolerance) Segundo (BROWNE 2015) teorema CAP diz que somente eacute possiacutevel ter duasdas trecircs caracteriacutesticas ao mesmo tempo

Apesar de natildeo ser possiacutevel consultar dados usando SQL esta abordagempermite faacutecil armazenamento e consulta de dados independente da estrutura do conteuacutedo(ABRAMOVA BERNADINO FURTADO 2014) Bancos NoSQL tambeacutem demonstrammelhor escalabilidade horizontal (EVANS 2011) Isso significa que servidores de baixocusto podem satisfazer as requisiccedilotildees enquanto os custos satildeo reduzidos O gerenciamentodesse grande volume de dados seria difiacutecil porem essas bases de dados satildeo projetadaspara gerenciaacute-los automaticamente recuperar de falhas e consertar o sistema por completo(STOLERU 2010)

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 17: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 1 Introduccedilatildeo 4

Este estudo pode contribuir na discussatildeo de como os dados de um sistema decoleta seratildeo gerenciados em funccedilatildeo de recursos disponiacuteveis configuraccedilatildeo do sistema e osresultados que se buscam atingir

Nesta introduccedilatildeo buscou-se descrever a importacircncia da coleta de dados natildeo soacutepara fins cientiacuteficos mas para vaacuterias atividades humanas atualmente Aleacutem disso foramdemonstrados alguns vaacuterios cenaacuterios e tecnologias dos quais alguns o uso de SGBD paraarmazenamento local beneficia a atividade de coleta de dados Por fim os objetivos queorientam esta pesquisa

No capiacutetulo 2 Revisatildeo de Literatura seratildeo levantados conceitos e teoriarelativo agrave SGBDs em geral como eles podem ajudar e sobre os dois utilizados nosexperimentos Dada a ligaccedilatildeo entre sistemas de coleta de dados exposta na introduccedilatildeoseratildeo abordados alguns conceitos relativos agrave sistemas embarcados

No capiacutetulo 3 Materiais e Meacutetodos seratildeo descritos todos os componentesfiacutesicos e de software selecionados para os testes Aleacutem disso seraacute descrito como foramfeitos os testes

No capiacutetulo 4 Estudos de Caso seratildeo apresentados os testes feitos com osrespectivos paracircmetros No capiacutetulo 5 Resultados seratildeo discutidos os resultados dosEstudos de Caso

No capiacutetulo 6 Trabalhos Futuros busca-se levantar partes desta monografiaque podem ser ainda mais explorados

O capiacutetulo seguinte a Conclusatildeo seratildeo revistas as hipoacuteteses iniciais compara-das aos resultados

CAPIacuteTULO 2

FUNDAMENTACcedilAtildeO TEOacuteRICA

A utilizaccedilatildeo de um SGBD (Sistema Gerenciador de Banco de Dados) trazimpactos positivos e negativos decorrentes da combinaccedilatildeo das variaacuteveis de caracteriacutesticasdo SGBD em si de sua arquitetura e da aplicaccedilatildeo

Sistemas de coleta automatizada de dados cientiacuteficos podem ser construiacutedosutilizando Sistemas Embarcados Um sistema embarcado eacute definido pela sua aplicaccedilatildeopois tendem a ser equipamentos com funccedilatildeo bem definida Ao variar a aplicaccedilatildeo mudam-sejunto os recursos e atributos do equipamento

Considerando essas combinaccedilotildees temos cenaacuterios favoraacuteveis ou natildeo a utilizaccedilatildeode um SGBD para gerenciar dados localmente em um sistema de coleta automatizadoNeste capitulo seratildeo apresentados os conceitos necessaacuterios para evidenciar as principaisvariaacuteveis dos elementos envolvidos neste experimento e como as mesmas podem influenciarna aplicaccedilatildeo

Seratildeo abordados conceitos gerais sobre SGBDs dos tipos relacionais e NoSQLEm seguida referecircncias sobre sistemas embarcados dado que o mesmo tem influecircncia nautilizaccedilatildeo ou natildeo de SGBD em uma aplicaccedilatildeo de coleta

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 6

21 Sistemas Gerenciadores de Banco de Dados

Um SGBD eacute um sistema computadorizado para armazenar registros segundo(DATE 2004) Bases de dados estatildeo presentes em computadores de diferentes escalasdesde pequenos sistemas embarcados ateacute clusters de mainframes Eacute normalmente utilizadapara o software que gerencia a base de dados enquanto a denominaccedilatildeo banco de dados oubase de dados se refere ao conjunto de dados gerenciado (DATE 2004)

A automaccedilatildeo do processamento de dados eacute mais antiga que os proacuteprios com-putadores Silberchatz (SUDARSHAN 2004) afirma que cartotildees perfurados inventadospor Herman Hollerith foram usados no comeccedilo do seacuteculo 20 nos Estados Unidos paraarmazenar dados de censo Sistemas mecacircnicos foram usados para processar os cartotildees eapresentar os resultados

Com a evoluccedilatildeo dos meios de armazenamento e processamento entre asdeacutecadas de 50 e 60 fitas magneacuteticas foram usadas para armazenamento de dados Comofitas tem forma de acesso sequencial os dados tinham que ser acessados ou modificadosde forma sequencial

Desde o fim dos anos 60 ateacute os anos 70 houve a disseminaccedilatildeo do uso dodisco riacutegido a utilizaccedilatildeo de vaacuterios discos o uso de sistemas de arquivos e aumento nasvelocidades de transferecircncia por conta de novos materiais e processos de fabricaccedilatildeo Aleacutemdisso o modelo de acesso aleatoacuterio alterou a forma como os dados eram acessados emodificados (SPELIOTIS 2000)

Nos aos 80 foi criado o modelo relacional de dados que foi implementado noSystem R da IBM que desenvolveu teacutecnicas eficientes de construccedilatildeo de bases de dadosrelacionais

No iniacutecio dos anos 90 a linguagem SQL foi escolhida para aplicaccedilotildees desuporte a decisatildeo que fazem muitos acessos ao banco de dados As bases de dadospassaram a ter que oferecer suporte a uma taxa muito alta de processamento de transaccedilotildeesaleacutem de ser mais confiaacuteveis manter disponibilidade 24x7 e suportar dados de interfaceWeb SQL fornece vaacuterios recursos como DDL (Data-Definition Language) para trabalharcom esquemas e relacionamentos por exemplo DML (Data Manipulation Language) parafazer consultas apagar inserir ou modificar tuplas no banco controles de integridadegeraccedilatildeo de visotildees controle transacional permissotildees de acesso e outros

No comeccedilo da deacutecada 2000 houve a adoccedilatildeo do XML em associaccedilatildeo com alinguagem XQuery como nova tecnologia de consulta Nesse periacuteodo tambeacutem houve umcrescimento na utilizaccedilatildeo de SGBDs open-source como o PostgresSQL e o MySQL

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 7

No fim da deacutecada de 2000 houve o crescimento de SGBDs especializados emanalises de dados como os column-store Novos sistemas de armazenamento de dadosdistribuiacutedos foram construiacutedos para ter capacidade para anaacutelise de dados de sites comoAmazon

Com o passar do tempo as mudanccedilas de hardware capacidade de processa-mento e armazenamento velocidades de conexotildees dados disponiacuteveis e necessidadesopor-tunidades influenciaram o desenvolvimento dos SGBDs Verificamos que esse processoteve duas vias o desenvolvimento de recursos gerou espaccedilo para mudanccedilas e as neces-sidades tambeacutem levaram ao desenvolvimento e popularizaccedilatildeo de outras tecnologias deSGBDs

22 SGBDs relacionais

SGBDs relacionais foram desenvolvidos nos anos 70 como uma tecnologiapara armazenar dados estruturados organizados como tabelas com sua proacutepria linguagem ndasho SQL (OUNALLI 2012)

Segundo (SUDARSHAN 2004) um SGBD relacional eacute baseado no modelorelacional e usa uma coleccedilatildeo de tabelas para representar os dados e os relacionamentosentre esses dados O tipo relacional de SGBD eacute hoje em dia o principal utilizado nomercado

Uma base relacional consiste em um conjunto de tabelas As tabelas tecircmvaacuterias colunas e cada coluna tem um uacutenico nome Em geral uma linha representa orelacionamento entre um conjunto de valores e satildeo chamadas de tuplas O esquema deuma base relacional conteacutem os atributos tipos e regras das relaccedilotildees como chaves primaacuteriase estrangeiras

As tuplas podem ter um atributo do tipo chave primaacuteria que eacute a identificaccedilatildeouacutenica e natildeo repetida daquele registro Essas chaves podem ser referenciadas por outrosregistros por meio de um atributo do tipo chave estrangeira

Uma caracteriacutestica dos SGBDs e linguagens relacionais eacute a implementaccedilatildeo daaacutelgebra relacional Ela define um conjunto de operaccedilotildees

1 Seleccedilatildeo - retorna as linhas que satisfazem a condiccedilatildeo de seleccedilatildeo

2 Projeccedilatildeo - retorna atributos especiacuteficos de todas as linhas da entrada da relaccedilatildeoRemove as linhas duplicadas da saiacuteda

3 Natural join - retorna os pares de linhas de duas entradas que tem o mesmo valor emtodos os atributos que tem o mesmo nome

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 8

4 Produto cartesiano - retorna todos os pares de linhas de duas relaccedilotildees de entradasindependente de ter os mesmos nomes ou valores em comum

5 Uniatildeo - retorna a uniatildeo de tuplas de duas relaccedilotildees

Linguagens como o SQL utilizadas para fazer operaccedilotildees nas bases de dadossatildeo baseadas em aacutelgebra relacional que provecirc vaacuterios recursos para gerar as consultas SQLeacute a linguagem relacional mais influente do mercado

221 MySQL

O MySQL eacute um SGBD do tipo relacional que implementa um padratildeo SQLcom algumas extensotildees Foi comprado pela Sun Microsystems em 2008 (WIDENIUS2008) e eacute parte da Oracle que ao comprar a Sun Microsystems comprou todos os seusprodutos tambeacutem O MySQL tem como pontos positivos um suporte bom dos usuaacuterios nosfoacuteruns e grande e bem detalhada documentaccedilatildeo Eacute um SGBD com baixo overhead o quepermite a execuccedilatildeo em computadores com poucos recursos de memoacuteria e processamento

Poreacutem a capacidade de execuccedilatildeo e armazenamento do SGBD seraacute propor-cional agrave arquitetura de hardware e software que o executa O MySQL eacute um SGBDopen-source e o banco de dados dependendo da arquitetura de execuccedilatildeo e mecanismo dearmazenamento pode chegar a ter ateacute 64TB de tamanho (MYSQL 2015)

Eacute escrito em C e C++ e tem compatibilidade com arquiteturas de hardwareSPARC 64 SPARC 32 x86 x86 64 IA64 e ARM Eacute possiacutevel acessar o banco de dadospor meio de uma interface CLI (command-line interface ndash interface de linha de comando)ou pelo ConnectorODBC Existe APIs para C C++ Eiffel Java PHP Python Ruby eTcl

O MySQL disponibiliza algumas opccedilotildees de armazenamento das bases de dados(MYSQL 2015)

1 InnoDB o mecanismo padratildeo de armazenamento do MySQL Eacute compatiacutevel comACID e dispotildeem de recursos como commit e rollback Eacute o mais indicado paraser usado na maioria das aplicaccedilotildees por ter alto desempenho e operar de formatransacional

2 MyISAM eacute uma forma de armazenamento mais simples A trava para escrita emniacutevel de tabela limita o desempenho para operaccedilotildees que envolvem leitura e escrita

Existem outros mecanismos de armazenamento poreacutem ou tem uso muitorestrito ou estatildeo em desuso como CSV Archive Federated e Merge Outro exemplo eacute

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 9

o mecanismo de armazenamento Memory que guarda os dados na memoacuteria RAM e deacordo com o manual estaacute caindo em desuso O mecanismo InnoDB pode ser configuradocom buffers que podem em alguns casos substituir o Memory e ainda com a vantagem depersistir os dados em um armazenamento natildeo volaacutetil

23 SGBDs natildeo relacionais

Com o constante aumento dos dados armazenados e analisados os SGBDsrelacionais estatildeo apresentando vaacuterias limitaccedilotildees As consultas aos dados estatildeo perdendoa eficiecircncia pelo grande volume de dados Esse volume de dados estaacute crescendo cadavez mais por conta da evoluccedilatildeo constante das tecnologias de captura de informaccedilatildeo deprocessamento e da inteligecircncia para dar significado a tudo isso Abramova (ABRAMOVABERNADINO FURTADO 2014) afirma que o NoSQL foi desenvolvido para superaralgumas dessas limitaccedilotildees das bases de dados atuais

Os bancos NoSQL satildeo representados pela natildeo existecircncia de uma estrutura dedados riacutegida comparado ao SQL Eacute possiacutevel ter num mesmo espaccedilo de armazenamentoobjetos com membros diferentes Isso natildeo acontece no SQL onde todos os registros tecircmque seguir o modelo das colunas da tabela onde estatildeo inseridos O conceito de NoSQLfoi usado pela primeira vez em 1998 por Carlo Strozzi (ABRAMOVA BERNADINOFURTADO 2014) para se referir a um banco que natildeo usa interface SQL

Os bancos NoSQL satildeo normalmente baseados no teorema BASE (Basically

Available Soft State and Eventually consistente) (VIEBRANTZ 2012) Os bancos relacio-nais satildeo representados pelo ACID (Atomicidade Consistecircncia Isolamento e Durabilidade)Diferente do ACID o BASE sacrifica um pouco da consistecircncia dos dados para ganhardesempenho Essa troca eacute descrita pelo teorema CAP (Consistency Availability Partition

tolerance) Segundo (BROWNE 2015) teorema CAP diz que somente eacute possiacutevel ter duasdas trecircs caracteriacutesticas ao mesmo tempo

Apesar de natildeo ser possiacutevel consultar dados usando SQL esta abordagempermite faacutecil armazenamento e consulta de dados independente da estrutura do conteuacutedo(ABRAMOVA BERNADINO FURTADO 2014) Bancos NoSQL tambeacutem demonstrammelhor escalabilidade horizontal (EVANS 2011) Isso significa que servidores de baixocusto podem satisfazer as requisiccedilotildees enquanto os custos satildeo reduzidos O gerenciamentodesse grande volume de dados seria difiacutecil porem essas bases de dados satildeo projetadaspara gerenciaacute-los automaticamente recuperar de falhas e consertar o sistema por completo(STOLERU 2010)

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 18: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

CAPIacuteTULO 2

FUNDAMENTACcedilAtildeO TEOacuteRICA

A utilizaccedilatildeo de um SGBD (Sistema Gerenciador de Banco de Dados) trazimpactos positivos e negativos decorrentes da combinaccedilatildeo das variaacuteveis de caracteriacutesticasdo SGBD em si de sua arquitetura e da aplicaccedilatildeo

Sistemas de coleta automatizada de dados cientiacuteficos podem ser construiacutedosutilizando Sistemas Embarcados Um sistema embarcado eacute definido pela sua aplicaccedilatildeopois tendem a ser equipamentos com funccedilatildeo bem definida Ao variar a aplicaccedilatildeo mudam-sejunto os recursos e atributos do equipamento

Considerando essas combinaccedilotildees temos cenaacuterios favoraacuteveis ou natildeo a utilizaccedilatildeode um SGBD para gerenciar dados localmente em um sistema de coleta automatizadoNeste capitulo seratildeo apresentados os conceitos necessaacuterios para evidenciar as principaisvariaacuteveis dos elementos envolvidos neste experimento e como as mesmas podem influenciarna aplicaccedilatildeo

Seratildeo abordados conceitos gerais sobre SGBDs dos tipos relacionais e NoSQLEm seguida referecircncias sobre sistemas embarcados dado que o mesmo tem influecircncia nautilizaccedilatildeo ou natildeo de SGBD em uma aplicaccedilatildeo de coleta

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 6

21 Sistemas Gerenciadores de Banco de Dados

Um SGBD eacute um sistema computadorizado para armazenar registros segundo(DATE 2004) Bases de dados estatildeo presentes em computadores de diferentes escalasdesde pequenos sistemas embarcados ateacute clusters de mainframes Eacute normalmente utilizadapara o software que gerencia a base de dados enquanto a denominaccedilatildeo banco de dados oubase de dados se refere ao conjunto de dados gerenciado (DATE 2004)

A automaccedilatildeo do processamento de dados eacute mais antiga que os proacuteprios com-putadores Silberchatz (SUDARSHAN 2004) afirma que cartotildees perfurados inventadospor Herman Hollerith foram usados no comeccedilo do seacuteculo 20 nos Estados Unidos paraarmazenar dados de censo Sistemas mecacircnicos foram usados para processar os cartotildees eapresentar os resultados

Com a evoluccedilatildeo dos meios de armazenamento e processamento entre asdeacutecadas de 50 e 60 fitas magneacuteticas foram usadas para armazenamento de dados Comofitas tem forma de acesso sequencial os dados tinham que ser acessados ou modificadosde forma sequencial

Desde o fim dos anos 60 ateacute os anos 70 houve a disseminaccedilatildeo do uso dodisco riacutegido a utilizaccedilatildeo de vaacuterios discos o uso de sistemas de arquivos e aumento nasvelocidades de transferecircncia por conta de novos materiais e processos de fabricaccedilatildeo Aleacutemdisso o modelo de acesso aleatoacuterio alterou a forma como os dados eram acessados emodificados (SPELIOTIS 2000)

Nos aos 80 foi criado o modelo relacional de dados que foi implementado noSystem R da IBM que desenvolveu teacutecnicas eficientes de construccedilatildeo de bases de dadosrelacionais

No iniacutecio dos anos 90 a linguagem SQL foi escolhida para aplicaccedilotildees desuporte a decisatildeo que fazem muitos acessos ao banco de dados As bases de dadospassaram a ter que oferecer suporte a uma taxa muito alta de processamento de transaccedilotildeesaleacutem de ser mais confiaacuteveis manter disponibilidade 24x7 e suportar dados de interfaceWeb SQL fornece vaacuterios recursos como DDL (Data-Definition Language) para trabalharcom esquemas e relacionamentos por exemplo DML (Data Manipulation Language) parafazer consultas apagar inserir ou modificar tuplas no banco controles de integridadegeraccedilatildeo de visotildees controle transacional permissotildees de acesso e outros

No comeccedilo da deacutecada 2000 houve a adoccedilatildeo do XML em associaccedilatildeo com alinguagem XQuery como nova tecnologia de consulta Nesse periacuteodo tambeacutem houve umcrescimento na utilizaccedilatildeo de SGBDs open-source como o PostgresSQL e o MySQL

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 7

No fim da deacutecada de 2000 houve o crescimento de SGBDs especializados emanalises de dados como os column-store Novos sistemas de armazenamento de dadosdistribuiacutedos foram construiacutedos para ter capacidade para anaacutelise de dados de sites comoAmazon

Com o passar do tempo as mudanccedilas de hardware capacidade de processa-mento e armazenamento velocidades de conexotildees dados disponiacuteveis e necessidadesopor-tunidades influenciaram o desenvolvimento dos SGBDs Verificamos que esse processoteve duas vias o desenvolvimento de recursos gerou espaccedilo para mudanccedilas e as neces-sidades tambeacutem levaram ao desenvolvimento e popularizaccedilatildeo de outras tecnologias deSGBDs

22 SGBDs relacionais

SGBDs relacionais foram desenvolvidos nos anos 70 como uma tecnologiapara armazenar dados estruturados organizados como tabelas com sua proacutepria linguagem ndasho SQL (OUNALLI 2012)

Segundo (SUDARSHAN 2004) um SGBD relacional eacute baseado no modelorelacional e usa uma coleccedilatildeo de tabelas para representar os dados e os relacionamentosentre esses dados O tipo relacional de SGBD eacute hoje em dia o principal utilizado nomercado

Uma base relacional consiste em um conjunto de tabelas As tabelas tecircmvaacuterias colunas e cada coluna tem um uacutenico nome Em geral uma linha representa orelacionamento entre um conjunto de valores e satildeo chamadas de tuplas O esquema deuma base relacional conteacutem os atributos tipos e regras das relaccedilotildees como chaves primaacuteriase estrangeiras

As tuplas podem ter um atributo do tipo chave primaacuteria que eacute a identificaccedilatildeouacutenica e natildeo repetida daquele registro Essas chaves podem ser referenciadas por outrosregistros por meio de um atributo do tipo chave estrangeira

Uma caracteriacutestica dos SGBDs e linguagens relacionais eacute a implementaccedilatildeo daaacutelgebra relacional Ela define um conjunto de operaccedilotildees

1 Seleccedilatildeo - retorna as linhas que satisfazem a condiccedilatildeo de seleccedilatildeo

2 Projeccedilatildeo - retorna atributos especiacuteficos de todas as linhas da entrada da relaccedilatildeoRemove as linhas duplicadas da saiacuteda

3 Natural join - retorna os pares de linhas de duas entradas que tem o mesmo valor emtodos os atributos que tem o mesmo nome

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 8

4 Produto cartesiano - retorna todos os pares de linhas de duas relaccedilotildees de entradasindependente de ter os mesmos nomes ou valores em comum

5 Uniatildeo - retorna a uniatildeo de tuplas de duas relaccedilotildees

Linguagens como o SQL utilizadas para fazer operaccedilotildees nas bases de dadossatildeo baseadas em aacutelgebra relacional que provecirc vaacuterios recursos para gerar as consultas SQLeacute a linguagem relacional mais influente do mercado

221 MySQL

O MySQL eacute um SGBD do tipo relacional que implementa um padratildeo SQLcom algumas extensotildees Foi comprado pela Sun Microsystems em 2008 (WIDENIUS2008) e eacute parte da Oracle que ao comprar a Sun Microsystems comprou todos os seusprodutos tambeacutem O MySQL tem como pontos positivos um suporte bom dos usuaacuterios nosfoacuteruns e grande e bem detalhada documentaccedilatildeo Eacute um SGBD com baixo overhead o quepermite a execuccedilatildeo em computadores com poucos recursos de memoacuteria e processamento

Poreacutem a capacidade de execuccedilatildeo e armazenamento do SGBD seraacute propor-cional agrave arquitetura de hardware e software que o executa O MySQL eacute um SGBDopen-source e o banco de dados dependendo da arquitetura de execuccedilatildeo e mecanismo dearmazenamento pode chegar a ter ateacute 64TB de tamanho (MYSQL 2015)

Eacute escrito em C e C++ e tem compatibilidade com arquiteturas de hardwareSPARC 64 SPARC 32 x86 x86 64 IA64 e ARM Eacute possiacutevel acessar o banco de dadospor meio de uma interface CLI (command-line interface ndash interface de linha de comando)ou pelo ConnectorODBC Existe APIs para C C++ Eiffel Java PHP Python Ruby eTcl

O MySQL disponibiliza algumas opccedilotildees de armazenamento das bases de dados(MYSQL 2015)

1 InnoDB o mecanismo padratildeo de armazenamento do MySQL Eacute compatiacutevel comACID e dispotildeem de recursos como commit e rollback Eacute o mais indicado paraser usado na maioria das aplicaccedilotildees por ter alto desempenho e operar de formatransacional

2 MyISAM eacute uma forma de armazenamento mais simples A trava para escrita emniacutevel de tabela limita o desempenho para operaccedilotildees que envolvem leitura e escrita

Existem outros mecanismos de armazenamento poreacutem ou tem uso muitorestrito ou estatildeo em desuso como CSV Archive Federated e Merge Outro exemplo eacute

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 9

o mecanismo de armazenamento Memory que guarda os dados na memoacuteria RAM e deacordo com o manual estaacute caindo em desuso O mecanismo InnoDB pode ser configuradocom buffers que podem em alguns casos substituir o Memory e ainda com a vantagem depersistir os dados em um armazenamento natildeo volaacutetil

23 SGBDs natildeo relacionais

Com o constante aumento dos dados armazenados e analisados os SGBDsrelacionais estatildeo apresentando vaacuterias limitaccedilotildees As consultas aos dados estatildeo perdendoa eficiecircncia pelo grande volume de dados Esse volume de dados estaacute crescendo cadavez mais por conta da evoluccedilatildeo constante das tecnologias de captura de informaccedilatildeo deprocessamento e da inteligecircncia para dar significado a tudo isso Abramova (ABRAMOVABERNADINO FURTADO 2014) afirma que o NoSQL foi desenvolvido para superaralgumas dessas limitaccedilotildees das bases de dados atuais

Os bancos NoSQL satildeo representados pela natildeo existecircncia de uma estrutura dedados riacutegida comparado ao SQL Eacute possiacutevel ter num mesmo espaccedilo de armazenamentoobjetos com membros diferentes Isso natildeo acontece no SQL onde todos os registros tecircmque seguir o modelo das colunas da tabela onde estatildeo inseridos O conceito de NoSQLfoi usado pela primeira vez em 1998 por Carlo Strozzi (ABRAMOVA BERNADINOFURTADO 2014) para se referir a um banco que natildeo usa interface SQL

Os bancos NoSQL satildeo normalmente baseados no teorema BASE (Basically

Available Soft State and Eventually consistente) (VIEBRANTZ 2012) Os bancos relacio-nais satildeo representados pelo ACID (Atomicidade Consistecircncia Isolamento e Durabilidade)Diferente do ACID o BASE sacrifica um pouco da consistecircncia dos dados para ganhardesempenho Essa troca eacute descrita pelo teorema CAP (Consistency Availability Partition

tolerance) Segundo (BROWNE 2015) teorema CAP diz que somente eacute possiacutevel ter duasdas trecircs caracteriacutesticas ao mesmo tempo

Apesar de natildeo ser possiacutevel consultar dados usando SQL esta abordagempermite faacutecil armazenamento e consulta de dados independente da estrutura do conteuacutedo(ABRAMOVA BERNADINO FURTADO 2014) Bancos NoSQL tambeacutem demonstrammelhor escalabilidade horizontal (EVANS 2011) Isso significa que servidores de baixocusto podem satisfazer as requisiccedilotildees enquanto os custos satildeo reduzidos O gerenciamentodesse grande volume de dados seria difiacutecil porem essas bases de dados satildeo projetadaspara gerenciaacute-los automaticamente recuperar de falhas e consertar o sistema por completo(STOLERU 2010)

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 19: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 6

21 Sistemas Gerenciadores de Banco de Dados

Um SGBD eacute um sistema computadorizado para armazenar registros segundo(DATE 2004) Bases de dados estatildeo presentes em computadores de diferentes escalasdesde pequenos sistemas embarcados ateacute clusters de mainframes Eacute normalmente utilizadapara o software que gerencia a base de dados enquanto a denominaccedilatildeo banco de dados oubase de dados se refere ao conjunto de dados gerenciado (DATE 2004)

A automaccedilatildeo do processamento de dados eacute mais antiga que os proacuteprios com-putadores Silberchatz (SUDARSHAN 2004) afirma que cartotildees perfurados inventadospor Herman Hollerith foram usados no comeccedilo do seacuteculo 20 nos Estados Unidos paraarmazenar dados de censo Sistemas mecacircnicos foram usados para processar os cartotildees eapresentar os resultados

Com a evoluccedilatildeo dos meios de armazenamento e processamento entre asdeacutecadas de 50 e 60 fitas magneacuteticas foram usadas para armazenamento de dados Comofitas tem forma de acesso sequencial os dados tinham que ser acessados ou modificadosde forma sequencial

Desde o fim dos anos 60 ateacute os anos 70 houve a disseminaccedilatildeo do uso dodisco riacutegido a utilizaccedilatildeo de vaacuterios discos o uso de sistemas de arquivos e aumento nasvelocidades de transferecircncia por conta de novos materiais e processos de fabricaccedilatildeo Aleacutemdisso o modelo de acesso aleatoacuterio alterou a forma como os dados eram acessados emodificados (SPELIOTIS 2000)

Nos aos 80 foi criado o modelo relacional de dados que foi implementado noSystem R da IBM que desenvolveu teacutecnicas eficientes de construccedilatildeo de bases de dadosrelacionais

No iniacutecio dos anos 90 a linguagem SQL foi escolhida para aplicaccedilotildees desuporte a decisatildeo que fazem muitos acessos ao banco de dados As bases de dadospassaram a ter que oferecer suporte a uma taxa muito alta de processamento de transaccedilotildeesaleacutem de ser mais confiaacuteveis manter disponibilidade 24x7 e suportar dados de interfaceWeb SQL fornece vaacuterios recursos como DDL (Data-Definition Language) para trabalharcom esquemas e relacionamentos por exemplo DML (Data Manipulation Language) parafazer consultas apagar inserir ou modificar tuplas no banco controles de integridadegeraccedilatildeo de visotildees controle transacional permissotildees de acesso e outros

No comeccedilo da deacutecada 2000 houve a adoccedilatildeo do XML em associaccedilatildeo com alinguagem XQuery como nova tecnologia de consulta Nesse periacuteodo tambeacutem houve umcrescimento na utilizaccedilatildeo de SGBDs open-source como o PostgresSQL e o MySQL

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 7

No fim da deacutecada de 2000 houve o crescimento de SGBDs especializados emanalises de dados como os column-store Novos sistemas de armazenamento de dadosdistribuiacutedos foram construiacutedos para ter capacidade para anaacutelise de dados de sites comoAmazon

Com o passar do tempo as mudanccedilas de hardware capacidade de processa-mento e armazenamento velocidades de conexotildees dados disponiacuteveis e necessidadesopor-tunidades influenciaram o desenvolvimento dos SGBDs Verificamos que esse processoteve duas vias o desenvolvimento de recursos gerou espaccedilo para mudanccedilas e as neces-sidades tambeacutem levaram ao desenvolvimento e popularizaccedilatildeo de outras tecnologias deSGBDs

22 SGBDs relacionais

SGBDs relacionais foram desenvolvidos nos anos 70 como uma tecnologiapara armazenar dados estruturados organizados como tabelas com sua proacutepria linguagem ndasho SQL (OUNALLI 2012)

Segundo (SUDARSHAN 2004) um SGBD relacional eacute baseado no modelorelacional e usa uma coleccedilatildeo de tabelas para representar os dados e os relacionamentosentre esses dados O tipo relacional de SGBD eacute hoje em dia o principal utilizado nomercado

Uma base relacional consiste em um conjunto de tabelas As tabelas tecircmvaacuterias colunas e cada coluna tem um uacutenico nome Em geral uma linha representa orelacionamento entre um conjunto de valores e satildeo chamadas de tuplas O esquema deuma base relacional conteacutem os atributos tipos e regras das relaccedilotildees como chaves primaacuteriase estrangeiras

As tuplas podem ter um atributo do tipo chave primaacuteria que eacute a identificaccedilatildeouacutenica e natildeo repetida daquele registro Essas chaves podem ser referenciadas por outrosregistros por meio de um atributo do tipo chave estrangeira

Uma caracteriacutestica dos SGBDs e linguagens relacionais eacute a implementaccedilatildeo daaacutelgebra relacional Ela define um conjunto de operaccedilotildees

1 Seleccedilatildeo - retorna as linhas que satisfazem a condiccedilatildeo de seleccedilatildeo

2 Projeccedilatildeo - retorna atributos especiacuteficos de todas as linhas da entrada da relaccedilatildeoRemove as linhas duplicadas da saiacuteda

3 Natural join - retorna os pares de linhas de duas entradas que tem o mesmo valor emtodos os atributos que tem o mesmo nome

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 8

4 Produto cartesiano - retorna todos os pares de linhas de duas relaccedilotildees de entradasindependente de ter os mesmos nomes ou valores em comum

5 Uniatildeo - retorna a uniatildeo de tuplas de duas relaccedilotildees

Linguagens como o SQL utilizadas para fazer operaccedilotildees nas bases de dadossatildeo baseadas em aacutelgebra relacional que provecirc vaacuterios recursos para gerar as consultas SQLeacute a linguagem relacional mais influente do mercado

221 MySQL

O MySQL eacute um SGBD do tipo relacional que implementa um padratildeo SQLcom algumas extensotildees Foi comprado pela Sun Microsystems em 2008 (WIDENIUS2008) e eacute parte da Oracle que ao comprar a Sun Microsystems comprou todos os seusprodutos tambeacutem O MySQL tem como pontos positivos um suporte bom dos usuaacuterios nosfoacuteruns e grande e bem detalhada documentaccedilatildeo Eacute um SGBD com baixo overhead o quepermite a execuccedilatildeo em computadores com poucos recursos de memoacuteria e processamento

Poreacutem a capacidade de execuccedilatildeo e armazenamento do SGBD seraacute propor-cional agrave arquitetura de hardware e software que o executa O MySQL eacute um SGBDopen-source e o banco de dados dependendo da arquitetura de execuccedilatildeo e mecanismo dearmazenamento pode chegar a ter ateacute 64TB de tamanho (MYSQL 2015)

Eacute escrito em C e C++ e tem compatibilidade com arquiteturas de hardwareSPARC 64 SPARC 32 x86 x86 64 IA64 e ARM Eacute possiacutevel acessar o banco de dadospor meio de uma interface CLI (command-line interface ndash interface de linha de comando)ou pelo ConnectorODBC Existe APIs para C C++ Eiffel Java PHP Python Ruby eTcl

O MySQL disponibiliza algumas opccedilotildees de armazenamento das bases de dados(MYSQL 2015)

1 InnoDB o mecanismo padratildeo de armazenamento do MySQL Eacute compatiacutevel comACID e dispotildeem de recursos como commit e rollback Eacute o mais indicado paraser usado na maioria das aplicaccedilotildees por ter alto desempenho e operar de formatransacional

2 MyISAM eacute uma forma de armazenamento mais simples A trava para escrita emniacutevel de tabela limita o desempenho para operaccedilotildees que envolvem leitura e escrita

Existem outros mecanismos de armazenamento poreacutem ou tem uso muitorestrito ou estatildeo em desuso como CSV Archive Federated e Merge Outro exemplo eacute

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 9

o mecanismo de armazenamento Memory que guarda os dados na memoacuteria RAM e deacordo com o manual estaacute caindo em desuso O mecanismo InnoDB pode ser configuradocom buffers que podem em alguns casos substituir o Memory e ainda com a vantagem depersistir os dados em um armazenamento natildeo volaacutetil

23 SGBDs natildeo relacionais

Com o constante aumento dos dados armazenados e analisados os SGBDsrelacionais estatildeo apresentando vaacuterias limitaccedilotildees As consultas aos dados estatildeo perdendoa eficiecircncia pelo grande volume de dados Esse volume de dados estaacute crescendo cadavez mais por conta da evoluccedilatildeo constante das tecnologias de captura de informaccedilatildeo deprocessamento e da inteligecircncia para dar significado a tudo isso Abramova (ABRAMOVABERNADINO FURTADO 2014) afirma que o NoSQL foi desenvolvido para superaralgumas dessas limitaccedilotildees das bases de dados atuais

Os bancos NoSQL satildeo representados pela natildeo existecircncia de uma estrutura dedados riacutegida comparado ao SQL Eacute possiacutevel ter num mesmo espaccedilo de armazenamentoobjetos com membros diferentes Isso natildeo acontece no SQL onde todos os registros tecircmque seguir o modelo das colunas da tabela onde estatildeo inseridos O conceito de NoSQLfoi usado pela primeira vez em 1998 por Carlo Strozzi (ABRAMOVA BERNADINOFURTADO 2014) para se referir a um banco que natildeo usa interface SQL

Os bancos NoSQL satildeo normalmente baseados no teorema BASE (Basically

Available Soft State and Eventually consistente) (VIEBRANTZ 2012) Os bancos relacio-nais satildeo representados pelo ACID (Atomicidade Consistecircncia Isolamento e Durabilidade)Diferente do ACID o BASE sacrifica um pouco da consistecircncia dos dados para ganhardesempenho Essa troca eacute descrita pelo teorema CAP (Consistency Availability Partition

tolerance) Segundo (BROWNE 2015) teorema CAP diz que somente eacute possiacutevel ter duasdas trecircs caracteriacutesticas ao mesmo tempo

Apesar de natildeo ser possiacutevel consultar dados usando SQL esta abordagempermite faacutecil armazenamento e consulta de dados independente da estrutura do conteuacutedo(ABRAMOVA BERNADINO FURTADO 2014) Bancos NoSQL tambeacutem demonstrammelhor escalabilidade horizontal (EVANS 2011) Isso significa que servidores de baixocusto podem satisfazer as requisiccedilotildees enquanto os custos satildeo reduzidos O gerenciamentodesse grande volume de dados seria difiacutecil porem essas bases de dados satildeo projetadaspara gerenciaacute-los automaticamente recuperar de falhas e consertar o sistema por completo(STOLERU 2010)

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 20: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 7

No fim da deacutecada de 2000 houve o crescimento de SGBDs especializados emanalises de dados como os column-store Novos sistemas de armazenamento de dadosdistribuiacutedos foram construiacutedos para ter capacidade para anaacutelise de dados de sites comoAmazon

Com o passar do tempo as mudanccedilas de hardware capacidade de processa-mento e armazenamento velocidades de conexotildees dados disponiacuteveis e necessidadesopor-tunidades influenciaram o desenvolvimento dos SGBDs Verificamos que esse processoteve duas vias o desenvolvimento de recursos gerou espaccedilo para mudanccedilas e as neces-sidades tambeacutem levaram ao desenvolvimento e popularizaccedilatildeo de outras tecnologias deSGBDs

22 SGBDs relacionais

SGBDs relacionais foram desenvolvidos nos anos 70 como uma tecnologiapara armazenar dados estruturados organizados como tabelas com sua proacutepria linguagem ndasho SQL (OUNALLI 2012)

Segundo (SUDARSHAN 2004) um SGBD relacional eacute baseado no modelorelacional e usa uma coleccedilatildeo de tabelas para representar os dados e os relacionamentosentre esses dados O tipo relacional de SGBD eacute hoje em dia o principal utilizado nomercado

Uma base relacional consiste em um conjunto de tabelas As tabelas tecircmvaacuterias colunas e cada coluna tem um uacutenico nome Em geral uma linha representa orelacionamento entre um conjunto de valores e satildeo chamadas de tuplas O esquema deuma base relacional conteacutem os atributos tipos e regras das relaccedilotildees como chaves primaacuteriase estrangeiras

As tuplas podem ter um atributo do tipo chave primaacuteria que eacute a identificaccedilatildeouacutenica e natildeo repetida daquele registro Essas chaves podem ser referenciadas por outrosregistros por meio de um atributo do tipo chave estrangeira

Uma caracteriacutestica dos SGBDs e linguagens relacionais eacute a implementaccedilatildeo daaacutelgebra relacional Ela define um conjunto de operaccedilotildees

1 Seleccedilatildeo - retorna as linhas que satisfazem a condiccedilatildeo de seleccedilatildeo

2 Projeccedilatildeo - retorna atributos especiacuteficos de todas as linhas da entrada da relaccedilatildeoRemove as linhas duplicadas da saiacuteda

3 Natural join - retorna os pares de linhas de duas entradas que tem o mesmo valor emtodos os atributos que tem o mesmo nome

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 8

4 Produto cartesiano - retorna todos os pares de linhas de duas relaccedilotildees de entradasindependente de ter os mesmos nomes ou valores em comum

5 Uniatildeo - retorna a uniatildeo de tuplas de duas relaccedilotildees

Linguagens como o SQL utilizadas para fazer operaccedilotildees nas bases de dadossatildeo baseadas em aacutelgebra relacional que provecirc vaacuterios recursos para gerar as consultas SQLeacute a linguagem relacional mais influente do mercado

221 MySQL

O MySQL eacute um SGBD do tipo relacional que implementa um padratildeo SQLcom algumas extensotildees Foi comprado pela Sun Microsystems em 2008 (WIDENIUS2008) e eacute parte da Oracle que ao comprar a Sun Microsystems comprou todos os seusprodutos tambeacutem O MySQL tem como pontos positivos um suporte bom dos usuaacuterios nosfoacuteruns e grande e bem detalhada documentaccedilatildeo Eacute um SGBD com baixo overhead o quepermite a execuccedilatildeo em computadores com poucos recursos de memoacuteria e processamento

Poreacutem a capacidade de execuccedilatildeo e armazenamento do SGBD seraacute propor-cional agrave arquitetura de hardware e software que o executa O MySQL eacute um SGBDopen-source e o banco de dados dependendo da arquitetura de execuccedilatildeo e mecanismo dearmazenamento pode chegar a ter ateacute 64TB de tamanho (MYSQL 2015)

Eacute escrito em C e C++ e tem compatibilidade com arquiteturas de hardwareSPARC 64 SPARC 32 x86 x86 64 IA64 e ARM Eacute possiacutevel acessar o banco de dadospor meio de uma interface CLI (command-line interface ndash interface de linha de comando)ou pelo ConnectorODBC Existe APIs para C C++ Eiffel Java PHP Python Ruby eTcl

O MySQL disponibiliza algumas opccedilotildees de armazenamento das bases de dados(MYSQL 2015)

1 InnoDB o mecanismo padratildeo de armazenamento do MySQL Eacute compatiacutevel comACID e dispotildeem de recursos como commit e rollback Eacute o mais indicado paraser usado na maioria das aplicaccedilotildees por ter alto desempenho e operar de formatransacional

2 MyISAM eacute uma forma de armazenamento mais simples A trava para escrita emniacutevel de tabela limita o desempenho para operaccedilotildees que envolvem leitura e escrita

Existem outros mecanismos de armazenamento poreacutem ou tem uso muitorestrito ou estatildeo em desuso como CSV Archive Federated e Merge Outro exemplo eacute

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 9

o mecanismo de armazenamento Memory que guarda os dados na memoacuteria RAM e deacordo com o manual estaacute caindo em desuso O mecanismo InnoDB pode ser configuradocom buffers que podem em alguns casos substituir o Memory e ainda com a vantagem depersistir os dados em um armazenamento natildeo volaacutetil

23 SGBDs natildeo relacionais

Com o constante aumento dos dados armazenados e analisados os SGBDsrelacionais estatildeo apresentando vaacuterias limitaccedilotildees As consultas aos dados estatildeo perdendoa eficiecircncia pelo grande volume de dados Esse volume de dados estaacute crescendo cadavez mais por conta da evoluccedilatildeo constante das tecnologias de captura de informaccedilatildeo deprocessamento e da inteligecircncia para dar significado a tudo isso Abramova (ABRAMOVABERNADINO FURTADO 2014) afirma que o NoSQL foi desenvolvido para superaralgumas dessas limitaccedilotildees das bases de dados atuais

Os bancos NoSQL satildeo representados pela natildeo existecircncia de uma estrutura dedados riacutegida comparado ao SQL Eacute possiacutevel ter num mesmo espaccedilo de armazenamentoobjetos com membros diferentes Isso natildeo acontece no SQL onde todos os registros tecircmque seguir o modelo das colunas da tabela onde estatildeo inseridos O conceito de NoSQLfoi usado pela primeira vez em 1998 por Carlo Strozzi (ABRAMOVA BERNADINOFURTADO 2014) para se referir a um banco que natildeo usa interface SQL

Os bancos NoSQL satildeo normalmente baseados no teorema BASE (Basically

Available Soft State and Eventually consistente) (VIEBRANTZ 2012) Os bancos relacio-nais satildeo representados pelo ACID (Atomicidade Consistecircncia Isolamento e Durabilidade)Diferente do ACID o BASE sacrifica um pouco da consistecircncia dos dados para ganhardesempenho Essa troca eacute descrita pelo teorema CAP (Consistency Availability Partition

tolerance) Segundo (BROWNE 2015) teorema CAP diz que somente eacute possiacutevel ter duasdas trecircs caracteriacutesticas ao mesmo tempo

Apesar de natildeo ser possiacutevel consultar dados usando SQL esta abordagempermite faacutecil armazenamento e consulta de dados independente da estrutura do conteuacutedo(ABRAMOVA BERNADINO FURTADO 2014) Bancos NoSQL tambeacutem demonstrammelhor escalabilidade horizontal (EVANS 2011) Isso significa que servidores de baixocusto podem satisfazer as requisiccedilotildees enquanto os custos satildeo reduzidos O gerenciamentodesse grande volume de dados seria difiacutecil porem essas bases de dados satildeo projetadaspara gerenciaacute-los automaticamente recuperar de falhas e consertar o sistema por completo(STOLERU 2010)

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 21: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 8

4 Produto cartesiano - retorna todos os pares de linhas de duas relaccedilotildees de entradasindependente de ter os mesmos nomes ou valores em comum

5 Uniatildeo - retorna a uniatildeo de tuplas de duas relaccedilotildees

Linguagens como o SQL utilizadas para fazer operaccedilotildees nas bases de dadossatildeo baseadas em aacutelgebra relacional que provecirc vaacuterios recursos para gerar as consultas SQLeacute a linguagem relacional mais influente do mercado

221 MySQL

O MySQL eacute um SGBD do tipo relacional que implementa um padratildeo SQLcom algumas extensotildees Foi comprado pela Sun Microsystems em 2008 (WIDENIUS2008) e eacute parte da Oracle que ao comprar a Sun Microsystems comprou todos os seusprodutos tambeacutem O MySQL tem como pontos positivos um suporte bom dos usuaacuterios nosfoacuteruns e grande e bem detalhada documentaccedilatildeo Eacute um SGBD com baixo overhead o quepermite a execuccedilatildeo em computadores com poucos recursos de memoacuteria e processamento

Poreacutem a capacidade de execuccedilatildeo e armazenamento do SGBD seraacute propor-cional agrave arquitetura de hardware e software que o executa O MySQL eacute um SGBDopen-source e o banco de dados dependendo da arquitetura de execuccedilatildeo e mecanismo dearmazenamento pode chegar a ter ateacute 64TB de tamanho (MYSQL 2015)

Eacute escrito em C e C++ e tem compatibilidade com arquiteturas de hardwareSPARC 64 SPARC 32 x86 x86 64 IA64 e ARM Eacute possiacutevel acessar o banco de dadospor meio de uma interface CLI (command-line interface ndash interface de linha de comando)ou pelo ConnectorODBC Existe APIs para C C++ Eiffel Java PHP Python Ruby eTcl

O MySQL disponibiliza algumas opccedilotildees de armazenamento das bases de dados(MYSQL 2015)

1 InnoDB o mecanismo padratildeo de armazenamento do MySQL Eacute compatiacutevel comACID e dispotildeem de recursos como commit e rollback Eacute o mais indicado paraser usado na maioria das aplicaccedilotildees por ter alto desempenho e operar de formatransacional

2 MyISAM eacute uma forma de armazenamento mais simples A trava para escrita emniacutevel de tabela limita o desempenho para operaccedilotildees que envolvem leitura e escrita

Existem outros mecanismos de armazenamento poreacutem ou tem uso muitorestrito ou estatildeo em desuso como CSV Archive Federated e Merge Outro exemplo eacute

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 9

o mecanismo de armazenamento Memory que guarda os dados na memoacuteria RAM e deacordo com o manual estaacute caindo em desuso O mecanismo InnoDB pode ser configuradocom buffers que podem em alguns casos substituir o Memory e ainda com a vantagem depersistir os dados em um armazenamento natildeo volaacutetil

23 SGBDs natildeo relacionais

Com o constante aumento dos dados armazenados e analisados os SGBDsrelacionais estatildeo apresentando vaacuterias limitaccedilotildees As consultas aos dados estatildeo perdendoa eficiecircncia pelo grande volume de dados Esse volume de dados estaacute crescendo cadavez mais por conta da evoluccedilatildeo constante das tecnologias de captura de informaccedilatildeo deprocessamento e da inteligecircncia para dar significado a tudo isso Abramova (ABRAMOVABERNADINO FURTADO 2014) afirma que o NoSQL foi desenvolvido para superaralgumas dessas limitaccedilotildees das bases de dados atuais

Os bancos NoSQL satildeo representados pela natildeo existecircncia de uma estrutura dedados riacutegida comparado ao SQL Eacute possiacutevel ter num mesmo espaccedilo de armazenamentoobjetos com membros diferentes Isso natildeo acontece no SQL onde todos os registros tecircmque seguir o modelo das colunas da tabela onde estatildeo inseridos O conceito de NoSQLfoi usado pela primeira vez em 1998 por Carlo Strozzi (ABRAMOVA BERNADINOFURTADO 2014) para se referir a um banco que natildeo usa interface SQL

Os bancos NoSQL satildeo normalmente baseados no teorema BASE (Basically

Available Soft State and Eventually consistente) (VIEBRANTZ 2012) Os bancos relacio-nais satildeo representados pelo ACID (Atomicidade Consistecircncia Isolamento e Durabilidade)Diferente do ACID o BASE sacrifica um pouco da consistecircncia dos dados para ganhardesempenho Essa troca eacute descrita pelo teorema CAP (Consistency Availability Partition

tolerance) Segundo (BROWNE 2015) teorema CAP diz que somente eacute possiacutevel ter duasdas trecircs caracteriacutesticas ao mesmo tempo

Apesar de natildeo ser possiacutevel consultar dados usando SQL esta abordagempermite faacutecil armazenamento e consulta de dados independente da estrutura do conteuacutedo(ABRAMOVA BERNADINO FURTADO 2014) Bancos NoSQL tambeacutem demonstrammelhor escalabilidade horizontal (EVANS 2011) Isso significa que servidores de baixocusto podem satisfazer as requisiccedilotildees enquanto os custos satildeo reduzidos O gerenciamentodesse grande volume de dados seria difiacutecil porem essas bases de dados satildeo projetadaspara gerenciaacute-los automaticamente recuperar de falhas e consertar o sistema por completo(STOLERU 2010)

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 22: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 9

o mecanismo de armazenamento Memory que guarda os dados na memoacuteria RAM e deacordo com o manual estaacute caindo em desuso O mecanismo InnoDB pode ser configuradocom buffers que podem em alguns casos substituir o Memory e ainda com a vantagem depersistir os dados em um armazenamento natildeo volaacutetil

23 SGBDs natildeo relacionais

Com o constante aumento dos dados armazenados e analisados os SGBDsrelacionais estatildeo apresentando vaacuterias limitaccedilotildees As consultas aos dados estatildeo perdendoa eficiecircncia pelo grande volume de dados Esse volume de dados estaacute crescendo cadavez mais por conta da evoluccedilatildeo constante das tecnologias de captura de informaccedilatildeo deprocessamento e da inteligecircncia para dar significado a tudo isso Abramova (ABRAMOVABERNADINO FURTADO 2014) afirma que o NoSQL foi desenvolvido para superaralgumas dessas limitaccedilotildees das bases de dados atuais

Os bancos NoSQL satildeo representados pela natildeo existecircncia de uma estrutura dedados riacutegida comparado ao SQL Eacute possiacutevel ter num mesmo espaccedilo de armazenamentoobjetos com membros diferentes Isso natildeo acontece no SQL onde todos os registros tecircmque seguir o modelo das colunas da tabela onde estatildeo inseridos O conceito de NoSQLfoi usado pela primeira vez em 1998 por Carlo Strozzi (ABRAMOVA BERNADINOFURTADO 2014) para se referir a um banco que natildeo usa interface SQL

Os bancos NoSQL satildeo normalmente baseados no teorema BASE (Basically

Available Soft State and Eventually consistente) (VIEBRANTZ 2012) Os bancos relacio-nais satildeo representados pelo ACID (Atomicidade Consistecircncia Isolamento e Durabilidade)Diferente do ACID o BASE sacrifica um pouco da consistecircncia dos dados para ganhardesempenho Essa troca eacute descrita pelo teorema CAP (Consistency Availability Partition

tolerance) Segundo (BROWNE 2015) teorema CAP diz que somente eacute possiacutevel ter duasdas trecircs caracteriacutesticas ao mesmo tempo

Apesar de natildeo ser possiacutevel consultar dados usando SQL esta abordagempermite faacutecil armazenamento e consulta de dados independente da estrutura do conteuacutedo(ABRAMOVA BERNADINO FURTADO 2014) Bancos NoSQL tambeacutem demonstrammelhor escalabilidade horizontal (EVANS 2011) Isso significa que servidores de baixocusto podem satisfazer as requisiccedilotildees enquanto os custos satildeo reduzidos O gerenciamentodesse grande volume de dados seria difiacutecil porem essas bases de dados satildeo projetadaspara gerenciaacute-los automaticamente recuperar de falhas e consertar o sistema por completo(STOLERU 2010)

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 23: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 10

Os bancos NoSQL satildeo caracterizados por natildeo existir relaccedilotildees entre diferentesregistros Poreacutem de acordo com otimizaccedilotildees eles podem ser divididos em (INDRAWAN-SANTIAGO 2012)

bull Key-Value Nesse tipo de base de dados os dados satildeo armazenados como paresde chave e valor O acesso ao valor armazenado eacute feito pela chave que eacute uacutenicaBases de dados do tipo chave-valor satildeo adequadas para aplicaccedilotildees que processamtransaccedilotildees em uma chave por vez e executam muitas leituras

bull Document Store Uma base do tipo Document-Store armazena documentos e atribuiuma chave a estrutura armazenada Aleacutem disso essas informaccedilotildees satildeo armazenadascomo XML ou JSON guardando mais informaccedilotildees sobre a estrutura do dadocomparado a bases do tipo chave-valor

bull Column Family Bases de dados da famiacutelia de colunas tem como caracteriacutesticatabelas que podem ter muitas colunas mas com mais flexibilidade para se adicionaroutras colunas em produccedilatildeo

bull Graph Database Uma base do tipo grafo usa grafos para representar o seu esquemaDiferente das bases relacionais o importante satildeo as tuplas e suas coleccedilotildees que satildeoas relaccedilotildees O relacionamento entre tuplas individuais eacute definido por uma chaveestrangeira Numa base de grafos tanto a relaccedilatildeo como os relacionamentos satildeoimportantes

NoSQL eacute uma tecnologia disruptiva e pode ser usada como complemento ousubstituta para os bancos relacionais Atualmente existem mais de 150 bancos NoSQL ()Cattell (CATTELL 2010) afirma que uma das maiores diferenccedilas entre bancos NoSQL ebancos relacionais (RDBMS) eacute que o NoSQL separa armazenamento de gerenciamentoenquanto RDBMS tenta satisfazer os dois

231 Redis

O SGBD Redis eacute um banco de dados do tipo in-memory chave-valor com acapacidade de persistir os dados no sistema de arquivos O nome Redis significa Remote

DIctionary Server (REDISLAB 2015) Apesar de oferecer a possibilidade de persistecircnciao banco de dados de uma instacircncia do Redis natildeo pode ser maior que a memoacuteria RAMPoreacutem como o conjunto de dados estaacute por completo na memoacuteria RAM as operaccedilotildees nobanco de dados sendo feitos diretamente na RAM e o desempenho do banco de dadosaumenta muito

Outra vantagem aleacutem do ganho de desempenho eacute a facilidade de trabalharcom estruturas complexas na memoacuteria comparado a trabalhar com esse mesmo tipo de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 24: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 11

dado no disco Uma das aplicaccedilotildees desse SGBD sugerida pelo desenvolvedor eacute utiliza-lopara vaacuterios dados pequenos com muitas operaccedilotildees de escrita

Como a base de dados fica inteiramente contida na memoacuteria RAM se faznecessaacuterio utilizar mais computadores para aumentar a memoacuteria total da base de dadosNa documentaccedilatildeo do Redis isso pode ser alcanccedilado com um recurso chamado PartitioningO processo eacute feito dividindo o grupo de chaves entre as instacircncias do SGBD Eacute possiacuteveldividir pelos niacuteveis de valores das chaves ou por um caacutelculo modular do hash da chavepor exemplo

Existem algumas desvantagens ao fazer essa divisatildeo na base de dados opera-ccedilotildees que envolvem muacuteltiplas chaves natildeo satildeo suportadas diretamente se as chaves estatildeoem diferentes instacircncia O back-up dos arquivos de persistecircncia em banco deve ser feitopara todas as instacircncias e adicionar ou remover noacutes de instacircncias pode ser complexoUma sugestatildeo feita pela documentaccedilatildeo eacute desde o iniacutecio jaacute utilizar um valor grande denoacutes no cluster Redis Uma instacircncia do SGBD utiliza cerca de 1MB entatildeo eacute possiacutevel jaacuteestabelecer um nuacutemero como 64 noacutes mesmo que natildeo for necessaacuterio Poreacutem ao configurara base de dados desde o comeccedilo assim o crescimento do cluster eacute mais simples

O desenvolvedor afirma (httpredisiotopicsdata-types-intro) que o Redisnatildeo eacute um SGBD chave-valor no sentido literal pois tambeacutem suporta estrutura de dadosmais complexas que simples conjuntos chave-valor Os tipos disponiacuteveis satildeo

1 Binary-Safe strings

2 Listas encadeadas que armazenam elementos de acordo com inserccedilatildeo

3 Conjuntos ordenados que tecircm elementos associados a um valor chamado score quepode auxiliar em consultas

4 Hashes satildeo mapas compostos por campos associados a valores onde ambos satildeostrings

5 Bit array ou bitmaps onde cada bit de uma string pode ser manipulado individual-mente

6 Hyperloglogs que satildeo estruturas probabiliacutesticas e satildeo usadas para estimar a cardina-lidade de um conjunto

Os comandos de operaccedilatildeo dependem de cada estrutura que estaacute sendo utilizadaOs comandos e as operaccedilotildees podem ser enviados por meio de integraccedilatildeo de uma bibliotecacom a aplicaccedilatildeo que deseja se comunicar com o servidor Redis ou por meio da CLI doRedis

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 25: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 12

O servidor do Redis eacute capaz de executar scripts utilizando um interpretadorLua integrado Desse modo eacute possivel fazer algumas operaccedilotildees mais complexas natildeodisponiacuteveis por meio dos comandos internos do Redis Isso acontece por conta de o Redisser focado em consultar e armazenar os dados e natildeo dispor de uma linguagem de consultacomo SQL

A tecnologia de construccedilatildeo do Redis prove acesso extremamente raacutepido aosdados poreacutem a natureza do armazenamento e acesso dos dados eacute bem diferente dosSGBDs relacionais tradicionais Isso traz caracteriacutesticas que podem ser ou natildeo vantajosasdependendo da aplicaccedilatildeo

24 Sistemas Embarcados

Barr 2007 define sistemas embarcados como combinaccedilotildees de hardware soft-

ware e em alguns casos partes adicionais focados na realizaccedilatildeo de uma tarefa especIacutefica(KOOPMAN 1996) afirma que aleacutem de uma CPU e uma memoacuteria existem vaacuterias interfa-ces que permite ao sistema medir manipular ou ateacute interagir com o ambiente

O software gravado em um sistema embarcado geralmente tem uma funccedilatildeofixa e eacute especiacutefica para a aplicaccedilatildeo Sistemas embarcados tem como elemento central eprincipal microcontroladores na grande maioria dos equipamentos

Um microcontrolador eacute um chip que conteacutem vaacuterias estruturas que o faz se-melhante a um computador (SOUSA 2006) Haacute uma unidade de processamento loacutegicamemoacuterias e unidades perifeacutericas Dado seu tamanho geralmente reduzido eacute ideal paraaplicaccedilotildees que requerem portabilidade

Em muitos casos realizam mediccedilotildees e ou atuam de alguma forma sobre oambiente em que se encontram Tecircm como caracteriacutestica a restriccedilatildeo de recursos comoenergia memoacuteria processamento tamanho etc

Podem ser classificados como soft real time ou hard real-time Soft real-time

satildeo sistemas que caso tenha alguma resposta atrasada natildeo compromete gravemente outraz prejuiacutezos agrave atividade Sistemas hard real-time satildeo sistemas embarcados de aplicaccedilatildeocriacutetica como controles de aeronaves marca-passo airbags de automoacuteveis por exemplo

Cada aplicaccedilatildeo tem portanto um sistema customizado para atender as neces-sidades com eficiecircncia Isso faz esses equipamentos possuirem muitas variaccedilotildees desdeprocessadores com velocidades na casa dos MHz ateacute processadores com vaacuterios nuacutecleos evaacuterios GHz por exemplo

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 26: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 2 Fundamentaccedilatildeo Teoacuterica 13

Satildeo exemplos de sistemas embarcados Fornos micro-ondas celulares calcu-ladoras reloacutegios digitais miacutesseis receptores GPS monitores cardiacuteacos impressoras lasercomputadores de bordo de carros cacircmeras digitais controles remotos dentre outros

25 Resumo

Foram verificados vaacuterios assuntos que tem influecircncia ou fazem parte dosestudos de caso Os SGBDs satildeo uma parte muito importante de uma grande quantidadede sistemas computacionais sejam eles de pequeno ou de grande porte Eles podem serde vaacuterios tipos como chave-valor relacionais de colunas de grafos e outros Os estudosde caso utilizam dois tipos relacionais e chave-valor Por isso foi dado ecircnfase nessesdois tipos de SGBDs Os computadores embarcados utilizados tecircm caracteriacutesticas desistemas embarcados primaacuteriamente restriccedilatildeo de recursos Restriccedilatildeo de recursos e outrascaracteriacutesticas de sistemas embarcados pode impactar diretamente na forma de se utilizarSGBDs

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 27: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

14

CAPIacuteTULO 3

MATERIAIS E MEacuteTODOS

Com o objetivo de analisar o comportamento e o desempenho de SGBDsgerenciando dados locais de coleta foram selecionados dois computadores embarcadospcDuino1 e Raspberry Pi 2 O primeiro natildeo eacute tatildeo popular quanto o segundo e existemalgumas diferenccedilas entre as arquiteturas

Os SGBDs escolhidos foram o MySQL e o Redis Como exposto na Revi-satildeo de Literatura a utilizaccedilatildeo de ambos eacute importante pelo primeiro ser muito utilizadocomo produto e arquitetura contrapondo o segundo que representa um tipo diferente dearquitetura e aplicaccedilotildees

O conjunto de dados escolhido visa utilizar uma estrutura recorrente em apli-caccedilotildees de coleta cientiacutefica O volume de dados foi configurado para avaliar desempenho epossiacuteveis limites Todas essas variaacuteveis seratildeo descritas a seguir

31 Equipamentos utilizados

O pcDuino1 (figura 1) conteacutem um processador de 1Ghz da arquitetura ARMv7 Eacute necessaacuterio especificar o modelo pois existem outras versotildees Eacute uma plataforma demini PC econocircmica e de alta performance que roda sistemas operacionais como Ubuntu eAndroid

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 28: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 3 Materiais e Meacutetodos 15

Eacute possiacutevel liga-lo a um monitor por meio de sua porta HDMI Aleacutem disso eacutecompatiacutevel com o ecossistema popular do Arduino como os Shields do Arduino (pode sernecessaacuterio um Shield de ponte) e projetos open-source O sistema operacional utilizadoUbuntu 1204 foi instalado na memoacuteria Flash de 2GB

Para os experimentos que seratildeo realizados natildeo seraacute necessaacuterio utilizar osrecursos de conexatildeo com Shields de Arduino A conexatildeo com a internet eacute feita pormeio de rede cabeada conectada a LAN RJ45 Natildeo eacute necessaacuterio utilizar dissipadores nomicrocontrolador A Tabela 1 descreve algumas caracteriacutesticas do hardware do pcDuino 1

Item DetalhesCPU 1GHz ARM Cortex A8GPU OpenGL ES20 OpenVG 11 Mali 400 coreMemoria 1GByteArmazenamento Integrado 2GB Flash microSD card (TF) de ateacute 32GBSaiacuteda de Viacutedeo HDMISOs suportados Linux30 + Ubuntu 1204 Android ICS 40Interface de Extensatildeo Conjunto de pinos de 254mm semelhante aos do ArduinoInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mADimensotildees 125mm X 52mmPreccedilo 38 USD

Tabela 1 ndash Configuraccedilatildeo do computador embarcado pcDuino 1

Figura 1 ndash pcDuino 1

O outro sistema utilizado foi o Raspberry Pi 2 B+ O Raspberry Pi 2 eacute umaplataforma de mini PC popular utilizada em milhares de projetos Esse eacute um dos vaacuteriosprojetos da onda de hardwares open source iniciada pelo Arduino Os modelos existentessatildeo o Raspberry Pi Raspberry Pi 2 e mais recentemente o Raspberry Pi 3

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 29: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 3 Materiais e Meacutetodos 16

Dentre esses modelos alguns tem variaccedilotildees A e B relacionadas a caracteriacutesti-cas fiacutesicas como tamanho e conectores disponiacuteveis O modelo utilizado nos experimentoso Raspberry Pi 2 B+ possui um processador Broadcom de arquitetura ARM v7 CortexA7 com quatro nuacutecleos de 900MHz Esse processador tem 1GByte de memoacuteria RAMseparada do chip Tem saiacutedas HDMI 4 USB 20 e um slot micro SD A placa natildeo temarmazenamento interno e o sistema operacional eacute instalado em um cartatildeo de memoacuteria noslot micro SD A conexatildeo com a internet eacute feita por meio da interface LAN ou adaptadoresUSB

Adicionalmente a placa tem conexotildees para display cacircmera e aacuteudio viacutedeocomposto por meio de um conector de 35 mm Essas uacuteltimas natildeo seratildeo necessaacuterias paraos estudos de caso O sistema operacional instalado foi o Raspibian que eacute derivado doDebian A tabela 2 lista algumas caracteriacutesticas do Raspberry Pi 2

Item DetalhesCPU 900MHz quad-core ARM Cortex-A7 CPUGPU VideoCore IV 3D graphics coreDRAM 1GB RAMArmazenamento Integrado slot para microSD cardSaiacuteda de Viacutedeo e audio HDMI e 35mm com video e audio integradosSOs suportados Noobs Raspibian AndroidInterface de Rede 10100Mbps RJ45 e adaptador USB WiFi (natildeo incluso)Energia recomendada 5V 2000mAConexotildees adicionais 4x USB 20 camera e displayDimensotildees 85mm x 56mmPreccedilo 35 USD

Tabela 2 ndash Configuraccedilatildeo do computador embarcado Raspberry Pi 2

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 30: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 3 Materiais e Meacutetodos 17

Figura 2 ndash Raspberry Pi 2

32 Preparaccedilatildeo do ambiente de pesquisa

Foi feito nos dois computadores embarcados (pcDuino 1 e Raspberry Pi 2)uma instalaccedilatildeo nova do sistema operacional

No caso do pcDuino 1 os passos seguidos se encontram no link httplearnlinkspritecompcduinoquick-startsteps-to-flash-ubuntu-images-to-pcduino O guia in-dica dois arquivos para ser copiados um para um cartatildeo de memoacuteria com o software de coacute-pia de arquivos de imagem de disco para unidades de armazenamento ldquowin32diskimagerrdquoque eacute um kernel do Linux que vai em inicializar a placa o outro eacute uma imagem compactadaque deve ser colocada em um pendrive para o instalador concluir o procedimento

No caso do Raspberry Pi 2 os procedimentos seguidos foram seguidos doseguinte guia httpswwwraspberrypiorgdocumentationinstallationinstalling-imageswindowsmd Esse guia sugere a utilizaccedilatildeo tambeacutem do ldquowin32diskimagerrdquo Apoacutes fazer odownload do sistema operacional desejado disponiacutevel na seccedilatildeo de downloads do mesmosite utiliza-se o ldquowin32diskimagerrdquo para gravar a imagem do disco de instalaccedilatildeo para ocartatildeo de memoacuteria Em seguida insere-se o cartatildeo no Raspberry 2 e ao liga-lo a instalaccedilatildeocomeccedila automaticamente O sistema operacional instalado foi o Raspibian

Ambas as placas tecircm instalaccedilatildeo relativamente simples e raacutepida No casodo pcDuino ocorre apenas um passo a mais no iniacutecio mesmo assim ainda pode serconsiderado sem muito obstaacuteculo A reinstalaccedilatildeo dos sistemas operacionais foi feita paraos Estudos de Caso sofrerem o miacutenimo de interferecircncia de outros programas que no casoestavam instalados anteriormente

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 31: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 3 Materiais e Meacutetodos 18

33 Armazenamento utilizado

Para reduzir o impacto da unidade de armazenamento nos experimentos seraacuteutilizado a mesma nas duas placas embarcadas Tirando proveito do fato de ambas asplacas terem portas USB 20 seraacute utilizado para todos os testes a mesma unidade USBmass storage de 8GBytes

Essa decisatildeo foi tomada por conta da diferenccedila do armazenamento do pcDuino1e do Raspberry Pi 2 o primeiro tem o sistema operacional dentro da memoacuteria flash daplaca enquanto o segundo tem o sistema operacional instalado em um cartatildeo de memoacuteriamicro SD O sistema de arquivos eacute o Ext4 formatado com o utilitaacuterio Disks disponiacutevel noUbuntu

Esse sistema de arquivos foi utilizado por conta da compatibilidade com oscomputadores embarcados e as aplicaccedilotildees Poreacutem para disponibilizar os scripts de inserccedilatildeoaos computadores embarcados foi utilizado um pen-drive de 8 GBytes com sistema dearquivo FAT

34 Preparaccedilatildeo e configuraccedilatildeo dos SGBDs

Os procedimentos seguidos para instalar o Redis foram os disponiacuteveis na proacute-pria paacutegina do produto httpredisiodownload Os procedimentos satildeo fazer o downloadextrair o arquivo compactado baixado e com o comando lsquomakersquo compilar o software

Natildeo eacute necessaacuterio para a maior parte dos casos nenhuma biblioteca adicionalFoi utilizado o GCC 463 no pcDuino 1 e no Raspberry Pi 2 o GCC 484 Em ambos satildeoos compiladores que vecircm por padratildeo com os respectivos sistemas operacionais A versatildeodo Redis utilizada eacute a 320 que ateacute a presente data eacute a mais recente estaacutevel

No caso do MySQL o cliente e o servidor estatildeo disponiacuteveis nos repositoacuteriosdos computadores embarcados utilizados Foi utilizado no pcDuino e no Raspberry Pi 2 ogerenciador de pacotes disponiacutevel lsquoapt-getrsquo A versatildeo disponiacutevel nos repositoacuterios eacute a 55

Para trocar os arquivos da base de dados do local padratildeo no SGBD MySqlde ldquovarlibmysqlrdquo que fica na unidade de armazenamento do sistema operacional foiutilizado os passos (o diretoacuterio que representa o pen-drive eacute rsquomysqlrsquo) descritos no quadro1

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 32: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 3 Materiais e Meacutetodos 19

Cria-se a pasta no diretoacuterio raiz do sistema operacional ldquo rdquomkdir mysqlEm seguida eacute necessaacuterio montar a unidade USB de armazenamento que seraacute utilizadamount devsda1 mysqlEacute necessaacuterio copiar a pasta ldquomysqlrdquo de ldquovarlibrdquo para o pendrivecp ndashR varlibmysql mysqlmysqlE para ser permitida a execuccedilatildeo posteriormentechown ndashR mysqlmysql mysql

Quadro 1 ndash Configuraccedilatildeo do rsquodatadirrsquo do MySQL

35 Caracteriacutesticas da massa de teste

Foi utilizado como referecircncia para configurar as estruturas de dados o modeloproposto por (MEIJER 2012) Nesse modelo eacute feito um comparativo entre SGBDs dostipos NoSQL e SQL As estruturas construiacutedas para ambos os bancos de dados armazenamas seguintes informaccedilotildees idMedicao idSensor tempoMedicao valorMedicao

No Redis foi feita no modelo da tabela 3 Essa estrutura eacute armazenada utili-zando o HMSET no Redis Os dados de mediccedilotildees simuladas foram formatados em umscript de inserccedilatildeo padratildeo SQL para gravaacute-los no MySQL No caso do Redis foi tambeacutemgerado um script de inserccedilatildeo automaacutetica utilizando o recurso Mass Insertion Uma amostrade ambos estaacute disponiacutevel nos anexos A geraccedilatildeo foi feita em um computador com sistemaoperacional Windows com um programa feito em C++ disponiacutevel em anexo A amostrasforam geradas de maneira a ter elementos equivalentes para ambos os SGBDs para que ascomparaccedilotildees gerem os mesmos resultados nas consultas

Nome do campo ValorMedicao numeroIdmedidor idhoraMedicao hora de mediccedilatildeovalorMedicao valor de mediccedilatildeo

Tabela 3 ndash Configuraccedilatildeo da estrutura de dados utilizada no Redis

No MySQL as colunas idMedicao idSensor e tempoMedicao foram confi-guradas com o tipo BigInt O valorMedicao eacute do tipo decimal que por padratildeo tem 10diacutegitos base 10 sem casa decimal Para o escopo dos estudos de caso natildeo seraacute utilizadatoda a capacidade de armazenamento dessa estrutura poreacutem ela foi selecionada paraaumentar a dificuldade de processamento Para cada SGBD foi criado entatildeo uma estruturade armazenamento correspondente No caso do MySQL foi criada uma tabela com asseguintes colunas (tabela 4)

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 33: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 3 Materiais e Meacutetodos 20

Nome coluna TipoidMedicao bigint unsigned not null auto_increment primary keyidSensor Bigint unsigned not nulltempoMedicao Bigint unsigned not nullvalorMedicao decimal

Tabela 4 ndash Configuraccedilatildeo das colunas do MySQL

36 Carga dos dados

No Redis foi utilizada a interface Mass Insertion disponiacutevel no cliente ldquoredis-clirdquo Essa interface permite a inserccedilatildeo de uma maior quantidade de dados em menos tempoe com menos recursos comparada a inserccedilatildeo manual ou comando por comando como ditopelo fabricante do software (httpredisiotopicsmass-insert) Os dados satildeo gerados nomodelo no quadro 2

ltargsgtltcrgtltlfgt$ltlengtltcrgtltlfgtltarg0gtltcrgtltlfgtltarg1gtltcrgtltlfgt

ltargNgtltcrgtltlfgt

Quadro 2 ndash Estrutura dos dados no arquivo de mass insertiondo Redis

No quadro 2 ltargsgt eacute o nuacutemero de argumentos do comando ltcrgtltlfgt eacute umcaractere nova linha $ltlengt eacute a quantidade de caracteres do proacuteximo argumento e ltarg ngteacute um argumento do comando Por exemplo o comando de inserccedilatildeo ldquoSET chave valorrdquo nopadratildeo Mass Insertion pode ser visto no quadro 3

3ltcrgtltlfgt -gt trecircs paracircmetros$3ltcrgtltlfgt -gt trecircs caracteres do primeiro paracircmetro

SETltcrgtltlfgt -gt primeiro paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do segundo paracircmetro

chaveltcrgtltlfgt -gt Segundo paracircmetro$5ltcrgtltlfgt -gt cinco caracteres do terceiro paracircmetro

valorltcrgtltlfgt -gt terceiro paracircmetro

Quadro 3 ndash Comando rsquoSETrsquo do Redis no modo rsquoMass Insertionrsquo

Com o arquivo criado pelo programa de geraccedilatildeo que estaacute no apecircndice A pode-se fazer a inserccedilatildeo tambeacutem no terminal do computador embarcado Para medir o tempo deexecuccedilatildeo foi utilizado o comando rsquotimersquo disponiacutevel no Linux para executar o comando deinserccedilatildeo descrito no quadro 6

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 34: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 3 Materiais e Meacutetodos 21

O procedimento para inserir os dados no MySQL foi a geraccedilatildeo de um scriptcom vaacuterios comandos ldquoINSERTrdquo para ser processado pelo cliente do MySQL e inserir osdados na tabela correspondente Inicialmente foi necessaacuterio criar uma database e a tabelaque recebe os dados como descrito no quadro 4

CREATE DATABASE dadosColetadosCREATE TABLE IF NOT EXISTS dadoscoletados(idMedicao BIGINT UNSIGNED NOT NULL AUTO_INCREMENTidSensor BIGINT UNSIGNED NOT NULLtempoMedicao BIGINT UNSIGNED NOT NULLvalorMedicao DECIMAL NOT NULLPRIMARY KEY (idMedicao))

Quadro 4 ndash Criaccedilatildeo da tabela de armazenamento dos dados de mediccedilotildees simulados

Foi utilizado para tanto um arquivo de texto SQL com sucessivos comandosldquoINSERT INTOrdquo Para executar o script que faz as inserccedilotildees sucessivas pode-se utilizar oseguinte comando no terminal do computador embarcado como descrito no quadro 5

mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 5 ndash Comando utilizado para inserir dados no MySQL

Uma configuraccedilatildeo adicional foi feita nos arquivos de inserccedilatildeo do MySQLtodas as operaccedilotildees de ldquoINSERT INTOrdquo foram colocadas entre os comandos ldquoSTARTTRANSACTIONrdquo e ldquoCOMMITrdquo Esses comandos fazem todas as alteraccedilotildees pertencerema uma transaccedilatildeo

Os comandos ficaram no seguinte formato para o Redistime ndashp cat ldquodadosmassinsertiontxtrdquo | redis-cli ndashpipe e para o MySQL

time -p mysql -u root -p ldquodatabaserdquo lt ldquoendereccediloscriptinserccedilatildeoSQLsqlrdquo

Quadro 6 ndash Sequecircncia de comandos para inserir dados com rsquoMass Insertionrsquo do Redis einserir dados no MySQL

37 Consulta dos dados

Para executar o script Lua que faz as consultas e filtragens foi utilizado ocoacutedigo descrito no quadro 7

time -p redis-cli eval $(cat scriptlua)0

Quadro 7 ndash Comando para executar o script Lua e medir o tempo gasto no servidor Redis

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 35: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 3 Materiais e Meacutetodos 22

Esse comando aleacutem de executar o script dentro do servidor retorna o tempo deexecuccedilatildeo O trecho de coacutedigo Lua utilizado para fazer a filtragem por intervalo de valoressensor e intervalo de tempo estaacute descrito no quadro 8 O script completo estaacute no apecircndiceB

if tonumber(mytable[rsquovalormedicaorsquo]) gt 59000 andtonumber(mytable[rsquovalormedicaorsquo]) lt 59200 and

mytable[rsquoidmedidorrsquo] == rsquo000004rsquo andtonumber(mytable[rsquohoramedicaorsquo]) gt 990000 andtonumber(mytable[rsquohoramedicaorsquo]) lt 993468 then

ndash executa acaoend

Quadro 8 ndash Condiccedilotildees da consulta do segundo estudo de caso

Para listar os valores maior e menor foi utilizado o coacutedigo Lua do quadro 9

if tonumber(mytable[rsquovalormedicaorsquo]) gt maior thenmaior = tonumber(mytable[rsquovalormedicaorsquo])

endif tonumber(mytable[rsquovalormedicaorsquo]) lt menor then

menor = tonumber(mytable[rsquovalormedicaorsquo])end

Quadro 9 ndash Condiccedilotildees para consulta de maior e menor

As consultas equivalentes em SQL no MySQL estatildeo descritas nos quadros 10e 11

SELECT from dadoscoletados where idSensor = 4 and valorMedicao gt 59000 andvalorMedicao lt 59200 and tempoMedicao gt 990000 and tempoMedicao lt 993468

Quadro 10 ndash Consulta SQL utilizada no segundo estudo de caso

SELECT MIN(valorMedicao) AS min MAX(valorMedicao) AS max FROMdadoscoletados

Quadro 11 ndash Consulta SQL utilizada no segundo estudo de caso

38 Resumo

Neste capiacutetulo buscou-se descrever os detalhes dos estudos de caso os com-putadores embarcados utilizados os sistemas operacionais e suas respectivas instalaccedilotildeesunidades de armazenamento utilizadas e seus preparos geraccedilatildeo das massas de teste e

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 36: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 3 Materiais e Meacutetodos 23

caracteriacutesticas a carga das massas de teste em ambos os SGBDs avaliados e por fim aconsulta dos dados Durante o processo de configuraccedilatildeo verificou-se que ambos os SGBDstecircm grandes diferenccedilas nos modos de configuraccedilatildeo e operaccedilatildeo

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 37: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

24

CAPIacuteTULO 4

RESULTADOS E DISCUSSOtildeES

41 Estudo de caso 1

No primeiro estudo de caso foi feita a carga dos dados e a medida do tempo decada carga por SGBD por computador embarcado testado Foram testados dois tipos decargas 1 milhatildeo de elementos e 25 milhotildees de elementos

411 Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1

Executando o testes no pcDuino 1 com o arquivo de 1 milhatildeo de registros doRedis as mediccedilotildees foram 5468 segundos (figura 3) O arquivo dumprdb ficou com 96MB O arquivo de inserccedilatildeo utilizado tem 149 MB

Figura 3 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 38: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 4 Resultados e discussotildees 25

Para o SGBD MySQL no pcDuino utilizando o arquivo de inserccedilatildeo com 1milhatildeo de registros os dados foram inseridos em 40066 segundos (figura 4)

Figura 4 ndash Inserccedilatildeo de 1 milhatildeo de registros no pcDuino 1 no Redis

412 Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2

No Raspberry Pi 2 o tempo de carga de 1 milhatildeo de elementos no Redisdemandou 5905 segundos (figura 5) O arquivo dumprdb ficou com 96 MBytes Oarquivo de texto de inserccedilatildeo tem 149 MBytes

Figura 5 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi no Redis

No mesmo computador embarcado foi executada uma carga de dados dessavez no MySQL utilizando um arquivo com 1 milhatildeo de elementos O tempo para completara operaccedilatildeo foi 4074 segundos (figura 6) O arquivo de inserccedilatildeo de dados ficou com 70MBytes e a pasta com os dados do SGBD ficou com 93 MBytes (figura 7)

Figura 6 ndash Inserccedilatildeo de 1 milhatildeo de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 39: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 4 Resultados e discussotildees 26

Figura 7 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 1 milhatildeo no Raspberry Pi2

413 Inserccedilatildeo de 25 milhotildees de elementos no pcDuino

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no pcDuinoutilizando o SGBD MySQL os tempos de inserccedilatildeo foi 993795 (figuras 8) O arquivo deinserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficou com 17GBytes

Figura 8 ndash Inserccedilatildeo de 25 milhotildees de registros no pcDuino no MySQL

414 Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2

Executando o script de inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi2 utilizando o SGBD MySQL o tempo de inserccedilatildeo foi 1080072 segundos (figura 9) Oarquivo de inserccedilatildeo de dados ficou com 18 GBytes e a pasta com os dados do SGBD ficoucom 17 GBytes (figura 10)

Figura 9 ndash Inserccedilatildeo de 25 milhotildees de registros no Raspberry Pi 2 no MySQL

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 40: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 4 Resultados e discussotildees 27

Figura 10 ndash Tamanho dos arquivos do MySQL apoacutes inserccedilatildeo de 25 milhotildees no RaspberryPi 2

Ao fazer a mesma operaccedilatildeo no Raspberry Pi 2 com o SGBD Redis a partirde um certo ponto de inserccedilatildeo dos 25 milhotildees de elementos houve uma sequecircncia defalhas (figuras 11 e 12) Isso ocorreu por conta do limite de armazenamento do Redisestar ligado ao tamanho da memoacuteria RAM de onde ele eacute executado como descrito nareferecircncia bibliograacutefica Natildeo foi possiacutevel encerrar os processos de inserccedilatildeo e do SGBD foinecessaacuterio reiniciar o sistema Apoacutes o reinicio verificou-se o tamanho maxiacutemo do arquivodumprdb com 296 MBytes

Figura 11 ndash Uso de memoacuteria do Redis Server durante a tentativa de inserccedilatildeo

Figura 12 ndash Uso de memoacuteria durante a tentativa inserccedilatildeo no Redis

415 Tabela de resultados do estudo de caso 1

Na tabela 5 eacute mostrado um resumo os resultados do Estudo de Caso 1

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 40066 s 993795 s 4074 s 1080072 sRedis 5468 s erro 5905 s erro

Tabela 5 ndash Gravaccedilatildeo de dados meacutedia apoacutes ligar

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 41: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 4 Resultados e discussotildees 28

42 Estudo de caso 2

No segundo estudo de caso buscou-se fazer consultas com resultados equivalen-tes no Redis e no MySQL nos computadores embarcados Para verificar o desempenho dascombinaccedilotildees de computadores embarcados SGBDs e cargas de dados foram construiacutedasduas consultas que podem ser utilizadas em ambos os SGBDs A forma como as consultasforam criadas foi descrita no capiacutetulo 3

421 Consultas em 1 milhatildeo de elementos no pcDuino

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 14636 segundos (figura 13) A consulta deintervalo de valores de mediccedilatildeo levou 15001 segundos para ser concluiacuteda (figura 14)

Figura 13 ndash Consulta de maacuteximo e miacutenimo no pcDuino e Redis

Figura 14 ndash Consulta com condiccedilotildees e intervalos no pcDuino e Redis

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 419 segundos (figura 15) Aconsulta de intervalo de valores levou 365 segundos para ser concluiacuteda (figura 15)

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 42: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 4 Resultados e discussotildees 29

Figura 15 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

422 Consultas em 1 milhatildeo de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD Redis na consultade maacuteximo e miacutenimo o tempo gasto foi 1923 segundos (figura 16) A consulta de intervalode valores de mediccedilatildeo levou 19256 segundos para ser concluiacuteda (figura 17)

Figura 16 ndash Consulta de maior e menor no Raspberry Pi 2 e Redis

Figura 17 ndash Consulta com condiccedilotildees e intervalos no Raspberry Pi 2 e Redis

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 43: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 4 Resultados e discussotildees 30

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 388 segundos (figura 18) Aconsulta de intervalo de valores levou 329 segundos para ser concluiacuteda (figura 18)

Figura 18 ndash Consultas com condiccedilotildees e intervalos no Raspberry Pi 2 e MySQL

423 Consultas em 25 milhotildees de elementos no pcDuino

Consultando o conjunto de 25 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 18297 segundos (figura 19)A consulta de intervalo de valores levou 16858 segundos para ser concluiacuteda (figura 19

Figura 19 ndash Consultas com condiccedilotildees e intervalos no pcDuino e MySQL

424 Consultas em 25 milhotildees de elementos no Raspberry Pi 2

Consultando o conjunto de 1 milhatildeo de dados em no SGBD MySQL naconsulta dos valores maacuteximos e miacutenimos o tempo gasto foi 1908 segundos A consulta deintervalo de valores levou 17151 segundos para ser concluiacuteda (figura 20)

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 44: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 4 Resultados e discussotildees 31

Figura 20 ndash Consulta com condiccedilotildees e intervalos no Raspberry e MySQL

425 Tabelas com os resultados do estudo de caso 2

A tabela 6 mostra um resumo das consultas de valores maacuteximos e miacutenimosdos conjuntos de amostras e em seguida a tabela 7 mostra um resumo do tempo consumidopara uma consulta especiacutefica nos conjuntos de amostras

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 419 s 18297 s 388 s 1908 sRedis 14636 s NA 1923 s NA

Tabela 6 ndash Consulta de dados - leitura dos valores maacuteximos e miacutenimos

SGBDpcDuino Raspberry Pi 2

1 milhatildeo 25 milhotildees 1 milhatildeo 25 milhotildeesMySQL 365 s 16858 s 329 s 17151 sRedis 15001 s NA 19256 s NA

Tabela 7 ndash Consulta de dados - busca com intervalos de valores

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 45: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

32

CAPIacuteTULO 5

CONCLUSOtildeES

Verificou-se que para sistemas embarcados com maiores recursos como osdois computadores embarcados utilizados eacute possiacutevel utilizar SGBDs para gerenciar dadosde origens como sensores

O pcDuino 1 e o Raspberry Pi 2 tiveram desempenhos semelhantes em todasas tarefas As diferenccedilas ficaram apenas no tempo de execuccedilatildeo das operaccedilotildees e ambos osSGBDs apresentados e avaliados mostraram-se capazes de realizar quase todas as tarefaspropostas de armazenar uma quantidade de dados e fazer consultas neles

No caso do MySQL foi possiacutevel armazenar os conjuntos de 1 milhatildeo deregistros e 25 milhotildees de registros No caso do Redis por ser um SGBD primariamentein-memory natildeo foi possiacutevel inserir e trabalhar um conjunto de 25 milhotildees de elementosO conjunto de 1 milhatildeo de elementos poreacutem natildeo teve problemas foi feita a inserccedilatildeo e asconsultas satisfatoacuteriamente

Analisando os resultados verifica-se que o Redis foi muito mais raacutepido do queo MySQL para fazer a gravaccedilatildeo dos dados utilizando o mass-insert levando menos de 20do tempo para executar a operaccedilatildeo com o conjunto de 1 milhatildeo de registros Por outrolado para consultar o MySQL foi muito mais raacutepido que o Redis levando menos de 10do tempo para executar as operaccedilotildees de consulta no conjunto de 1 milhatildeo de registros

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 46: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Capiacutetulo 5 Conclusotildees 33

Pela arquitetura do Redis que eacute um SGBD chave-valor primariamente con-sultas mais complexas podem ser muito caras computacionalmente A arquitetura deletanto favorece acesso direto a um registro que para executar consultas equivalentes agraves doMySQL foi necessaacuterio utilizar-se do recurso de execuccedilatildeo de script Lua no servidor Redisnatildeo tendo no cliente redis-cliferramentas para consultas com condiccedilotildees atuando sobre osdados membros dos registros Jaacute o MySQL fornece suporte a consultas mais complexasque simples consultas de valor de chaves

Com base nesses resultados quando natildeo for necessaacuterio ou com pouca frequen-cia fazer consultas complexas o SGBD Redis pode ser o mais indicado Caso contraacuterio oMySQL eacute extremamente raacutepido ao fazer consultas com varias condiccedilotildees ou se necessitarfazer junccedilotildees Uma caracteriacutestica que difere o Redis do MySQL eacute a flexibilidade nas estru-turas de dados no Redis eacute possiacutevel ter objetos com membros diferentes automaticamenteenquanto no MySQL uma vez definidas as tabelas elas natildeo aceitam colunas a mais semreconfiguraccedilatildeo ou migraccedilatildeo Um problema que o Redis apresenta em relaccedilatildeo ao MySQLeacute apenas trabalhar dentro da memoacuteria RAM ou seja natildeo existe nenhum mecanismo depaginaccedilatildeo Isso foi demonstrado na praacutetica ao fazer a inserccedilatildeo de 25 milhotildees de elementose o computador travou

Analisando as diferenccedilas de tempos de execuccedilatildeo entre o MySQL e o Redis nosdois computadores embarcados verifica-se que o Redis foi mais raacutepido no pcDuino que temum nuacutecleo de 1 GHz e o MySQL foi mais raacutepido no Raspberry Pi 2 que tem quatro nuacutecleosde 900 Mhz Eacute possiacutevel dizer que o Redis seja mais sensiacutevel a diferenccedila de processadorespor conta de executar primariamente apenas na memoacuteria RAM O MySQL suportou melhorum grande conjunto de dados comparado ao Redis Foi possiacutevel manipular quase 2 GBytesde dados nas tabelas e aparentemente esse natildeo eacute o limite nos computadores embarcados

A adoccedilatildeo de um SGBD ou de nenhum em uma aplicaccedilatildeo de coleta de dadosfica a cargo entatildeo da proacutepria aplicaccedilatildeo

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 47: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

34

CAPIacuteTULO 6

TRABALHOS FUTUROS

Vaacuterios pontos desta pesquisa podem ser explorados como uma investigaccedilatildeo douso de dados originados de sensores e natildeo simulados como foi o caso Outro aspecto aser investigado eacute a possibilidade de as caracteriacutestica dos dados de mediccedilotildees influenciarna escolha de um SGBD Natildeo foi levado em consideraccedilatildeo a integraccedilatildeo do SGBD comoutra aplicaccedilatildeo ou serviccedilo para gerenciar os dados Dependendo de como o SGBD seraacuteintegrado com outras partes de um sistema maior pode influenciar na escolha de se ter ounatildeo um SGBD e qual deles utilizar

Outras caracteriacutesticas que foram citadas que devem ser investigadas satildeo restri-ccedilotildees e caracteriacutesticas do sistema ao qual um computador embarcado com o SGBD estaraacutesituado Caracteriacutesticas como restriccedilatildeo de energia ou acesso meios de comunicaccedilatildeo vatildeoinfluenciar na configuraccedilatildeo do caminho dos dados de sensores

Redes de coleta de dados de diferentes sensores podem tambeacutem ser alvo depesquisa a partir de que ponto por exemplo um SGBD NoSQL vai ser mais vantajosoque um relacional ao se trabalhar com dados heterogecircneos Outra caracteriacutestica que podeser explorada satildeo estudos sobre a alteraccedilatildeo dos dados visto que este trabalho focou naconsulta

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 48: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

35

REFEREcircNCIAS

ABRAMOVA V BERNADINO J FURTADO P Experimental evaluation of nosqldatabases International Journal of Database Management Systems v 6 n 3 jun 2014 9

BARR M Embedded systems glossary 2007 04-21 p Disponiacutevel em lthttpwwwbarrgroupcomEmbedded-SystemsGlossary-Agt 12

BROWNE J Brewerrsquos CAP Theorem 2015 Disponiacutevel em lthttpwwwjulianbrownecomarticleviewerbrewers-cap-theoremgt 9

CATTELL R Scalable sql and nosql data stores SIGMOD v 39 n 4 2010 10

DATE C J Database Systems 8 ed [Sl] Addison-Wesley 2004 6

EVANS D The internet of things - how the next evolution of the internet is changingeverything Cisco Internet Business Solutions Group (IBSG) 2011 1 9

INDRAWAN-SANTIAGO M Database research Are we at a crossroad 15thInternational Conference on Network-Based Information Systems 2012 10

KOOPMAN P Embedded system design issues (the rest of the story) IEEE ComputerDesign VLSI in Computers and Processors ICCD-96 Proceedings p 310ndash317 1996 12

KUMAR D J C K The Collection Analysis and Use of Monitoring and EvaluationData [Sl] World Bank Publication 1988 1

MEIJER J S van der Veen Bram van der W R J Sensor data storage performance Sqlor nosql phisical or virtual IEEE Fifth International Conference on Cloud Computing2012 19

MYSQL MYSQL -The Main Features of MySQL 2015 8

OUNALLI I F H Towards a flexible database interrogation IJDMS v 4 n 3 2012 7

REDISLAB REDIS 2015 Disponiacutevel em lthttpredisiogt 10

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 49: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

Referecircncias 36

SPELIOTIS D E Magnetic recording beyond the first 100 years magnetic recordingbeyond the first 100 year In THIC Meeting at the Naval Surface Warfare Center [Slsn] 2000 6

STOLERU S M G W Z H C M W Y O L A P R Distressnet A wireless ad hocand sensor network architecture for situation management in disaster response IEEECommunications Magazine 2010 9

SUDARSHAN A S H F K S Database System Concepts 8 ed [Sl] Addison-Wesley2004 6 7

VIEBRANTZ M R V J M de F G L A F M Bancos de dados nosql Conceitosferramentas linguagens e estudos de casos no contexto de big data Simpoacutesio Brasileiro deBancos de Dados - SBBD 2012 2012 9

WIDENIUS M M Sun buys MySQL AB 2008 Disponiacutevel em lthttpmonty-saysblogspotcombr200801sun-buys-mysql-abhtmlgt 8

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 50: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

37

APEcircNDICE A

GERADOR DE DADOS DE MEDICcedilAtildeODE SENSORES

Este eacute o programa utilizado para gerar os dados de mediccedilatildeo utilizados nosestudos de caso

i n c l u d e lt c s t d i o gt i n c l u d e lt i o s t r e a m gt i n c l u d e lt f s t r e a m gt i n c l u d e lt s t r i n g gt i n c l u d e lt c s t d l i b gt i n c l u d e ltct ime gt i n c l u d e lt c s t r i n g gt

us ing namespace s t d

c l a s s g e r a d o r p r i v a t e

i n t f l a g

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 51: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 38

p u b l i c g e r a d o r ( ) ~ g e r a d o r ( ) void r e d i s ( i n t pAmostras ) void mysql ( i n t ) void geraAoMesmoTempo ( i n t )

i n t main ( i n t argc char lowastlowast a rgv )

g e r a d o r o b j G e r a d o r o b j G e r a d o r geraAoMesmoTempo ( 1 5 )

p r i n t f ( h e l l o wor ld n ) re turn 0

g e r a d o r g e r a d o r ( ) f l a g = 0

g e r a d o r ~ g e r a d o r ( ) f l a g = 1

void g e r a d o r geraAoMesmoTempo ( i n t pAmostras ) o f s t r e a m a r q u i v o S a i d a R e d i s o f s t r e a m a r q u i v o S a i d a M y s q l s t r i n g chave = a m o s t r a s t r i n g nome_ tabe l a = d a d o s c o l e t a d o s s t r i n g cod ig o char c s t r c o d i g o [ 6 4 ] s t r i n g s t r v a l o r char c h r v a l o r [ 6 4 ] i n t v a l o r = 0 i n t l e n g t h i n t a m o s t r a s = pAmostras

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 52: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 39

char c s t r i d s e n s o r [ 3 0 ]

a r q u i v o S a i d a R e d i s open ( r e d i s m a s s i n s e r t t x t i o s o u t | i o s t r u n c ) a r q u i v o S a i d a M y s q l open ( m y s q l i n s e r t t x t i o s o u t | i o s t r u n c )

s r a n d ( t ime (NULL ) )

a r q u i v o S a i d a M y s q l ltlt START TRANSACTION ltlt n

f o r ( i n t i = 1 i lt a m o s t r a s i ++)

l e n g t h = 0 v a l o r = rand ( ) 100000 + 50000 f o r ( i n t j = 0 j lt 6 4 j ++)

c s t r c o d i g o [ j ] = 0

i n t i d s e n s o r = ( i 5) + 1

s p r i n t f ( c s t r c o d i g o d i ) co d i go a s s i g n ( c s t r c o d i g o ) s p r i n t f ( c h r v a l o r d v a l o r ) s t r v a l o r a s s i g n ( c h r v a l o r )

s p r i n t f ( c s t r i d s e n s o r d i d s e n s o r )

l e n g t h += chave s i z e ( ) l e n g t h += c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt lowast10 n 10 argumentos

a r q u i v o S a i d a R e d i s ltlt $5 n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt HMSET n hmse t

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 1) ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt chave ltlt ltlt co d ig o ltlt n chave

a r q u i v o S a i d a R e d i s ltlt $7 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt medicao n medicao

l e n g t h = c od igo s i z e ( ) a r q u i v o S a i d a R e d i s ltlt $ ltlt l e n g t h ltlt n q t d l e t r a s

a r q u i v o S a i d a R e d i s ltlt cod ig o ltlt n chave

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 53: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

APEcircNDICE A Gerador de dados de mediccedilatildeo de sensores 40

a r q u i v o S a i d a R e d i s ltlt $9 n 9 l e t r a s

a r q u i v o S a i d a R e d i s ltlt i d m e d i d o r n i d m e d i d o r

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( s t r l e n ( c s t r i d s e n s o r ) + 5) ltlt n 6 l e t r a s

a r q u i v o S a i d a R e d i s ltlt 00000 ltlt c s t r i d s e n s o r ltlt n co d ig o 000001

a r q u i v o S a i d a R e d i s ltlt $11 n 11 l e t r a s

a r q u i v o S a i d a R e d i s ltlt horamed icao n horamedicao

a r q u i v o S a i d a R e d i s ltlt $ ltlt ( l e n g t h + 6) ltlt n x l e t r a s

a r q u i v o S a i d a R e d i s ltlt 123456 ltlt co d ig o ltlt n horamedicao

a r q u i v o S a i d a R e d i s ltlt $12 n 3 l e t r a s

a r q u i v o S a i d a R e d i s ltlt v a l o r m e d i c a o n s e t

a r q u i v o S a i d a R e d i s ltlt $ ltlt s t r v a l o r s i z e ( ) ltlt n 5 l e t r a s

a r q u i v o S a i d a R e d i s ltlt s t r v a l o r ltlt n v a l o r

mysql

a r q u i v o S a i d a M y s q l ltlt i n s e r t i n t o a r q u i v o S a i d a M y s q l ltlt nome_ tabe l a a r q u i v o S a i d a M y s q l ltlt v a l u e s ( a r q u i v o S a i d a M y s q l ltlt co d i go ltlt a r q u i v o S a i d a M y s q l ltlt 00000 ltlt i d s e n s o r ltlt ltlt 123456 ltlt cod ig o ltlt a r q u i v o S a i d a M y s q l ltlt s t r v a l o r ltlt ) ltlt n

a r q u i v o S a i d a M y s q l ltlt COMMIT ltlt n a r q u i v o S a i d a R e d i s c l o s e ( ) a r q u i v o S a i d a M y s q l c l o s e ( )

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 54: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

41

APEcircNDICE B

SCRIPT LUA DE CONSULTA NOSGBD REDIS

Este programa escrito em Lua foi utilizado para executar as consultas noservidor do SGBD Redis Aqui estatildeo inclusos varios trechos de coacutedigo comentados comalgumas condiccedilotildees utilizadas nas consultas Dois traccedilos (ndash) fazem da linha um comentaacuterio

l o c a l sum = 0l o c a l matches = r e d i s c a l l ( rsquoKEYS rsquo rsquo a m o s t r a lowast rsquo )

l o c a l menor = 99999 l o c a l maior = 0

l o c a l h g e t a l l = f u n c t i o n ( key )l o c a l bu lk = r e d i s c a l l ( rsquoHGETALL rsquo key )

l o c a l r e s u l t = l o c a l n e x t k e yf o r i v in i p a i r s ( bu lk ) do

i f i 2 == 1 thenn e x t k e y = v

e l s e

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis
Page 55: SGBD em embarcados: uma aplicação visando dados científicosbdm.ufmt.br/bitstream/1/373/1/TCCP_2016_Izandro... · o pcDuino 1 e o Raspberry Pi 2. Ambos contêm processadores de

APEcircNDICE B Script Lua de consulta no SGBD Redis 42

r e s u l t [ n e x t k e y ] = vend

endreturn r e s u l t

end

f o r _ key in i p a i r s ( matches ) dominusminus l o c a l v a l = r e d i s c a l l ( rsquoGET rsquo key )

minusminus p u t t h e r e d i s hash i n t o a d i c t i o n a r y t a b l e

l o c a l mytab le = h g e t a l l ( key )i f tonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) gt 55030 andtonumber ( my tab le [ rsquo v a l o r m e d i c a o rsquo ] ) lt 73000 andmytab le [ rsquo i d m e d i d o r rsquo ] == rsquo 000004 rsquo andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) gt 1234565 andtonumber ( my tab le [ rsquo horamed icao rsquo ] ) lt 12345614 thenminusminus i f m y t a b l e [ rsquo i d m e d i d o r rsquo ] == rsquo000005 rsquo t h e n

p r i n t ( key )minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) gt maior t h e n

minusminus maior = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

minusminus i f tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] ) lt menor t h e n

minusminusmenor = tonumber ( m y t a b l e [ rsquo v a l o r m e d i c a o rsquo ] )

minusminusend

f o r k v in p a i r s ( my tab le ) dop r i n t ( rsquo rsquo k rsquo minusgt rsquo v )

endend

end

minusminus p r i n t ( rsquo maior rsquo )

minusminus p r i n t ( maior )

minusminus p r i n t ( rsquo menor rsquo )

  • Dedicatoacuteria
  • Agradecimentos
  • Resumo
  • Abstract
  • Sumaacuterio
  • Lista de ilustraccedilotildees
  • Lista de tabelas
  • Lista de quadros
  • Lista de abreviaturas e siglas
  • Introduccedilatildeo
  • Fundamentaccedilatildeo Teoacuterica
    • Sistemas Gerenciadores de Banco de Dados
    • SGBDs relacionais
      • MySQL
        • SGBDs natildeo relacionais
          • Redis
            • Sistemas Embarcados
            • Resumo
              • Materiais e Meacutetodos
                • Equipamentos utilizados
                • Preparaccedilatildeo do ambiente de pesquisa
                • Armazenamento utilizado
                • Preparaccedilatildeo e configuraccedilatildeo dos SGBDs
                • Caracteriacutesticas da massa de teste
                • Carga dos dados
                • Consulta dos dados
                • Resumo
                  • Resultados e discussotildees
                    • Estudo de caso 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no pcDuino 1
                      • Inserccedilatildeo de 1 milhatildeo de elementos no Raspberry Pi 2
                      • Inserccedilatildeo de 25 milhotildees de elementos no pcDuino
                      • Inserccedilatildeo de 25 milhotildees de elementos no Raspberry Pi 2
                      • Tabela de resultados do estudo de caso 1
                        • Estudo de caso 2
                          • Consultas em 1 milhatildeo de elementos no pcDuino
                          • Consultas em 1 milhatildeo de elementos no Raspberry Pi 2
                          • Consultas em 25 milhotildees de elementos no pcDuino
                          • Consultas em 25 milhotildees de elementos no Raspberry Pi 2
                          • Tabelas com os resultados do estudo de caso 2
                              • Conclusotildees
                              • Trabalhos Futuros
                              • Referecircncias
                              • Gerador de dados de mediccedilatildeo de sensores
                              • Script Lua de consulta no SGBD Redis