内存数据库的访问方法、装置、系统、服务器及存储介质制造方法及图纸

技术编号:33131610 阅读:31 留言:0更新日期:2022-04-17 00:49
本申请适用于计算机技术领域,提供了一种内存数据库的访问方法、装置、系统、终端设备及存储介质,所述方法应用于服务端,包括:调用预设API接口获取外部程序发送的访问请求;基于访问请求,发送数据库中的标识文件给客户端,以使得客户端根据标识文件中的标识值等待访问共享内存;基于标识文件中的标识值,打开外部程序访问共享内存的通道;将共享内存映射到外部程序的虚拟地址空间内,数据库被加载到外部程序中;控制数据库与外部程序在共享内存中进行数据交互。本申请避免了每次访问数据库都必须进行Socket通信而造成的时间浪费,也无需共享内存数据库服务进程在线,整体提升了数据库的访问效率,还提高了数据库系统的稳定性。还提高了数据库系统的稳定性。还提高了数据库系统的稳定性。

【技术实现步骤摘要】
内存数据库的访问方法、装置、系统、服务器及存储介质


[0001]本申请属于计算机
,尤其涉及一种内存数据库的访问方法、装置、共享内存数据库系统、服务器及存储介质。

技术介绍

[0002]目前对内存数据库的访问,一般都是采用Socket通信方式,即应用程序需要访问内存数据库时,通过Socket通信端口向内存数据库服务进程发送请求信息,内存数据库服务进程接收Socket请求指令后,查询或者修改内存数据,然后将处理结果再通过Socket发送给应用程序,应用程序接收到处理结果,完成一次对内存数据库的访问。
[0003]这种Socket通信方式严重制约了同主机部署时对内存的访问效率。通常来说,进程对内存的访问速度一般在几微秒之内,而Socket通信的速度由于网络I/O的消耗、通信双方的互相等待等,其交互速度要比直接的内存访问慢10倍左右。由于处理时间大部分耗费在通信上,使得“内存的快速访问”优势无法得到充分有效的发挥。
[0004]现有技术还存在用内存数据库服务进程直接把内存数据放入共享内存中,以便加快客户端访问数据库的速度,但这需要内存数据库服务进程在线,不利于提升计算机的性能。

技术实现思路

