Um Processo para Armazenamento e Visualização de …

42
UNIVERSIDADE FEDERAL DE MATO GROSSO INSTITUTO DE COMPUTAÇÃO COORDENAÇÃO DE ENSINO DE ESPECIALIZAÇÃO EM BANCO DE DADOS UM PROCESSO PARA ARMAZENAMENTO E VISUALIZAÇÃO DE PADRÕES EM NOTAS FISCAIS ELETRÔNICAS LEANDRO RICARDO SANTOS CUIABÁ - MT 2015

Transcript of Um Processo para Armazenamento e Visualização de …

UNIVERSIDADE FEDERAL DE MATO GROSSOINSTITUTO DE COMPUTAÇÃO

COORDENAÇÃO DE ENSINO DE ESPECIALIZAÇÃO EM

BANCO DE DADOS

UM PROCESSO PARA ARMAZENAMENTO EVISUALIZAÇÃO DE PADRÕES EM NOTAS FISCAIS

ELETRÔNICAS

LEANDRO RICARDO SANTOS

CUIABÁ - MT

2015

UNIVERSIDADE FEDERAL DE MATO GROSSOINSTITUTO DE COMPUTAÇÃO

COORDENAÇÃO DE ENSINO DE ESPECIALIZAÇÃO EM

BANCO DE DADOS

UM PROCESSO PARA ARMAZENAMENTO EVISUALIZAÇÃO DE PADRÕES EM NOTAS FISCAIS

ELETRÔNICAS

LEANDRO RICARDO SANTOS

Orientador: Profa. Dra. Claudia Aparecida Martins

Monografia apresentada ao Curso de Especializaçãoem Banco de Dados, do Instituto de Computaçãoda Universidade Federal de Mato Grosso, comorequisito para obtenção do título de Especialista emBanco de Dados.

CUIABÁ - MT

2015

Leandro Ricardo Santos

Um Processo para Armazenamento e Visualização dePadrões em Notas Fiscais Eletrônicas

Trabalho aprovado.

Cuiabá-MT, de de

Profa. Dra. Claudia Aparecida MartinsOrientador

Profa. Dra. Andreia Gentil BonfanteConvidado 1

Prof. MSc. Nilton Hideki TakagiConvidado 2

Este trabalho é dedicado às crianças adultas

que, quando pequenas, sonharam em se tornar

cientistas.

AGRADECIMENTOS

Os agradecimentos principais são direcionados à minha esposa, Patt EmanuelleRosa Carvalho Santos, a minha filha, Lara Sofia Rosa Santos e minha mãe, Ana Lucia dosSantos. A família é o que nos motiva a sempre progredir.

Agradecimentos são direcionados a todos do corpo docente do Instituto daComputação da Universidade Federal de Mato Grosso, em especial a Prof. Dr. ClaudiaAparecida Martins, ao Prof. Dra. Andreia Gentil Bonfante e ao Prof. Ms. Nilton HidekiTakagi. Excelentes tutores... grandes amigos.

O sucesso é ir de fracasso em fracasso

sem perder entusiasmo.

Fernando Pessoa

ABSTRACT

Brazil has experienced over the past few years, a complete reform in its tax collectionsystem. Of paper to digital files, with the revolution in production and mass storageinformation, there is a perfect environment for the use of methodologies for extractingstrategic information. Thinking about it, this paper proposes the development of a webtool for data mining, using as a case study the on electronic invoices, uniting moderndevelopment tools such as Node.js, MongoDB and the Weka software, powerful engine fordata mining.

Key-words: data mining. electronic invoices.

SUMÁRIO

Lista de Algoritmos . . . . . . . . . . . . . . . . . . . . . . . . . . . vii

1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

1.1 Mineração de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2 Notas Fiscais Eletrônicas . . . . . . . . . . . . . . . . . . . . . . . 4

1.3 Objetivo do Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.4 Metodologia e divisões dos Capítulos . . . . . . . . . . . . . . . . 5

2 MATERIAIS E MÉTODOS . . . . . . . . . . . . . . . . . . . . . 6

2.1 MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2 Node.JS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.3 WEKA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2.4 JavaScript InfoVis Toolkit . . . . . . . . . . . . . . . . . . . . . . . 13

3 SAMN - SISTEMA DE APOIO AO ARMAZENAMENTO E PRO-

CESSO DE MINERAÇÃO DE NOTAS FISCAIS . . . . . . . . . . 15

3.1 Análise de padrões de dados . . . . . . . . . . . . . . . . . . . . . 17

3.2 Inserindo Informações - Notas Fiscais Eletrônicas . . . . . . . . . 18

4 EXECUÇÃO E RESULTADOS ALCANÇADOS . . . . . . . . . . 21

4.1 Formatação da Base de Dados - arquivos ARFF . . . . . . . . . . . 21

4.2 Transição do DASHBOARD para o processo de Mineração de Dados 23

4.3 Resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

5 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

LISTA DE ILUSTRAÇÕES

Figura 1 – Ciclo de um processo de KDD (CHAGAS; CHAN; CORSI, 2009). . . 3Figura 2 – MongoDB VS SQL Server 2008 (PESSOA et al., 2012) . . . . . . . . 8Figura 3 – Estrutura de uma Collection do MongoDB . . . . . . . . . . . . . . . 9Figura 4 – 10.000 requisições, 10 concorrentes (JSKVARA, 2010) . . . . . . . . 10Figura 5 – 100 requisições, 100 concorrentes (JSKVARA, 2010) . . . . . . . . . 11Figura 6 – Weka (WAIKATO, 1993) . . . . . . . . . . . . . . . . . . . . . . . . 13Figura 7 – Dashboard (BELMONTE, 2013) . . . . . . . . . . . . . . . . . . . . 14Figura 8 – Criando um novo projeto com o framework Express . . . . . . . . . . 16Figura 9 – Executando projeto novo . . . . . . . . . . . . . . . . . . . . . . . . 17Figura 10 – Cadastrando uma nova nota fiscal eletrônica . . . . . . . . . . . . . . 18Figura 11 – Exemplo de Shcema e Registro salvo no MongoDB . . . . . . . . . . 20Figura 12 – Nota fiscal eletrônica cadastrada com sucesso . . . . . . . . . . . . . 20Figura 13 – Dashboard visual da mineração de dados . . . . . . . . . . . . . . . . 25Figura 14 – Apresentação dos Resultados dos Softwares . . . . . . . . . . . . . . 27

LISTA DE ALGORITMOS

