全网唯一标准王
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202210560573.4 (22)申请日 2022.05.23 (71)申请人 达梦数据技 术 (江苏) 有限公司 地址 215000 江苏省苏州市吴中经济开发 区越溪街道吴中大道1421号越旺智慧 谷6栋16楼 (72)发明人 付新 许雄凌 张静修 沈忱  赵远方  (74)专利代理 机构 南京苏高专利商标事务所 (普通合伙) 32204 专利代理师 王安琪 (51)Int.Cl. G06F 16/2455(2019.01) G06F 16/242(2019.01) G06F 16/22(2019.01) (54)发明名称 一种基于数组索引的外键引用和连接查询 的实现方法、 装置、 设备及存 储介质 (57)摘要 本发明公开了一种基于数组索引的外键引 用和连接查询的实现方法、 装置、 设备及存储介 质, 基于引用列值对引用表和被引用表的查询, 都直接基于引用数组索引和被引用数组索引进 行, 避免通过B树/B+树/LSM树访问引用表所需进 行的大量比较, 提升查询性能。 权利要求书4页 说明书7页 附图2页 CN 114840561 A 2022.08.02 CN 114840561 A 1.一种基于数组索引的外 键引用和连接查询的实现方法, 其特 征在于, 包括如下步骤: 步骤1、 系统针对所有含有主键或者唯一性约束对应的索引记录的值中都自动记录一 个递增的序号, 从0开始; 步骤2、 系统在创建或者 修改引用表时指定建立数组索引结构; 步骤3、 在系统运行过程中, 关系数据库/KV系统数据处理系统中的工作线程/进程解析 接收到的操作请求, 确定操作类型; 步骤4、 执 行对应的操作。 2.如权利要求1所述的基于数组索引的外键引用和连接查询的实现方法, 其特征在于, 步骤2中, 创建引用表 时, 通过指定选项来自动针对引用表创建引用数组索引, 同时针对被 引用表也自动创建一个被引用数 组索引; 通过SQL语句在引用表内设置外键约束, 从而自动 创建引用数组索引和被引用数组索引; 被引用数组索引的成员如下: [0]|address|latest_ref_fk_id| [1]|address|latest_ref_fk_id| ...... [N]|address|latest_ref_fk_id| 其中中括号括起来的数字表示是数组下标, address表示引用表中物理记录在数据文 件中的地址, latest_ref_fk_i d表示具有相同外键值的上一条引用数组索引的下标ID, ‑1 表示这是第一个具有该外 键值的记录; 引用数组索引结构主 要成员如下: [0]|address|prev_ref_fk_id| [1]|address|prev_ref_fk_id| ...... [N]|address|prev_ref_fk_id| 其中中括号括起来的数字表示是数组下标, address表示被引用的物理记录在数据文 件中的地址, prev_ref_fk_id表 示被引用的物理记录对应在引用数 组中最后一次被引用对 应的引用数组索引的下 标ID。 3.如权利要求1所述的基于数组索引的外键引用和连接查询的实现方法, 其特征在于, 步骤4中, 执 行对应的操作具体为: (a)当操作类型是被引用表插入数据时, 在主键索引/唯一性索引的值中记录递增的序 号, 并在操作成功后, 向被引用数组最后追加一条记录, 该记录的address是对应的物理记 录在数据文件中的地址, latest_ref_fk_id为 ‑1, 表示还没有被引用; (b)当操作类型是被引用表删除数据时, 先检查对应的主键/唯一性列值是否还有被引 用, 被引用则报错, 否则就删除记录, 并将被引用数 组中对应下标的address项设置为 ‑1, 表 示已经被删除; (c)当操作类型 是被引用表更新数据时, 进行常规操作; (d)当操作类型是引用表插入数据时, 根据被引用表中记录的序号, 找到被引用数组索 引中对应下 标的数组单 元; (e)当操作类型是引用表中删除数据时, 进行删除操作, 并登记已删除数据的引用列和权 利 要 求 书 1/4 页 2 CN 114840561 A 2地址信息, 接下来根据引用列值, 在被引用表的普通索引中找到引用列值对应的序号, 然后 基于序号对应的下标在被引用数组索引找到latest _ref_fk_id值, 最后以latest _ref_fk_ id值为下标在引用数 组索引中查看address值, 如果address值和登记的删除数据的地址信 息匹配, 则将address修改为 ‑1即可, 如果不匹配, 则继续根据prev_ref_fk_id在引用数组 索引中找前面相同引用列值的记录, 直到地址信息匹配并修改为 ‑1, 即完成删除操作; (f)当操作类型是引用表更新数据时, 如果更新的不是引用列, 则进行常规操作, 如果 更新的是引用列, 需要对引用数组索引和 被引用数组索引进行按照步骤(e)、 (d)做删除和 插入的操作; (g)当操作类型是基于外键列查找引用表记录时, 先在外键所关联的被引用表的主键/ 唯一索引中, 查找到对应外键列值的被引用数组下标ID1, 然后从被引用数组索引中获取 latest_ref_fk_id对应的值ID2, 并在引用数组第ID2个单元获取address值ADDR1和prev_ ref_fk_id值PREV1, ADDR1不为 ‑1就表示该地址对应的物理记录是一条符合的条件的记录, 接下来继续在引用数组中以PREV1为下标, 查找符合条件的记录, 直到prev_ref_fk_id为 ‑1 表示已经找到所有的记录, 最后基于获取到的所有地址, 把所有的符合条件的物理记录都 返回给用户即可; (h)当操作类型是基于引用/被引用列的值做引用表和被引用表的等值连接查询时, 先 在被引用表中基于被引用的主键/唯一索引查找到被引用数组下标ID1和该记录在数据文 件中的地址ADDR1, 然后从被引用数组索引中获取latest_ref_ fk_id对应的值ID2, 并在引 用数组第ID2个单元获取address值ADDR2和prev_ref_fk_id值PREV1, ADDR2不为 ‑1就表示 该地址对应的物理记录是一条符合的条件的记录, 接下来继续在引用数组中以PREV1为下 标, 查找符合条件的记录, 直到prev_ref_fk_id为 ‑1表示已经找到所有的记录, 最后基于获 取到的所有地址, 把所有的符合条件的物理记录都返回给用户即可。 4.如权利要求3所述的基于数组索引的外键引用和连接查询的实现方法, 其特征在于, 步骤(d)中, 如果该单元记录的latest_ref_fk_id为 ‑1, 表示当前引用表中是第一次引用该 值, 在引用数组的最后追加一项, 该项的address值填入引用记录在数据文件中的地址, 该 项的prev_ref_ fk_id列填入‑1, 同时把该项的数组下标填入到被引用数组索引的latest_ ref_fk_id列中; 如果该单元记录的latest_ref_fk_id不是 ‑1, 则在引用数组的最后追加一项, 该项的 address值填入引用记录在数据文件 中的地址, 该项的prev_ref_ fk_id列填入前面被引用 数组索引中记录的latest_ref_fk_id值。 5.一种基于数组索引的外键引用和连接查询的实现装置, 其特征在于, 包括: 操作解析 模块、 操作执行模块、 数组索引管理模块和数组索引缓冲区模块; 操作解析模块解析接收到 的操作请求, 确定操作类型; 操作执行模块完成基于外键的引用表和被引用表数据的插入、 更新、 删除操作; 数组索引管理模块完成被引用数组索引和引用数 组索引管理; 插入、 更新、 删除主表和从表记录时, 按照第一方面提到的方法维护引用数组索引和被引用数组索引; 执行基于引用列值、 引用表和被引用表连接查询时, 按照第一方面提供的方法进 行查询; 数 组索引缓冲区模块: 该模块用于缓存引用数组索引和被引用数组索引数据, 当存在数据修 改时, 会在检查 点/缓冲区空 闲空间不足时把 修改后的数组数据写入磁 盘。 6.如权利要求5所述的基于数组索引的外键引用和连接查询的实现装置, 其特征在于,权 利 要 求 书 2/4 页 3 CN 114840561 A 3

.PDF文档 专利 一种基于数组索引的外键引用和连接查询的实现方法、装置、设备及存储介质

文档预览
中文文档 14 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共14页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种基于数组索引的外键引用和连接查询的实现方法、装置、设备及存储介质 第 1 页 专利 一种基于数组索引的外键引用和连接查询的实现方法、装置、设备及存储介质 第 2 页 专利 一种基于数组索引的外键引用和连接查询的实现方法、装置、设备及存储介质 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-18 00:10:11上传分享
友情链接
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。