Processamento Eficiente de Consultas em Ambientes de Smartcards Tathianne Moreira Paulino 1 Orientador: Prof. Dr. Angelo Brayner 2 Universidade Federal do Ceará 1 Departamento de Computação Mestrado em Ciência da Computação Campus do Pici - Bloco: 910-60455-760 Fortaleza - CE - Brasil tathianne@lia.ufc.br Universidade de Fortaleza 2 Departamento de Ciência da Computação Mestrado em Informática Aplicada Campus da Unifor - Bloco J - 60811-341 Fortaleza - CE - Brasil brayner@unifor.br Palavras-chave: Smartcards, Processamento de Consultas, Otimização de Consultas, Bancos de Dados Ubíquos. Resumo Nos últimos anos, o uso de cartões eletrônicos tornou-se uma constante no dia a dia das pessoas. O problema é que existe uma facilidade muito grande em se falsificar esse tipo de cartão e os danos gerados por essas fraudes são enormes. Essa falta de segurança acabou por criar um ambiente favorável à entrada dos smartcards no mercado mundial. Atualmente, smartcards estão entre os mais modernos e seguros dispositivos de computação portátil existentes. Conseqüentemente, mais aplicações estão sendo desenvolvidas utilizando tal tecnologia, como por exemplo, aplicações na área bancária, na área de saúde, na área de telefonia, dentre outras. Embora possuam muitas vantagens, os smartcards também possuem algumas limitações. Uma delas é o fato deles apresentarem severas restrições de hardware (escrita muito lenta, memória RAM muito pequena, memória estável restrita etc.), devido ao seu reduzido tamanho. Outra grande limitação é a falta de um mecanismo que possa gerenciar os dados de maneira eficiente. Embora a tecnologia de bancos de dados existente tenha se consolidado como uma solução para o gerenciamento eficiente de dados, as tradicionais técnicas de bancos de dados não podem ser diretamente aplicadas a esse tipo de ambiente, devido às limitações de hardware mencionadas anteriormente. Assim, nosso trabalho está relacionado com técnicas e ferramentas especializadas para dar suporte a bancos de dados com capacidades de processamento e memória reduzidas, como em smartcards. O nosso enfoque será o problema de processamento eficiente de consultas em tais ambientes. 1. Introdução Nos últimos anos, o uso de cartões eletrônicos tem se tornado uma constante no dia a dia das pessoas. Infelizmente, existe uma facilidade muito grande em se falsificar esse tipo de cartão e os danos gerados por essas fraudes são enormes. Essa falta de segurança acabou por criar um ambiente favorável à entrada da tecnologia de smartcards no mercado mundial. Do tamanho de um cartão de crédito convencional, um smartcard possui um microchip embutido que armazena e processa dados eletrônicos, sendo protegido por avançadas características de segurança, além de possuir um custo relativamente baixo. Além disso, são bastante flexíveis (se adaptam a inúmeros tipos de aplicações), são recarregáveis (os dados podem ser armazenados diversas vezes em um cartão) e são multioperacionais (podem oferecer vários serviços ao mesmo tempo em um só cartão). 92
Atualmente, smartcards estão entre os mais modernos e seguros dispositivos de computação portátil existentes [BBP00]. Como conseqüência disso, mais aplicações estão sendo desenvolvidas utilizando tal tecnologia, como por exemplo, aplicações na área bancária, na área de saúde, na área de telefonia, dentre outras. Apesar de muitas vantagens, os smartcards também possuem algumas limitações. Uma limitação seria o fato deles apresentarem severas restrições de hardware. Essas restrições existem principalmente devido ao seu reduzido tamanho. Por exemplo, smartcards possuem uma escrita muito lenta, memória RAM muito pequena, memória estável restrita etc. Uma outra grande limitação existente em ambientes de smartcards é a falta de um mecanismo que possa gerenciar os dados de maneira eficiente. Embora a tecnologia de bancos de dados existente tenha se consolidado como uma solução para o gerenciamento eficiente de dados, as tradicionais técnicas de bancos de dados não podem ser diretamente aplicadas a esse tipo de ambiente, devido às limitações de hardware mencionadas anteriormente. Logo, é fundamental que smartcards possuam Sistemas de Gerenciamento de Bancos de Dados para que o gerenciamento de dados esteja separado da aplicação, para manter os dados de forma persistente, independente do ciclo de vida da aplicação e para garantir segurança através do gerenciamento do direito de acesso aos dados armazenados [Car99]. Assim, nosso trabalho está relacionado com técnicas e ferramentas especializadas para dar suporte a bancos de dados com capacidades de processamento e memória reduzidas, como em smartcards. O nosso enfoque será o problema de processamento eficiente de consultas em tais ambientes. Esse artigo está organizado da seguinte forma: a seção 2 especifica as características de um ambiente computacional em smartcards e apresenta algumas propostas de bancos de dados ubíquos existentes; a seção 3 descreve o processamento de consultas em Sistemas de Gerenciamento de Bancos de Dados para smartcards; na seção 4 é fornecido o encaminhamento da solução; a seção 5 apresenta as contribuições e os resultados esperados. 2. Um Ambiente Computacional em Smartcards 2.1. Smartcards De uma forma genérica, podemos definir um smartcard como sendo um cartão de plástico do tamanho de um cartão de crédito convencional com um chip de computador nele embutido, que pode oferecer diversos serviços, inclusive avançados serviços de criptografia [Bra98]. Quanto à forma de comunicação com a leitora de cartões, os smartcards dividem-se em cartões com contato (contact cards), onde a comunicação é feita através de um contato físico direto com a leitora de cartões e cartões sem contato (contactless cards), onde a comunicação é feita remotamente através de uma interface eletromagnética sem contato [Cag99]. Existem ainda dois tipos especiais de smartcards derivados dos dois tipos descritos acima que são os cartões híbridos (possuem dois chips, sendo que um possui uma interface com contato e o outro possui uma interface sem contato) e os cartões combi (possuem um único chip contendo uma interface com contato e sem contato ao mesmo tempo). Quanto ao seu conteúdo, os smartcards classificam-se em cartões de memória, projetados especialmente para armazenar informações; cartões de memória com lógica de segurança, similares aos cartões de memória, mas contêm uma lógica de controle para garantir que os cartões não possam ser violados; e cartões inteligentes, que possuem uma unidade de micro-processamento, uma memória volátil (RAM) usada como memória de trabalho, uma memória não volátil (ROM) usada para armazenar o sistema operacional, uma memória para armazenar dados persistentes (EEPROM) e o seu próprio sistema operacional [Eve01]. Apesar das suas limitações, smartcards estão sendo cada vez mais utilizados e o número de aplicações envolvendo esse tipo de tecnologia aumenta diariamente. Um dos principais 93
motivos para esse crescimento é o fato de existirem sistemas operacionais avançados para smartcards, que permitem a existência de múltiplas aplicações em um mesmo cartão [Mic00]. 2.2. Bancos de Dados Ubíquos A necessidade por bancos de dados ubíquos e bancos de dados móveis aumenta a cada dia. Isso é devido principalmente ao fato de que esses tipos de bancos de dados nos permitem acessar informação a qualquer hora e em qualquer lugar. Algumas propostas foram feitas no sentido de desenvolver pequenos bancos de dados para dispositivos de computação portátil, com pouco poder de processamento e pouca memória, tais como telefones celulares, palmtops, Personal Digital Assistants, aplicações inteligentes e outros tipos de sistemas embutidos [KuS01]. Os principais projetos incluem o Oracle9i Lite, da Oracle [Ora02], o SQL Anywhere Studio 8, da Sybase [Syb01] e o DB2 Everyplace, da IBM [IBM01]. Embora esses Sistemas de Gerenciamento de Bancos de Dados tenham identificado e resolvido parte do problema de adaptação das técnicas de bancos de dados já consolidadas, eles foram primordialmente desenvolvidos para computadores portáteis e para PDAs. Logo, eles não resolvem as limitações de hardware mais severas dos smartcards. A primeira tentativa em direção à construção de um SGBD para smartcards foi o SQLJava Machine [Car99]. Foi o primeiro Sistema de Gerenciamento de Bancos de Dados Relacional para Java a realmente caber em um smartcard. O SQLJava Machine é um pequeno mas completo SGBD (menor que 8K) que fornece uma Linguagem de Definição de Dados e uma Linguagem de Manipulação de Dados com o objetivo de definir e acessar dados relacionais persistentes em smartcards. Além disso, soluciona problemas de integridade referencial, suporta o conceito de transação em bancos de dados, gerencia de forma econômica o espaço no smartcard e possui avançadas características de segurança. Uma outra tentativa de desenvolver um SGBD para smartcards foi o PicoDBMS [BBP00]. Atualmente, existe um protótipo do PicoDBMS [ABB01], que foi desenvolvido na linguagem JavaCard 2.1 e que é executado em um simulador de smartcard. Ele se baseia em estruturas de dados altamente compactas e na execução de consultas sem a utilização de memória RAM. O protótipo do PicoDBMS é maior que o SQLJava Machine e possui cerca de 30K. Apesar da existência dos Sistemas de Gerenciamento de Bancos de Dados descritos acima, eles ainda são o início de uma longa caminhada em direção ao desenvolvimento de outros SGBDs, que provavelmente aparecerão no mercado. 3. Processamento de Consultas em SGBDs para Smartcards Entende-se por processamento de consultas o conjunto de atividades responsáveis por realizar a extração de dados de um banco de dados. As principais fases envolvidas no processamento de uma consulta são parsing e tradução, otimização e avaliação [SKS97]. Durante a fase de parsing e tradução, a consulta escrita em uma linguagem de alto nível é analisada e traduzida para uma forma de representação interna do sistema. Inicialmente, a consulta é convertida em uma árvore de análise, que por sua vez é transformada em uma expressão da álgebra relacional (plano de consulta lógico). O plano de consulta lógico deve ser convertido em um plano de consulta físico [GUW00]. Este deve indicar quais são os algoritmos utilizados para implementar cada um dos operadores do plano lógico. As seleções do plano de consulta lógico e do plano de consulta físico estão ligadas com a otimização de consultas, cuja meta é achar um plano de execução de consulta que minimize a média de desempenho mais relevante ([Gra93], [ElN00]). Após a escolha do melhor plano 94
de execução ter sido realizada, a consulta é avaliada com o plano escolhido e o seu resultado é então devolvido para o usuário que entrou com tal consulta. Os algoritmos que implementam os operadores lógicos em bancos de dados convencionais não podem ser diretamente aplicados ao ambiente de smartcards. Dentre esses algoritmos podemos citar Nested-Loop Join e Block Nested-Loop Join (algoritmos de junção que não utilizam índices), Indexed Nested-Loop Join (algoritmo de junção que utiliza índices), Merge Join (algoritmo de junção que pressupõe que as relações estejam ordenadas pelo atributo de junção) e Hash Join (algoritmo de junção que utiliza uma função para particionar as tuplas das relações, de maneira a termos conjuntos com o mesmo valor de hash para os atributos de junção). Um dos motivos pelos quais tais algoritmos não podem ser utilizados em SGBDs para smartcards é o fato deles consumirem muitos recursos de armazenamento, além de possuírem um alto grau de complexidade. Em se tratando de smartcards, eles devem ter um baixo grau de complexidade, devem consumir a menor quantidade de recursos de armazenamento possível e devem ser seguros. 4. Encaminhamento da Solução Nosso trabalho está sendo realizado em três direções. Como a operação de junção é uma das operações que mais consome recursos no processamento de consultas, estamos trabalhando na análise de algoritmos que implementam os operadores relacionais de junção. Estamos dando atenção especial ao algoritmo merge-join, com o intuito de prover as adaptações necessárias ao nosso contexto. Além disso, estamos trabalhando na criação de uma estrutura similar a estrutura de armazenamento de domínio (as tuplas das relações referenciam seus valores de atributos por meio de ponteiros). Enquanto [BBP00] tem como meta otimizar o espaço de armazenamento, além de utilizar o algoritmo nested-loop nas suas operações de junção, nossa estrutura tem como objetivo otimizar a execução de junções, utilizando para isso o algoritmo merge-join (ver figura 1). Posteriormente, pretendemos unir nossa idéia com a idéia de [BBP00]. Figura 1: Modelo de Armazenamento Proposto Finalmente, estamos investigando a utilização da técnica de pipelining para implementar operadores relacionais. Em SGBDs tradicionais, onde o hardware e o espaço de memória principal não são um problema, a estratégia de materialização é bastante útil, quando desejamos buscar dados de forma mais rápida. Entretanto, nesse novo contexto, os principais operadores relacionais (seleção, projeção e junção) devem evitar ao máximo utilizar essa estratégia. Em smartcards, a técnica de pipelining é uma alternativa para essa limitação, já que ela evita a materialização de resultados intermediários. 5. Contribuições e Resultados Esperados Ao final de nosso trabalho de mestrado serão desenvolvidas técnicas de otimização de consultas referentes à operação de junção em ambientes de smartcards. O nosso enfoque será no algoritmo merge-join. Pretendemos validar tais técnicas com a implementação de uma 95
ferramenta que utilizará a tecnologia JavaCard TM 2.2 [Sun02a, Sun02b, Sun02c]. Como resultado de nosso trabalho, podemos ainda citar a análise das técnicas existentes para o processamento de consultas em ambientes de smartcards. Referências Bibliográficas [ABB01] N. Anciaux, C. Bobineau, L. Bouganim, P. Pucheral, P. Valduriez. PicoDBMS: Validation and Experience. In Proceedings of the 27th International Conference on Very Large Data Bases, 2001. [BBP00] C. Bobineau, L. Bouganim, P. Pucheral, P. Valduriez. PicoDBMS: Scaling Down Database Techniques for the Smartcard. In Proceedings of the 26th [Bra98] International Conference on Very Large Data Bases, pp. 11-20, 2000. P. Bradley. Implementing Airline Electronic Ticketing Using Integrated Circuit Cards (Smart Cards). Computer Science Degree Project, Dublin Institute of Technology, 1998. http://smartcardtutor.future.easyspace.com/proposal.htm. Acesso em: 24/08/2002. [Cag99] C. Cagliostro. Primer on Smart Cards, 1999. http://www.securegroup.it/smartcard/overview.htm. Acesso em: 24/08/2002. [Car99] L. C. Carrasco. RDBMS's for Java Cards? What a senseless idea!, 1999. http://www.smartcardcentral.com/technical/articles/rdbms/rdbm[1].asp. Acesso em: 24/08/2002. [ElN00] R. Elmasri, S. B. Navathe. Fundamentals of Database Systems. Addison- Wesley, 3ª Edição, 2000. [Eve01] D. B. Everett. Smart Card Technology: Introduction to Smart Cards, 2001. http://www.smartcard.co.uk/resources/articles/intro2sc.html. Acesso em: 24/08/2002. [Gra93] G. Graefe. Query Evaluation Techniques for Large Databases. ACM Computing Surveys, 25(2):73-170, 1993. [GUW00] H. Garcia-Molina, J. D. Ullman. Database System Implementation. Prentice Hall, 2000. [IBM01] IBM Corporation, DB Everyplace, 2001. http://www-4.ibm.com/software/data/db2/everyplace/. Acesso em: 24/08/2002. [KuS01] K. Kuramitsu, K. Sakamura. Towards Ubiquitous Database in Mobile Commerce. In Proceedings of the 2nd ACM International Workshop on Data Engineering for Wireless and Mobile Access, pp. 84-89, 2001. [Mic00] Microsoft Corporation, Windows for Smartcards, 2000. http://www.microsoft.com/windows/embedded/ce.net/default.asp. Acesso em: 24/08/2002. [Ora02] Oracle Corporation, Oracle9i Lite, 2002. http://otn.oracle.com/docs/products/lite/content.html. Acesso em: 24/08/2002. [SKS97] A. Silberschatz, H. F. Korth, S. Sudarshan. Database System Concepts. WCB/McGraw-Hill, 3ª Edição, 1997. [Sun02a] Sun Microsystems, JavaCard TM 2.2 Virtual Machine Specification, JavaSoft documentation, 2002. [Sun02b] Sun Microsystems, JavaCard TM 2.2 Application Programming Interface Specification, JavaSoft documentation, 2002. [Sun02c] Sun Microsystems, JavaCard TM 2.2 Runtime Enviroment (JCRE) Specification, JavaSoft documentation, 2002. [Syb01] Sybase Inc., SQL Anywhere Studio 8, 2001. http://www.sybase.com/products/anywhere/. Acesso em: 24/08/2002. 96