3.1 Código fonte para incluir novo registro no MongoDB. . . . . . . . . . . . . 184.1 Função responsável pelo agrupamento de valores por fornecedor, produção

do arquivo ARFF e exibição do resultado do processo de mineração de dados. 234.2 Classe Weka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

LISTA DE ABREVIATURAS E SIGLAS

ABNT Associação Brasileira de Normas Técnicas

JSON JavaScript Object Notation

ACID Atomicidade, Consistência, Isolamento Durabilidade

NFe Nota Fiscal Eletrônica

DNA Ácido Desoxirribonucléico

OBE Ordem do Império Britânico

PHP Hypertext Preprocessor

NoSQL Não Somente SQL

MVC Modelo Visão Controle

API Interface de Programação de Aplicativos

1

CAPÍTULO 1

INTRODUÇÃO

No século passado, a humanidade passou por um progresso sem precedentesem sua história. Adquiriu mais conhecimento em 100 anos do que nos últimos 2.000 anossomados. Da teoria da relatividade geral, a identificação da penicilina, a fissão nuclear,o mapeamento da estrutura do DNA, o laser, o radar... Só pra citar alguns. Sem dúvidas,foram descobertas revolucionárias e geniais, tendo todas contribuído significativamente namelhora de nossas vidas, mas poucas foram tão decisivas para a explosão de produtividade,geração de riqueza e conhecimento como a que proporcionou a invenção de Alan Turing,criador do computador moderno, idealizador da concepção de algoritmos e considerado opai da computação.

O computador (o que computa; calculador, calculista) é uma máquina des-tinada ao processamento de dados, capaz de obedecer a instruções que visam produzirtransformações para alcançar um determinado fim. É uma ferramenta que proporcionouuma revolução em todas as áreas do conhecimento humano, da educação a medicina,chegando enfim, a internet, com seu compartilhamento massivo de informações. Hoje, estáclaro como a computação proporcionou alteração profunda em nossa sociedade, seja noentretenimento, serviços ou mesmo no modo como nos relacionamos uns com os outros.

A popularização do computador, bem com sua miniaturização e sua universa-lização, aliada com a evolução em armazenamento de informações e a hiperconectivade,

Capítulo 1. Introdução 2

produziram uma quantidade expressiva de informações geradas e coletadas, tornando-senecessário uma análise e aperfeiçoamento da extração de informações relevantes, surgindoentão os conceitos de Business Intelligence, Data Warehouse e, por fim, Data Mining.

Hoje, não há dúvidas que a informação é um bem precioso. Mas o que fazercom um grande acúmulo de informação? Isso por si só seria a chave para o sucesso?Absolutamente, não. Como pesquisar bilhões de registros de maneira eficiente? É aí queentra o processo de Mineração de Dados1 para auxiliar no entendimento dos dados, etentando fazer toda a diferença.

1.1 Mineração de Dados

“Nós estamos construindo sistemas para colecionar dados, mas o pró-ximo desafio é interpretar estes dados, e isto é o que a mineração dedados faz”. (LALLAY, 1994 apud NEWING, 1996, p. 3)

Mineração de dados (MD) é o processo de explorar grandes quantidades de da-dos, fazendo uso de análise matemática, estatística e computacional, para descobrir padrõesconsistentes de informação, detectando assim novos subconjuntos de dados. Geralmente,esses padrões não são descobertos com a exploração tradicional, pelo fato de as relaçõesserem muito complexas, haver dezenas ou centenas de variáveis e/ou conter milhares dedados. Em suma, com a mineração de dados é possível obter informações estratégicas quenão seriam possíveis com os conceitos básicos de pesquisa, em que o usuário tem umavisão pré determinada do que pesquisar.

Há aproximadamente 20 anos, um caso de sucesso da cadeia de varejo estado-unidense Wal-Mart, despertou o interesse global para o processo de mineração de dados. Aempresa identificou um hábito curioso dos consumidores. Ao procurar eventuais relaçõesentre o volume de vendas, o software apontou que, nos fins de semana, as vendas defraldas cresciam na mesma proporção que as de cervejas. Crianças bebendo cerveja? Não.Uma investigação mais detalhada revelou que, ao comprar fraldas para seus bebês, os paisaproveitavam para abastecer as reservas de cerveja para o final de semana. Assim, toda aquinta-feira, a Wal-Mart altera a disposição dos produtos de suas lojas para assegurar queos compradores de fraldas encontrem as tais cervejas (MENCONI, 1998, p. 93–98).

Outro exemplo, mais recente, também amplamente divulgado, impressionapelo volume de informações coletadas, armazenadas e “mineradas”. Trata-se do programaamericano de vigilância PRISM, no qual um data center de 2 bilhões de dólares entrou emfuncionamento completo em setembro de 2013, carregando informações provenientes deaproximadamente todos os meios de comunicação existentes (TRENHOLM, 2011). Isso1 Do inglês Data Mining.

Capítulo 1. Introdução 3

inclui conversas de e-mail, ligações telefônicas, pesquisas em sites de busca e mais umgrande número de dados adquiridos por meio digital (skype, redes sociais, etc). Estima-seque seja possível arquivar cerca de 1 yottabyte de dados no complexo2. Examinar tantainformação seria difícil sem o uso de técnicas computacionais de análise de dados.

Atualmente, o processo de mineração de dados está sendo amplamente utili-zado por grandes empresas como forma de ganhar eficiência. Bancos utilizam técnicasde mineração de dados, analisando informações como idade, escolaridade, estado civil,salário na hora de conceder ou restringir créditos. O Google, analisa informações do seusistema de busca para oferecer produtos que o usuário deseja, de parceiros previamenteselecionados. O Facebook, por meio das preferências de seus usuários, direciona feeds

específicos do interesse pessoal. Não obstante, o uso da mineração não se restringe tãosomente a governos ou grandes grupos empresariais. Com o surgimento de novas tecnolo-gias, somada à alta compatibilidade de dispositivos, é cada vez mais comum e acessível ouso de mineração da dados como ferramenta para tomada de decisões.

Na Figura 1, é mostrado um exemplo visual do ciclo de um processo demineração de dados, também conhecido como processo KDD (Knowledge Discovery in

Datasets), no qual cada etapa pode ser entendido da seguinte maneira:

Figura 1 – Ciclo de um processo de KDD (CHAGAS; CHAN; CORSI, 2009).

1. Seleção - Entendimento do problema. Fase inicial do projeto, tem como objetivoprincipal identificar as metas através da análise da problemática.

