(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 202210614921.1 (22)申请日 2022.06.01 (71)申请人 浪潮软件集团有限公司 地址 250100 山东省济南市高新区科航路 2877号 (72)发明人 梁波 贾德星 王永炎  (74)专利代理 机构 济南信达专利事务所有限公 司 37100 专利代理师 孙园园 (51)Int.Cl. G06F 16/2455(2019.01) G06F 9/54(2006.01) (54)发明名称 一种基于共享内存的本地数据库查询方法 (57)摘要 本发明公开了一种基于共享内存的本地数 据库查询方法, 属于数据库技术领域, 本发明要 解决的技术问题为如何去除共享内存的痛点, 减 少内存中数据访问次数和数据复制次数, 提升查 询效率, 采用的技术方案为: 该方法是基于共享 内存的进程间通信机制, 将在本地数据库进程中 创建的查询迭代器对象共享到客户端进程中使 用, 进而实现客户端向数据库进行 数据查询。 权利要求书2页 说明书6页 附图1页 CN 115203251 A 2022.10.18 CN 115203251 A 1.一种基于共享内存的本地数据库查询方法, 其特征在于, 该方法是基于共享内存的 进程间通信机制, 将在本地数据库进程中创建的查询迭代器对象共享到客户端进程中使 用, 进而实现客户端向数据库进行 数据查询; 具体如下: S1、 客户端查询任一时间段内的数据时, 调用数据库S DK的查询API接口; S2、 客户端中的数据库S DK通过gRPC 机制调用到数据库进程的查询函数; S3、 数据库进程向共享内存管理模块申请迭代器对象所需要的空间, 并在申请的共享 内存空间上创建共享内存 迭代器; S4、 根据查询的时间范围, 寻找相应的内存块对象, 将内存块对象的引用技 术加一; S5、 将内存块对象指针存储于迭代器的ref数组中, 并通过定位算法找到查询的第一条 数据的位置; S6、 将迭代器的指针通过gRPC 机制返回给客户端的数据库S DK; S7、 客户端 的数据库SDK接收到指针地址后, 通过强转指令, 将指针指 向的空间转换成 客户端进程中的迭代器对象; S8、 客户端使用迭代器对象, 访问数据库SDK中的数据; 并调用value函数获取当前记录 的数值, 再调用next函数定位下一条记录的位置, 同时通过val id函数判断是否查询结束; S9、 客户端查询完毕后, 调用结束接口, 客户端的数据库SDK通过gRPC机制调用数据库 进程的结束查询的函数; S10、 数据库进程将迭代器的ref数组中的对象引用计数都减一, 再删除迭代器对象; S11、 返回成功。 2.根据权利要求1所述的基于共享内存的本地数据库查询方法, 其特征在于, 客户端向 数据库进行 数据查询前, 执 行如下内容: 创建进程间共享内存: 通过分配共享内存空间, 将多个进程中共享内存设置成相同的 起始地址, 使得共享内存中的指针在进程间能够直接使用, 为进程间共享对象创造基础; 数据库进程管理共享内存: 数据库进程用于管理维护整个共享内存中的数据, 客户端 进程用于读取内存数据; 数据库进程中设置共享内存管理模块, 共享内存管理模块用于提 供申请空间和释放空间的函数。 3.根据权利要求2所述的基于共享内存的本地数据库查询方法, 其特征在于, 创建进程 间共享内存具体如下: 在数据库进程和客户端进程启动 时, 创建加载共享内存, 并且设置相同的共享内存的 起始地址; 将客户端进程的共享内存映射区的起始地址与数据库进程的共享内存映射区的起始 地址配置成相同的起始地址; 设置完成后, 在共享内存中创建指向共享内存中存储的任一变量的指针, 该指针在不 同进程中都能够正确解析并能读取 出指针指向的变量。 4.根据权利要求1或2所述的基于共享内存的本地数据库查询方法, 其特征在于, 所述 共享内存管理模块还用于管理共享内存分配出的一个整块连续空间, 并提供共享内存连续 区域中申请和释放任意内存大小空间的接口。 5.根据权利要求4所述的基于共享内存的本地数据库查询方法, 其特征在于, 所述共享 内存管理模块的内存管理方式采用定 长内存管理。权 利 要 求 书 1/2 页 2 CN 115203251 A 26.根据权利要求5所述的基于共享内存的本地数据库查询方法, 其特征在于, 所述共享 内存管理模块还具有如下功能: ①、 共享内存管理模块初始化: 共享内存管理模块将整个共享内存空间按照大小划分 成固定大小的内存块, 将内存块首地址放入可使用队列中; ②、 向共享内存管理模块申请空间: 共享内存管理模块提供内存申请分配接口 Allocate8K, 调用接口Allocate8K, 共享内存管理模块取出可使用队列头部内存块的首地 址, 返出去; ③、 释放共享内存管理模块申请的空间: 共享内存管理模块提供内存释放接口 Release, 共享内存管理模块将传入的内存块首地址放入可使用队列末尾。 7.根据权利要求6所述的基于共享内存的本地数据库查询方法, 其特征在于, 所述共享 内存空间用于共享数据和共享对象; 数据库进程将查询需要的数据以及对象存储在共享内存空间中, 共享内存空间按照正 常内存的使用方式创建相互关联的类对象以及存 储数据的数组 空间。 8.根据权利要求7所述的基于共享内存的本地数据库查询方法, 其特征在于, 所述迭代 器内部包括与查询时间范围重 叠的所有内存块对象列表以及迭代器当前位置指针。 9.一种电子设备, 其特 征在于, 包括: 存 储器和至少一个处 理器; 其中, 所述存 储器上存 储有计算机程序; 所述至少一个处理器执行所述存储器存储的计算机程序, 使得所述至少一个处理器执 行如权利要求1至8任一项所述的基于共享内存的本地数据库查询方法。 10.一种计算机可读存储介质, 其特征在于, 所述计算机可读存储介质中存储有计算机 程序, 所述计算机程序可被处理器执行以实现如权利要求 1至8中任一项 所述的基于共享内 存的本地数据库查询方法。权 利 要 求 书 2/2 页 3 CN 115203251 A 3

.PDF文档 专利 一种基于共享内存的本地数据库查询方法

安全报告 > 其他 > 文档预览
中文文档 10 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共10页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 一种基于共享内存的本地数据库查询方法 第 1 页 专利 一种基于共享内存的本地数据库查询方法 第 2 页 专利 一种基于共享内存的本地数据库查询方法 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常2024-03-18 00:09:40上传分享
给文档打分
您好可以输入 255 个字符
网站域名是多少( 答案:github5.com )
评论列表
  • 暂时还没有评论,期待您的金玉良言
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。