Desde junho de 2020, eu estou apoiando a Luciana na pesquisa de Mestrado dela. O tema de pesquisa é Tuning de Banco de Dados Relacionais e o problema de pesquisa é Inferências por regras em SPIN para Geração de Sugestões de Tuning em Banco de Dados Relacionais.
O trabalho tem dois grandes referenciais como base que foram desenvolvidos por pesquisadores do BioBD:
1) Uma Ontologia de Tuning, chamada OnDBTuning, proposta pela tese de Doutorado da Professora Ana Carolina.
A Ontologia modela as Classes, os relacionamentos entre Classes e os atributos das Classes referentes a essa domínio, representando de modo explícito o conhecimento tácito de DBAs especialistas em atividades de tuning.
No estado atual da pesquisa, as regras de tuning da OnDBTuning foram
modeladas usando a linguagem SWRL e as inferências estavam sendo feitas
usando o plugin SWRL Tab da ferramenta Protegé.Tanto a linguagem SWRL quanto os reasoners suportados pela ferramenta apresentam limitações para a geração de sugestões de tuning (*).
2) Um framework para ferramentas de tuning baseado em Ontologias, chamado Outer-tuning, proposto pelo Rafael.
O framework possui módulos especializados na coleta de metadados e da carga de trabalho assim como a interação com uma ontologia do mesmo domínio e a possibilidade do usuário selecionar quais as regras de tuning a serem aplicadas.
No estado atual da ferramenta Outer-tuning a geração de sugestões de tuning baseado na OnDBTuing e no benchmark TPC está implementada em código Java e isso não permite a inclusão de novas regras para ações de tuning assim como o atendimento a outras cargas de trabalho (**).
A pesquisa da Luciana visa solucionar os problemas (*) e (**) com uma proposta de modelagem de regras para sugestão de ações de tuning em SPIN, que é um padrão da W3C, a ser embutida na OnDBTuning e que poderá tornar a ferramenta Outer-tuning extensível nesse aspecto funcional (rule-based system).
Diversas abordagens foram tentadas sem sucesso, inclusive o uso do AllegroGraph por seu suporte parcial ao SPIN. Porém dadas as dificuldades tecnológicas, no momento atual estamos avaliando o uso do TopBraid Composer Free-Edition, uma ferramenta de modelagem semelhando ao Protégé, que tem suporte integral ao SPIN (uma vez que a sua fabricante, a TopQuadrant, é uma das empresas que participou do grupo de trabalho da W3C que propões o SPIN e o SHACL)
Sobre o SPIN (SPARQL Inference Notation), temos:
- A de-facto industry standard to represent SPARQL rules and constraints on Semantic Web models, building on the widespread acceptance of the SPARQL query language. SPARQL is well supported by numerous engines and databases. This means that SPIN rules can be directly executed on the databases and no intermediate engines with communication overhead need to be introduced.
- Also, SPIN is more expressive than SWRL, because SPARQL has various features such as UNIONs and FILTER expressions.
- SPIN has an object-oriented model, i.e. linking rules to the appropriate ontology classes as derived by analyzing the rule conditions, that arguably leads to better maintainable models than SWRL's flat rule lists.
- Finally, SPIN goes far beyond being just a rule language, and provides means to express constraints and to define new functions and templates. Since SPIN is entirely represented in RDF, rules and con-straints can be shared on the web together with the class definitions they are associated with.
Durante a pesquisa encontramos uma ferramenta chamada SWRL2SPIN que poderá ajudar na conversão (mesmo que manual) das regras que atualmente estão modeladas na OnDBTuning para SPIN.
Nesse artigo temos o detalhamento da ferramenta e também as considerações sobre usar SPIN ao invés de SWRL -> http://ceur-ws.org/Vol-2204/paper5.pdf.
Como nem todas as built-in functions do SWRL foram convertidas para SPIN pode ser que a conversão das regras tenha que ser feita manualmente -> http://intelligence.csd.auth.gr/files/SWRL2SPIN-builtins.pdf
Sugeri os seguintes passos de pesquisa:
1) Fazer um exemplo de Inferência usando um tutorial do TopBraid -> https://www.topquadrant.com/spin/tutorial/
2) Fazer a conversão (manual) para SPARQL/SPIN, usando esse de/para do SWRL2SPIN, de cada regra que tem na OnDBTuning e testar no TopBraid
3) Embutir as regras SPIN nas classes da OnDBTuning usando o TopBraid
4) Executar os passos para Inferência com o TopSPIN do TopBraid
5) Integrar o TopBraid com o Allegro para persistir a ontologia com regras e fatos (instâncias de asserções e de inferências)
Um vídeo de introdução das funcionalidades do TopBraid é esse -> https://youtu.be/QJrirpzek4o
Provavelmente a persistência irá ficar de fora ou irá usar outra tecnologia para integrar com o framework.
ResponderExcluirNo estado atual da pesquisa as regras de "Parse" dos comandos SQL foram construídas de modo genérico e a heurística força-bruta ou naive de criação de índices simples já está funcionando. A Luciana irá focar na criação de um índice composto e verificar outras regras possíveis. Também é preciso buscar uma solução para habilitar/desabilitar as regras.
Outro aluno de mestrado do grupo BioBD (Vitor) irá integrar com o framework. Repassei para ele a informação que existe uma API para acessar a SPIN Rule Engine do TopBraid
https://www.topbraid.org/spin/api/
https://github.com/spinrdf/spinrdf
A modelagem de índices compostos foi finalizada então já existem dois tipos de regras de índices na ontologia. Cada subgrafo referente ao índice sugerido possui uma tripla indicando qual foi a regra de geração, o que vai permitir habilitar/desabilitar as sugestões na ferramenta que irá consumir as inferências. Estamos finalizando até 04/07 a escrita de um artigo com os resultados para o SBBD 2021.
ResponderExcluir