2. Pré-Processamento - Entendimento e identificação dos dados. Limpeza dos dados eseleção dos algoritmos a serem utilizadas para o processamento das informações.

2 1 yottabyte equivale a 1 milhão de exabytes ou 1,000,000,000,000,000 de gigabytes (GELLMAN;POITRAS, 2013).

Capítulo 1. Introdução 4

3. Transformação - Preparação dos dados. Adaptação da tabela de dados ao formato es-pecífico do algoritmo utilizado, transformação e adequação dos dados aos algoritmosde mineração de dados.

4. Data Mining - Modelagem do problema. Nesta fase é realizada a extração e análisedos dados. É a etapa principal da extração de padrões.

5. Interpretação/Avaliação - Qualificação do Modelo. Avaliar os modelos gerados deacordo com a visão do problema, validando as regras ou possíveis falhas.

6. Conhecimento - Publicação e uso do Modelo. Tornar a informação acessível paratomada de decisão por meio de uma ferramenta específica ou até mesmo um relatório.

1.2 Notas Fiscais Eletrônicas

Uma nota fiscal eletrônica (NF-e) é um documento digital, emitido e arma-zenado eletronicamente, com o intuito de documentar uma operação de circulação demercadorias ou uma prestação de serviços, ocorrida entre as partes, e está em vigor desdeo dia 15 de setembro de 2006. De acordo com o próprio site do Ministério da Fazenda<http://www.nfe.fazenda.gov.br/portal/principal.aspx>, até hoje3 foram registrados 11,724bilhões de notas fiscais eletrônicas. Uma quantidade razoavelmente baixa, tendo em vista apotência dos bancos de dados atuais, e que se trata de todas as notas fiscais de todas asempresas emitidas no Brasil, do começo da implantação da nova tecnologia, até os diasatuais, quase 10 anos de registro fiscais de todo um país. Uma mina de ouro de informaçõespossíveis de aplicar o processo de mineração de dados.

Pensando na riqueza que tal conjunto de dados representa e, após constatara escassez de trabalhos relacionados ao tema (há trabalhos nacionais e internacionaisrelacionados a mineração de dados com formato xml, mas não especificamente com notasfiscais eletrônicas), o objetivo deste trabalho é o desenvolvimento de um processo detratamento e armazenamento de notas fiscais e a aplicação do processo de mineração dedados em dados obtidos de NFe’s para obter informações e compreender a natureza dosdados macroeconômicos.

1.3 Objetivo do Trabalho

O objetivo deste trabalho foi o desenvolvimento de um processo para trata-mento e armazenamento de notas fiscais eletrônicas, por meio de uma interface de software,3 Acessado e junho de 2015

Capítulo 1. Introdução 5

visando a extração de padrões usando o processo de mineração de dados e, assim, possibi-litando a extração de informações complexas, para auxiliar o gestor a tomar as melhoresdecisões.

1.4 Metodologia e divisões dos Capítulos

Para o desenvolvimento deste trabalho, optou-se como metodologia o usodo software de banco de dados orientado a documentos, MongoDB, a plataforma paraambientes distribuídos Node.JS, o software de mineração de dados WEKA e a ferramentapara visualização de informações JIT.

O trabalho está dividido da seguinte forma: no Capítulo 2 as técnicas e ferra-mentas utilizadas neste trabalho; no Capítulo 3 a proposta e a metodologia utilizada; noCapítulo 4 os resultados alcançados e, por fim, no Capítulo 5 as conclusões e trabalhosfuturos

6

CAPÍTULO 2

MATERIAIS E MÉTODOS

Como mencionado, foi desenvolvido um processo para armazenamento denotas fiscais e, posterior, tratamento das informações utilizando técnicas de mineração dedados, usando uma interface gráfica. Para isso, foram utilizados os seguintes softwares:

• Banco de dados NoSQL MongoDB (MONGODB, 2007)

• Plataforma web Node.js (NODEJS, 2007)

• Plugin para mineração de dados Weka (WAIKATO, 1993)

• JIT - JavaScript InfoVis Toolkit (BELMONTE, 2013)

Com exceção do WEKA, todos fazem o uso de dados em formato JSON1,dispensando assim, a penalização do uso de drivers e plugins para a comunicação de dados,possibilitando um dialogo nativo e harmônico entre as partes. A seguir, são apresentadasalgumas características dos softwares utilizados.1 Acrônimo para JavaScript Object Notation

Capítulo 2. Materiais e Métodos 7

2.1 MongoDB

MongoDB (do inglês humongous, "gigantesco") é uma aplicação de bancode dados NoSQL de código aberto, orientado a documentos, sem esquemas e de altaperformance. Foi desenvolvida na linguagem de programação C++. Além de orientado adocumentos, é formado por um conjunto de documentos JSON. Muitas aplicações podem,dessa forma, modelar informações de modo muito mais natural, pois os dados podemser aninhados em hierarquias complexas e continuar a ser indexáveis e fáceis de buscar(WIKIPéDIA, 2010). Algumas vantagens citadas com relação ao MongoDB são:

“Poder, ele fornece várias características de um banco de dados relaci-onal e tradicional, tais como índices secundários, consultas dinâmicas,classificação atualizações ricos, upserts (atualizar se o documento existe,inserir, se ele não existe), e de agregação fácil. Isto dá-lhe a amplitudeda funcionalidade que você está acostumado a partir de um banco dedados relacional e tradicional, com a capacidade de flexibilidade e esca-labilidade que o modelo não-relacional permite” (HOROWITZ, 2012).

“Velocidade/Escalabilidade, ao manter os dados relacionados juntos emdocumentos, as consultas podem ser muito mais rápidas do que em umbanco de dados relacional em que os dados são separados em várias ta-belas e, então, precisa ser juntado mais tarde. MongoDB também facilitaa expandir a sua base de dados. Autosharding permite dimensionar ocluster linearmente pela adição de mais máquinas, e também permite Ba-lanceamento automático de mudanças na distribuição de carga e dados”(WEISSMANN, 2010).

O MongoDB é um software atual e, para justificar a escolha dele, é apresentadoum comparativo de performance com um dos principais banco de dados disponível nomercado: Microsoft SQL Server. De acordo com o estudo Banco de Dados MongoDBversus Banco de Dados SQL Server 2008, realizado por Pessoa et al. (2012), há umasuperioridade em relação ao desempenho do banco de dados MongoDB sobre o banco dedados SQL Server 2008, em todas as operações testadas.

