一种将数据通过请求日志的形式持久化到内存数据库中的方法技术

技术编号:32320507 阅读:23 留言:0更新日期:2022-02-16 18:26
本发明专利技术提供了一种将数据通过请求日志的形式持久化到内存数据库中的方法,包括如下步骤:A,服务器启动;B,服务器端接收到客户端请求;C,服务器端处理请求并获取或修改内存数据库中的数据;D,服务器端将请求记录到日志中。其中本发明专利技术的有益效果是:能够简化复杂结构数据的持久化,适合处理具有复杂结构或者用户定制结构的数据。制结构的数据。制结构的数据。

【技术实现步骤摘要】
一种将数据通过请求日志的形式持久化到内存数据库中的方法


[0001]本专利技术涉及及计算机软件领域,特别涉及一种将数据通过请求日志的形式持久化到内存数据库中的方法。

技术介绍

[0002]传统的数据库分为关系型和非关系型两种。关系型数据库使用关系模型来组织并存储数据,非关系型数据库以键值对的形式组织并存储数据。但复杂的数据关系,无法通过关系模型或者键值对来描述。在这种情况下,使用传统数据库会变得尤为复杂。
[0003]此外,传统的数据库的数据存放在文件中,对数据的操作都要通过文件I/O,速度较慢。传统的数据库往往配备一系列数据管理程序,操作数据需要通过这些管理程序,使用起来较为复杂。
[0004]传统的内存数据库的持久化一般采用两种方式,一是将数据存入磁盘,二是将数据记录到日志中,这两种方式不适合处理具有复杂结构或者用户定制结构的数据。
[0005]为了解决上述问题,本专利技术通过记录日志的方式对数据进行持久化,与传统记录日志的内存数据库不同的地方在于,本专利技术是将数据相关的请求记录在日志中,而不是将数据记录在日志中。并且通过对日志中请求进行重放的方式来恢复内存数据库,所有对数据的直接操作交给相应请求的处理函数。数据库无需关注数据的结构,能够存储复杂结构或定制化结构的数据,并且实现简单,易于使用。
[0006]此专利技术并不是为了优化现有数据库系统的性能,而是在选择性能较好的内存数据库后,使其能够简化复杂结构数据的持久化。

技术实现思路

