[发明专利]面向对象的内存数据存储系统有效

专利信息
申请号: 202011462596.9 申请日: 2020-12-14
公开(公告)号: CN112486996B 公开(公告)日: 2022-08-05
发明(设计)人: 沈耀;王重阳 申请(专利权)人: 上海交通大学
主分类号: G06F16/22 分类号: G06F16/22;G06F12/123;G06F16/2455
代理公司: 上海交达专利事务所 31201 代理人: 王毓理;王锡麟
地址: 200240 *** 国省代码: 上海;31
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 面向 对象 内存 数据 存储系统
【权利要求书】:

1.一种面向对象的内存数据存储系统,其特征在于,包括:网络通信模块、命令解析执行模块和存储模块,其中:网络通信模块对来自客户端的连接请求和计算请求进行调度处理,命令解析执行模块解析客户端发送的数据并对解析得到的结果进行执行,存储模块对内存中的数据进行组织优化处理,从而有效提高命令执行的效率;

所述的调度处理是指:接收新的客户端的连接请求;对已建立连接的客户端的命令及时进行响应;

所述的命令解析是指:将客户端发送的数据按照事先规定好的通信协议解析成对应类型的命令,并进行相应的处理;

所述的组织优化处理包括:通过内存池以及封装于操作系统上层的统一的内存管理接口对内存资源进行统一管理以减少内存碎片以及以优化的存储结构存储对象型数据并通过维护索引的方式优化查询请求,实现对对象型数据进行优化操作,即以页为单位对数据进行组织,具体为:以固定大小的页,每个页面存放多个对象,对象型数据形式上由键值对组成,且允许嵌套,对于每一个对象,存储在最前面的是键值对的数量和大小信息,其后是键指针组和值指针组,分别指向具体的键和值数据,为便于查找,键指针组事先根据键进行排序,值指针组根据对应键的位置依次排列,其中的内存分配回收操作均置于内存管理器的管理之下,由于内存空间是有限的,因此使用LRU算法对对象数据进行管理,将对象数据用指针链接成链表,最频繁使用的数据在LRU链表的前端,最少使用的数据在LRU链表的尾端,当内存空间不足时,将首先从LRU链表中释放尾端的数据;

所述的优化查询请求是指:存储模块通过跳表实现对索引提供支持,该跳表允许优化查询、插入和删除的数据结构,即索引采用分页的方式进行存储,页面大小固定,包括:头部信息、索引指针数组、实际索引元组,其中:头部信息用于存储页面的元信息;索引指针数组用于对实际索引元组进行引用,实际索引元组中存储实际的索引数据;

当创建索引时,存储模块为每个需要索引的对象数据生成对应的索引元组,并插入到跳表中适当位置的索引页中,当索引页空闲空间不够时存储模块额外申请一个页面,插入到跳表中;

当具体查询,即命令解析执行模块获得客户端发送的索引时,从跳表中查询出索引数据所在页面,在页面中利用二分搜索算法查找相匹配的键,进而获得实际数据,从而避免对全表进行扫描带来的负担。

2.根据权利要求1所述的面向对象的内存数据存储系统,其特征是,所述的命令解析执行模块包括:命令解析单元、命令执行单元,其中:命令解析单元检验用户发送的命令格式是否符合通信协议规范,并对命令进行解析,将提取出的内容传输给命令执行单元进行执行。

3.根据权利要求2所述的面向对象的内存数据存储系统,其特征是,所述的命令解析单元从消息头中获取操作类型,对消息体进行解码,获得有关信息;命令执行单元根据不同的命令类型采取不同的处理逻辑进行执行,最终都将转化为对下层存储模块的不同操作。

4.根据权利要求1~3中任一所述的面向对象的内存数据存储系统,其特征是,在初始化时网络通信模块创建主线程和指定数量工作线程,其中:①主线程向libevent注册回调函数,当监听的端口接收到连接请求时,通过round-robin算法选择一个工作线程,将连接相关信息添加到该工作线程对应的连接队列中,然后向该工作线程的管道写数据;②工作线程向libevent注册回调函数,当监听到管道有数据写入时,从连接队列取出并接管连接,后续由该工作线程处理该连接对应的客户端的查询请求。

5.根据权利要求1所述的面向对象的内存数据存储系统,其特征是,所述的存储模块包括:基于内存池的统一内存管理单元、页面存储单元,其中:内存池在操作系统上层封装统一的内存管理接口,供页面存储单元使用,页面存储单元以页为单位对数据进行组织,并使用索引对查询进行优化。

6.根据权利要求5所述的面向对象的内存数据存储系统,其特征是,所述的统一内存管理是指:内存池维护若干个大小不同的空闲链表,每次内存请求根据请求大小选择对应的空闲链表,当对应的空闲链表不为空,则直接从空闲链表中分配,否则从内存池中分配内存;当内存池内存不足,则使用glibc中提供的malloc一次向操作系统申请一大块内存,对内存池进行补充;当释放内存时,根据释放的内存块大小插入到对应的空闲链表中。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202011462596.9/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top