双层结构的索引及其查询方法.pdf

上传人:伱** 文档编号:9214235 上传时间:2021-05-10 格式:PDF 页数:9 大小:406.62KB
收藏 版权申诉 举报 下载
双层结构的索引及其查询方法.pdf_第1页
第1页 / 共9页
双层结构的索引及其查询方法.pdf_第2页
第2页 / 共9页
双层结构的索引及其查询方法.pdf_第3页
第3页 / 共9页
文档描述:

《双层结构的索引及其查询方法.pdf》由会员分享,可在线阅读,更多相关《双层结构的索引及其查询方法.pdf(9页完成版)》请在专利查询网上搜索。

1、(19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 (43)申请公布日 (21)申请号 202010201476.7 (22)申请日 2020.03.20 (71)申请人 复旦大学 地址 200433 上海市杨浦区邯郸路220号 (72)发明人 何文张凯郭家鼎李林蔚 王晓阳 (74)专利代理机构 上海科盛知识产权代理有限 公司 31225 代理人 申丹宁 (51)Int.Cl. G06F 16/22(2019.01) G06F 16/2455(2019.01) (54)发明名称 一种双层结构的索引及其查询方法 (57)摘要 本发明涉及一种双层结构的索引及其查询 方法。

2、, 该索引结构包括: 连接两层的逻辑块索引: 对逻辑块构建的索引, 能够确定任意数据出现的 第一个逻辑块, 逻辑块是对按一定顺序排列的数 据划分得到的数据块; 构成第一层的一组位向 量: 每个位向量包括N个比特, 比特表示数据是否 存在于某个逻辑块中; 构成第二层的rowID序列: 按照数据顺序排列存储的数据在原数据序列中 的位置。 第一层能够筛选出绝大多数符合检索条 件的数据, 生成一个尽可能接近最终结果的中间 结果; 第二层利用rowID序列完善第一层生成的 中间结果, 从而得到准确的最终结果。 与现有技 术相比, 本发明能够减少随机访存、 减少访问无 关数据, 能够加速对列式内存数据库的。

3、查询操 作。 权利要求书2页 说明书5页 附图1页 CN 111444180 A 2020.07.24 CN 111444180 A 1.一种双层结构的索引, 其特征在于, 包括第一层和第二层, 所述第一层和第二层之间 通过逻辑块索引连接; 所述逻辑块索引是对逻辑块构建的索引, 所述逻辑块是对按一定顺序排列的数据划分 得到的数据块; 所述第一层包括一组位向量, 每个位向量包括N个比特, N为数据总数, 所述比特表示数 据是否存在于某个逻辑块中; 所述第二层包含一组rowID序列, 表示按照一定顺序排列存储的数据在原数据序列中 的位置, 每个逻辑块对应rowID序列的一段; 所述rowID序列记。

4、录数据位置的顺序与划分逻 辑块时数据的排列顺序相同。 2.根据权利要求1所述的一种双层结构的索引, 其特征在于, 所述逻辑块的生成方法 为: 按升序排列数据, 将数据等分成K个逻辑块, 每个逻辑块包含N/K个数据, 记为AA1, A2,.,AK。 3.根据权利要求2所述的一种双层结构的索引, 其特征在于, 所述K个逻辑块的划分满 足如下条件: AiminAimaxA(i+1)minA(i+1)max 其中, Aimin和Aimax分别表示逻辑块Ai中的最小值和最大值, A(i+1)min和A(i+1)max分别表示逻 辑块Ai+1中的最小值和最大值。 4.根据权利要求1所述的一种双层结构的索引。

5、, 其特征在于, 所述逻辑块索引能够确定 任意数据出现的第一个逻辑块。 5.根据权利要求2所述的一种双层结构的索引, 其特征在于, 所述第一层包含K+1个位 向量, 记为FF0,F1,F2,.,FK-1,FK, F0为所有比特位全为0的位向量, 第i个位向量Fi的第 j个比特表示原数据序列中的第j个数据是否在中。 6.根据权利要求5所述的一种双层结构的索引, 其特征在于, 所述第二层根据第一层得 到的位向量确定需修正的数据区间, 修正第一层结果中属于该数据区间的查询参数所在逻 辑块中数据对应的比特位。 7.根据权利要求6所述的一种双层结构的索引, 其特征在于, 所述第二层在修正第一层 的结果时。

6、采用内存预取技术。 8.一种权利要求17任一所述的双层结构的索引的查询方法, 其特征在于, 包括: S1、 在第一层中, 根据查询条件, 通过逻辑块索引定位查询参数所在的第一个逻辑块, 确定最接近最终结果的位向量, 得到该层的结果; S2、 在第二层中, 根据第一层的结果的生成路径, 对在第一层中得到的结果中的部分比 特位进行取反操作; S3、 返回经第二层修正后的位向量, 以位向量形式返回查询结果。 9.根据权利要求8所述的一种双层结构的索引的查询方法, 其特征在于, 所述S1对不同 查询条件的处理包括六种情况: a)形如 “xc” , x表示索引的数据, c表示查询参数, 若通过逻辑块索引。

