DIFERENÇAS NO DESENVOLVIMENTO DE APLICAÇÕES WEB COM BD TRADICIONAL E BD NOSQL MONGODB

Documentos relacionados
SGBD NoSQL 1. Dácio Alves Florêncio

EA975 - Laboratório de Engenharia de Software

MANIPULAÇÃO DE DADOS GEOGRÁFICOS EM BANCOS DE DADOS NoSQL - resultados preliminares

BIG DATA: UMA INTRODUÇÃO. Prof. Ronaldo R. Goldschmidt

Laboratório de Banco de Dados. Prof. Luiz Vivacqua.

BCD29008 Banco de dados

4º Congresso Científico da Semana Tecnológica - IFSP 2013, copyright by IFSP de outubro de 2013, Bragança Paulista, SP, Brasil

MongoDB BANCO DE DADOS NÃO RELACIONAL ORIENTADO A DOCUMENTOS BANCO DE DADOS AVANÇADOS VALÉRIA TIMES

Técnico em Informática. Banco de Dados. Profª Ana Paula Mandelli

M V C, J S O N E X M L P R O F. M E. H É L I O E S P E R I D I Ã O

Introdução. O que é um Banco de Dados (BD)?

Banco de Dados. Professora: Luciana Faria

BCD29008 Banco de dados

EA975 - Laboratório de Engenharia de Software

Capítulo 9: Sistemas de banco de dados

Uma Comparação entre MongoDB E CouchDB A Comparison between MongoDB and CouchDB RESUMO

Banco de dados POO Márcio Delamaro. Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP

Marcio Victorino. Análise de Informações TCU - TI

Desenvolvimento Web II

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

Banco de Dados. -Aprendendo conceitos -Usando o SQL Conf para: -Conectar no banco de dados -Criar, alterar, excluir e consultar estruturas de tabelas

Aula 06 Sistemas Embarcados LT38C

Informática Parte 5 Prof. Márcio Hunecke

Curso Online de Banco de Dados. Plano de Estudo

Matéria Introdutória. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SGBD NoSQL. Débora Souza in940

Análise Comparativa entre Bancos de Dados NoSQL para Realização de Cache de Banco de Dados em Aplicações Web

Banco de Dados I Introdução SQL

SGBDs NoSQL Modelos e Sistemas de Colunas e Grafos. Aluno: Jorge Dias Disciplina: IN940

BANCO DE DADOS. Araújo Lima. Fev / Araújo

NoSql Uma Alternativa ao Tradicional Modelo Relacional

Curso de Banco de Dados. Prof. Rone Ilídio

Modelagem Física e SQL

Aula 01 Revisão Geral Banco de Dados I Conceito de Banco de Dados e SGBD

A linguagem SQL

Administração de Sistemas Operacionais. Prof. Marlon Marcon


Revisando Banco de Dados. Modelo Relacional

ORGANIZANDO DADOS E INFORMAÇÕES: Bancos de Dados

2 Instalando e configurando o ambiente de desenvolvimento do Microsoft SQL Server

Introdução. descrever os tipos de interfaces e linguagens oferecidas por um SGBD. mostrar o ambiente de programas dos SGBD s

Curso: Banco de Dados I. Conceitos Iniciais

Arquivo. Banco de Dados. Organização dos Arquivos. Banco de Dados. Banco de Dados. Introdução a Computação

Bancos de Dados NoSQL

Professor Leonardo Larback

Sistemas Gerenciadores de Banco de Dados

Atualização e Inserção de Dados. SQL Avançado. Pedro F. Carvalho OCP Oracle g

Uma Breve Introdução. Andréa Bordin

CASSANDRA: BANCO DE DADOS NÃO RELACIONAL DE ALTO DESEMPENHO

Flickr, shindotv/ / BASES DE DADOS. Laboratórios de Informática João Paulo Barraca, André Zúquete, Diogo Gomes

EA975 - Laboratório de Engenharia de Software. Objetivo do curso. Turmas K/L Aula 1

Desenvolvimento Web II

Conexão com Banco de Dados, Inserção, exclusão e atualização de registros

COMPARATIVO DE DESEMPENHO DE SISTEMAS DE BANCO DE DADOS SQL E NOSQL USANDO NODE.JS

