[发明专利]一种基于共享内存的本地数据库查询方法在审
申请号: | 202210614921.1 | 申请日: | 2022-06-01 |
公开(公告)号: | CN115203251A | 公开(公告)日: | 2022-10-18 |
发明(设计)人: | 梁波;贾德星;王永炎 | 申请(专利权)人: | 浪潮软件集团有限公司 |
主分类号: | G06F16/2455 | 分类号: | G06F16/2455;G06F9/54 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 孙园园 |
地址: | 250100 山东*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 共享 内存 本地 数据库 查询 方法 | ||
本发明公开了一种基于共享内存的本地数据库查询方法,属于数据库技术领域,本发明要解决的技术问题为如何去除共享内存的痛点,减少内存中数据访问次数和数据复制次数,提升查询效率,采用的技术方案为:该方法是基于共享内存的进程间通信机制,将在本地数据库进程中创建的查询迭代器对象共享到客户端进程中使用,进而实现客户端向数据库进行数据查询。
技术领域
本发明涉及数据库技术领域,具体地说是一种基于共享内存的本地数据库查询方法。
背景技术
数据库系统作为一个独立的进程运行,客户端是另一个进程。对于客户端和数据库系统运行在同一个服务器的场景时,它们间的通信就是进程间通信。客户端访问数据库一般都是采用基于Socket通信机制。
进程间通信就是在不同进程之间传播或交换信息。进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。另外,系统空间是“公共场所”,各进程均可以访问,所以内核也可以提供这样的条件。常用的进程间通信(IPC)的方法有:信号、管道、socket、信号量、共享内存、消息队列。
共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的IPC方式,它是针对其他进程间通信方式运行效率低而专门设计的。
共享内存通信的不足具体如下:
①进程间预先定义好共享内存中的数据格式;
②数据解析的过程繁琐,可能需要重新创建数据索引;
③共享内存的区域必须是连续的。
故如何去除共享内存的痛点,减少内存中数据访问次数和数据复制次数,提升查询效率是目前亟待解决的技术问题。
发明内容
本发明的技术任务是提供一种基于共享内存的本地数据库查询方法,来解决如何如何去除共享内存的痛点,减少内存中数据访问次数和数据复制次数,提升查询效率的问题。
本发明的技术任务是按以下方式实现的,一种基于共享内存的本地数据库查询方法,该方法是基于共享内存的进程间通信机制,将在本地数据库进程中创建的查询迭代器对象共享到客户端进程中使用,进而实现客户端向数据库进行数据查询;具体如下:
S1、客户端查询任一时间段内的数据时,调用数据库SDK的查询API接口;
S2、客户端中的数据库SDK通过gRPC机制调用到数据库进程的查询函数;
S3、数据库进程向共享内存管理模块申请迭代器对象所需要的空间,并在申请的共享内存空间上创建共享内存迭代器;
S4、根据查询的时间范围,寻找相应的内存块对象,将内存块对象的引用技术加一;
S5、将内存块对象指针存储于迭代器的ref数组中,并通过定位算法找到查询的第一条数据的位置;
S6、将迭代器的指针通过gRPC机制返回给客户端的数据库SDK;
S7、客户端的数据库SDK接收到指针地址后,通过强转指令,将指针指向的空间转换成客户端进程中的迭代器对象;
S8、客户端使用迭代器对象,访问数据库SDK中的数据;并调用value函数获取当前记录的数值,再调用next函数定位下一条记录的位置,同时通过valid函数判断是否查询结束;
S9、客户端查询完毕后,调用结束接口,客户端的数据库SDK通过gRPC机制调用数据库进程的结束查询的函数;
S10、数据库进程将迭代器的ref数组中的对象引用计数都减一,再删除迭代器对象;
S11、返回成功。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮软件集团有限公司,未经浪潮软件集团有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210614921.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:HPV疫苗
- 下一篇:一种激光焊机的焊接维保用清洁装置