7、确定包含查询参 数c的第一个逻辑块为第kc个逻辑块, 则在位向量Fkc-1、 Fkc中选择更接近最终结果的一个作 权利要求书 1/2 页 2 CN 111444180 A 2 为第一层的结果; b)形如 “xc” , 此时将该查询条件转换为 “x(c+1)” 按情况a)处理; c)形如 “xc” , 此时通过对由情况a)得到的查询 “xc” 的结果按位取反, 得到原查询 在第一层中的结果; d)形如 “xc” , 此时通过对由情况a)得到的查询 “x(c+1)” 的结果按位取反, 得到原 查询在第一层中的结果; e)形如 “c1xc2” , 通过对由情况a)得到的 “xc2” 和 “x(c1+。

8、1)” 的结果进行按位异 或操作, 得到原查询在第一层中的结果; f)形如 “xc” , 通过对由情况a)得到的 “xc” 和 “x(c+1)” 的结果进行按位异或操 作, 得到原查询在第一层中的结果。 10.根据权利要求9所述的一种双层结构的索引的查询方法, 其特征在于, 所述S2具体 包括: S21、 在第一层中, 每通过查询 “xc” 定位至一个逻辑块Aj, 选择一个位向量Fk, 则对应 一个第二层中需要修正的数据区间: 1)当kj时, 需修正的数据区间为c,Akmax; 2)当kj-1时, 需修正的数据区间为Akmin,c)。 S22、 对于每一个需要修正的数据区间, 利用第二层中的r。

9、owID序列得到逻辑块Aj对应的 rowID序列片段中属于该区间的数据的rowID, 对在第一层中得到的位向量中的相应位置的 比特进行取反操作。 权利要求书 2/2 页 3 CN 111444180 A 3 一种双层结构的索引及其查询方法 技术领域 0001 本发明涉及数据库领域, 尤其是涉及一种双层结构的索引及其查询方法。 背景技术 0002 在现有的分析型数据库中, 访问路径选择对查询执行的性能来说十分重要。 现有 的扫描方法存在无法改善的低效性: 顺序扫描需要访问大量不需要的数据; 索引扫描需要 进行大量开销昂贵的随机访存。 这些内在的低效性会导致这些方法无法达到最优的性能。 随着数据库。

10、中的工作量越来越复杂, 在访问路径选择阶段越来越难以预测出最优的方案。 发明内容 0003 本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种双层结构的索 引及其查询方法。 0004 本发明的目的可以通过以下技术方案来实现: 0005 一种双层结构的索引, 包括第一层和第二层, 所述第一层和第二层之间通过逻辑 块索引连接; 0006 所述逻辑块索引是对逻辑块构建的索引, 所述逻辑块是对按一定顺序排列的数据 划分得到的数据块; 0007 所述第一层包括一组位向量, 每个位向量包括N个比特, N为数据总数, 所述比特表 示数据是否存在于某个逻辑块中; 0008 所述第二层包含一组rowID序。

11、列, 表示按照一定顺序排列存储的数据在原数据序 列中的位置, 每个逻辑块对应rowID序列的一段; 所述rowID序列记录数据位置的顺序与划 分逻辑块时数据的排列顺序相同。 0009 优选的, 所述逻辑块的生成方法为: 按升序排列数据, 将数据等分成K个逻辑块, 每 个逻辑块包含N/K个数据, 记为AA1,A2,.,AK。 0010 优选的, 所述K个逻辑块的划分满足如下条件: 0011 AiminAimaxA(i+1)minA(i+1)max 0012 其中, Aimin和Aimax分别表示逻辑块Ai中的最小值和最大值, A(i+1)min和A(i+1)max分别 表示逻辑块Ai+1中的最小。