Introdução a Banco de Dados Prof. Msc Denival A. dos Santos

Marcio Victorino

Sistemas de Banco de Dados

Banco de Dados. Disciplina: Teoria e Fundamentos de Sistemas de Informação. Professor: Thiago Silva Prates

Banco de Dados I. Prof. Diego Buchinger. Profa. Rebeca Schroeder Freitas Prof. Fabiano Baldo.

Introdução a Sistemas Gerenciadores de Banco de Dados

GERAÇÃO DE ARQUIVOS DE SCRIPT EM PHP. Acadêmico: Leonardo Sommariva Orientador: Alexander Roberto Valdameri

P R O F. M E. H É L I O E S P E R I D I Ã O. Eng. Computação

Proposta de calendário - Comissão Permanente de Ensino

ESTUDO SOBRE A TECNOLOGIA DE BANCO DE DADOS NoSQL

modelo introduzido por E. F. Codd Meados da década de 70: protótipos. INGRES (UC Berkeley, 73 77) System R (IBM Research at San Jose, 74 78)

Bancos de Dados Distribuídos. Bancos de Dados Distribuídos. Conteúdo. Motivação. Motivação. Introdução aos BDs Distribuídos.

Prof. Luiz Fernando. Unidade I ADMINISTRAÇÃO

Bancos de Dados Distribuídos

Banco de dados. Prof. Emiliano S. Monteiro 5º.Sem. Licenciatura

Conceitos Básicos. Fundação Centro de Análise, Pesquisa e Inovação Tecnológica Instituto de Ensino Superior - FUCAPI. Disciplina: Banco de Dados

MySql. Introdução a MySQL. Andréa Garcia Trindade

Modelagem Física e SQL

Banco de dados. Objetivo: Reter os dados de forma que possam ser utilizados em outros momentos

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Unidade 1 Introdução

Banco de dados. Objetivo: Reter os dados de forma que possam ser utilizados em outros momentos

Universidade Federal de Uberlândia Faculdade de Computação Projeto de Programação para Internet Prof. Dr. Daniel A Furtado

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Revisão Banco de Dados

SISTEMA DE GERENCIAMENTO DE CONTEÚDO DE PÁGINAS WEB UTILIZANDO FLEX. Orientador: Prof. Francisco Adell Péricas Aluno: Michel Scoz

Formas de Gerência de Dados XML

Fundamentos de Bases de Dados e-fólio C Resolução e Critérios de Correção

NoSQL Apache Cassandra para DBAs. Conceitos básicos que todo DBA deve conhecer sobre Apache Cassandra.

LÉO MATOS INFORMÁTICA

INTRODUÇÃO AO MYSQL. Eng. Computação

BANCO DE DADOS ORIENTADO A OBJETOS

Manipulação de Dados com SQL

Desenvolvimento de Aplicações Distribuídas

UMA INTERFACE ADMINISTRATIVA UTILIZANDO FIREBASE. Mateus Zanini, Tiago Possato, Tiago Heineck

Benvindo ao Curso de Introdução ao Firebird com Ferramenta de Relatórios!

Introdução. Bases de Dados (CC2005) Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto

Manipulação de Dados em PHP (Integração PHP e MySql) Parte 1

Modelo Entidade-Relacionamento (E-R)

Introdução a Banco de Dados Aula 02. Prof. Silvestri

MODELAGEM DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.

Versão º. Semestre de 2006 Marcelo Nogueira São José dos Campos - SP

Transcrição:

DIFERENÇAS NO DESENVOLVIMENTO DE APLICAÇÕES WEB COM BD TRADICIONAL E BD NOSQL MONGODB Nicolas Ignacio RYBERG 1.2 ; Angelo Augusto FROZZA 3 ; Daniel de Andrade VARELA 3 Identificação autores: 1 Bolsista PIBIC-EM/CNPq; 2 Curso Téc. em Informática; 3 Professor IFC-Camboriú. Resumo Este trabalho busca fazer uma introdução aos bancos de dados (BDs) NoSQL, apresentando os principais conceitos e características desse novo paradigma. Para demonstrar as diferenças no uso de diferentes paradigmas de BDs, foram desenvolvidas duas versões de uma aplicação web na arquitetura cliente-servidor: uma utilizando BD Relacional e outra usando BD NoSQL. 1. Introdução Durante décadas, foram usados bancos de dados (BDs) relacionais para armazenar dados estruturados. Porém, com o avanço da Internet, tem-se quantidades de dados nunca antes trabalhadas (Big Data), além destes estarem cada vez menos estruturados. São exemplos, os dados contidos em sites como Facebook, Google e Amazon. Estas empresas buscaram meios eficientes e baratos para processar seus dados. A solução encontrada foi a escalabilidade horizontal, que significa aumentar o número de máquinas, ao invés de aumentar o poder de processamento de uma máquina (escalabilidade vertical). Os BDs NoSQL chegaram como solução para este problema, já que permitem o gerenciamento em larga escala de dados distribuídos. Entre suas características, destacam-se: não-relacional, distribuído, de código aberto, escalável horizontalmente, ausência de esquema ou esquema flexível, suporte à replicação nativo e acesso via APIs simples. Alguns conceitos relevantes: Modelo de Dados: é como se percebem e se manipulam os dados (SALADAGE; FOWLER, 2013). Informalmente, entende-se como o modelo de dados de um aplicativo. Neste artigo, refere-se à forma que o Sistema Gerenciador de Banco de Dados (SGBD) organiza seus dados. Modelo Relacional: é o modelo de dados padrão dos BDs relacionais. Representa um conjunto de tabelas relacionadas por colunas em comum. Cada tabela possui linhas e colunas, sendo cada linha uma entidade de interesse e as colunas são os atributos desta entidade. A menor unidade de informação armazenada é a tupla (registro). Paradigmas NoSQL: BDs NoSQL se diferenciam de acordo com seu paradigma, sendo os principais: Orientado a documentos (BDOD), Armazém Chave-Valor (key-value), Orientado a colunas, Orientado a grafos. Uma característica comum entre estes paradigmas é que eles podem manipular dados agregados. Modelo Orientado a Agregados: é um modelo de dados para estruturas mais complexas. Agregado é um tipo de registro complexo, com listas e outras estruturas de dados aninhadas, e leva em consideração como os dados são acessados. Um Agregado é um conjunto de objetos relacionados que se deseja tratar como uma unidade (SALADAGE; FOWLER, 2013).

BDs Orientado a Documentos (BDOD): Documentos são coleções de atributos e valores armazenados em formatos como JSON, XML ou PDF. Este tipo de BD é considerado como o flexível, poderoso e popular entre todos os NoSQL (MCCREARY; KELLY, 2014). Um Documento implica em como os dados estão estruturados e devem ser apresentados, tornando-o altamente eficiente para o armazenamento de dados semiestruturados. Documentos diferentes de uma mesma coleção podem ter diferentes números de campos ou propriedades (PEREIRA, 2014), além de permitir que um documento seja embutido em outro. Os principais BDs nessa categoria são o MongoDB e o CouchDB. MongoDB: É um dos principais BDs NoSQL orientado a documentos. Nele, os documentos são serializados no formato JSON (JavaScript Object Notation) (Figura 1) e são armazenados fisicamente em BSON (codificação binária do JSON). Os documentos são agrupados em coleções, em conformidade com a sua estrutura (PEREIRA, 2014). Documentos com diferentes estruturas também podem ser armazenados na mesma coleção (BERNARDINO; ABRAMAHOVA, 2013). Figura 1 - Exemplo de documento JSON (Fonte: elaborado pelo autor, 2016) O objetivo deste trabalho é adquirir domínio sobre os conceitos de BDs NoSQL e desenvolver material para introduzir esse tipo de BDs nos cursos do IFC-Camboriú, além de identificar linhas de pesquisa ligadas à BDs NoSQL. 2. Material e métodos Este projeto tem caráter bibliográfico e exploratório, pelo qual se propõe fazer um estudo sobre a tecnologia de BD chamada NoSQL. Para atingir os objetivos propostos, primeiro foram feitas pesquisas para entender os conceitos relacionados aos BDs NoSQL, seus diferentes paradigmas e que dados são tratados em cada paradigma. Identificar em que caso um BD NoSQL é melhor que um BD relacional, apresentar os principais produtos (nomes) de banco de dados NoSQL existentes, classificando-os de acordo com o paradigma suportado e apresentar as características de cada BD NoSQL identificado durante a pesquisa.

