[发明专利]一种面向内存的多线程数据库设计方法有效
申请号: | 201710710565.2 | 申请日: | 2017-08-18 |
公开(公告)号: | CN107590199B | 公开(公告)日: | 2019-12-24 |
发明(设计)人: | 王怀军;田玲;李军怀;张聪 | 申请(专利权)人: | 西安理工大学 |
主分类号: | G06F16/21 | 分类号: | G06F16/21 |
代理公司: | 61214 西安弘理专利事务所 | 代理人: | 许志蛟 |
地址: | 710048*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 面向 内存 多线程 数据库 设计 方法 | ||
1.一种面向内存的多线程数据库设计方法,其特征在于,包括以下步骤:
步骤1:根据需要支持的数据类型,选择对应的内存容器;
步骤2:确定内存数据库中键值对的组织方式,所述内存数据库中键值对的组织是通过两个hash对象实现,第一个hash对象存储数据,第二个存储键及其过期时间;
步骤3:确定客户端应用代理结构和服务管理结构,具体包括:
(1)客户端应用代理结构的确定,客户端应用代理结构是管理客户端应用输入输出的代理结构,客户端应用代理结构嵌入命令与参数字段,且包括查询缓冲区以及发送缓冲区;
(2)服务管理结构的确定,服务管理结构是根据客户端应用代理结构进行内存数据库资源的分配,服务管理结构包括客户端应用代理链表和统计信息的数据结构,
步骤4:确定步骤3中客户端应用代理结构与步骤2中内存数据库的通信协议解析模块;
步骤5:内存数据库数据操作的命令处理设定,具体步骤为:
步骤5.1:步骤4中的协议解析模块将需要执行的命令、参数复制到步骤3的客户端应用代理结构中;
步骤5.2:根据步骤5.1的客户端应用代理结构命令字段查找命令表,找到对应的函数指针并调用;
步骤5.3:将返回值复制到客户端应用代理的输出缓冲区中;
步骤6:设计并发模型;
步骤7:通过backend线程实现淘汰策略和负载均衡;
步骤8:实现配置文件。
2.根据权利要求1所述的一种面向内存的多线程数据库设计方法,其特征在于,所述步骤1的具体为:
步骤1.1,确定数据类型,数据类型为字符串、链表、字典或集合中任意一种或多种;
步骤1.2,根据步骤1中数据类型,确定操作API、实现数据结构;
步骤1.3,确定对象系统,将封装底层数据结构作为一个对象,每个对象均有所属类型且由不同的数据结构编码。
3.根据权利要求1所述的一种面向内存的多线程数据库设计方法,其特征在于,所述步骤4的具体为:
步骤4.1,读取所有报文数据如命令和参数、到客户端应用代理结构的缓冲区;
步骤4.2,将缓冲区按照\n拆分;
步骤4.3,按照协议将对应的数据复制到客户端应用代理结构的命令与参数中。
4.根据权利要求1所述的一种面向内存的多线程数据库设计方法,其特征在于,所述步骤6的并发模型通过创建一个Master线程和多个worker线程处理并发的事件,具体包括:
步骤6.1:选用多线程+IO复用的并发框架;
步骤6.2:封装底层的IO复用,实现一个类似libevent的事件库;
步骤6.3:封装线程以及线程通信的消息队列,不同角色的线程通过其结构内部的事件触发器来注册与监听,并且处理对应的事件;
步骤6.4:通过管道和消息队列两个渠道设计master与worker通信的协议,基本流程为:worker线程会监听管道的读事件,由master将新客户端句柄压入到消息队列后向管道中写入字符;worker线程通过事件触发器监听到管道中读到写入的字符,会创建一个客户端结构,然后与客户端进行交互。
5.根据权利要求1所述的一种面向内存的多线程数据库设计方法,其特征在于,所述步骤7淘汰策略有两种:backend定时扫描和惰性策略;
所述的负载均衡通过backend线程对内存数据库键值对重新hash实现。
6.根据权利要求1所述的一种面向内存的多线程数据库设计方法,其特征在于,所述步骤8的具体为:
步骤8.1,选择ini文件作为配置文件,快速读取到配置选项;
步骤8.2,设计并实现配置树,将所有的配置选项插入到配置树中,当执行写入配置文件的命令时,会将配置树的数据全部序列化到配置文件中。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安理工大学,未经西安理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710710565.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种气弹簧缩管翻边机
- 下一篇:一种方管折边装置