12、值和最大值。 0013 优选的, 所述逻辑块索引能够确定任意数据出现的第一个逻辑块。 0014 优选的, 所述第一层包含K+1个位向量, 记为FF0,F1,F2,.,FK-1,FK, F0为所有 比特位全为0的位向量, 第i个位向量Fi的第j个比特表示原数据序列中的第j个数据是否在 中。 0015 优选的, 所述第二层根据第一层得到的位向量确定需修正的数据区间, 修正第一 层结果中属于该数据区间的查询参数所在逻辑块中数据对应的比特位。 0016 优选的, 所述第二层在修正第一层的结果时采用内存预取技术。 说明书 1/5 页 4 CN 111444180 A 4 0017 一种双层结构的索引的查。

13、询方法, 包括: 0018 S1、 在第一层中, 根据查询条件, 通过逻辑块索引定位查询参数所在的第一个逻辑 块, 确定最接近最终结果的位向量, 得到该层的结果; 0019 S2、 在第二层中, 根据第一层的结果的生成路径, 对在第一层中得到的结果中的部 分比特位进行取反操作; 0020 S3、 返回经第二层修正后的位向量, 以位向量形式返回查询结果。 0021 优选的, 所述S1对不同查询条件的处理包括六种情况: 0022 a)形如 “xc” , x表示索引的数据, c表示查询参数, 若通过逻辑块索引确定包含查 询参数c的第一个逻辑块为第kc个逻辑块, 则在位向量Fkc-1、 Fkc中选择更。

14、接近最终结果的一 个作为第一层的结果; 0023 b)形如 “xc” , 此时将该查询条件转换为 “x(c+1)” 按情况a)处理; 0024 c)形如 “xc” , 此时通过对由情况a)得到的查询 “xc” 的结果按位取反, 得到原 查询在第一层中的结果; 0025 d)形如 “xc” , 此时通过对由情况a)得到的查询 “x(c+1)” 的结果按位取反, 得 到原查询在第一层中的结果; 0026 e)形如 “c1xc2” , 通过对由情况a)得到的 “xc2” 和 “x(c1+1)” 的结果进行按 位异或操作, 得到原查询在第一层中的结果; 0027 f)形如 “xc” , 通过对由情况a。

15、)得到的 “xc” 和 “x(c+1)” 的结果进行按位异或 操作, 得到原查询在第一层中的结果。 0028 优选的, 所述S2具体包括: 0029 S21、 在第一层中, 每通过查询 “xc” 定位至一个逻辑块Aj, 选择一个位向量Fk, 则 对应一个第二层中需要修正的数据区间: 0030 1)当kj时, 需修正的数据区间为c,Akmax; 0031 2)当kj-1时, 需修正的数据区间为Akmin,c)。 0032 S22、 对于每一个需要修正的数据区间, 利用第二层中的rowID序列得到逻辑块Aj 对应的rowID序列片段中属于该区间的数据的rowID, 对在第一层中得到的位向量中的相应。

16、 位置的比特进行取反操作。 0033 与现有技术相比, 本发明索引的内存占用和性能都是可配置的, 可以通过利用更 多的内存空间来构建的更多的位向量, 来达到更高的性能, 具有以下优点: 0034 1、 能够减少需要访问的不符合查询条件的数据的数量; 0035 2、 无需大量随机访存, 且大部分随机访存的开销可用内存预取技术消除; 0036 3、 可通过提供更多的内存来进一步提高性能, 但仅需占用少量内存空间便可达到 超过现有方法的性能。 附图说明 0037 图1为实施例在一组具体的数据上构建本发明双层结构的索引的示意图。 0038 图2为在图1构建的索引上执行一个基础的查询实例 “x69” 的。

17、示意图。 说明书 2/5 页 5 CN 111444180 A 5 具体实施方式 0039 下面结合附图和具体实施例对本发明进行详细说明。 本实施例以本发明技术方案 为前提进行实施, 给出了详细的实施方式和具体的操作过程, 但本发明的保护范围不限于 下述的实施例。 0040 本申请提出一种双层结构的索引, 包括第一层和第二层, 第一层和第二层之间通 过逻辑块索引连接。 0041 逻辑块索引: 对逻辑块构建的索引, 逻辑块是对按一定顺序排列的数据划分得到 的数据块。 因为逻辑块仅表示对数据的一个逻辑划分, 并不需要单独存储, 故称划分得到的 数据块为逻辑块。 具体可按数据的升序排列, 将数据等分。