[0007]为了解决上述技术问题,本专利技术中披露了一种将数据通过请求日志的形式持久化到内存数据库中的方法,本专利技术的技术方案是这样实施的:
[0008]一种将数据通过请求日志的形式持久化到内存数据库中的方法,包括如下步骤,
[0009]A,服务器启动;
[0010]B,服务器端接收到客户端请求;
[0011]C,服务器端处理请求并获取或修改内存数据库中的数据;
[0012]D,服务器端将请求记录到日志中。
[0013]优选地,所述C步骤中具体步骤如下,
[0014]服务器端处理客户端发送过来的请求,处理该请求可能需要从内存数据库中获取数据,或修改内存数据库中的数据。如果该请求不成功,继续执行B步骤;若请求是GET请求,则内存数据库中的数据没有被修改,继续执行B步骤。若请求既成功,且不是GET请求,则执行D步骤。
[0015]优选地,所述A步骤和所述B步骤之间还包括E步骤,从日志中恢复数据。
[0016]优选地,所述E步骤中,服务器端读取日志文件,根据日志重新在内存中构建数据库。
[0017]优选地,所述E步骤包括,
[0018]E1,打开日志文件;
[0019]E2,读取一行请求;
[0020]E3,服务器重放这条请求,并继续执行E2。
[0021]优选地,所述E1步骤中,首先打开日志文件,若失败则结束步骤E,若成功,则继续执行步骤E2。
[0022]优选地,所述E2步骤中,首先从日志文件中读取一行请求,若发生EOF,则结束步骤E,若未发生EOF,则继续执行步骤E3。
[0023]优选地,所述E3步骤中,服务器处理E2步骤中的读取的请求,并在内存数据库中产生数据。
[0024]实施本专利技术的技术方案可解决现有技术中不适合处理具有复杂结构或者用户定制结构的数据的技术问题。
[0025]1、在数据持久化方面,通过写日志的方式,将传统数据库对硬盘的随机写,变为写日志时的顺序写。对于普通磁盘和ssd而言,顺序写和随机写的性能差异巨大,可达到103(十的三次方)的数量级。
[0026]2、在数据查询修改方面,由于使用的是内存数据库,比传统的将数据存储在硬盘中的数据库性能高10倍左右。
附图说明
[0027]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一种实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0028]其中相同的零部件用相同的附图标记表示。需要说明的是,下面描述中使用的词语“前”、“后”、“左”、“右”、“上”和“下”指的是附图中的方向,词语“底面”和“顶面”、“内”和“外”分别指的是朝向或远离特定部件几何中心的方向。
[0029]图1为实施例1的流程图;
[0030]图2为实施例2的流程图;
[0031]图3为实施例3的从日志中恢复数据的流程图。
具体实施方式
[0032]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0033]实施例1
[0034]在一种具体的实施例1中,如图1所示,一种将数据通过请求日志的形式持久化到
内存数据库中的方法,包括如下步骤,
[0035]A,服务器启动;此步骤中服务器开始运行。
[0036]B,服务器端接收到客户端请求;
[0037]C,服务器端处理请求并获取或修改内存数据库中的数据;服务器端处理客户端发送过来的请求,处理该请求可能需要从内存数据库中获取数据,或修改内存数据库中的数据。如果该请求不成功,继续执行B步骤;若请求是GET请求,则内存数据库中的数据没有被修改,继续执行B步骤。若请求既成功,且不是GET请求,则执行D步骤。
[0038]D,服务器端将C步骤中的请求记录到日志中。
[0039]本实施例中输出的结果为日志文件,该文件可用于用于内存数据库的恢复。
[0040]本实施例采用日志的形式记录数据,较传统数据库减少了文件I/O,较一般内存数据库能够支持复杂结构的数据的存储。
[0041]实施例2
[0042]在一种优选的实施例2中,如图2所示,,一种将数据通过请求日志的形式持久化到内存数据库中的方法,包括如下步骤,
[0043]A,服务器启动;此步骤中服务器开始运行。
[0044]E,从日志中恢复数据。本步骤中服务器端读取日志文件,根据日志重新在内存中构建数据库。
[0045]B,服务器端接收到客户端请求;
[0046]C,服务器端处理请求并获取或修改内存数据库中的数据;服务器端处理客户端发送过来的请求,处理该请求可能需要从内存数据库中获取数据,或修改内存数据库中的数据。如果该请求不成功,继续执行B步骤;若请求是GET请求,则内存数据库中的数据没有被修改,继续执行B步骤。若请求既成功,且不是GET请求,则执行D步骤。
[0047]D,服务器端将C步骤中的请求记录到日志中。
[0048]本实施例基于实施例1实现。
[00本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种将数据通过请求日志的形式持久化到内存数据库中的方法,其特征在于:包括如下步骤,A,服务器启动;B,服务器端接收到客户端请求;C,服务器端处理请求并获取或修改内存数据库中的数据;D,服务器端将请求记录到日志中。2.根据权利要求1所述的一种将数据通过请求日志的形式持久化到内存数据库中的方法,其特征在于:所述C步骤中具体步骤如下,服务器端处理客户端发送过来的请求,处理该请求可能需要从内存数据库中获取数据,或修改内存数据库中的数据。如果该请求不成功,继续执行B步骤;若请求是GET请求,则内存数据库中的数据没有被修改,继续执行B步骤。若请求既成功,且不是GET请求,则执行D步骤。3.根据权利要求2所述的一种将数据通过请求日志的形式持久化到内存数据库中的方法,其特征在于:所述A步骤和所述B步骤之间还包括E步骤,从日志中恢复数据。4.根据权利要求3所述的一种将数据通过请求日志的形式持久化到内存数据库中的方法,其特征...

【专利技术属性】
技术研发人员:贾枭孙振东
申请(专利权)人:上海那一科技有限公司
类型:发明
国别省市:

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

1