• Nenhum resultado encontrado

O suporte `a ideia de evolu¸c˜ao temporal em bases de dados apresenta diversos aspectos conceituais no que se refere `a maneira como o tempo deve ser tratado. Dois dos aspectos mais importantes s˜ao a maneira como o tempo deve ser modelado e a possibilidade de se registrar o tempo sob diversas dimens˜oes. Esses aspectos afetam tanto a maneira como os dados devem ser modelados e armazenados, quanto os aspectos de representa¸c˜ao de consultas envolvendo tempo, que devem expressar a semˆantica das consultas.

Apesar de o tempo ser naturalmente cont´ınuo, sua vis˜ao em bases de dados temporais pode ser discreta ou cont´ınua, sendo a interpreta¸c˜ao discreta mais comumente adotada em bases de dados temporais devido a simplicidade e facilidade de implementa¸c˜ao [Tansel et al., 1993]. Na interpreta¸c˜ao discreta, o tempo ´e visto como uma sequˆencia de intervalos consecutivos. Esses intervalos s˜ao chamados de Chronon e s˜ao a menor por¸c˜ao de tempo representada (que n˜ao pode ser decomposta) e ´e dependente da aplica¸c˜ao.

Um fator importante a ser analisado na representa¸c˜ao de dados temporais refere-se a ordem do tempo. A forma mais comumente adotada ´e a ordem linear. Dessa forma, dois pontos no tempo podem sempre ser ordenados. Outro exemplo de ordem que pode ser adotada na representa¸c˜ao do tempo trata-se da ordem circular, que ´e utilizada quando pretende-se representar per´ıodos de tempo que se repetem periodicamente, como por exemplo meses do ano, ou dias da semana. Outra diferencia¸c˜ao que pode ser feita nos modelos de representa¸c˜ao de tempo refere-se `a maneira como o tempo ´e representado, seja na forma de instantes de tempo ou intervalos de tempo associados aos dados.

A associa¸c˜ao de tempo aos dados de uma base pode ser interpretada de diferentes maneiras. O ‘tempo da transa¸c˜ao’ registra o momento em que a informa¸c˜ao ´e manipulada pelo SGBD. J´a o ‘tempo v´alido’ representa o per´ıodo em que a informa¸c˜ao ´e considerada correta no dom´ınio da aplica¸c˜ao. Essas duas interpreta¸c˜oes de tempo s˜ao as mais comuns, e s˜ao chamadas de dimens˜oes de tempo [Elmasri & Navathe, 2006].

As bases de dados podem ser classificadas pela forma que as dimens˜oes de tempo s˜ao utilizadas [Edelweiss, 1998]. Vale ressaltar aqui que muitos dos termos e classifica¸c˜oes referentes a bases de dados temporais foram atualizados e modificados no decorrer do

4.2 Dados temporais

tempo [Jensen et al., 1997].

As bases de dados chamadas de ‘bases de dados instantˆaneas’ n˜ao utilizam nenhuma dimens˜ao de tempo, armazenando apenas os dados correntes. Nas ‘bases de dados de tempo de transa¸c˜ao’ (anteriormente chamadas de ‘rollback ’), os dados s˜ao rotulados apenas com seus tempos de transa¸c˜ao. Quando algum dado da base ´e alterado, o valor anterior n˜ao ´e destru´ıdo, sendo armazenados todos os estados passados. As ‘bases de dados de tempo v´alido’ (anteriormente chamadas de ‘hist´oricas’) armazenam somente o tempo v´alido juntamente com os dados, n˜ao se tendo associada ao dado a informa¸c˜ao do tempo de transa¸c˜ao.

A partir da Linguagem TSQL2 [Snodgrass, 1995], introduzida como uma extens˜ao ao padr˜ao SQL-92, passou a ser aceita a representa¸c˜ao do tempo em um modelo conceitual Bi-temporal (‘base de dados bi-temporais’), que incorpora tanto a representa¸c˜ao do ‘tempo da transa¸c˜ao’ quanto a representa¸c˜ao do ‘tempo v´alido’. Al´em dessas duas dimens˜oes de tempo, uma dimens˜ao de tempo adicional pode ser definida caso a aplica¸c˜ao necessite, chamada de ‘tempo definido pelo usu´ario’. Em uma base de dados bi-temporal existe a possibilidade do acesso a todos os estados passados da base, seja pelo hist´orico de transa¸c˜oes ou de validade, e valores futuros podem ser obtidos pelo tempo de validade [Snodgrass, 1995].

Em TSQL2 o tempo sempre ´e representado atrav´es de per´ıodos de tempo com in´ıcio e fim, em oposi¸c˜ao `a representa¸c˜ao de instantes de tempo. Nessa linguagem n˜ao existe a necessidade de se representar o tempo explicitamente, em alguma coluna ‘tempo’ nas rela¸c˜oes, pois o suporte a tempo ´e estabelecido pelo proprio gerenciador em todas as rela¸c˜oes declaradas como dependentes do tempo [Chen & Zaniolo, 1999]. Dessa maneira, um SGBD pode utilizar estruturas apropriadas ao gerenciamento dos dados considerando sua varia¸c˜ao temporal, incluindo m´etodos de acesso que considerem a evolu¸c˜ao dos dados indexados evitando, na maioria das situa¸c˜oes, a necessidade de realizar a cara opera¸c˜ao de intersec¸c˜ao de resultados intermedi´arios para conhecer dados oriundos de instantes de tempo diversos [Sellis, 1999]. Em [Manica et al., 2009b, Manica et al., 2009a] foi apresentada uma ferramenta que possibilita a execu¸c˜ao de consultas na linguagem