18、成K块, 每块包含N/K个数据, 记为A A1,A2,.,AK, N为数据总数。 对于任意一个给定的数据, 该索引能够确定其所在的第一 个逻辑块。 0042 划分的K个逻辑块满足如下条件: 0043 AiminAimaxA(i+1)minA(i+1)max 0044 其中, Aimin和Aimax分别表示逻辑块Ai中的最小值和最大值, A(i+1)min和A(i+1)max分别 表示逻辑块Ai+1中的最小值和最大值。 0045 第一层由一组位向量构成, 每个位向量包括N个比特, 比特是表示数据是否存在于 某个逻辑块中的逻辑变量。 根据逻辑块的划分, 第一层包含K+1个位向量, 记为FF0,F1。

19、, F2,.,FK-1,FK。 其中第i个位向量Fi的长度为N, Fi的第j个比特为1表示原数据序列中的第 j个在中, 为0则表示不在; F0为全0位向量。 当执行一个查询如xc时, 第一层通过逻辑 块索引定位查询参数c所在的第一个逻辑块, 记为第kc个逻辑块从而在和之间 选择一个最接近最终结果的位向量作为该层的结果。 0046 第二层由一个rowID序列构成, rowID序列为按照一定顺序排列存储的数据在原数 据序列中的位置组成的序列, 每个逻辑块对应rowID序列的一段。 rowID序列记录数据位置 的顺序与划分逻辑块时数据的排列顺序相同。 在第一层得到的近似结果中, 只需要修正查 询参数。

20、所在逻辑块中部分数据对应的比特位。 根据第一层选择的位向量、 查询参数及其 所在逻辑块, 第二层确定这些需要修正的比特位的数据范围。 第二层根据逻辑块对应的 rowID序列片段中的该数据范围内数据的rowID, 修正第一层得到的近似结果中的相应比特 位, 得到最终结果。 0047 第二层在修正第一层的结果时, 采用内存预取技术降低随机访存的开销。 0048 本索引在查询时, 第一层由一系列的位向量组成, 能够筛选出绝大多数符合检索 条件的数据, 生成一个尽可能接近最终结果的中间结果; 第二层包含一个rowID序列, 根据 第一层结果的生成路径修正第一层结果中的部分比特, 从而得到准确的最终结果。

21、。 对于非 整数类型的数据, 可通过现有技术将其转换成整数类型。 0049 上述双层结构的索引的查询方法具体包括如下步骤: 0050 S1、 在第一层中, 根据查询条件, 通过逻辑块索引定位查询参数所在的第一个逻辑 块, 从位向量集合F中确定最接近最终结果的位向量, 得到该层的结果; 说明书 3/5 页 6 CN 111444180 A 6 0051 查询条件包括六种情况: 0052 a)如果查询形如 “xc” , x表示索引的数据, c表示查询参数, 第一层通过逻辑块索 引确定包含c的第一个逻辑块为第kc个逻辑块; 进一步通过第二层中逻辑块对应的 rowID序列片段在位向量中选择更接近最终结。

22、果的一个作为该层的结果; 0053 b)如果查询形如 “xc” , 此时将该查询转换为 “x(c+1)” , 按情况a)处理得到第 一层的结果; 0054 c)如果查询形如 “xc” , 此时将该查询转换为 “! (xc)” , 通过对由情况a)得到的 查询 “xc” 的结果按位取反, 得到原查询的第一层结果; 0055 d)如果查询形如 “xc” , 此时将该查询转换为 “! (x(c+1)” , 通过对由情况a)得 到的查询 “x(c+1)” 的结果按位取反, 得到原查询的第一层结果; 0056 e)如果查询形如 “c1xc2” , 通过对由情况a)得到的 “xc2” 和x(c1+1)” 。

23、的结 果进行按位异或操作, 得到原查询的第一层结果; 0057 f)如果查询形如 “xc” , 通过对由情况a)得到的 “xc” 和 “x(c+1)” 的结果进行 按位异或操作, 得到原查询的第一层结果。 0058 S2、 在第二层中, 根据第一层的结果的生成路径, 对在第一层中得到的结果中的部 分比特位进行取反操作: 0059 S21、 在第一层中, 每通过查询 “xc” 定位至一个逻辑块Aj, 选择一个位向量Fk, 则 对应一个第二层中需要修正的数据区间: 0060 1)当kj时, 需修正的数据区间为c,Akmax; 0061 2)当kj-1时, 需修正的数据区间为Akmin,c); 00。