No caso da Inserção, a exemplo da Figura 2a é possível perceber mais nitida-mente essa superioridade, sendo que esta ocorre com qualquer quantidade de registros, equanto maior a quantidade de registros, maior a superioridade. No caso da Exclusão, háuma relevante superioridade do banco de dados MongoDB.

Porém, de acordo com a Figura 2b, nos casos de consulta, ocorre o seguinte:quando a quantidade de registros trazidos da base é pequena e os registros a seremconsultados são diferentes, o SQL Server é superior. Conforme a quantidade toma maioresproporções o MongoDB vai superando o SQL Server. Mas quando se trata de uma consultade um mesmo valor só que várias vezes, simultaneamente, o MongoDB supera o SQLServer em qualquer quantidade.

Capítulo 2. Materiais e Métodos 8

(a) Gráfico Inserção/Segundos

(b) Gráfico Consulta/Segundos

Figura 2 – MongoDB VS SQL Server 2008 (PESSOA et al., 2012)

Por outro lado, respondendo: "Mas o que é no NoSQL?"NoSQL é um nomepopular para um grupo de software de armazenamento estruturado que é desenhado eotimizado para alta performance de operações em grandes conjunto de dados. Esta otimi-zação vem com um prejuízo ao estrito cumprimento do ACID (atomicidade, consistência,isolamento, e durabilidade) e, como o próprio nome já diz, e sintaxe SQL nativa. O softwareNoSQL é fácil para desenvolvedores utilizarem, escalável horizontalmente e otimizadopara específicos tipos de trabalho.

Quando se trata de banco de dados NoSQL, é difícil algo melhor do que afacilidade de uso oferecida pelo MongoDB. Ele não apenas é bem documentado e suportadopor uma ampla e prestativa comunidade, mas também é amigável a desenvolvedores comhistórico em SQL, muitas consultas e uma grande quantidade de raciocínio relacionalpodem ser diretamente aplicadas ao MongoDB a partir do SQL, tornando-o um sistemaespecialmente atrativo.

Capítulo 2. Materiais e Métodos 9

Em banco de dados relacionais, uma única entidade é armazenada em umalinha com uma série de colunas. Uma vez que entidades são definidas em um esquemaestrito, toda linha terá as mesmas colunas. O trabalho com entidades envolve a comparaçãode colunas com pouquíssimo custo adicional: todos os dados são iguais por concepção.No MongoDB, não existe nenhum esquema estritamente definido e não existem linhascontendo colunas - em vez disso, toda entidade é armazenada em um documento com umnúmero qualquer de campos.

Considerando que documentos fornecem bastante poder, é importante armaze-nar mais informações relacionadas sobre cada entidade dentro do documento, até mesmocolocando listas de documentos dentro de outros documentos. Em vez de efetuar consultasmúltiplas para o banco de dados de modo a obter um conjunto completo de informações(como poderia fazer com um banco de dados SQL), você pode carregar conjuntos de dadoscompletos em uma única operação.

Por se tratar da criação de um sistema (SMN) para visualização de informaçõesprovenientes de documentos fiscais (notas fiscais eletrônicas), nada melhor do que apersistência em um banco de dados especialista em tais dados e como ambas as ferramentas,tanto Node.js quanto o MongoDB, manipulam valores em javascript, possibilitando umacomunicação primária perfeita, dispensando assim, uma segunda camada de plugins edrivers para troca de informações.

Figura 3 – Estrutura de uma Collection do MongoDB

Na Figura 3, um exemplo de como é formada a estrutura de persistência doMongoDB. Por ser um banco de dados orientado a documento, se assemelha muito aoformato JSON.

Assim, com base nessas informações e características, o MongoDB foi o bancode dados escolhido para o procedimento proposto a este projeto.

Capítulo 2. Materiais e Métodos 10

2.2 Node.JS

Node.js é uma plataforma construída utilizando a engine V8 JavaScript doGoogle Chrome para facilmente construir aplicações de rede rápidas e escaláveis, usandoum modelo de I/O direcionada a evento não bloqueante que o torna leve e eficiente,ideal para aplicações em tempo real com troca intensa de dados através de dispositivosdistribuídos.

Quando se fala em desenvolvimento na web, é inevitável comparar o Node.jscom a tecnologia mais utilizada no mercado. o PHP. Enquanto o PHP possui plataformasmaduras, como o WordPress, Drupal, Magento, entre outras, o Node.js conta com umdesempenho assombroso — com uma quantidade de módulos gigantescos e uma ótimaescalabilidade por não possuir threads bloqueantes, diferente do combo PHP + Apacheque atendem apenas um usuário por vez, gerando uma enfileiramento para as requisições.Quanto mais usuários acessando, maior a “fila” e, consequentemente, menor o desempenho.

Para ilustrar o desempenho desses softwares, a seguir será apresentado algunstestes comparativos entre eles (JSKVARA, 2010).

Figura 4 – 10.000 requisições, 10 concorrentes (JSKVARA, 2010)

De acordo com os testes realizados por JSKVARA (2010) na Figura 4, o PHPlevou em média 5.4162 segundos para realizar as requisições, enquanto o Node.js levouuma média de apenas 2.7756 segundos.

Capítulo 2. Materiais e Métodos 11

Figura 5 – 100 requisições, 100 concorrentes (JSKVARA, 2010)

O teste realizado mostrado na Figura 5 utiliza um cálculo um pouco mais com-plexo (cálculo do Pi). Os códigos fontes utilizados para o cálculo podem ser encontradosno endereço <https://github.com/jskvara/node-js-vs-apache-php-benchmark>.

É possível perceber uma boa diferença entre eles. Enquanto o PHP levou emmédia 37.4984 segundos para completar as requisições, o Node.js levou apenas 3.8054segundos, ou seja, muito mais rápido.

2.3 WEKA

O software Weka2 (Waikato Environment for Knowledge Analysis) é formadopor um conjunto de implementações de algoritmos de diversas técnicas de Mineração deDados, que usa a General Public License (GPL) (WAIKATO, 1993).