Com os resultados da pesquisa, foi desenvolvida uma Wiki, acessível em: http://www.geati.ifc-camboriu.edu.br/wiki/index.php/nosql (GEATI, 2016). Para melhor entendimento do funcionamento de um BD NoSQL em relação a um BD relacional, foram feitos dois sites cliente-servidor, com a mesma estrutura do lado do cliente, diferindo no lado servidor. O primeiro usa os SGBDs relacionais MySQL e PostgreSQL, e o segundo, usa o BD NoSQL MongoDB. Com os resultados obtidos foi feita uma análise sobre o desenvolvimento dos dois sistemas. Por fim, as diferenças na implementação dos dois sistemas foram discutidas como resultados finais deste trabalho. 3. Resultados e discussão Aplicação proposta serve para era entender as diferenças de modelagem e manipulação de diferentes BDs. Para tanto, foi desenvolvido um sistema de loja virtual, no qual o cliente se autentica através de um login para acessar a aplicação. O cadastro e exclusão de usuário é feito por ele próprio na página inicial. Uma vez autenticado na loja, o usuário adiciona itens ao carrinho de compras, visualiza os itens do carrinho, remove itens do carrinho, finaliza a compra e visualiza a nota fiscal. A aplicação não possui nenhuma estilização de layout, uma vez que o foco do trabalho não é o desenvolvimento web, mas sim, entender as diferenças no acesso aos dados em BD. Porém, essa limitação não interfere no funcionamento do site ou nos resultados. Para uma comparação mais precisa, o desenvolvimento da aplicação foi separado em dois níveis, cliente e servidor, sendo que o lado cliente é exatamente igual para as duas aplicações. Para tal, foi usado o conceito de programação AJAX, pelo qual separa-se completamente os lados cliente e servidor e, desde que o cliente receba a mesma resposta do servidor, independe o que aconteça neste último. Para a aplicação server side usando BD relacional, a criação do BD se deu através de queries CREATE TABLE com os respectivos Primary keys e Foreign Keys. Os dados da tabela Produto, necessários antes de colocar o site em funcionamento, foram inseridos através de queries INSERT. A conexão com o BD foi feita através de um include do documento _database.php, sempre que a página PHP fosse executar qualquer tipo de query. O fragmento de código a seguir é usado para a conexão com o BD MySQL: <?php $pdo = new PDO('mysql:host=localhost; dbname=relacional','root','',[]); Para demonstrar o uso de todos os tipos de querys, foram criadas opções de inserir, selecionar, excluir e atualizar. Como exemplo, a seguir são apresentados fragmentos do código das páginas que tinham essas operações: Cadastrar usuário: $stmt = $pdo->prepare('insert INTO cliente(nome, login, senha, cpf, rg, data_nascimento) VALUES(?,?,?,?,?,?)'); $result = $stmt execute([$_post['nome'],$_post['login'], $_POST['senha'], POST['cpf'], POST['rg'],POST['data_nascimento']]);

