Implementação de uma Linguagem de Consulta com Suporte a Preferências Condicionais Aluna: Fabíola S. F. Pereira 1, Orientadora: Sandra de Amo 1 1 Programa de Pós-Graduação em Ciência da Computação Universidade Federal de Uberlândia (UFU) Uberlândia MG Brasil fabfernandes@comp.ufu.br, deamo@ufu.br Nível: Mestrado Ano de ingresso: 2009 Época esperada de conclusão: Fevereiro de 2011 Etapa concluída: Defesa da proposta de dissertação Abstract. Many important applications like e-commerce and multimedia systems require the use of efficient techniques for customizing and manipulating user preferences. In the database field, the researches are focused on the development of query languages able to express and filter preferences. This paper proposes the implementation of the CPref-SQL query language, which is an extension of SQL with support to conditional preferences. Algorithms are proposed to implement the new preference operators: Select-Best and SelectK-Best. They are capable of evaluating top-k queries with preferences, i.e., queries that return the k most preferred tuples according to a hierarchy of user preferences. The proposal is the direct implementation of these algorithms in the PostgreSQL query processor. Also is part of the scope of this work to develop a method that allows to insert the notion of preferences in the context of similarity queries. Keywords: conditional preferences, SQL extension, top-k queries Resumo. Muitas aplicações importantes como comércio eletrˆonico e sistemas multimídia demandam o uso de técnicas eficientes para personalização e manipulação de preferḙncias do usuário. No campo de banco de dados, as pesquisas estão voltadas para o desenvolvimento de linguagens de consulta capazes de expressar e filtrar preferḙncias. Este trabalho propõe a implementação da linguagem de consulta CPref-SQL, que é uma extensão da SQL com suporte a preferḙncias condicionais. São propostos algoritmos que implementam os novos operadores de preferḙncia Select-Best e SelectK-Best, capazes de avaliar consultas top-k com preferḙncias, ou seja, consultas que retornam as k tuplas mais preferidas de acordo com uma hierarquia de preferḙncias do usuário. A proposta é a implementação direta desses algoritmos no core do processador de consultas do PostgreSQL. Também faz parte do escopo deste trabalho desenvolver um método que possibilite adicionar a noção de preferḙncias ao contexto de consultas por similaridade. Palavras-chave: preferḙncias condicionais, extensão da SQL, consultas top-k
1. Introdução e Motivação Nos últimos anos, diversas áreas modernas de aplicação de banco de dados como comércio eletrônico e sistemas multimídia, estão lidando com o desafio de recuperar informações de acordo com preferências do usuário. A pesquisa com o foco em expressar e filtrar preferências do usuário através de consultas em banco de dados tem ganhado espaço na comunidade de BD [Kießling and Köstler 2002, Chomicki 2003]. Mais especificamente, o interesse está em retornar as tuplas mais preferidas de acordo com uma ordem de preferência. O tratamento de preferências pode ser feito de forma quantitativa ou qualitativa. Por exemplo, dada uma relação de viagens turísticas, para encontrar aqueles pacotes mais interessantes para o usuário de maneira quantitativa, basta solicitar que o mesmo dê uma nota a cada opção de viagem, de maneira que aquelas com maiores notas serão as selecionadas. Entretanto, esse método pode ser inviável para uma grande relação de viagens. Pela abordagem qualitativa, é possível obter do usuário informações sobre quais atributos afetam sua preferência. Assim, se o usuário prefere viagens nacionais a internacionais, já consegue-se obter uma classe de destinos preferidos sem que tenha sido necessário avaliar cada opção individualmente. Nesse contexto de consultas personalizadas, em [de Amo and Ribeiro 2009] foi introduzida a linguagem CPref-SQL que permite expressar consultas contendo preferências condicionais (consultas-pc), através de uma abordagem qualitativa. As consultas em CPref-SQL incorporam as usuais restrições hard (declaradas na cláusula WHERE), além das restrições soft, especificadas através de um conjunto de regras de preferências e referenciadas pela cláusula ACCORDING TO PREFERENCES. Juntamente com a linguagem CPref-SQL, em [de Amo and Ribeiro 2009] também foi proposto o operador Select-Best que obtém as tuplas dominantes. Entretanto, não foi abordada a implementação da linguagem. Outro aspecto que vem sendo discutido em relação a consultas com preferências, é a possibilidade do usuário poder controlar a quantidade de tuplas preferidas a serem retornadas [Papadias et al. 2005]. Caso isso não aconteça, dois cenários podem existir: (1) as regras especificadas pelo usuário podem ser muito restritivas e, assim, o conjunto das tuplas mais preferidas será muito pequeno; (2) as regras podem ser muito permissivas, fazendo com que o usuário confronte novamente com um conjunto de dados que pode ser tão grande quanto a própria base. Assim, é importante que uma linguagem de consultas com suporte a preferências tenha a flexibilidade de permitir que o usuário especifique a quantidade de tuplas preferidas que devem ser retornadas. Por exemplo, diante de uma lista de opções de viagens turísticas, é interessante que o usuário realize uma consulta top-k com preferências do tipo: gostaria de obter uma lista com os 4 destinos que mais se adequam às minhas preferḙncias. Este trabalho tem como objetivo (1) propor uma nova abordagem para obter as k tuplas preferidas pelo usuário: através de consultas-pc top-k. A proposta é incorporar à linguagem CPref-SQL um novo operador, SelectK-Best, que avalia consultas-pc retornando as k tuplas mais preferidas de acordo com uma hierarquia de preferência. Uma vez especificado o operador, também é objetivo desse trabalho (2) implementar a linguagem CPref-SQL, através de algoritmos para os operadores Select-Best e SelectK-Best codificados diretamente no core do SGBDR PostgreSQL. Por fim, diante do avanço de sistemas que manipulam dados complexos como imagens e áudio, torna-se interessante uma integração entre aspectos de similaridade e preferências em uma consulta sobre dados convencionais e complexos. Uma integração significa a possibilidade de realizar consultas do tipo: Dentre as minhas viagens mais preferidas, liste aqueles destinos que mais se assemelham à essa imagem de um ponto turístico. Em [Barioni et al. 2006] foi proposto o SIREN (SImilarity Retrieval ENgine), um avaliador de consultas por similari-
dade através de comandos que estendem a SQL. Assim, um terceiro objetivo desse trabalho é (3) combinar os operadores de preferência da CPref-SQL com operadores de similaridade do SIREN, para realizar consultas que incorporam as duas abordagens. Este artigo encontra-se organizado da seguinte maneira: na Seção 2 são apresentados alguns trabalhos correlatos. A Seção 3 descreve os principais objetivos do trabalho, expondo as soluções propostas que estão sendo desenvolvidas. A Seção 4 apresenta alguns resultados obtidos em relação à implementação da CPref-SQL e, na Seção 5, são feitas considerações finais acerca do andamento das atividades envolvidas no projeto. 2. Trabalhos Correlatos Extensões da SQL e Algoritmos para Avaliação de Consultas com Preferências. Em [Borzsonyi et al. 2001] foi proposto o operador skyline, bem como o algoritmo básico BNL (block-nested-loop) para avaliar consultas skyline. [Kießling and Köstler 2002] introduziram a linguagem Preference SQL que estende a SQL com construtores de preferências. As consultas em Preference SQL são traduzidas em SQL padrão para serem executadas. Já no contexto de consultas com preferências condicionais, o algoritmo BNL foi proposto em [de Amo and Ribeiro 2009] para avaliar o operador Select-Best. Ele segue as linhas do algoritmo BNL e utiliza um grafo better-than reduzido, através do qual é possível comparar duas tuplas conforme suas listas de escopos. Esse algoritmo não foi implementado. No presente trabalho, é proposto um segundo algoritmo, BNL, que utiliza agora um Programa Datalog para comparar duas tuplas. Consultas Top-k. As consultas top-k dominantes foram introduzidas em [Papadias et al. 2005] como uma extensão das consultas skyline de [Borzsonyi et al. 2001]. Uma consulta top-k dominante retorna as k tuplas que dominam o maior número de tuplas na base de dados. Esse conceito é ortogonal às consultas skyline e pareto, bem como às consultas-pc. Preferências em Consultas por Similaridade. Em [Bartolini et al. 2007] é discutida a utilização de mecanismos de feedback do usuário para consultas interativas por similaridade sob uma abordagem de preferências qualitativas skyline. Em [Barioni et al. 2006] foi proposto o sistema SIREN que avalia e executa comandos expressos em uma extensão da SQL para consultas por similaridade. O SIREN está implementado entre o SGBDR e a aplicação, interceptando as consultas submetidas. É um potencial sistema que pode utilizar preferências do usuário para otimizar suas respostas. Um dos objetivos deste trabalho é propor uma integração entre o SIREN e o SGBDR PostgreSQL estendido, possibilitando a realização de consultas por similaridade com preferências condicionais do usuário. 3. Descrição do Trabalho Os principais objetivos do trabalho são: (1) Introduzir o conceito de consultas com preferências condicionais top-k (consultas-pc top-k); (2) Propor os algoritmos BNL** e R-BNL** para avaliação de consultas-pc e consultas-pc top-k, respectivamente e implementá-los no core do SGBDR PostgreSQL; (3) Propor uma aplicação do sistema de preferências implementado, integrando-o com um sistema de consultas por similaridade para possibilitar maior expressividade e otimizações nas consultas. A seguir, cada um desses objetivos são detalhados. 3.1. Consultas Top-k com Preferências Condicionais A CPref-SQL foi proposta seguindo o formalismo lógico de [Wilson 2004] para especificação e raciocínio com preferências. De acordo com tal formalismo, as preferências do usuário são expressas através de um conjunto de regras de preferências condicionais (regras-pc) sobre uma relaçãor(a 1,...,A n ) do tipo: ϕ : B 1 = b 1... B k = b k (A = a 1 ) > (A = a 2 )[W 1,...,W j ], onde {B 1,...,B k,a,w 1,...,W j } {A 1,...,A n }, b i dom(b i ), para i {1,...,k}, e a 1,a 2
dom(a). Aqui, dom(x) denota o domínio do atributo X. Um conjunto de regras-pc determina uma ordem parcial (ordem de preferência) sobre o conjunto de tuplas da relação R. A semântica de uma regra-pc é: sejam u,v tuplas da relação R. Diz-se que u é preferido a v (u > v) se u[b i ] = v[b i ] = b i, parai {1,...,k},u[A] = a 1 ev[a] = a 2 eu[z] = v[z], para cada atributo Z / {B 1,...,B k,a,w 1,...,W j }. Duas tuplas podem ser comparadas pela transitividade da ordem parcial associada ao conjunto de regras-pc [de Amo and Ribeiro 2009]. A partir da ordem de preferência, é possível introduzir o conceito de nível (level) de uma tuplat(denotadol(t)) dada uma instânciar sobrer: l(t) = 0, se não existet r tal quet > t. Caso contrário, l(t) = max {l(t ) t > t}+1. O novo operador SelectK-Best(K,r) retorna o conjunto das K tuplas com os menores níveis. Representa, portanto, a inserção da abordagem top-k com preferências na linguagem CPref-SQL. O exemplo a seguir ilustra a realização de uma consulta-pc top-k através da linguagem CPref-SQL. Exemplo 3.1 Seja uma relação VIAGENS que armazena informações sobre opções de pacotes turísticos com os atributos D (Destino), T (Temporada), R (Roteiro), T r (Transporte), C (Categoria). A Figura 1(a) descreve uma instância de VIAGENS. As seguintes sentenças expressam as preferências de um turista: (1) Em geral, prefiro viajar para praia do que para um centro urbano; (2) Para viagens de carnaval a centros urbanos, prefiro que o transporte seja rodoviário (rod); (3) Para roteiros a centros urbanos, prefiro viajar nas férias do que no carnaval. Liste os 4 destinos que mais se adequam aos meus desejos, desde que não sejam viagens na temporada de Páscoa. A consulta-pc top-k correspondente é: CREATE PREFERENCES MyPrefs FROM VIAGENS AS R= praia > R= urbano [D,Tr,C] AND IF T= carnaval and R= urbano THEN Tr= rod > Tr= aereo [D,C] AND IF R= urbano THEN T= ferias > T= carnaval [D]; SELECT D FROM VIAGENS WHERE T <> pascoa ACCORDING TO PREFERENCES (4, M yp ref s); Nessa consulta a restrição hard é T <> pascoa e as restrições soft são dadas pelas regras MyPrefs. Através do operador SelectK-Best, serão retornadas as 4 tuplas com os menores níveis. A ordem induzida em VIAGENS pelo conjunto de regras é ilustrada no grafo better-than da Figura 1(b). Uma seta de t para t significa que t > t (setas obtidas pelo fecho transitivo não estão representadas). Note, por exemplo, que t 1 > t 2 pela regra 1, t 2 > t 3 pela regra 3, e t 1 > t 3 por transitividade. De acordo com tal ordem e pela definição de nível, tem-se: SelectK-Best(4, VIAGENS) = {t 1,t 4,t 5,t 2 }. SelectK-Best(2, VIAGENS) = {t 1,t 4 } (note que l(t 5 ) = l(t 4 ) = l(t 1 ) = 0, mas tuplas de mesmos níveis são consideradas pela ordem que aparecem na relação. Finalmente, Select-Best(VIAGENS) = {t 1,t 4,t 5 }. 3.2. Implementação dos Operadores de Preferência Neste trabalho, são propostos os algoritmos BNL** e R-BNL** (Ranked BNL**) para avaliar os operadores Select-Best e SelectK-Best, respectivamente. Eles seguem as linhas dos algoritmos de laços aninhados existentes na literatura [Borzsonyi et al. 2001, Chomicki 2003]. Basicamente, o Select-Best retorna as tuplas dominantes e o SelectK-Best envolve a avaliação das tuplas dominantes de maneira iterativa. Um ponto essencial nos algoritmos é o teste de dominˆancia, que decide se uma tupla t 1 domina outra tupla t 2, seja por inferência direta a partir de uma regra, ou devido a uma inferência por transitividade sobre duas ou mais regras. Como solução do problema, o teste de dominˆancia foi implementado através de um Programa Datalog. Cada teste de dominância executado pelos algoritmos corresponde à satisfação da instanciação de um goal para o programa. Os novos operadores não aumentam o poder de expressão da SQL, já que eles podem ser expressos em álgebra relacional [Chomicki 2003]. Assim, com uma reescrita é possível traduzir
consultas CPref-SQL em consultas SQL com recursão. Entretanto, na Seção 4 são apresentados alguns resultados que comprovam ganhos em performance com a definição explícita dos novos operadores, estendendo a SQL, através dos algoritmos específicos propostos. O plano de execução canônico associado a um bloco CPref-SQL (sem construtores de agregação) é mostrado na Figura 1(c). Neste trabalho, a implementação da linguagem CPref- SQL adota uma abordagem built-in, ou seja, a codificação dos algoritmos foi feita diretamente no código-fonte do SGBDR PostgreSQL para possibilitar que os novos operadores de preferência interajam com operações internas do plano de execução de consultas SQL (seleções, junções, projeções), abrindo caminhos para futuras otimizações. Figura 1. (a)instância r de VIAGENS; (b)grafo better-than de r; (c)plano de execução da CPref-SQL 3.3. Consultas por Similaridade com Preferências Condicionais do Usuário A proposta de aproximar o tópico de preferências às consultas por similaridade visa poder contribuir na qualidade das respostas fornecidas ao usuário, em se tratando de bases de dados multimídia. Os operadores de similaridade do SIREN [Barioni et al. 2006] e os de preferência do PostgreSQL estendido para CPref-SQL se complementam e serão combinados para realização de consultas sob duas abordagens: (i) consultas-pc sobre os objetos mais similares; (ii) consultas por similaridade sobre os objetos mais preferidos. Assim, o usuário poderá estabelecer suas preferências e fazer consultas do tipo: dentre as minhas viagens mais preferidas, liste aqueles destinos que mais se assemelham à essa foto. Ou ainda, dentre as imagens que mais se assemelham a essa foto, liste meus destinos preferidos. O SIREN possui um módulo de mineração de dados, através do qual obtém regras de associação para otimizar consultas. Acredita-se, num segundo momento, ser possível traduzir essas regras de associação em regras-pc, possibilitando a união entre as regras mineradas e aquelas fornecidas pelo usuário para melhor acurácia nos resultados. 4. Resultados Experimentais Os testes referentes à implementação da linguagem foram feitos utilizando o benchmark TPC- H 1, que possui um gerador de dados sintéticos e um conjunto de consultas SQL padrão 2. Tais consultas foram adaptadas com a inserção da cláusula ACCORDING TO PREFERENCES e remoção das funções de agregação (não suportadas pela atual implementação dos operadores). Na Figura 2 são apresentados alguns resultados de performance e escalabilidade. Os parâmetros default são: base de dados de 10MB, preferências com 6 regras, 8MB de buffer e consulta Q5 do TPC-H. Foram analisados os desempenhos das consultas CPref-SQL, que utilizam o operador Select-Best, em comparação com suas traduções em SQL recursivo. A Figura 2(a) mostra que a performance da consulta SQL decresce numa proporção bem maior à medida que o número de regras aumenta. Por exemplo, uma consulta CPref-SQL com 40 1 http://www.tpc.org/tpch 2 Ambiente de testes: PC 2.2GHz AMD Turion X2 Ultra Dual-Core, com 4GB de memória RAM, executando Linux. Foi utilizado o psql como front-end para o PostgreSQL 8.4.
regras é aproximadamente 4 vezes mais rápida. O mesmo comportamento pode ser observado durante a variação do tamanho da base (Figura 2(b)). Para um banco de dados de 100MB, a consulta em SQL recursivo demora 5 vezes mais que sua correspondente em CPref-SQL. Ao variar o parâmetro K em consultas com o operador SelectK-Best (Figura 2(c)) o algoritmo R- BNL necessita de um tempo extra para processar o nível das tuplas em relação ao BNL, daí a performance parak = 1 (Select-Best) ser melhor. Figura 2. Resultados de performance e escalabilidade 5. Considerações Finais O projeto está sendo conduzido de acordo com as etapas descritas a seguir. A tabela 1 apresenta o cronograma semestral das atividades até a defesa. No momento, a etapa 3 foi concluída e a etapa 4 está em execução. 1. Levantamento bibliográfico e seminários para entendimento do problema 2. Proposta da abordagem top-k em consultas-pc, desenvolvimento de algoritmos para os operadores Select-Best e SelectK-Best e implementação no SGBD 3. Realização de experimentos sobre o método implementado 4. Estágio no GbdI-ICMC/USP pelo projeto PROCAD para proposta e desenvolvimento de uma integração entre consultas por similaridade e preferências 5. Redação e submissão de um artigo para um periódico 6. Redação da dissertação 7. Conclusão do trabalho e defesa Etapas 1/2009 2/2009 1/2010 2/2010 1/2011 Etapas 1/2009 2/2009 1/2010 2/2010 1/2011 Etapa 1 Etapa 5 Etapa 2 Etapa 6 Etapa 3 Etapa 7 Etapa 4 Tabela 1. Cronograma de atividades para a execução do projeto Referências Barioni, M. C. N., Razente, H., Traina, A., and Traina, Jr., C. (2006). Siren: a similarity retrieval engine for complex data. In Proceedings of the 32nd international conference on Very large data bases, 1155 1158. Bartolini, I., Ciaccia, P., Oria, V., and Özsu, M. T. (2007). Flexible integration of multimedia sub-queries with qualitative preferences. Multimedia Tools Appl., 33:261 273. Borzsonyi, S., Kossmann, D., and Stocker, K. (2001). The skyline operator. In Proc. 17th International Conference on Data Engineering (ICDE 2001), Germany, 412 430. Chomicki, J. (2003). Preference formulas in relational queries. ACM Transactions on Database Systems, 427 466. de Amo, S. and Ribeiro, M. R. (2009). Cpref-sql: A query language supporting conditional preferences. In 24th Annual ACM Symposium on Applied Computing (ACM SAC), March 2009, Hawaii, USA., 1573 1577. Kießling, W. and Köstler, G. (2002). Preference sql - design, implementation, experiences. In VLDB, 990 1001. Papadias, D., Tao, Y., and Fu, G. (2005). Progressive skyline computation in database systems. TODS, 30:41 82. Wilson, N. (2004). Extending cp-nets with stronger conditional preference statements. In AAAI, 735 741.