O software foi escrito na linguagem Java e contém uma interface gráficapara interagir com arquivos de dados e produzir resultados visuais. Ele também temuma API geral, podendo ser incorporado como qualquer outra biblioteca, a seus própriosaplicativos, sendo possível executar tarefas de mineração de dados automatizadas no ladodo servidor. Para desenvolver aplicações e scripts com Weka, é necessário ter o ambientede desenvolvimento Java (J2SE, Java 2 Standard Edition) instalado. Note que não bastater somente a máquina virtual (J2SE Runtime Environment), é necessário ter instaladoo Development Kit. As suas características, bem como as técnicas nele implementadassão descritas de forma detalhada em Witten, Frank e Hall (2005), responsáveis pelaimplementação da ferramenta.2 http://www.cs.waikato.ac.nz/ml/weka/

Capítulo 2. Materiais e Métodos 12

De acordo com Laudon e Laudon (2011, p. 159) podemos destacar os tipos detarefas realizadas usando um processo de mineração de dados:

• Regras de Associações: São ocorrências ligadas a um único evento. Por exemplo:um estudos de modelos de compra em supermercados pode revelar que, na comprade salgadinhos de milho, compra-se também um refrigerante tipo cola em 65% dasvezes: mas, quando há uma promoção, o refrigerante é comprado em 85% das vezes.Com essas informações, os gerentes podem tomar decisões mais acertadas poisaprenderam a respeito da rentabilidade de uma promoção.

• Classificação: Reconhece modelos que descrevem o grupo ao qual um determinadoitem pertence por meio da análise dos itens já classificados e pela inferência de umconjunto de regras. Exemplo: empresas de operadoras de cartões de crédito e compa-nhias telefônicas preocupam-se com a perda de clientes regulares, a classificaçãopode ajudar a descobrir as características de clientes que provavelmente poderãoabandoná-las e oferecer um modelo para ajudar os gerentes a prever quem são, demodo que se elabore antecipadamente campanhas especiais para reter esses clientes.

• Aglomeração: Também conhecido como clustering. Consiste em agrupar os dadossem que os mesmos tenham sido classificados anteriormente. Uma ferramenta demineração de dados encontrará diferentes agrupamentos dentro da massa de dados.Por exemplo, encontrar grupos de afinidades para cartões bancários ou dividir obanco de dados em categorias de clientes com base na demografia e em investimentospessoais.

Embora todas essas aplicações envolvam previsões, os prognósticos as utilizamde modo diferente. Partem de uma série de valores existentes para prever quais serão osoutros valores. Por exemplo um prognóstico pode descobrir padrões nos dados que ajudamos gerentes a estimar o valor futuro de variáveis com números de vendas. Na Figura 6 éapresentado um exemplo de classificação do software Weka.

Capítulo 2. Materiais e Métodos 13

(a) Tela inicial - Weka

(b) Exemplo de classifiação

Figura 6 – Weka (WAIKATO, 1993)

2.4 JavaScript InfoVis Toolkit

Criado por Nicolas Garcia Belmonte, o JavaScript InfoVis Toolkit (JIT3) éuma API javascript de alta performance, elaborado para a visualização de dashboards

dinâmicos e interativos em tempo real, isto é, seus gráficos fluem de acordo com comandosdo usuário.3 <http://philogb.github.io/jit/index.html>

Capítulo 2. Materiais e Métodos 14

Belmonte, especialista em visualizações de dados, desenvolve dashboards paraos mais variados fins, seja para medir audiência de redes sociais, seja para representaçãoclimática da terra (Figura 7a), para fluxo aéreo (Figura 7b) ou mesmo para torneiosesportivos. Para mais informações, acesse <http://philogb.github.io>.

(a) Exemplo de dashboard para representação de efeito estufa

(b) Exemplo de dashboard para dados de aviação global

Figura 7 – Dashboard (BELMONTE, 2013)

15

CAPÍTULO 3

SAMN - SISTEMA DE APOIO AO

ARMAZENAMENTO E PROCESSO DE

MINERAÇÃO DE NOTAS FISCAIS

Neste trabalho foi desenvolvido um processo para tratamento e armazenamentode notas fiscais eletrônicas, por meio de uma interface de software e de mineração de dados,visando a compreensão e extração de padrões nos dados. Este processo foi denominado deSistema de Apoio ao Armazenamento e Processo de Mineração de Notas Fiscais (SAMN).O desenvolvimento deste processo consistiu das seguintes etapas:

OBSERVAÇÕES: FALAR AQUI SOBRE:

1 - COMO FOI O ARMAZENAMENTO NO BANCO DE DADOS DASNOTAS FISCAIS...

2 - COMO FOI A LIGAÇÃO DO BANCO COM O WEKA

3 - COMO FOI A LIGAÇÃO DO WEKA COM A VISUALIZAÇÃO

Para criar o novo projeto, com o auxílio do express e o express-generator, bastaselecionar a pasta em que o node.js se encontra instalado e, pelo prompt de comando, digitar“express + nome-da-aplicação”. Nas próximas figuras, a criação do projeto "smn"como

Capítulo 3. SAMN - Sistema de Apoio ao Armazenamento e Processo de Mineração de Notas Fiscais 16

exemplo. Imediatamente após criar o projeto, instale as dependências utilizadas pelo novoprojeto, através do comando "npm install". Caso você não o faça, ao tentar executar oprojeto, se depará com o seguinte erro: Connot find module ’serve-favicon’.

Figura 8 – Criando um novo projeto com o framework Express

O Express então, criará um projeto com todos os arquivos e pastas iniciais(Figura 8), separados seguindo o Designer Pattern MVC. São criado as pastas:

• bin - Pasta responsável por manter código executável, geralmente ele é muito utili-zado para manter executáveis do tipo CLI (Command Line Interface).

• public - Também denomidada em muitos casos como static ou assets: esses 3 nomesservem para o mesmo objetivo que é manter e servir arquivos estáticos (html, css, js,fonts, imagens, etc).

• routes: Em grandes aplicações, é aconselhável criar a pasta routes para manter asso-ciações entre funções (conhecidas também pelo nome actions) dos controllers comrotas da aplicação. Para isso, você pode criar um diretório routes para manter códigosde cada grupo de rotas de um controller ou você pode manter tudo centralizado emum arquivo routes.js que é algo muito utilizado por exemplo pelo framework Sails.js.

• views: Este diretório deve manter arquivos de html dinâmico.

O arquivo app.js é o principal aquivo do projeto. Responsável pelas rotas dosistema, carregamento de variáveis estáticas e de configurações, como definição de cookies.

Capítulo 3. SAMN - Sistema de Apoio ao Armazenamento e Processo de Mineração de Notas Fiscais 17

O package.json guarda as informações de metadados do nosso projeto. É responsável pelasinformações do projeto e suas dependência.