Verificar Login: $stmt=$pdo->prepare("select * FROM cliente WHERE login=? and senha=?"); $stmt->execute([$login,$senha]); $result = $stmt->fetchall (PDO::FETCH_ASSOC); Excluir usuário: $stmt = $pdo->prepare("delete FROM cliente WHERE login =? and senha =?"); $result = $stmt execute([$login,$senha]); Alterar senha: $stmt=$pdo->prepare("update cliente SET senha=? WHERE login=? and senha=?"); $stmt->execute([$novasenha, $login, $senha]); $result = $stmt->fetchall(pdo::fetch_assoc); Para a aplicação server side usando o BD MongoDB, a criação do banco de dados é dinâmica, através do método insertone(), pelo qual os relacionamentos ocorrem ao inserir um objeto dentro de outro. Os objetos são manipulados através dos métodos: update(), find() e delete() (MONGODB, 2016). Os dados da tabela Produto, foram inseridos diretamente no SGBD pelo mesmo método insert(). O fragmento de código a seguir é usado para a conexão com o MongoDB e, em seguida, são apresentados os fragmentos de código para manipulação de dados. require 'vendor/autoload.php'; $mongo = newmongodb\client("mongodb://localhost:27017"); Cadastrar usuário: $colecaocliente = $mongo->db->cliente; $dadoscadastro =['nome_cliente'=>$_post['nome'],'login'=>$_post ['login'],'senha'=>$_post['senha'],'cpf'=>$_post['cpf'],'rg' =>$_POST['rg'],'data_nascimento'=>$_POST['data_nascimento']]; $colecaocliente->insertone($dadoscadastro); Verificar Login: $colecaocliente = $mongo->db->cliente; $dadoslogin = ['login' => $login, 'senha'=> $senha]; $cliente=$colecaocliente>findone($dadoslogin); Excluir usuário: $cliente = $mongo db cliente; $dadosdel = ['login' => $login, 'senha'=> $senha]; $result = $cliente->deleteone($dadosdel); Alterar senha: $cliente = $mongo->db->cliente; $dadoscliente = ['login' => $login,'senha'=> $senha]; $result = $cliente->updateone($dadoscliente,['$set' => ["senha" => $novasenha]]); A aplicação tem operações que exigiram queries com relacionamentos através de Foreign Keys, no caso da aplicação com BD relacional e da inserção e seleção de objetos aninhados através do objectid, porém, pelo

espaço limitado do artigo, foi procurado apresentar aqui as queries elementares de CRUD (Create, Read, Update e Delete). Mais detalhes da aplicação podem ser encontrados na Wiki do projeto. 4. Conclusão Não houve diferença na implementação da aplicação client side com os dois modelos de BD, até foram usados os mesmos arquivos HTML. Isto se deu graças a aplicação cliente side ser AJAX e a aplicação server side retornar as informações em formato de documento JSON ao cliente. No que diz respeito a aplicação server side, o código inteiro teve que ser reescrito, podendo-se reutilizar apenas pequenas partes que não tinham relação com o BD e mecanismos de sessão. A conexão ao banco em ambos os casos foi semelhante, já que foi usado o PDO do PHP, diferindo apenas na estrutura do objeto instanciado. As diferenças sobre como os dados são armazenados foram as mais perceptíveis. Na aplicação MongoDB, os objetos são inseridos por métodos insert(), por serem armazenados na mesma estrutura em que eram implementados. Já na aplicação MySQL (relacional), foram necessários diversos métodos do objeto PDO para poder inserir os dados na tabela, comprovando as diferenças estudadas sobre os modelos até então. Não foi foco desse trabalho avaliar performance. Porém, teoricamente, um BD NoSQL seria mais eficiente para uma aplicação deste tipo e porte, por não exigir muitas consultas e atualizações, tendo como vantagem, o armazenando os objetos praticamente da forma como foram implementados. Por nunca ter entrado em contato com a tecnologia NoSQL e, nos três anos de curso ser apresentado apenas o modelo Relacional, inicialmente houve dificuldade para desenvolver o projeto. Porém, com o tempo ficou até mais fácil, por não existir uma diferença tão grande entre implementação e armazenamento, facilitando a visualização do todo. Este projeto de pesquisa recebeu apoio do IFC, através do Edital N o 504/2014 PIBIC-EM. Referências BERNARDINO, J.; ABRAMAHOVA, V. NoSQL databases: MongoDB vs Cassandra. In: Proceedings of the International C* Conference. ACM, 2013. GEATI. NoSQL. In: Wiki do GEATI. Disponível em: <http://www.geati.ifccamboriu.edu.br/wiki/index.php/nosql>. Acessado em: 31 jul. 2016. MCCREARY, D. G.; KELLY, A. M. Making Sense of NoSQL: A guide for managers and the rest of us. Manning, 2014. 312 p. MONGODB. Site oficial. Disponível em: <https://mongodb.com/>. Acessado em: 25 jul. 2016. PEREIRA, D. J. P. Armazéns de dados em bases de dados NoSQL. 2014. 178 f. Dissertação (Mestrado em Engenharia Informática) ISEP, Porto. SALADAGE, P. J; FOWLER, M. NOSQL Essencial: Um guia conciso para o mundo emergente de persistência poliglota. São Paulo: Pearson, 2013. 220 p.