System and methods are described for improved indexing and processing
(e.g., query processing) of date-based information. A date value may be
viewed as comprising year (y), month (m), and day (d) components. A
DateIndex index data structure is defined to comprise three distinct
groups of bitmaps: one for years, another for months, and another for
days, respectively. This index can be created on a column having a
datatype of "date" (e.g., standard SQL datatype which stores date
literals). A month group is defined to contain exactly 12 bitmaps (call
them M[1], M[2], . . . , M[12]) to track rows meeting at a specified month
range for a particular column. Each successive bitmap within the group
stores a successively smaller subrange of possible month values (e.g.,
month 1-12, month 2-12, month 3-12, and so forth and so on). In a similar
manner, bitmaps may be created for tracking day and year ranges.
Additionally, an "existence bitmap" (EBM) is used to track whether
particular rows exist in a given column being indexed. Armed with this
information, the system can now resolve a desired query operation using
set algebra. Depending on the particular date value(s) under
consideration, use of set algebra may often be optimized, thereby reducing
the number of bitmap operations required. By providing a new index
structure specifically designed for date columns, the approach
significantly reduces the number of bitmap operations required to do each
of these operations and also significantly reduces the amount of I/O
required to do each operation.
O sistema e os métodos são descritos para o indexing melhorado e processar (por exemplo, pergunta que processa) da informação data-baseada. Um valor da data pode ser visto como compreender o ano (y), o mês (m), e os componentes do dia (d). Uma estrutura de dados do índice de DateIndex é definida para compreender três grupos distintos dos bitmaps: um por anos, outro por meses, e outro por dias, respectivamente. Este índice pode ser criado em uma coluna que tem um datatype da "data" (por exemplo, o datatype padrão do SQL que armazena literals da data). Um grupo do mês é definido para conter exatamente 12 bitmaps (os chame M[1 ], M[2 ]. . . , M[12 ]) para seguir as fileiras que encontram-se com em um mês especificado variam para uma coluna particular. Cada bitmap sucessivo dentro do grupo armazena um subrange sucessivamente menor de valores possíveis do mês (por exemplo, mês 1-12, mês 2-12, mês 3-12, e assim por diante e assim por diante). Em uma maneira similar, os bitmaps podem ser criados para escalas seguindo do dia e do ano. Adicionalmente, da "um bitmap existência" (EBM) é usado seguir se as fileiras particulares existem em uma coluna dada que está sendo posicionada. Armado com esta informação, o sistema pode agora resolver uma operação desejada da pergunta usando álgebra ajustada. Dependendo do value(s) particular da data sob a consideração, o uso da álgebra do jogo pode frequentemente optimized, desse modo reduzindo o número das operações bitmap requeridas. Fornecendo uma estrutura nova do índice projetada especificamente para colunas da data, a aproximação reduz significativamente o número das operações bitmap requeridas para fazer cada uma destas operações e também reduz significativamente a quantidade de I/O requerido para fazer cada operação.