24、62 其中, Akmax和Akmin分别表示Ak中的最大值和最小值; 0063 S22、 对于每一个需修正的数据区间, 第二层根据逻辑块Aj对应的rowID序列片段 中属于该区间的数据的rowID, 对在第一层中得到的位向量中的相应位置的比特进行取反 操作; 0064 若通过逻辑块索引和第二层中的rowID序列确定在区间(c,c+1)中的数据数量很 少, 则可生成所有比特位为0的位向量, 在第二层中修正在区间(c,c+1)中的数据所对应的 比特位, 得到最后的准确结果。 0065 S3、 返回经第二层修正后的位向量, 以位向量形式返回查询结果。 0066 实施例 0067 如图1所示, 是在一。

25、个含16个整数的数组B上构建本申请索引结构的实例。 其中以 数组P存储第二层中的rowID序列, 用(value,count)对数组来实现逻辑块索引。 具体实施方 案如下: 0068 创建一个与数组B具有相同大小的临时数组, 仅用于本索引结构的构建过程, 构建 完成后便删去; 对数据进行排序, 按升序存入临时数组; 0069 用数组P存储第二层中的rowID序列, 数组P按数据在临时数组中的次序保序存储 数据在数组B中的位置, 即rowID; 0070 基于数组P, 以K4将数组B等分成4个逻辑块, 记为AA1,A2,A3,A4。 逻辑块Ai中 的数据为数组P第4i-3到第4i个元素对应的数据。

26、; 说明书 4/5 页 7 CN 111444180 A 7 0071 用(value,count)对数组来实现逻辑块索引, 记为S; 从第二个逻辑块开始, 对逻辑 块构建索引, Sk.value为逻辑块Ak+1中的最小值, 在本实施例中即逻辑块Ak+1中的第一个数据, Sk.count为前k个逻辑块中的数据总数; 0072 生成一组位向量FF1,F2,F3, 在Fk中, 前k个逻辑块中的数据对应的比特位设为 1, 其余比特位设为0(本实施例中不存储全0/1的位向量)。 0073 如图2所示, 是本实施例执行一个基础查询实例 “x69” 的示意图。 具体实施方案 如下: 0074 步骤1: 第。

27、一层从位向量集合中选择一个尽可能接近最终结果的位向量, 作为该层 的结果, 具体步骤如下: 0075 步骤1-1: 由于查询参数69属于区间52,114), 通过逻辑块索引S查找到S1, 定位至 逻辑块A2, 记kc2, 如图2中所示; 0076 步骤1-2: 通过二分法搜索逻辑块A2对应的数组P片段确定第一个不满足查询的位 置为6, 即ic6; 0077 步骤1-3: 根据如下 “最近” 规则选择位向量集合中的某个位向量作为第一层的结 果Ftmp: 0078 0079 其中, S0.count0、 SK.countN、 F0为所有比特位都为0的位向量。 如图2中所示, 得 到FtmpF2。 。

28、在位向量F2中, 区间8,114)中的值对应的比特位都是1, 但区间69,114)中的值 对应的比特位应当为0。 逻辑块A2中属于区间69,114)的数据对应的比特位将会在修正层 被修正。 0080 步骤2: 在第二层中, 根据第一层结果的生成路径, 以及数组P等辅助信息对第一层 结果中的部分比特位进行取反操作, 具体步骤如下: 0081 步骤2-1: 根据第一层选择位向量F2以及ic、 kc, 确定需要修正的比特位为由数组P 片段ic,S2.count), 如图2中所示; 0082 步骤2-2: 顺序访问数组P的ic,S2.count)片段, 获得需要修正的比特位的位置, 依次 对数组P元素指示的比特位进行取反操作, 同时利用内存预取操作将后续即将要修正的比 特位加载到高速缓存(cache)中, 尽可能减少随机访存带来的开销。 0083 步骤3: 直接返回修正后的位向量, 以位向量形式返回查询结果。 说明书 5/5 页 8 CN 111444180 A 8 图1 图2 说明书附图 1/1 页 9 CN 111444180 A 9 。

展开阅读全文
内容关键字: 双层 结构 索引 及其 查询 方法
关于本文
本文标题:双层结构的索引及其查询方法.pdf
链接地址:https://www.zhuanlichaxun.net/pdf/9214235.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1