- 签名索引
除了hash 之外 更好的索引方式
A signature summarises the data from one tuple
//Generating a k-in-m codeword for attribute Ai
bits codeword(char *attr_value, int m, int k)
{
int nbits = 0; // count of set bits
bits cword = 0; // assuming m <= 32 bits
// 类似于 seed(1) 定好seed 之后 下面random 值都是固定的
// for example attribute 传进来 只要是 china seed 就是固定的
srandom(hash(attr_value));
while (nbits < k) {
// 根据 seed 的 值 取 随机数
int i = random() % m;
if (((1 << i) & cword) == 0) {
cword |= (1 << i);
nbits++;
}
}
// m-bits with k 1-bits and m-k 0-bits
return cword;
}
cost page = bD + bQ
D是获取query index 所需要的pages
Q是用获取的query 与 有可能符合条件的 tuple 进行match 需要的pages
- 比较 如果有 500w 个 data pages 它对应的 page index pages 有 5000 个 而 bit-sliced pages 有可能只有几十个 海量降低page cost 大大提高读写效率, 这就是index 的作用。我想知道500w个data pages 的信息, 只需read 5000个bit-sliced pages 随即找到对应的query page 和 query tuple。