一种只读内存数据库的实现方法和系统的制作方法

文档序号:8905275阅读:410来源:国知局
一种只读内存数据库的实现方法和系统的制作方法
【技术领域】
[0001] 本发明属于计算机及数据库技术领域中的内存数据库,具体而言,设及一种只读 内存数据库的实现方法和系统。
【背景技术】
[0002] 内存数据库是将数据驻留在主存储器的数据库系统。相对于磁盘,内存的数据读 写速率高得多,因此内存数据库具有比传统磁盘数据库性能好的多的优点,内存数据库也 因此得到了广泛的使用。
[0003] 在大数据分析、商业智能即0LAP的nlineAnal^icalProcessing,联机分析处 理)的使用场景下,内存数据库的访问特性和DW值ataWarehouse,数据仓库)类似,通常 表中的数据是批量装入的,不需要一条一条地插入;表中的数据通常不需要需修改;查询 通常需要遍历表的全部数据;表中数据不再使用时是批量删除的,不需要一条一条地删除。 在大数据分析、商业智能使用场景下内存数据库的大批量数据处理的特征非常明显。而内 存数据库为支持记录的一条一条地处理,如插入、修改、删除功能,需保证数据的一致性,而 一致性保证降低了内存数据库系统的使用并发度和性能,不太适合在大数据分析、商业智 能场景下使用。

【发明内容】

[0004] 为了更好地满足商业智能场景下内存数据库的使用需求,本发明提出一种只读内 存数据库的实现方法和系统。
[0005] -种只读内存数据库的实现方法和系统,其特征在于W大批量数据处理的方式为 主。包括:
[0006] (1)将数据批量加载到内存表中;
[0007] (2)遍历表的全部数据W实现条件查询、聚合运算;
[000引 (3)表中的数据批量卸载;
[0009] (4)不支持表中记录逐条加载或删除;
[0010] (5)不支持表中数据的更新操作。
[0011] 一种只读内存数据库的实现方法和系统,包括模块及内存组织:
[0012] 模块完成特定功能,如图1所示。
[0013] 连接监听模块,用于在特定的TCP端口上监听、等待客户端发起连接请求,在系统 配置的最大连接数未到达时接受连接,并把连接描述符写入到传递连接描述符用的共享队 列,供多个计算模块抢夺并为之提供终生的数据查询服务。连接传递过程如图3所示。
[0014] 运行监控模块,用于诊断只读内存数据库系统的运行健康状况。在运行时每1秒 钟采集一次所有计算模块的执行S化计数、S化快照,并WUDP包的形式发送给配置的监 控主机特定端口。运行监控模块还可W接收UDP的监控命令,按要求采集数据并W约定的 格式进行反馈。
[00巧]HA保证模块,用于和本机的另一个名为guard的守护进程通信w便在只读内存数 据库失效时,自动重启,保持只读内存数据库系统的高可用性。HA保证模块和guard守护进 程通信方式是HA保证模块每1秒钟将共享内存中的一个屯、跳计数器减1。守护进程guard 每秒将该个计数器加1,如果guard发现计数器值大于等于2则说明只读内存数据库已经失 效,该时便重新生成只读内存数据库进程,保证只读内存数据库进程一直存在并有效工作。 HA保证模块和guard守护进程对屯、跳计数器的修改是互斥进行的。
[0016] 统一日志模块,用于收集只读内存数据库系统中其他模块准备写到日志文件的日 志,集中、缓冲地写出到日志文件,减少写盘的次数。统一日志模块还负责监控日志文件的 尺寸,根据配置的日志文件大小、循环保留的文件个数,自动的轮换写入的日志文件并清理 过期的日志文件,避免日志文件占用空间不断生长,降低维护工作量。日志的收集及统一缓 冲写出过程如图4所示。
[0017] 计算模块,用于完成针对表进行的所有操作,包括:创建表并批量装入数据、全表 遍历查询、卸载表中全部数据、删除表等。计算模块有n个(n是在配置文件中指定的系统 最大并发连接数,配置要求n大于等于3)。n个计算模块执行相同的代码,但服务的连接不 同,在服务过程中所使用的临时空间不同。计算模块的真正工作从接收查询语句开始,之后 解析执行查询语句。实现创建表并批量装入数据,实现全表遍历查询,实现卸载表中全部数 据,实现删除表等操作,即计算模块的工作是由客户端查询请求驱动的。
[0018]内存组织用于存储系统参数、系统表、应用表数据,如图2所示。其中系统参数包 括在配置文件中定义的参数,也包括只读内存数据库为运行时管理而定义、存储的参数,如 工作目录、系统时间、系统对象、传递描述符的共享队列等。
[0019] 一种只读内存数据库的实现方法和系统,包括步骤:
[0020] 步骤1,启动只读内存数据系统
[0021] (1)只读内存数据库系统启动并置后台W守护进程的方式运行;
[0022] (2)只读内存数据库系统计算工作目录,确定、读取并解析配置文件,根据配置的 参数生成模块的执行线程。包括生成运行监控线程、生成HA保证线程、生成统一日志线程、 循环生成n个计算线程;
[0023] (3)主线程创建系统表、系统对象并加载元数据。元数据中包括只读内存数据库系 统支持的命令、函数及环境变量,如表1 ;
[0024]
[00 巧]
[0026] 表1函数、命令、环境变量列表
[0027] (4)主线程创建应用表并加载表数据;
[0028] (5)主线程监听TCP连接端口,成为连接监听线程。
[0029] 步骤2,只读内存数据库提供查询服务。本阶段持续的时间较长,根据需要可W是 几天、几个月。
[0030] (1)连接监听线程等待并接受客户端的连接,把建立好的连接传递给计算线程;
[0031] (2)计算线程针对客户端连接提供终生的表查询、汇总服务,即不断地接收客户端 的查询请求,解析、执行、返回结果集数据。计算模块的运行过程如图7所示;
[0032] (3)客户端静默超时后计算线程关闭连接,计算线程阻塞在读取描述符的共享队 列中,在有新客户端连接请求到来时,阻塞的计算线程可W重新投入服务提供的过程中。
[0033] 步骤3,只读内存数据库终止服务
[0034] (1)某个客户端发送了终止服务命令"halt址3s";
[00巧](2)某个计算线程解析到终止服务命令,设置服务终止标志,清理环境后调用pt虹ead_exit(0)退出;
[0036] (3)运行监控线程、统一日志线程、其他计算线程发现服务终止标志设置,都清理 环境后调用pt虹eatexit(O)退出;
[0037] (4)HA保证线程发现服务终止标志设置,通知guard系统正常退出,阻止自动启 动,清理环境后调用pt虹eatexit(O)退出;
[0038] (5)连接监听线程发现服务终止标志设置,等待所有线程退出,最最后的全局环境 清理后调用exit(O)退出,只读内存数据库进程消失,正常退出。
【附图说明】
[0039] 图1为只读内存数据库系统的模块组成示意图
[0040] 图2为只读内存数据库内存使用示意图
[0041]
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1