Após concluído, já é possível executar o projeto criado. Para isso, entre peloprompt de comando, selecione a pasta criada e digite: "node bin/www". O node vai iniciaro projeto na porta 3000, configurada no arquivo www. Agora, é só ir no browser e digitar oendereço: “localhost:3000” para acessar a página inicial do projeto (Figura 9).

Figura 9 – Executando projeto novo

3.1 Análise de padrões de dados

No projeto Mineração de Dados - Análise de Padrões de Dados, desenvolvidopara esta monografia, além destes, ainda teremos as seguintes pastas:

• ARFF - Responsável por criar um arquivo do tipo arff com as informações vinda dobanco de dados.

• models - Este diretório deve conter apenas módulos que representem entidades debanco de dados, geralmente o nome models esta muito associado a tabelas de umbanco de dados relacional

• node_modules - Pasta responsável por armazenar modulos de terceiros, utilizado noprojeto. Aqui estará os modulos express, express_generation entre outros.

• weka - Reponsável por armazenar codigo fonte para fazer efetivamente a mineraçãode dados. A pasta jar contém o arquivo weka-3.7.11.jar, baixado do site <http://www.cs.waikato.ac.nz/ml/weka/downloading.html>.

Capítulo 3. SAMN - Sistema de Apoio ao Armazenamento e Processo de Mineração de Notas Fiscais 18

• xml - Contém a cópia dos arquivos xml utilizados no sistema. O sistema está divididoem 3 menus básicos, a tela inicial "Monografia", a tela “Dashboard”, responsávelpela visualização da Mineração de Dados e por último, a tela “NFe’s”, responsávelpela inserção de notas fiscais eletrônicas.

3.2 Inserindo Informações - Notas Fiscais Eletrônicas

Para inserir notas fiscais, vá para o menu NFe’s e clique no botão "+ UploadArquivos", selecione o arquivo xml correspondente a nota fiscal eletrônica, e em sequida,clique em "Enviar". Na Figura 10, vemos como esse processo é executado.

Figura 10 – Cadastrando uma nova nota fiscal eletrônica

O arquivo é enviado ao servido node.js em formato texto e será convertido emobjeto XML. Já em formato XML, são extraídos somente as informaões úteis a regra denegócio e são setados em dois objetos Javascript o tipo schema, específico para persistênciano banco de dados MongoDB. Todo o processo é descrito no Algoritmo 3.1.

var xml2js = require(’xml2js’);

var arquivo = require(’fs’);

var NFe = require(’../models/nfe’);

var parser = new xml2js.Parser();

router.post(’/upload’, function (req, res) {

//Capiturando path

var path = req.files.file.path;

//Lendo path capiturado

arquivo.readFile(path, function (err, data) {

if (err) console.log(err);

Capítulo 3. SAMN - Sistema de Apoio ao Armazenamento e Processo de Mineração de Notas Fiscais 19

//Convertendo texto lido para objeto XML

parser.parseString(data, function (err, result) {

if (err) console.log(err);

//Capiturando inf. que seram persistidas.

var nfe = new NFe(); {...}

//Salvando inf.

nfe.save(function (err, row) {

if (err) res.send(err);

console.log(’Salvo com sucesso’);

//Listando objetos

NFe.find(function (err, data) {

if (err) res.send(err);

req.flash(’info’, ’NFe cadastrado com sucesso!’);

res.render(’nfe/index’, {lista:data, moment:moment,

title:’Nfe\’s’

});

});

});

});

});

});

Algoritmo 3.1 – Código fonte para incluir novo registro no MongoDB.

Na Figura 11, detalhes de um novo registro, visto a partir de uma consultadireta ao MongoDB, via prompt de comando.

Capítulo 3. SAMN - Sistema de Apoio ao Armazenamento e Processo de Mineração de Notas Fiscais 20

Figura 11 – Exemplo de Shcema e Registro salvo no MongoDB

Um novo registro será criado, como exibido na Figura 12:

Figura 12 – Nota fiscal eletrônica cadastrada com sucesso

21

CAPÍTULO 4

EXECUÇÃO E RESULTADOSALCANÇADOS

Neste capítulo será apresentado o pré-processamento dos dados e os resultadosobtidos usando os conceitos e técnicas sobre o processo de informações entre o Node.js,Weka e o JIT, incluindo os códigos fontes utilizado no sistema SAMN.

4.1 Formatação da Base de Dados - arquivos ARFF

O plugin do Weka executa arquivos no formato ARFF, que corresponde atextos contendo um conjunto de observações, precedido por um pequeno cabeçalho. Ocabeçalho é utilizado para fornecer informações a respeito dos campos que compõem oconjunto de observações.

Vale observar que o formato ARFF é o formato utilizado pelo WEKA, todavia,os dados foram pré-processados para que fossem executados usando regras de associação.Essa adaptação resulta em uma base de dados com uma estrutura um pouco eficiente,porém capaz de ser manipulada pela ferramenta. No arquivo nfe.arff, um exemplo de basede dados ARFF contendo 7 transações e envolvendo 14 itens (atributos).

nfe.arff

Capítulo 4. Execução e Resultados Alcançados 22

@RELATION NFe

@ATTRIBUTE carne_de_1 {yes , no}

@ATTRIBUTE carne_de_2 {yes , no}

@ATTRIBUTE frango_inteiro {yes , no}

@ATTRIBUTE peito_de_frango {yes , no}

@ATTRIBUTE Cafe_250_gr {yes , no}

@ATTRIBUTE Farinha_de_trigo_01_kg {yes , no}

@ATTRIBUTE Arroz_tipo1__05_kg {yes , no}

@ATTRIBUTE carne_de_2_em_pedacos {yes , no}

@ATTRIBUTE Acucar_Cristal_02_kg {yes , no}

@ATTRIBUTE Alho {yes , no}

@ATTRIBUTE Ovos_de_galinha {yes , no}

@ATTRIBUTE carne_moida {yes , no}

@ATTRIBUTE cebola {yes , no}

@ATTRIBUTE molho_de_tomate_340g {yes , no}

@DATA

yes,yes,yes,yes,?,?,?,?,?,?,?,?,?,?

?,?,?,?,yes,yes,?,?,?,?,?,?,?,?

?,?,?,?,?,?,yes,yes,?,?,?,?,?,?

?,?,?,?,yes,?,?,?,yes,?,?,?,?,?

?,?,?,?,?,?,?,?,?,yes,yes,yes,yes,yes

