Universidade Federal de Ouro Preto - UFOP Instituto de Ciências Exatas e Biológicas - ICEB Departamento de Computação - DECOM ! ! Conrado Carneiro Bicalho ! ! ! ! ! Bancos de Dados em Dispositivos Móveis ! ! ! ! ! ! ! ! ! ! Ouro Preto 2014 SUMÁRIO 1 INTRODUÇÃO ………………………………………………………..…… 3 2 COMPUTAÇÃO MÓVEL …………………………………………………. 2.1 Dispositivos Móveis ..................................................................................... 2.1.1 Recuperação de Falhas ............................................................................. 3 4 4 3 ARQUITETURA DO BANCO DE DADOS ………………………………. 3.1 Cliente-Servidor …..……………………………………………………….. 3.2 Cliente-Agente Servidor-Servidor .……………………………………….. 3.3 Cliente-Agente Cliente-Servidor .………………………………..……….. 3.4 Cliente-Agente Cliente-Agente Servidor-Servidor .……………..……….. 5 5 5 6 7 4 SISTEMAS GERENCIADORES DE BANCO DE DADOS MÓVEIS ….. 7 5 COMUNICAÇÃO …………..……..……..……..……..……..……..……….. 8 REFERÊNCIAS ………………………………………………………………... 9 ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 1 INTRODUÇÃO Com a popularização dos dispositivos móveis e o crescente uso nas mais diversas áreas, identificou-se uma necessidade que algumas tecnologias e conceitos tivessem que ser adaptados ou re estruturadas. Nesse trabalho, abordaremos as diferenças identificadas em um sistema de banco de dados para dispositivos móveis. Por se tratar de um ambiente sensível, onde perda de conexão com uma rede são esperadas, como exemplo, a perda de sinal telefônico, mudança de local físico que não tenha mais a disponibilidade de rede WiFi ou esgotamento da energia, é fundamental que o sistema de banco de dados utilizado nesse ambiente, disponha de mecanismos de recuperação de falhas específicos para essas situações.. Neste trabalho, abordaremos tópicos relacionados a banco de dados em dispositivos móveis, analisando aplicações, vantagens, desvantagens e um pouco do funcionamento. ! 2 COMPUTAÇÃO MÓVEL Consiste em um ambiente composto por estações em uma rede fixa, fornecendo a comunicação e conteúdo para dispositivos desconectados fisicamente, conhecidos como dispositivos móveis. A mobilidade apresentada por esses dispositivos é a base de todo conceito da computação móvel. Segundo Forman e Zahorjan, o ambiente de computação móvel é caracterizado por sua particularidade de comunicação, mobilidade e portabilidade. (FORMAN e ZAHORJAN, 1994). Sua arquitetura consiste da já conhecida infra-estrutura de comunicação fixa com computadores estáticos, ligada a uma parte móvel. Podemos definir essas parte móvel como uma área ou célula, onde exista a comunicação sem fio dos dispositivos móveis. Dentro dessas células ocorre a livre movimentação dos dispositivos, podendo ocorrer também a movimentação de uma célula para outra. É importante ressaltar que a computação móvel pode ser vista como uma variação da computação distribuída e as questões relativas à gerencia de dados distribuídos também podem ser aplicadas aos bancos de dados móveis. São os casos de distribuição e replicação de dados, modelos de transações, processamento de consultas, recuperação e tolerância à falhas e projeto de banco de dados, casos estes que passam a ser avaliados com o intuito de atender os requisitos do ambiente da computação móvel. ! ! FIGURA 1: Rede estática associada a uma rede de dispositivos móveis ! ! 2.1 Dispositivos Móveis ! Fonte: imagem reproduzida pelo autor Conforme definido por Ozu e Valduriez, dispositivos móveis ou mobile stations são computadores portáteis interligados em rede através de conexões sem fio. Possibilita ao usuário um ambiente com alto grau de mobilidade, possibilitando a troca de informações enquanto se deslocam ou trabalham em locais diferentes do seu ambiente normal. (OZU e VALDURIEZ, 1999). Suas principais características são: Localização Dinâmica, mobilidade, desconexão e capacidade limitada das baterias. ! 2.1.1 Recuperação de Falhas Além dos métodos já conhecidos utilizados em ambientes de dispositivos físicos, há também métodos para falhas especificas em dispositivos móveis. Handoff, ocorrer em situações que o dispositivo móvel ultrapassa o limite de uma célula para outra. Esse processo envolve a atualização dos bancos de dados locais, utilizado nos dispositivos móveis. FIGURA 2: Situação onde ocorre handoff. ! ! ! Fonte: imagem reproduzida pelo autor 4 3 ARQUITETURA DO BANCO DE DADOS A utilização de banco de dados em ambientes de computação móvel torna-se particularmente interessante pela possibilidade da manipulação de dados tanto sob a forma conectada a um sistema externo, quanto sob a forma desconectada, ou seja, local. A mobilidade criada pelos dispositivos móveis trouxe um novo impulso na utilização dos banco de dados. A inserção de novas informações nos dispositivos, independente do local onde ele se encontre, sem a necessidade do estabelecimento de uma conexão com a rede estacionária, abre caminho para a criação de novas situações e com isso novos softwares. A seguir, algumas arquiteturas utilizadas em sistemas de banco de dados móvel. ! 3.1 Cliente-Servidor Arquitetura tradicional, em que uma aplicação é executada no cliente, no caso o dispositivo móvel, que emite solicitações de dados para o servidor principal. Para que o sistema de banco de dados móvel possa ser atendido na totalidade, atendendo situações como mobilidade e desconexão, é necessário que se façam adaptações na arquitetura. A camada servidor faz a maior parte do trabalho de gerenciamento de dados, enquanto a camada cliente é responsável pela interface e interação com o usuário, além de administrar uma memória local para a solicitação e armazenamento do resultado das consultas. ! FIGURA 3: Arquitetura Cliente - Servidor. ! ! ! Fonte: imagem reproduzida pelo autor 3.2 Cliente-Agente Servidor-Servidor Arquitetura cliente-servidor otimizada, onde um agente que represente o cliente é incluído no servidor. O cliente pode realizar requisições e caso fica fora antes de receber a resposta, o agente se encarrega de armazenar o resultado da requisição e entrega-lo ao cliente quando o mesmo retornar a rede. Este modelo é mais apropriado para clientes móveis com limitado poder computacional. Assim, diversas funções do cliente móvel, migram para o agente. Essa arquitetura não oferece suporte para o trabalho desconectado. Os agentes podem: - Processar os dados da consulta e enviar somente o resultado para o cliente; - Compactar os dados antes de enviar - Processar as buscas e enfileirar as respostas quando o cliente estiver desconectado; - Alterar a ordem da transmissão de dados para os clientes, de acordo com a prioridade. ! ! ! 5 FIGURA 4: Arquitetura Cliente - Agente Servidor - Servidor. ! ! Fonte: imagem reproduzida pelo autor ! É importante frisar que os clientes também podem acumular requisições para envia-las em blocos para o agente, pois isso economiza bateria. Após enviarem as requisições, os clientes podem entrar em modo de “cochilo”, economizando assim bateria. 3.3 Cliente-Agente Cliente-Servidor Embora pouco utilizada, essa arquitetura apresenta um agente ao lado do cliente ao invés de mante-lo no lado servidor. De certa forma, podemos dizer que esse agente amplia as funções do cliente, geralmente pobres em recursos computacionais. Podemos destacar algumas atividades como: - Administrar a memória cache disponível no cliente. - Disponibilizar memória progressivamente para o cliente móvel durante o trafego da rede (prefetching) - Copiar parte do banco de dados para a memória local do cliente (hoarding) - Otimizar a comunicação entre cliente e servidor. ! FIGURA 5: Arquitetura Cliente - Agente Cliente - Servidor. ! Fonte: imagem reproduzida pelo autor ! ! ! ! 6 3.4 Cliente-Agente Cliente-Agente Servidor-Servidor (Cliente-interceptador-servidor) ! Soluciona o problema do trabalho desconectado, citado na arquitetura anterior. A figura do agente foi “replicada" para o lado do cliente, além da já disponível no servidor. Os agentes interceptam as requisições clientes e servidores trabalhando de forma cooperativa no atendimento de cada requisição. A possibilidade de trabalhar com desconexões é possível devido ao uso de um cache no agente do cliente. Durante o período de desconexão, as unidades móveis terão suas requisições atendidas através da utilização do cache mantido pelo agente. Caso a informação requerida não esteja disponível no cache local, uma requisição será enfileirada pelo agente-cliente e no momento da reconexão será entregue ao agente-servidor. A utilização de memória cache para a execução de consultas e operações de atualizações de itens de dados, contribui na diminuição da utilização dos recursos de processamento e comunicação da unidade móvel. O cliente, pode efetuar o armazenamento da informações necessárias para sua operação e trabalhar livremente sob a forma desconectada. Há na literatura diversas análises sobre qual informação deve ser colocada em cache e como categoriza-las, porém não irei entrar em detalhes, por se tratar de um assunto muito especifico. FIGURA 6: Arquitetura Cliente - Agente Cliente - Agente Servidor - Servidor. ! ! Fonte: imagem reproduzida pelo autor 4 SISTEMAS GERENCIADORES DE BANCO DE DADOS MÓVEIS (SGBDm) Com o crescimento da utilização da computação móvel para os mais diversos segmentos da sociedade, surgiu a preocupação de adaptar os SGBDs para situações encontradas apenas nesse ambiente, por isso desenvolvedores de banco de dados comerciais passaram a investir em produtos para esse novo ambiente. A principal característica desses softwares é que eles agem quando há uma desconexão do cliente, atuando assim como um banco de dados local, mas para isso é necessário que haja uma carga de dados antecipada. Podemos listar como exemplo, os seguintes SGBD móveis: - Oracle Lite - DB2 Everyplace - Microsoft SQL Server 2005 Mobile Edition - Sybase SQL Anywhere Afim de simplificar a vida dos desenvolvedores, foram criadas bibliotecas que funcionam como “mini-SGBDs” e possibilitam criar um arquivo local no cliente móvel e são capazes de ler e escrever diretamente nesse arquivo. Como exemplo, temos o SQLite, onde é possível criar e manter 7 diversas tabelas, utilizando-se dos mesmo comandos do SQL. Os dados na tabela são manipulados através de comandos DML (INSERT, UPDATE e DELETE) e são consultados utilizando o SELECT. Algumas características do SQLite: - Todo o banco de dados é guardado localmente em um arquivo de extensão “.db” - Suporta a maior parte do SQL 92 - Não oferece integridade referencial (chaves estrangeiras) - Suporta o uso de transações (COMMIT, ROLLBACK) - Não deve ser utilizado nos seguintes casos: aplicações de alta concorrência e sistemas ou aplicações web de grande porte. ! 5 COMUNICAÇÃO Principal fator que diferencia o Banco de Dados de dispositivos móveis de um sistema normal. Devido a situações citadas anteriormente, onde ocorrem a desconexão, cria-se três estados distintos, descritos a seguir: - Hoarding (acumulação): nesse estado há um pré-carregamento de itens de dados no dispositivo móvel, podendo ser acessado pela aplicação local a qualquer momento e armazenado no cache. - Local operations (operações locais): nessa situação a unidade móvel encontra-se desconectada da rede fixa, portanto ela realiza operações apenas sobre os dados locais. É importante destacar, que ocorrem operações locais, apenas depois da acumulação. - Reconciliation (reconciliação): Após ocorrer a reconexão, os dados são atualizados, gerando uma situação de concorrência e garantindo a não existência de inconsistência nos dados atualizados. 5.1 Sistema de comunicação A comunicação entre o servidor e o cliente (dispositivo móvel) ocorre na maioria das vezes por requisições HTTP/HTTPs de POST e GET e as informações retornadas pelo servidor são na maioria dos casos em formato XML ou JSON. A seguir alguns exemplos da comunicação: 5.1.1 Verificando a existência do usuário no servidor Um GET é feito com as informações e-mail, senha e tipo de aplicação utilizada. Caso as informações sejam corretas, o servidor retornará por exemplo as informações completas do usuário em JSON, por exemplo: ! ! ! Caso contrário, uma mensagem de erro será retornada: ! ! ! 8 REFERÊNCIA BIBLIOGRÁFICA ! AMADO, Paulo G. F.; 2002. Bancos de Dados Móveis: visão geral, desafios e soluções atuais. Recife. CÔRTES, Sérgio da Costa; LIFSCHITZ, Sérgio. Sistema de gerência de banco de dados baseados em agentes para um ambiente de computação móvel. Pontifícia Universidade Católica de São Paulo, Junho de 2002. GALLIANO, Eduardo. Banco de dados móvel. Londrina, 2007. ITO, Giani C.; 2001. Bancos de dados móveis: uma análise de soluções propostas para gerenciamento de dados. MATEUS, G. R.; LOUREIRO, A. A. F. Introdução à computação móvel. Material didático do Departamento de ciências da computação da UFMG. 1998. SILVA, F.; ENDLER, M. Requisitos e Arquiteturas de Software para Computação Móvel. I Workshop SIDAM - Sistemas de Informação Distribuída de Agentes Móveis, 2000 9