TSQL2 sobre SGBD convencionais.

Diversas estruturas de indexa¸c˜ao tˆem sido criadas para permitir representar e recuperar dados com v´ınculo temporal. Um levantamento interessante das estruturas de indexa¸c˜ao para dados espa¸co-temporais pode ser encontrado em [Mokbel et al., 2003], classificadas de acordo com o tipo e o tempo (passado, corrente e futuro) da consulta. Isso inclui a necessidade de indexar tanto a dimens˜ao tempo de transa¸c˜ao quanto o tempo de validade, o que ´e exemplificado pelo m´etodo BT-tree, que permite a navega¸c˜ao alternando as dimens˜oes temporais [Jiang et al., 2000].

O gerenciamento eficiente de conjuntos de intervalos de tempo ´e um requisito fundamental para essas estruturas. Uma estrutura voltada especialmente para tratar esse problema ´e a RI-tree [Kriegel et al., 2004, Kriegel et al., 2002], que processa a interesec¸c˜ao dos resultados de consultas, codificados como sequˆencias de intervalos representados pelas tuplas de uma rela¸c˜ao em um SGBD objeto-relational [Kriegel et al., 2000]. A RI-tree ´e interessante especialmente para aplica¸c˜oes que trabalham com dados espa¸co-temporais, uma vez que os intervalos podem ser tanto temporais quanto faixas de valores para as dimens˜oes espaciais.

Outro ponto importante ´e que a taxa de atualiza¸c˜ao nas estruturas de indexa¸c˜ao para dados que evoluem pode ser alta. Visando tratar desse problema, em [Kwon et al., 2002] ´e apresentada a LUR-tree, baseada na R-tree. Essa t´ecnica atualiza a estrutura de indexa¸c˜ao somente se um objeto se move para fora de seu MBR (minimum bounding rectangle) original. Se a nova posi¸c˜ao do objeto ainda ´e coberta por seu MBR, apenas ´e alterada sua posi¸c˜ao no n´o-folha. Com isso a opera¸c˜ao de atualiza¸c˜ao torna-se muito mais r´apida. Em [Lee et al., 2003] ´e apresentada uma estrat´egia de atualiza¸c˜ao bottom-up para R-trees. Um ´ındice compacto que permite o acesso direto aos n´os-´ındice da R-Tree ´e mantido em mem´oria, o qual ´e usado em conjunto com algoritmos de navega¸c˜ao bottom-up. Em [Xiong & Aref, 2006, Silva et al., 2009b] foi proposta a RUM-tree, que utiliza anota¸c˜oes para distinguir dados atuais dos obsoletos (n˜ao removidos imediatamente da estrutura, mas marcados para remo¸c˜ao posterior), visando agilizar o processo de atualiza¸c˜ao.

Documentos relacionados