yes,yes,yes,?,?,?,?,?,?,?,?,?,?,?

?,?,yes,?,?,?,?,?,?,?,?,?,?,?

Todos os itens que compõem a base de dados precisam ser especificados nocabeçalho do arquivo ARFF. Cada item é tratado como um atributo distinto. Eles devemser configurados como sendo do tipo categórico, suportando apenas dois valores (ex: y,nou yes,no).

Veja que essa formatação do arquivo ARFF não é muito prática, pois seestivesse sendo realizada a mineração de uma base contendo 1000 itens (ex: 1000 produtosde um supermercado, algo bastante comum), seria preciso montar um cabeçalho com 1000linhas. No entanto, é possível usar diretamente o conjunto de dados no formato de arquivoCSV.

Na formatação das transações foi usado um macete: A substituição de itens “no”pelos itens ausentes, representados com “?”. Se o mesmo não for utilizado, a Weka acaba

Capítulo 4. Execução e Resultados Alcançados 23

minerando regras envolvendo itens ausentes, o que pode vir a ser bastante inconveniente.Um exemplo: alho = ’n’ => cebola = ’n’, regra que poderia ser interpretada como"quem não compra alho, também não compra cebola". Para uma base de dados real, essainformação pode até vir a ser útil em alguns casos, mas em nossa regra de negócio, milharesde regras inúteis deste tipo acabariam sendo geradas.

4.2 Transição do DASHBOARD para o processo de Mineração deDados

Após a inclusão de novos registros, o dashboard do sistema está apto a serutilizado. O termo dashboard surgiu como objetivo de fornecer um painel com informaçõesrelevantes, afim de dar praticidade na visualização dos padrões encontrados nos dados.

No menu Dashboard, selecione a razão social e em seguida, o tipo de técnica aser utilizada no processo de mineração. O sistema então consultará no banco de dados dofornecedor selecionado e irá criar com base nos resultados, o arquivo com extensão ARFF,formato aceito pelo Weka para o processo de mineração de dados - Algoritmo 4.1.

var NFe = require(’../models/nfe’);

/* GET users listing. */

router.get(’/show/fornecedor’, function (req, res) {

var nomeFonecedor = req.query.valor;

var agg = [

{$match: {xNomeFornecedor: nomeFonecedor}},

{$group: {_id: ’$produto.xProd’}}

];

NFe.aggregate(agg, function (err, dataAggr) {

if (err) res.send(err);

createARFF.arff(dataAggr, function cb(file){

weka.loadARFF(req.query.tipoMineracao, file, function cb(){

res.json(weka.dataMining());

});

});

});

});

Capítulo 4. Execução e Resultados Alcançados 24

Algoritmo 4.1 – Função responsável pelo agrupamento de valores por fornecedor,produção do arquivo ARFF e exibição do resultado do processo demineração de dados.

O método arff da classe createARFF, recebe como parâmetro o resultado daconsulta agrupada e um callback com um aquivo ARFF legível para ser executado pelométodo loadARFF, da classe weka. Este por sua vez, recebe o arquivo ARFF, o tipo detécnica de mineração desejado e um callback com os resultados a serem enviados aoBrowser.

A Classe weka (Algoritmo 4.2) é responsável por parametrizar um novo objeto,definido pela variável options, que será executado como script, junto com o arquivo dedados ARFF.

var arff = require(’node-arff’);

var weka = require(’./weka-lib.js’);

var arquivo = require(’fs’);

var path = ’./weka/tmp/data.arff’;

exports.loadARFF = function(type, file, cb){

arquivo.writeFile(path, file, function (err) {

if (err) console.log(err);

arff.load(path, function(err, data) {

if (err) console.error(err);

var testData = {};

if(type == ’apriori’){

var options = {

’association’: ’weka.associations.Apriori’,

’params’ : ’’

};

weka.associaty(data, testData, options, function (err,

result) {

dataMiningResult = result;

cb();

});

}

Capítulo 4. Execução e Resultados Alcançados 25

if(type == ’classify’){...}

if(type == ’cluster’){...}

});

});

};

Algoritmo 4.2 – Classe Weka

Com as variáveis definidas, a classe weka-lib.js é instanciada com o objetivode executar o processo de mineração de dados. É esta classe que contem o script a serexecutado, por meio de um comando java, junto ao weka, instalado localmente.

O javascript tem uma função nativa chamada “exec”. Esta função recebe comoparâmetro uma string e a executa como comando nativo do Sistema Operacional. Nestecaso, é processado um comando java, identificando a localização de nossa library weka(./weka/jar/weka-3.7.11.jar), e sua parametrização. A função fornece um callback contendouma string com o resultado idêntico ao executado diretamente no software do Weka. Esteresultado passa então, por um processo de refinamento, removendo informações inúteis eselecionado somente as cinco principais associações. Assim, o mesmo é apresentado emforma de gráficos, no browser (Figura 13).

Figura 13 – Dashboard visual da mineração de dados

4.3 Resultados

O pressuposto inicial de que há uma grande quantidade de informação econhecimento "escondidos"em registros de notas fiscais eletrônicas é possivelmente válido,uma vez que a riqueza de informações obtidas a partir de técnicas como a de associação

Capítulo 4. Execução e Resultados Alcançados 26

podem representar um diferencial na gestão de informações em áreas como: Logística,Contábil, Micro e Macroeconômica, entre outras.

Regras de associação é uma das técnicas utilizadas em mineração de dados.Assim, com base em informações das nfe’s, pode-se afirmar que os resultados apresentadospelo dashboard do sistema SAMN auxiliam o usuário a ter noção de quais produtos sãomais propensos a serem vendidos em conjunto. Pode-se ter resultados poderosos, masresultados pouco eficazes também podem ocorrer. Como o Weka não se preocupa em fazerfiltros após os resultados apresentados, nos casos de base de dados com poucos dados(pequenas), o Weka pode não conseguir encontrar padrões por não ter itens suficentes paradescrever algum padrão que possa ocorrer nos dados.

Com esses dados, nesse caso vendas, é possível ver o exemplo apresentadona Figura 14, a maior frequência de vendas ser: alho = 2 => cebola = 2 e a segundamaior frequência de vendas ser: cebola = 2 => alho = 2, invertendo somente a ordemdos produtos. Isso acontece provavelmente por que nessa base de dados utilizada contémpoucos exemplos e que é preciso aumentar o conjunto de dados para analisar melhor oresultado.

