[发明专利]面向对象的内存数据存储系统有效
申请号: | 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一次向操作系统申请一大块内存,对内存池进行补充;当释放内存时,根据释放的内存块大小插入到对应的空闲链表中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海交通大学,未经上海交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011462596.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种沼气发酵原料智能调配系统
- 下一篇:一种应用于大发泡机中的新型快排阀
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置