• Sonuç bulunamadı

Evlilik Birliği İçerisinde

Evlilik Dışı İlişkide Birlikte Velâyet Modeli Hakemli Makale

A. Evlilik Birliği İçerisinde

Nesta seção são apresentados resumidamente os principais pontos de discussão deste capítulo ao mesmo tempo em que são antecipadas algumas características da técnica de indexação BranchGuide. Especificamente, os trabalhos Dataguide [Goldman97], eXist [Meier02] e ViST [Wang03] são comparados com a técnica BranchGuide em função dos quesitos listados na Tabela 1. Apesar de algumas propriedades da técnica BranchGuide serem brevemente citadas nesta seção, é importante ressaltar que tais propriedades são detalhadas e discutidas nos Capítulo 3 e 4.

Tabela 1: Tabela comparativa

Dataguide eXist ViST BranchGuide

Expressões Suportadas: Expressões simples Expressões com ramificação Expressões com ramificação

Classe de expressões

com ramificação Precisão de Resultados

para Expressões com Ramificação:

Não provê suporte a expressões com

ramificação

Sim Não Sim

Método Empregado no Processamento de Expressões: Busca Navegacional Interseção Estrutural Árvore de Sufixos Índice Invertido Custo para o Armazenamento de Índice: Igual ou menor ao tamanho da amostra indexada Maior do que o tamanho da amostra indexada Igual ou menor ao tamanho da amostra indexada Igual ou maior do que o tamanho da amostra indexada

O índice Dataguide é conveniente para processar somente consultas com única condição de restrição apenas no final da expressão (expressões simples). Apesar disto, o procedimento de decomposição de expressões com ramificação em expressões simples com o

Dataguide não garante que os resultados finais obtidos no processamento de expressões com ramificação sejam precisos.

Já o eXist emprega intersecção estrutural, assim, consultas com ramificação são decompostas em termos individuais, de forma que cada termo individual tem um identificador unívoco que permite checar diversas relações entre elementos, e desta forma consultas podem ser processadas sem retorno de falsos positivos. A técnica ViST é projetada para processar qualquer tipo de consulta com ramificação mas os resultados retornados pela mesma podem incluir falsos positivos. Já a técnica BranchGuide proposta neste trabalho adota um padrão para a seleção de uma classe de expressões com ramificação a fim de que um conjunto de expressões com ramificação seja indexado sem imprecisão. Além disso, como também indexa caminhos simples, a técnica BranchGuide provê suporte para consultas mais expressivas do que o Dataguide. Vale ressaltar também que, o ViST retorna falsos positivos ao processar consultas com ramificação que pertencem à classe de consultas de ramificação suportada pela técnica BranchGuide.

As técnicas de indexação Dataguide e ViST geram após indexação, no pior caso, uma quantidade linear de informações a serem indexadas [Goldman97] [Wang03], ou seja, em geral, os índices gerados têm tamanho menor ou igual ao tamanho da amostra indexada. Em contraste, o eXist sofre de problemas para prover escalabilidade. Especificamente em relação aos custos de armazenamento de índice, o fato do eXist adotar um esquema de identificação baseado em numeração Dewey conduz para um alto custo de armazenamento [Catania05], que em geral, causa um elevado tamanho de índice em comparação com o tamanho da amostra indexada. Em contraste, embora a técnica BranchGuide gere uma quantidade não linear de expressões com ramificação indexadas, é adotado um projeto de índice que reduz o crescimento dos tamanhos de índice, provendo requisitos de armazenamento menos custosos do que o eXist. Como evidenciado experimentalmente (Capítulo 6), os tamanhos de índice gerados pela técnica BranchGuide são em geral, próximos (podendo ser iguais) ou maiores do que o tamanho da amostra indexada, mas em compensação, são menores do que os índices gerados pelo eXist.

Em relação aos métodos empregados no processamento de consultas, temos que o eXist decompõe consultas com ramificação em termos individuais, assim, um acesso ao índice e uma etapa de interseção estrutural deve ser executado para cada um destes. No total, como demonstrado experimentalmente em [Kaushik04], a soma dos tempos de acesso e

interseções estruturais implica, em geral, em um método de alto custo para o processamento de consultas.

Já o Dataguide adota uma estrutura de dados de busca navegacional em memória [Goldman97], especificamente, um grafo mantido em memória principal tal que é possível percorrê-lo direcionalmente. Este grafo contém todos os caminhos simples, de forma que o processo de consulta se resume a localizar nessa estrutura de dados um percurso relativo a um determinado caminho (navegando sob os vértices do grafo em memória), sem a necessidade de decomposição com interseção estrutural. Apesar disso, conforme experimentalmente mostrado em [Li01], os algoritmos de interseção estrutural ainda conseguem ser mais eficientes do que os métodos de busca navegacional.

Em contraste, com o objetivo de eliminar o uso de interseções estruturais bem como adotar uma estrutura de dados mais compacta do que a empregada no Dataguide, o ViST tem o documento por inteiro como unidade básica de indexação, evitando decompor consultas com ramificação. Além disso, a árvore de sufixos empregada no ViST permite representar os elementos indexados de uma forma compacta, reduzindo o tempo de acesso de recuperação das informações indexadas. Sendo assim, estas duas propriedades do ViST implicam em um desempenho geral eficiente para o processamento de consultas.

Seguindo esta mesma direção, a técnica BranchGuide também não emprega interseção estrutural para uma classe de expressões com ramificação suportada. Além disso, não emprega uma estrutura de dados navegacional no armazenamento de índice. A técnica BranchGuide adota um índice invertido para armazenamento dos índices, mapeando cada caminho indexado para uma listagem de resultados. Assim, ao buscar por um determinado caminho não é necessário processar interseções estruturais bem como não é necessário navegar sob uma estrutura de caminhos em memória. Adotando um índice invertido é possível oferecer um mecanismo eficiente para recuperar diretamente uma lista de resultados para um determinado caminho [Manning08], e assim, prover um mecanismo escalável para o processamento de consultas com ramificação.