[0005]本申请实施例提供了一种内存数据库的访问方法及装置,可以解决访问共享内存中数据库的效率不足及数据库系统不稳定的问题。
[0006]第一方面,本申请实施例提供了一种共享内存数据库的访问方法,应用于服务端,包括:
[0007]调用预设API接口获取所述外部程序发送的访问请求;
[0008]基于所述访问请求,发送所述数据库中的标识文件给所述外部程序,以使得所述外部程序根据所述标识文件中的标识值等待访问所述共享内存;
[0009]基于所述标识文件中的标识值,打开所述外部程序访问所述共享内存的通道;
[0010]根据所述外部程序的虚拟地址把所述共享内存映射到所述外部程序的虚拟地址空间内,所述数据库以动态库或者静态库的形式被加载到所述外部程序中;
[0011]控制所述数据库与所述外部程序在所述共享内存中进行数据交互。
[0012]在本申请的实施例中,所述基于所述访问请求,发送所述数据库中的标识文件给所述外部程序的步骤,包括:
[0013]基于所述访问请求,所述服务端创建所述数据库;
[0014]基于所述数据库中创建所述标识文件;
[0015]发送所述标识文件给所述外部程序。
[0016]在本申请的实施例中,所述基于所述标识文件中的标识值,打开所述外部程序访问所述共享内存的通道的步骤,包括:
[0017]基于所述共享内存是或否已经被创建,所述标识文件中的共享内存的标识值对应的被赋值为是或否;
[0018]若所述外部程序接收到的所述标识文件中的标识值为是,则打开所述外部程序访问所述共享内存的通道。
[0019]在本申请的实施例中,所述基于所述共享内存是或否已经被创建,所述标识文件中的共享内存的标识值对应的被赋值为是或否的步骤之后,还包括:
[0020]若所述外部程序接收到的所述标识文件中的标识值为否,则控制所述数据库读取配置文件中的所述共享内存的第一预设空间;
[0021]基于所述数据库中的管理工具创建所述第一预设空间的共享内存;
[0022]打开所述外部程序访问所述共享内存的通道。
[0023]在本申请的实施例中,所述基于所述数据库中的管理工具创建所述第一预设空间的共享内存的步骤包括:
[0024]基于所述管理工具为所述数据库中各预设表对象分配至少1块第二预设空间的共享内存,所述第二预设空间小于所述第一预设空间。
[0025]在本申请的实施例中,控制所述数据库与所述外部程序在所述共享内存中进行数据交互的步骤之后,包括:
[0026]控制所述外部程序访问所述数据库进行读、写数据是在所述共享内存中进行读、写数据;
[0027]控制所述数据库对所述外部程序使用的共享内存进行动态的扩容或释放管理;
[0028]当所述外部程序退出时,断开所述外部程序与所述共享内存的链接,则可断开所述外部程序与所述数据库的访问连接。
[0029]在本申请的实施例中,所述调用预设API接口获取所述外部程序发送的访问请求的步骤之后,还包括:
[0030]基于并发地各所述访问请求,并发地发送所述数据库中的标识文件给各所述外部程序,以使得各所述外部程序根据所述标识文件中的标识值等待访问所述共享内存;
[0031]基于所述标识文件中的标识值,并发地打开各所述外部程序访问所述共享内存的通道;
[0032]并发地将所述共享内存映射到各所述外部程序的虚拟地址空间内,所述数据库以动态库或者静态库的形式并发地被加载到各所述外部程序中;
[0033]控制所述数据库与各所述外部程序并发地在所述共享内存中进行数据交互。
[0034]第二方面,本申请实施例提供了一种共享内存数据库的访问装置,包括:
[0035]获取模块,用于调用预设API接口获取所述外部程序发送的访问请求;
[0036]发送模块,用于基于所述访问请求,发送所述数据库中的标识文件给所述外部程序,以使得所述外部程序根据所述标识文件中的标识值等待访问所述共享内存;
[0037]打开通道模块,用于基于所述标识文件中的标识值,打开所述外部程序访问所述共享内存的通道;
[0038]映射加载模块,用于根据所述外部程序的虚拟地址把所述共享内存映射到所述外部程序的虚拟地址空间内,所述数据库以动态库或者静态库的形式被加载到所述外部程序中;
[0039]数据交互模块,用于控制所述数据库与所述外部程序在所述共享内存中进行数据交互;
[0040]管理共享内存模块,用于控制所述外部程序访问所述数据库进行读、写数据是在所述共享内存中进行读、写数据,控制所述数据库对所述外部程序使用的共享内存进行动态的扩容或释放管理;
[0041]退出连接模块,用于当所述外部程序退出时,断开所述外部程序与所述共享内存的链接,则可断开所述外部程序与所述数据库的连接。
[0042]第三方面,本申请实施例提供了一种共享内存数据库系统,用于供多外部程序访问,包括:
[0043]接口通道模块,用于获取各所述外部程序的访问请求,并采用标识文件的方式向各所述外部程序提供所述共享内存的访问通道;
[0044]数据定义模块,用于根据所述接口通道模块输出的操作命令执行初始配置、创建表、删除表和创建索引的操作;
[0045]数据表结构模块,用于根据所述数据定义模块输出的命令管理数据表结构信息;
[0046]数据操作模块,根据所述接口通道模块输出的操作命令执行数据的读、写的操作;
[0047]索引模块,根据所述数据操作模块输出的操作命令组织数据;
[0048]锁模块,用于对数据并发访问操作进行同步管理,以在多外部程序访问共享内存中数据时保证数据的一致性;<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种共享内存数据库的访问方法,其特征在于,应用于服务端,包括:调用预设API接口获取外部程序发送的访问请求;基于所述访问请求,发送所述数据库中的标识文件给所述外部程序,以使得所述外部程序根据所述标识文件中的标识值等待访问所述共享内存;基于所述标识文件中的标识值,打开所述外部程序访问所述共享内存的通道;根据所述外部程序的虚拟地址把所述共享内存映射到所述外部程序的虚拟地址空间内,所述数据库以动态库或者静态库的形式被加载到所述外部程序中;控制所述数据库与所述外部程序在所述共享内存中进行数据交互。2.如权利要求1所述的访问方法,其特征在于,所述基于所述访问请求,发送所述数据库中的标识文件给所述外部程序的步骤,包括:基于所述访问请求,所述服务端创建所述数据库;基于所述数据库中创建所述标识文件;发送所述标识文件给所述外部程序。3.如权利要求1所述的访问方法,其特征在于,所述基于所述标识文件中的标识值,打开所述外部程序访问所述共享内存的通道的步骤,包括:基于所述共享内存是或否已经被创建,所述标识文件中的共享内存的标识值对应的被赋值为是或否;若所述外部程序接收到的所述标识文件中的标识值为是,则打开所述外部程序访问所述共享内存的通道。4.如权利要求3所述的访问方法,其特征在于,所述基于所述共享内存是或否已经被创建,所述标识文件中的共享内存的标识值对应的被赋值为是或否的步骤之后,还包括:若所述外部程序接收到的所述标识文件中的标识值为否,则控制所述数据库读取配置文件中的所述共享内存的第一预设空间;基于所述数据库中的管理工具创建所述第一预设空间的共享内存;打开所述外部程序访问所述共享内存的通道。5.如权利要求4所述的访问方法,其特征在于,所述基于所述数据库中的管理工具创建所述第一预设空间的共享内存的步骤包括:基于所述管理工具为所述数据库中各预设表对象分配至少1块第二预设空间的共享内存,所述第二预设空间小于所述第一预设空间。6.如权利要求1所述的访问方法,其特征在于,控制所述数据库与所述外部程序在所述共享内存中进行数据交互的步骤之后,包括:控制所述外部程序访问所述数据库进行读、写数据是在所述共享内存中进行读、写数据;控制所述数据库对所述外部程序使用的共享内存进行动态的扩容或释放管理;当所述外部程序退出时,断开所述外部程序与所述共享内存的链接,则可断开所述外部程序与所述数据库的访问连接。7.如权利要求1所述的访问方法,其特征在于,所述调用预设API接口获取所述外部程序发送的访问请求的步骤之后,还包括:基于并发地各所述访问请求,并发地发送所述数据库中的标识文件给各所述外部程
序,以使得各所述外部程序根...

【专利技术属性】
技术研发人员:王剑
申请(专利权)人:深圳市兆珑科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1