Após testes com com dados de diversos fornecedores, os resultados alcançadosmostraram que a ferramenta desenvolvida informa associação sobre os itens vendidos e,assim, quais produtos são mais propensos a serem vendidos e em quais eventos eles podemocorrem.

Capítulo 4. Execução e Resultados Alcançados 27

(a) Resultado da Mineração de Dados por Associação representado pelo Software Weka

(b) Resultado da Mineração de Dados por Associação representado pelo Software SAMN

Figura 14 – Apresentação dos Resultados dos Softwares

28

CAPÍTULO 5

CONCLUSÃO

Sabe-se o processo de mineração de dados tem um potencial para agregarvalor a área comercial, oferecendo informações estratégicos a seus usuários. Este processoalgumas vezes pode ser vista como uma solução com alto custo e complexa. Contudo, istoaos poucos começa a mudar, com o surgimento de novas plataformas, muitas grátis, oumesmo de código aberto, como o software disponibilizado pela Universidade de Waikato,Weka.

O objetivo deste trabalho foi o desenvolvimento de um processo para trata-mento e armazenamento de notas fiscais eletrônicas, por meio de uma interface de software,visando a extração de padrões usando o processo de mineração de dados e, assim, possibi-litando a extração de informações complexas, para auxiliar o gestor a tomar as melhoresdecisões. Para isso, apresentou as técnicas utilizadas e o desenvolvimento de um sistemapara realização de todo esse processo. O resultado final, consistiu da visualização gráficado resultado obtido com as regras de associação no processo de mineração de dados.

Sendo assim, com o intuito de chegar ao resultado - Mineração de NFe’s - foidesenvolvido um processo que agrega diversas ferramentas para atingir o objetivo destetrabalho, o SAMN - Sistema de Apoio ao Armazenamento e Processo de Mineração de

Notas Fiscais. Após a implementação usando diversos recursos computacionais e os testes

Capítulo 5. Conclusão 29

realizados, o software criado apresenta-se como ferramenta de visualização interessantepara mineração de dados, tornando os resultados de grande valia na tomada de decisões.

Não obstante, ao longo do desenvolvimento deste sistema, percebeu-se apossibilidade de chegar ao mesmo resultado por outros métodos, inclusive, de maneiramais eficaz. Neste trabalho, foi utilizado a classe padrão do arquivo “weka-3.7.11.jar”do Weka, weka.associations.Apriori, o que resulta em um simples texto, acarretando ouso que quebras de string e excessivos loops para captura dos valores desejados. Dianteda dificuldade de manipulação de dados e da redução de performance, é recomendado acriação de um novo arquivo jar, fazendo uma “ponte” direta entre o sistema proposto e osoftware Weka, servindo assim, para facilitar o retorno de valores.

Além da tarefa de mineração de dados por regras de associação, o sistemadesenvolvido neste trabalho (SAMN), também está apto para aplicação de outras tarefasde mineração de dados como, classificação e agrupamento cluster, faltando sua integraçãoao dashboard. Esta proposta de integração está como uma etapa de trabalhos futuros.

30

REFERÊNCIAS

BELMONTE, N. G. 2013. Disponível em: <http://philogb.github.io/jit/index.html>.Acesso em: 4.7.2015. vi, 6, 14

CHAGAS, D. J.; CHAN, C. S.; CORSI, A. C. Análise do banco de atendimentos da defesacivil do estado de são paulo. 2009. Disponível em: <http://ppegeo.igc.usp.br/pdf/anigeo/v33n1/v33n1a03.pdf>. Acesso em: 11.2.2015. vi, 3

GELLMAN, B.; POITRAS, L. Us intelligence mining data fromnine u.s. internet companies in broad secret program. 2013.Disponível em: <http://www.washingtonpost.com/investigations/us-intelligence-mining-data-from-nine-us-internet-companies-in-broad-secret-program/2013/06/06/3a0c0da8-cebf-11e2-8845-d970ccb04497_story.html>. Acesso em: 24.3.2015.3

HOROWITZ, E. Introdução ao MongoDB. 2012. Introdução ao MongoDB. Disponívelem: <http://www.mongodb.org>. Acesso em: 8.5.2015. 7

JSKVARA. Node + JavaScript vs Apache + PHP benchmark. 2010. Node +JavaScript vs Apache + PHP benchmark. Disponível em: <https://github.com/jskvara/node-js-vs-apache-php-benchmark>. Acesso em: 2.5.2015. vi, 10, 11

LAUDON, K.; LAUDON, J. Sistemas de Informações Gerenciais. 9rd. ed. [S.l.]: MorganKaufmann Publishers, 2011. 12

MENCONI, D. A mineração de informações. Info Exame. São Paulo, n. 144, p. 93–98,1998. 2

MONGODB. MongoDB. 2007. MongoDB. Disponível em: <https://www.mongodb.org/>.Acesso em: 3.5.2015. 6

NEWING, R. Mineração de Dados. Management Accounting. [S.l.: s.n.], 1996. 34-35 p. 2

NODEJS. 2007. NodeJS. Disponível em: <https://nodejs.org/>. Acesso em: 3.5.2015. 6

Referências 31

PESSOA, B. C. et al. Banco de dados mongodb vs banco de dados sql server 2008. 2012.Disponível em: <http://revistas.unifenas.br/index.php/RE3C/article/download/18/11>.Acesso em: 11.3.2015. vi, 7, 8

TRENHOLM, R. NSA to store yottabytes in Utah data centre. 2011. Disponível em:<http://www.cnet.com/uk/news/nsa-to-store-yottabytes-in-utah-data-centre/>. Acesso em:23.3.2015. 2

WAIKATO, U. de. Data Mining Software in Java. 1993. Disponível em: <http://www.cs.waikato.ac.nz/ml/weka/>. Acesso em: 3.5.2015. vi, 6, 11, 13

WEISSMANN, H. L. Introdução ao MongoDB: um banco de dados NoSQL.2010. Introdução ao MongoDB: um banco de dados NoSQL. Disponível em:<http://www.itexto.net/devkico/?p=682>. Acesso em: 17.5.2015. 7

WIKIPéDIA. O que é MongoDB. 2010. Disponível em: <https://pt.wikipedia.org/wiki/MongoDB>. Acesso em: 3.5.2015. 7

WITTEN, I. H.; FRANK, E.; HALL, M. A. Data Mining: Practical Machine LearningTools and Techniques. 2rd. ed. [S.l.]: Morgan Kaufmann Publishers, 2005. 11