数据存储方法、装置和系统与流程

文档序号:15095967发布日期:2018-08-04 14:34阅读:145来源:国知局

本申请涉及数据库技术,具体涉及一种数据存储方法、装置和系统。



背景技术:

分布式数据库系统(Distributed DataBase System,DDBS)包含分布式数据库管理系统(Distributed Database Management System,DDBMS)和分布式数据库(Distributed DataBase,DDB)。

在DDBS中,一个应用程序可以对DDB进行透明操作,DDB中的数据分别在不同的局部数据库中存储、由不同的DDBMS进行管理、在不同的机器上运行、由不同的操作系统支持、被不同的通信网络连接在一起,把写流量分发到多个分片数据库集群,用于解决读、写流量过高单机集群无法承载的性能问题,同时提供读、写流量分离的功能以及读流量自动负载均衡的功能。

DBProxy是一套用于提供关系型数据库读写分离功能的中间件软件,采用MySQL交互协议,对上游应用层透明。提供关系型数据库层面的SQL语句读写分离、负载均衡、连接池、高并发连接、会话状态保持、安全控制、节点存活检测、高容错等功能。

如果用DDBS对冷数据和热数据按1:1的方案做分离,每次拆分扩容时都需要再增加一倍的设备,使得DDBS的架构越来越复杂,每次扩容的成本也会越来越高。



技术实现要素:

本申请实施例提供了一种数据存储方法、装置和系统,以解决现有技术中DDBS扩容成本过高的技术问题。

根据本申请实施例的一个方面,提供了一种数据存储方法,所述方法包括:在分布式数据库系统中存储每条数据记录对应的时间戳;根据当前时间和所述时间戳判定成为冷数据的数据记录;将所述被判定成为冷数据的数据记录从分布式数据库系统迁移至数据库中间件集群进行存储。

在一个实施例中,将所述被判定成为冷数据的数据记录从分布式数据库系统迁移至数据库中间件集群进行存储包括:

从所述分布式数据库系统中查询被判定成为冷数据的数据记录;调用所述分布式数据库系统将查询到的数据记录发送至所述数据库中间件集群,由所述数据库中间件集群对查询到的数据记录进行压缩存储。

在一个实施例中,所述分布式数据库系统中还存储数据记录状态表,用于保存数据记录的类型和状态,数据记录的初始类型均为热数据,初始状态均为未迁移;将所述被判定成为冷数据的数据记录从分布式数据库系统迁移至数据库中间件集群进行存储还包括:

调用所述分布式数据库系统将所述数据记录的类型修改为冷数据,状态修改为迁移中。

优选的,所述方法还包括:在所述数据记录向所述数据库中间件集群完成迁移之后,调用所述分布式数据库系统将所述数据记录的状态修改为已迁移。

在一个实施例中,调用所述分布式数据库系统将查询到的数据记录发送至所述数据库中间件集群,由所述数据库中间件集群对查询到的数据记录进行压缩存储包括:

调用所述分布式数据库系统将查询到的数据记录发送至DBProxy集群,由所述DBProxy集群对查询到的数据记录通过TokuDB存储引擎进行压缩存储。

在一个实施例中,所述方法还包括:

接收针对目标数据记录的操作请求,所述操作请求包括目标数据记录对应的时间戳;根据所述目标数据记录对应的时间戳,从所述分布式数据库系统中查询所述目标数据记录的类型和状态;如果所述目标数据记录的类型为冷数据,并且状态为已迁移,则将所述操作请求分发至所述数据库中间件集群进行处理;如果所述目标数据记录的类型为冷数据,并且状态为迁移中,则将所述操作请求分发至所述分布式数据库系统进行处理,同时按照接收到操作请求的时间顺序记录所述操作请求;在所述目标数据记录的状态被修改为已迁移之后,将记录的操作请求分发至所述数据库中间件集群按照所述时间顺序进行处理;如果所述目标数据记录的类型为热数据,则将所述操作请求分发至所述分布式数据库系统进行处理。

优选的,将所述操作请求分发至所述数据库中间件集群进行处理包括:

将针对所述目标数据记录的更新请求分发至所述数据库中间件集群;从所述数据库中间件集群中获取所述目标数据记录的解压缩后的数据;将解压缩后的目标数据记录缓存至所述分布式数据库系统;调用所述分布式数据库系统对所述目标数据记录进行更新,并将所述更新后的目标数据记录发送至所述数据库中间件集群进行存储。

优选的,将所述操作请求分发至所述数据库中间件集群进行处理包括:

将针对所述目标数据记录的查询请求分发至所述数据库中间件集群;调用所述数据库中间件集群中对所述目标数据记录进行解压缩处理,从所述数据库中间件集群获取解压缩后的目标数据记录。

在一个实施例中,所述时间戳为数据记录的创建时间或者更新时间。

优选的,当所述时间戳为数据记录的更新时间时,所述方法还包括:在所述数据库中间件集群中保存的数据记录被更新之后,将所述数据记录判定成为热数据并将时间戳修改为更新完成的时间;调用所述数据库中间件集群将所述数据记录发送至所述分布式数据库系统进行存储。

根据本申请实施例的另一个方面,提供了一种数据存储装置,包括:

时间戳存储模块,用于在分布式数据库系统中存储每条数据记录对应的时间戳;冷数据判定模块,用于根据当前时间和所述时间戳判定成为冷数据的数据记录;冷数据迁移模块,用于将所述被判定成为冷数据的数据记录从分布式数据库系统迁移至数据库中间件集群进行存储。

在一个实施例中,所述冷数据迁移模块包括:

查询单元,用于从所述分布式数据库系统中查询被判定成为冷数据的数据记录;第一调用单元,用于调用所述分布式数据库系统将查询到的数据记录发送至所述数据库中间件集群,由所述数据库中间件集群对查询到的数据记录进行压缩存储。

在一个实施例中,所述分布式数据库系统中还存储数据记录状态表,用于保存数据记录的类型和状态,数据记录的初始类型均为热数据,初始状态均为未迁移;所述冷数据迁移模块进一步用于调用所述分布式数据库系统将所述数据记录的类型修改为冷数据,状态修改为迁移中。

优选的,在所述数据记录向所述数据库中间件集群完成迁移之后,所述冷数据迁移模块进一步用于调用所述分布式数据库系统将所述数据记录的状态修改为已迁移。

在一个实施例中,所述第一调用单元进一步用于:

调用所述分布式数据库系统将查询到的数据记录发送至DBProxy集群,由所述DBProxy集群对查询到的数据记录通过TokuDB存储引擎进行压缩存储。

在一个实施例中,所述装置还包括:

操作请求接收模块,用于接收针对目标数据记录的操作请求,所述操作请求包括目标数据记录对应的时间戳;状态查询模块,用于根据所述目标数据记录对应的时间戳,从所述分布式数据库系统中查询所述目标数据记录的类型和状态;第一分发模块,用于如果所述目标数据记录的类型为冷数据,并且状态为已迁移,则将所述操作请求分发至所述数据库中间件集群进行处理;第二分发模块,用于如果所述目标数据记录的类型为冷数据,并且状态为迁移中,则将所述操作请求分发至所述分布式数据库系统进行处理,同时按照接收到操作请求的时间顺序记录所述操作请求;在所述目标数据记录的状态被修改为已迁移之后,将记录的操作请求分发至所述数据库中间件集群按照所述时间顺序进行处理;第三分发模块,用于如果所述目标数据记录的类型为热数据,则将所述操作请求分发至所述分布式数据库系统进行处理。

优选的,所述第一分发模块或第二分发模块包括:

第一分发单元,用于将针对所述目标数据记录的更新请求分发至所述数据库中间件集群;数据获取单元,用于从所述数据库中间件集群中获取所述目标数据记录的解压缩后的数据;数据缓存单元,用于将解压缩后的目标数据记录缓存至所述分布式数据库系统;第二调用单元,调用所述分布式数据库系统对所述目标数据记录进行更新,并将所述更新后的目标数据记录发送至所述数据库中间件集群进行存储。

优选的,所述第一分发模块或第二分发模块包括:

第二分发单元,用于将针对所述目标数据记录的查询请求分发至所述数据库中间件集群;第三调用单元,用于调用所述数据库中间件集群中对所述目标数据记录进行解压缩处理,从所述数据库中间件集群获取解压缩后的目标数据记录。

在一个实施例中,所述时间戳为数据记录的创建时间或者更新时间。

优选的,当所述时间戳为数据记录的更新时间时,所述装置还包括:

时间戳修改模块,用于在所述数据库中间件集群中保存的数据记录被更新之后,将所述数据记录判定成为热数据并将时间戳修改为更新完成的时间;热数据迁移模块,用于调用所述数据库中间件集群将所述数据记录解压缩后发送至所述分布式数据库系统进行存储。

根据本申请实施例的另一个方面,提供了一种数据存储系统,包括:分布式数据库系统,用于存储数据记录和数据记录对应的时间戳;服务器,用于根据当前时间和所述时间戳判定分布式数据库系统中成为冷数据的数据记录;数据库中间件集群,用于存储从所述分布式数据库系统迁移的被判定成为冷数据的数据记录。

根据本申请实施例的另一个方面,提供了一种电子设备,包括存储器和处理器;存储器用于存储一条或多条计算机指令,其中,一条或多条计算机被所述处理器执行以实现上述数据存储方法。

根据本申请实施例的另一个方面,提供了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现上述数据存储方法。

本申请实施例的有益效果包括:将DDBS中被判定成为冷数据的数据记录迁移至数据库中间件集群进行压缩存储,可有效减少DDBS的扩容成本和维护成本,防止DDBS架构越来越庞大和复杂。

附图说明

通过以下参照附图对本申请实施例的描述,本申请的上述以及其它目的、特征和优点将更为清楚,在附图中:

图1是本申请实施例数据存储系统的架构示意图;

图2a是目前DDBS进行扩容时的服务器设备数量示意图;

图2b是本申请实施例的服务器设备数量示意图;

图3是本申请实施例提供的数据存储方法的流程示意图;

图4是本申请实施例提供的数据存储装置的框图

图5是本申请实施例提供的电子设备的结构示意图。

具体实施方式

以下基于实施例对本申请进行描述,但是本申请并不仅仅限于这些实施例。在下文对本申请的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本申请。为了避免混淆本申请的实质,公知的方法、过程、流程、元件和电路并没有详细叙述。

此外,本领域普通技术人员应当理解,在此提供的附图都是为了说明的目的,并且附图不一定是按比例绘制的。

除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。

在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。

本申请实施例的DDBS将数据记录及其时间戳对应保存,以便根据当前时间和时间戳判定出成为冷数据的数据记录并将其迁移至数据库中间件集群进行压缩存储,可有效减少DDBS的扩容成本,防止DDBS架构越来越庞大和复杂。

图1是本申请实施例的数据存储系统的架构示意图,该系统包括DDBS 1、数据库中间件集群2和服务器3,其中服务器3用于处理DDBS1和数据库中间件集群2的全局数据请求。DDBS 1可以是关系型数据库系统,例如,MySQL、PostpreSQL、Oracle等等。

DDBS 1包括主节点11和存储节点12,主节点11和存储节点12还可以配置备用节点(图中未示出),数据表分布式的存储在各个存储节点12,主节点11记录每个数据表的存储路径。数据表包括多条数据记录(record),每条数据记录包括多个字段。

DDBS 1还对应存储每条数据记录的时间戳。可以将数据记录的一个字段专用于记录其对应的时间戳,也可以通过数据记录状态表为每条数据记录存储对应的时间戳,该数据记录状态表可以存储在主节点11,也可以分布式的存储于各个存储节点12。在数据记录状态表中存储每条数据记录对应的时间戳和每条数据记录的类型。

时间戳可以是数据记录的创建时间,或者是数据记录最近一次的更新时间。数据记录的类型包括冷数据和热数据,冷数据和热数据之间的区分,以数据记录的时间戳和当前时间作为判定条件,所有数据记录的初始类型均为热数据。如果当前时间距离数据记录的时间戳超过预设门限(例如,大于72小时),则判定该数据记录成为冷数据,则将其类型从热数据修改为冷数据。判定数据记录是否成为冷数据,是随着时间的推移的而不断进行的。例如,数据记录a在t1时刻被判定成为冷数据,将其类型修改为冷数据,然后被迁移至数据库中间件集群2;在两个小时之后的t2时刻,数据记录b也符合冷数据的判定条件,则判定数据记录b成为冷数据,将其类型修改为冷数据,然后将数据记录b迁移至数据库中间件集群2。

服务器3将被判定成为冷数据的数据记录从DDBS 1迁移到数据库中间件集群2。数据库中间件集群2可以是一种单机数据库集群,中间件21作为服务器3和集群的存储节点22之间的中间代理程序,负责检测分析和过滤请求,以及存储节点22的负载均衡和读写分离等功能,避免关系型数据库单点失效和压力骤增而引起的宕机导致数据库服务不可用的问题。单机数据库集群还能够提供单节点写入、多节点读取的功能。

数据库中间件集群2采用压缩存储引擎来降低冷数据占用的存储空间,从而降低对DDBS 1进行扩容的成本。以DDBS 1为MySQL数据库为例,数据库中间件集群2可采用InnoDB、TokuDB等数据存储引擎。本申请实施例中,优选采用TokuDB存储引擎,其可以提供最高25:1的压缩比,并且能够在线创建、插入、删除索引,在线对“列”进行添加、扩展、删除、重命名,更适用于对访问频率不高的数据或历史数据进行归档(即本申请实施例中被判定为冷数据的数据记录)。TokuDB存储引擎对数据记录的数据压缩算法可以使用TokuDB_ZLIB压缩算法,可以提供较高的压缩比、消耗适量的CPU资源,TokuDB_ZLIB压缩算法可以提供16:1的压缩比,即空间占用率降低为原来的(即MySQL数据库)十六分之一。

从节约系统架构成本的角度来看,如图2a所示,如果通过对DDBS进行扩容的方式存储被判定为冷数据的数据记录,需要更多的服务器资源。以目前的8分片DDBS集群为例,每个分片集群是10台服务器,8分片就需要8×10=80台服务器资源,如果采用冷数据和热数据分片1:1的方案做分离,就需要配置80台服务器资源来存储冷数据。当DDBS集群继续扩容时,按照增加1倍的服务器数量计算,扩容后冷数据、热数据分片集群的总服务器数量需要从80+80=160台再增加一倍增长到320台。对DDBS每次拆分扩容,机器数量都会增长到原来的2倍。

但是如果采用TokuDB存储引擎的TokuDB_ZLIB算法对被判定为冷数据的数据记录按照16:1的压缩比进行压缩之后,其占用的空间资源变为原来的1/16。相对于复杂的DDBS的分布式架构,对于冷数据,数据库中间件集群可以采用DBProxy架构把8个分片对应的冷数据集中到1个集群里面。如图2b所示,假设原来DDBS用于存储冷数据的80台服务器的存储资源已全部被占用,则对每个分片的10台服务器来说,采用TokuDB存储引擎按照16:1的压缩比进行压缩后,占用的服务器资源为10/16台,对于全部8个分片而言,压缩后占用的总服务器资源为8×10/16=5台。可见,存储冷数据使用的服务器数量从原来的8个分片(共80台服务器)减少到1个分片(共10台服务器,实际只占用其中的5台)。同时,由于DBProxy集群不需要做SQL拆分解析、SQL分片路由计算和SQL分片查询结果汇总,消耗的CPU和内存资源比DDBS小很多,SQL请求的响应性能也会比DDBS提升,由于采用服务器数量更少、更轻便的架构来实现,对应的运维成本也得到了降低和节约。

将被判定成为冷数据的数据记录从DDBS 1迁移到数据库中间件集群2时,可以将该数据记录即时迁移,也可以每隔预设周期(例如24小时)将在该周期内被判定为冷数据的数据记录进行迁移。迁移的过程为:首先从DDBS 1中查询(select)被判定成为冷数据的数据记录,可通过数据记录状态表查询出类型被修改为冷数据的数据记录,调用DDBS 1将对应的数据记录发送至数据库中间件集群2。然后,调用数据库中间件集群2将这些数据记录进行压缩处理,并将压缩后的数据记录写入(insert)集群的存储节点22。写入成功之后,在DDBS 1中删除查询到的数据记录,以释放其所占用的存储资源。

本申请实施例中,服务器3接收的所有对数据记录增加、删除、更新、查询的SQL请求都需要包含对应的时间戳,通过时间戳以及库、表和列的名称一起确定对应的数据记录。

在数据记录状态表中,除了存储每条数据记录对应的时间戳和类型以外,还可以进一步存储每条数据记录的状态。数据记录的状态包括未迁移、迁移中和已迁移。在数据记录状态表中,所有数据记录的初始状态均为未迁移。在数据记录状态表中进一步为数据记录设置状态参数,是为了便于判定将针对冷数据的SQL请求分发至DDBS 1还是分发至数据库中间件集群2。在上述对判定成为冷数据的数据记录进行迁移的过程中,在DDBS 1中查询到类型被修改为冷数据的数据记录时,将该数据记录的状态从未迁移修改为迁移中;将该数据记录压缩并写入数据库中间件集群2之后,将该数据记录的状态从迁移中修改为已迁移,代表该数据记录以迁移至数据库中间件集群2。

服务器3接收到针对数据记录的操作请求后,根据操作请求中的时间戳以及库和表的名称或者库、表和列的名称,确定该操作请求的目标数据记录,从DDBS 1存储的数据记录状态表中查询该目标数据记录的类型和状态。如果目标数据记录的类型为冷数据,并且状态为已迁移,则服务器3将该操作请求分发至数据库中间件集群2进行处理。如果目标数据记录的类型为冷数据,并且状态为迁移中,则服务器3将该操作请求分发至DDBS 1进行处理,同时按照接收到操作请求的时间顺序记录每个操作请求;在目标数据记录的状态被修改为已迁移之后,服务器3将记录的操作请求分发至数据库中间件集群2,由数据库中间件集群2对记录的操作请求按照时间顺序依次进行处理,从而使该目标数据记录在迁移过程中产生的变化在数据库中间件集群2中得到更新。如果目标数据记录的类型为热数据,则服务器3将操作请求分发至DDBS 1进行处理。

对于被判定成为冷数据的数据记录来说,是出于备份的目的被迁移至数据库中间件集群2,因此数据库中间件集群2对这些数据记录的处理主要是查询请求和更新请求,实际中不会出现针对这些数据记录的删除请求。下面对数据库中间件集群2针对冷数据的查询请求和更新请求的处理过程分别进行说明。

服务器3接收到针对冷数据的查询请求后,将该查询请求分发至数据库中间件集群2。数据库中间件集群2根据库和表的名称、或者库、表和列的名称查询数据库中间件集群2索引列表,确定存储位置,读取已压缩的数据记录。数据库中间件集群2对已压缩的数据记录进行解压缩处理,将解压缩后的数据记录返回至服务器3。

服务器3接收到针对冷数据的更新请求后,将更新请求分发至数据库中间件集群2。数据库中间件集群2根据库和表的名称、或者库、表和列的名称查询数据库中间件集群2索引列表,确定存储位置,读取已压缩的数据记录。数据库中间件集群2对已压缩的数据记录进行解压缩处理,将解压缩后的数据记录返回至服务器3。服务器3将解压缩后的数据记录和该更新请求缓存至DDBS 1,由DDBS 1对该数据记录进行更新。服务器3调用DDBS 1将更新后的数据记录迁移至数据库中间件集群2,由数据库中间件集群2对更新后的数据记录进行压缩存储。

当本申请实施例的时间戳为数据记录在DDBS 1中的创建时间时,每条数据记录的时间戳是不变的。随着时间的推移,每条数据记录的类型都会从热数据变化为冷数据,并且被迁移至数据库中间件集群2。例如,当前时间与数据记录的创建时间相差72小时以上时,则该数据记录被迁移至数据库中间件集群2。

在另一个实施例中,时间戳还可以被配置为数据记录的更新时间,此时每条数据记录的时间戳是可能产生变化的。类型为热数据的数据记录被更新后,其在数据记录状态表中的时间戳也随之变化为完成更新的时间,其类型会继续保持为热数据。类型为冷数据的数据记录被更新后,其在数据记录状态表中的时间戳随之变化为完成更新的时间,类型从冷数据修改为热数据。此时,服务器3将更新后的冷数据从数据库中间件集群2迁移回DDBS 1存储。数据库中间件集群2对更新后的冷数据进行解压缩处理,将解压缩的数据记录发送至DDBS 1的主节点11,由主节点11将解压缩的数据记录写入到存储节点12。将该数据记录迁移回DDBS 1之后,在主节点11维护的数据记录状态表中,将该数据记录的状态从已迁移修改为未迁移。至此,该数据记录的类型为热数据,状态为未迁移,时间戳为在数据库中间件集群2中完成更新的时间。当其满足冷数据的判定条件时,会被再次迁移至数据库中间件集群2进行压缩存储。

基于以上说明,本申请实施例提供了一种数据存储方法,适用于服务器3,如图3所示,该方法包括以下步骤。

S31,在DDBS中存储每条数据记录对应的时间戳。

S32,根据当前时间和所述时间戳判定成为冷数据的数据记录;

S33,将被判定成为冷数据的数据记录从DDBS迁移至数据库中间件集群进行存储。

在一个实施例中,S33包括:

S301,从DDBS中查询被判定成为冷数据的数据记录;

S302,调用DDBS将查询到的数据记录发送至数据库中间件集群,由数据库中间件集群对查询到的数据记录进行压缩存储。

在一个实施例中,该DDBS中还存储数据记录状态表,用于保存数据记录的类型和状态,数据记录的初始类型均为热数据,初始状态均为未迁移;S33还包括:调用DDBS将数据记录的类型修改为冷数据,状态修改为迁移中。

优选的,该方法还包括:在数据记录向所述数据库中间件集群完成迁移之后,调用所述DDBS将所述数据记录的状态修改为已迁移。

在一个实施例中,S302包括:调用DDBS将查询到的数据记录发送至DBProxy集群,由DBProxy集群对查询到的数据记录通过TokuDB存储引擎进行压缩存储。

在一个实施例中,该方法还包括:

S34,接收针对目标数据记录的操作请求,操作请求包括目标数据记录对应的时间戳;

S35,根据目标数据记录对应的时间戳,从DDBS中查询目标数据记录的类型和状态;

S361,如果目标数据记录的类型为冷数据,并且状态为已迁移,则将所述操作请求分发至所述数据库中间件集群进行处理;

S362,如果目标数据记录的类型为冷数据,并且状态为迁移中,则将操作请求分发至DDBS进行处理,同时按照接收到操作请求的时间顺序记录操作请求;在目标数据记录的状态被修改为已迁移之后,将记录的操作请求分发至数据库中间件集群按照时间顺序进行处理;

S363,如果目标数据记录的类型为热数据,则将操作请求分发至DDBS进行处理。

优选的,将操作请求分发至数据库中间件集群进行处理包括:

将针对目标数据记录的更新请求分发至数据库中间件集群;从数据库中间件集群中获取目标数据记录的解压缩后的数据;将解压缩后的目标数据记录缓存至DDBS;调用DDBS对目标数据记录进行更新,并将更新后的目标数据记录发送至数据库中间件集群进行存储。

优选的,将操作请求分发至数据库中间件集群进行处理包括:

将针对目标数据记录的查询请求分发至数据库中间件集群;调用数据库中间件集群中对目标数据记录进行解压缩处理,从数据库中间件集群获取解压缩后的目标数据记录。

在一个实施例中,时间戳为数据记录的创建时间或者更新时间。

优选的,当时间戳为数据记录的更新时间时,该方法还包括:

S37,在数据库中间件集群中保存的数据记录被更新之后,将该数据记录判定成为热数据并将时间戳修改为更新完成的时间;

S38,调用数据库中间件集群将数据记录发送至DDBS进行存储。

本申请实施例还提供了一种数据存储装置,如图4所示,该装置包括:

时间戳存储模块41,用于在DDBS中存储每条数据记录对应的时间戳;

冷数据判定模块42,用于根据当前时间和所述时间戳判定成为冷数据的数据记录;

冷数据迁移模块43,用于将被判定成为冷数据的数据记录从DDBS迁移至数据库中间件集群进行存储。

在一个实施例中,冷数据迁移模块43包括:

查询单元,用于从DDBS中查询被判定成为冷数据的数据记录;

第一调用单元,用于调用DDBS将查询到的数据记录发送至数据库中间件集群,由数据库中间件集群对查询到的数据记录进行压缩存储。

在一个实施例中,DDBS中还存储数据记录状态表,用于保存数据记录的类型和状态,数据记录的初始类型均为热数据,初始状态均为未迁移;冷数据迁移模块43进一步用于调用DDBS将数据记录的类型修改为冷数据,状态修改为迁移中。

优选的,在数据记录向所述数据库中间件集群完成迁移之后,冷数据迁移模块43进一步用于调用DDBS将数据记录的状态修改为已迁移。

在一个实施例中,第一调用单元进一步用于:调用DDBS将查询到的数据记录发送至DBProxy集群,由DBProxy集群对查询到的数据记录通过TokuDB存储引擎进行压缩存储。

在一个实施例中,该装置还包括:

操作请求接收模块,用于接收针对目标数据记录的操作请求,操作请求包括目标数据记录对应的时间戳;

状态查询模块,用于根据目标数据记录对应的时间戳,从DDBS中查询目标数据记录的类型和状态;

第一分发模块,用于如果目标数据记录的类型为冷数据,并且状态为已迁移,则将操作请求分发至数据库中间件集群进行处理;

第二分发模块,用于如果目标数据记录的类型为冷数据,并且状态为迁移中,则将操作请求分发至DDBS进行处理,同时按照接收到操作请求的时间顺序记录操作请求;在目标数据记录的状态被修改为已迁移之后,将记录的操作请求分发至数据库中间件集群按照时间顺序进行处理;

第三分发模块,用于如果目标数据记录的类型为热数据,则将操作请求分发至DDBS进行处理。

优选的,第一分发模块或第二分发模块包括:

第一分发单元,用于将针对目标数据记录的更新请求分发至数据库中间件集群;

数据获取单元,用于从数据库中间件集群中获取目标数据记录的解压缩后的数据;

数据缓存单元,用于将解压缩后的目标数据记录缓存至DDBS;

第二调用单元,调用DDBS对目标数据记录进行更新,并将更新后的目标数据记录发送至数据库中间件集群进行存储。

优选的,第一分发模块或第二分发模块包括:

第二分发单元,用于将针对目标数据记录的查询请求分发至数据库中间件集群;

第三调用单元,用于调用数据库中间件集群中对目标数据记录进行解压缩处理,从数据库中间件集群获取解压缩后的目标数据记录。

在一个实施例中,时间戳为数据记录的创建时间或者更新时间。

优选的,当时间戳为数据记录的更新时间时,该装置还包括:

时间戳修改模块,用于在数据库中间件集群中保存的数据记录被更新之后,将该数据记录判定成为热数据并将时间戳修改为更新完成的时间;

热数据迁移模块,用于调用数据库中间件集群将数据记录解压缩后发送至DDBS进行存储。

此外,该数据存储装置还可以通过硬件处理器(hardware processor)来实现上述各个程序步骤。下面参考图5,其示出了适于用来实现本申请实施例的电子设备的计算机系统600的结构示意图。图5示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图5所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。

以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口606。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括时间戳存储模块、冷数据判定模块和冷数据迁移模块。

作为另一方面,本申请还提供了一种非易失性计算机存储介质,该非易失性计算机存储介质可以是上述实施例中所述装置中所包含的非易失性计算机存储介质;也可以是单独存在,未装配入电子设备中的非易失性计算机存储介质。上述非易失性计算机存储介质存储有一个或者多个程序,当所存储的一个或者多个程序被一个设备执行时,使得所述设备:在DDBS中存储每条数据记录对应的时间戳;根据当前时间和时间戳判定成为冷数据的数据记录;将被判定成为冷数据的数据记录从DDBS迁移至数据库中间件集群进行存储。

以上所述仅为本申请的优选实施例,并不用于限制本申请,对于本领域技术人员而言,本申请可以有各种改动和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

a1、一种数据存储方法,所述方法包括:

在分布式数据库系统中存储每条数据记录对应的时间戳;根据当前时间和所述时间戳判定成为冷数据的数据记录;将所述被判定成为冷数据的数据记录从分布式数据库系统迁移至数据库中间件集群进行存储。

a2、根据a1所述的方法,将所述被判定成为冷数据的数据记录从分布式数据库系统迁移至数据库中间件集群进行存储包括:

从所述分布式数据库系统中查询被判定成为冷数据的数据记录;调用所述分布式数据库系统将查询到的数据记录发送至所述数据库中间件集群,由所述数据库中间件集群对查询到的数据记录进行压缩存储。

a3、根据a1或a2所述的方法,所述分布式数据库系统中还存储数据记录状态表,用于保存数据记录的类型和状态,数据记录的初始类型均为热数据,初始状态均为未迁移;

将所述被判定成为冷数据的数据记录从分布式数据库系统迁移至数据库中间件集群进行存储还包括:

调用所述分布式数据库系统将所述数据记录的类型修改为冷数据,状态修改为迁移中。

a4、根据a3所述的方法,所述方法还包括:在所述数据记录向所述数据库中间件集群完成迁移之后,调用所述分布式数据库系统将所述数据记录的状态修改为已迁移。

a5、根据a2所述的方法,调用所述分布式数据库系统将查询到的数据记录发送至所述数据库中间件集群,由所述数据库中间件集群对查询到的数据记录进行压缩存储包括:

调用所述分布式数据库系统将查询到的数据记录发送至DBProxy集群,由所述DBProxy集群对查询到的数据记录通过TokuDB存储引擎进行压缩存储。

a6、根据a1所述的方法,所述方法还包括:

接收针对目标数据记录的操作请求,所述操作请求包括目标数据记录对应的时间戳;根据所述目标数据记录对应的时间戳,从所述分布式数据库系统中查询所述目标数据记录的类型和状态;如果所述目标数据记录的类型为冷数据,并且状态为已迁移,则将所述操作请求分发至所述数据库中间件集群进行处理;如果所述目标数据记录的类型为冷数据,并且状态为迁移中,则将所述操作请求分发至所述分布式数据库系统进行处理,同时按照接收到操作请求的时间顺序记录所述操作请求;在所述目标数据记录的状态被修改为已迁移之后,将记录的操作请求分发至所述数据库中间件集群按照所述时间顺序进行处理;如果所述目标数据记录的类型为热数据,则将所述操作请求分发至所述分布式数据库系统进行处理。

a7、根据a6所述的方法,将所述操作请求分发至所述数据库中间件集群进行处理包括:

将针对所述目标数据记录的更新请求分发至所述数据库中间件集群;从所述数据库中间件集群中获取所述目标数据记录的解压缩后的数据;将解压缩后的目标数据记录缓存至所述分布式数据库系统;调用所述分布式数据库系统对所述目标数据记录进行更新,并将所述更新后的目标数据记录发送至所述数据库中间件集群进行存储。

a8、根据a6所述的方法,将所述操作请求分发至所述数据库中间件集群进行处理包括:

将针对所述目标数据记录的查询请求分发至所述数据库中间件集群;调用所述数据库中间件集群中对所述目标数据记录进行解压缩处理,从所述数据库中间件集群获取解压缩后的目标数据记录。

a9、根据a1所述的方法,所述时间戳为数据记录的创建时间或者更新时间。

a10、根据a9所述的方法,当所述时间戳为数据记录的更新时间时,所述方法还包括:

在所述数据库中间件集群中保存的数据记录被更新之后,将所述数据记录判定成为热数据并将时间戳修改为更新完成的时间;调用所述数据库中间件集群将所述数据记录发送至所述分布式数据库系统进行存储。

b11、一种数据存储装置,包括:

时间戳存储模块,用于在分布式数据库系统中存储每条数据记录对应的时间戳;冷数据判定模块,用于根据当前时间和所述时间戳判定成为冷数据的数据记录;冷数据迁移模块,用于将所述被判定成为冷数据的数据记录从分布式数据库系统迁移至数据库中间件集群进行存储。

b12、根据b11所述的装置,所述冷数据迁移模块包括:

查询单元,用于从所述分布式数据库系统中查询被判定成为冷数据的数据记录;第一调用单元,用于调用所述分布式数据库系统将查询到的数据记录发送至所述数据库中间件集群,由所述数据库中间件集群对查询到的数据记录进行压缩存储。

b13、根据b11或b12所述的装置,所述分布式数据库系统中还存储数据记录状态表,用于保存数据记录的类型和状态,数据记录的初始类型均为热数据,初始状态均为未迁移;

所述冷数据迁移模块进一步用于调用所述分布式数据库系统将所述数据记录的类型修改为冷数据,状态修改为迁移中。

b14、根据b13所述的装置,在所述数据记录向所述数据库中间件集群完成迁移之后,所述冷数据迁移模块进一步用于调用所述分布式数据库系统将所述数据记录的状态修改为已迁移。

b15、根据b12所述的装置,所述第一调用单元进一步用于:

调用所述分布式数据库系统将查询到的数据记录发送至DBProxy集群,由所述DBProxy集群对查询到的数据记录通过TokuDB存储引擎进行压缩存储。

b16、根据b11所述的装置,所述装置还包括:

操作请求接收模块,用于接收针对目标数据记录的操作请求,所述操作请求包括目标数据记录对应的时间戳;状态查询模块,用于根据所述目标数据记录对应的时间戳,从所述分布式数据库系统中查询所述目标数据记录的类型和状态;第一分发模块,用于如果所述目标数据记录的类型为冷数据,并且状态为已迁移,则将所述操作请求分发至所述数据库中间件集群进行处理;第二分发模块,用于如果所述目标数据记录的类型为冷数据,并且状态为迁移中,则将所述操作请求分发至所述分布式数据库系统进行处理,同时按照接收到操作请求的时间顺序记录所述操作请求;在所述目标数据记录的状态被修改为已迁移之后,将记录的操作请求分发至所述数据库中间件集群按照所述时间顺序进行处理;第三分发模块,用于如果所述目标数据记录的类型为热数据,则将所述操作请求分发至所述分布式数据库系统进行处理。

b17、根据b16所述的装置,所述第一分发模块或第二分发模块包括:

第一分发单元,用于将针对所述目标数据记录的更新请求分发至所述数据库中间件集群;数据获取单元,用于从所述数据库中间件集群中获取所述目标数据记录的解压缩后的数据;数据缓存单元,用于将解压缩后的目标数据记录缓存至所述分布式数据库系统;第二调用单元,调用所述分布式数据库系统对所述目标数据记录进行更新,并将所述更新后的目标数据记录发送至所述数据库中间件集群进行存储。

b18、根据b16所述的装置,所述第一分发模块或第二分发模块包括:

第二分发单元,用于将针对所述目标数据记录的查询请求分发至所述数据库中间件集群;第三调用单元,用于调用所述数据库中间件集群中对所述目标数据记录进行解压缩处理,从所述数据库中间件集群获取解压缩后的目标数据记录。

b19、根据b11所述的装置,所述时间戳为数据记录的创建时间或者更新时间。

b20、根据b19所述的装置,当所述时间戳为数据记录的更新时间时,所述装置还包括:

时间戳修改模块,用于在所述数据库中间件集群中保存的数据记录被更新之后,将所述数据记录判定成为热数据并将时间戳修改为更新完成的时间;热数据迁移模块,用于调用所述数据库中间件集群将所述数据记录解压缩后发送至所述分布式数据库系统进行存储。

c21、一种数据存储系统,包括:

分布式数据库系统,用于存储数据记录和数据记录对应的时间戳;服务器,用于根据当前时间和所述时间戳判定分布式数据库系统中成为冷数据的数据记录;数据库中间件集群,用于存储从所述分布式数据库系统迁移的被判定成为冷数据的数据记录。

d22、一种电子设备,包括存储器和处理器;所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机被所述处理器执行以实现以下步骤:

在分布式数据库系统中存储每条数据记录对应的时间戳;根据当前时间和所述时间戳判定成为冷数据的数据记录;将所述被判定成为冷数据的数据记录从分布式数据库系统迁移至数据库中间件集群进行存储。

d23、根据d22所述的电子设备,将所述被判定成为冷数据的数据记录从分布式数据库系统迁移至数据库中间件集群进行存储包括:

从所述分布式数据库系统中查询被判定成为冷数据的数据记录;调用所述分布式数据库系统将查询到的数据记录发送至所述数据库中间件集群,由所述数据库中间件集群对查询到的数据记录进行压缩存储。

d24、根据d22或d23所述的电子设备,所述分布式数据库系统中还存储数据记录状态表,用于保存数据记录的类型和状态,数据记录的初始类型均为热数据,初始状态均为未迁移;

将所述被判定成为冷数据的数据记录从分布式数据库系统迁移至数据库中间件集群进行存储还包括:调用所述分布式数据库系统将所述数据记录的类型修改为冷数据,状态修改为迁移中。

d25、根据d24所述的电子设备,所述处理器进一步被配置执行:在所述数据记录向所述数据库中间件集群完成迁移之后,调用所述分布式数据库系统将所述数据记录的状态修改为已迁移。

d26、根据d23所述的电子设备,调用所述分布式数据库系统将查询到的数据记录发送至所述数据库中间件集群,由所述数据库中间件集群对查询到的数据记录进行压缩存储包括:

调用所述分布式数据库系统将查询到的数据记录发送至DBProxy集群,由所述DBProxy集群对查询到的数据记录通过TokuDB存储引擎进行压缩存储。

d27、根据d22所述的电子设备,所述处理器进一步被配置执行:接收针对目标数据记录的操作请求,所述操作请求包括目标数据记录对应的时间戳;根据所述目标数据记录对应的时间戳,从所述分布式数据库系统中查询所述目标数据记录的类型和状态;如果所述目标数据记录的类型为冷数据,并且状态为已迁移,则将所述操作请求分发至所述数据库中间件集群进行处理;如果所述目标数据记录的类型为冷数据,并且状态为迁移中,则将所述操作请求分发至所述分布式数据库系统进行处理,同时按照接收到操作请求的时间顺序记录所述操作请求;在所述目标数据记录的状态被修改为已迁移之后,将记录的操作请求分发至所述数据库中间件集群按照所述时间顺序进行处理;如果所述目标数据记录的类型为热数据,则将所述操作请求分发至所述分布式数据库系统进行处理。

d28、根据d27所述的电子设备,将所述操作请求分发至所述数据库中间件集群进行处理包括:

将针对所述目标数据记录的更新请求分发至所述数据库中间件集群;从所述数据库中间件集群中获取所述目标数据记录的解压缩后的数据;将解压缩后的目标数据记录缓存至所述分布式数据库系统;调用所述分布式数据库系统对所述目标数据记录进行更新,并将所述更新后的目标数据记录发送至所述数据库中间件集群进行存储。

d29、根据d27所述的电子设备,将所述操作请求分发至所述数据库中间件集群进行处理包括:

将针对所述目标数据记录的查询请求分发至所述数据库中间件集群;调用所述数据库中间件集群中对所述目标数据记录进行解压缩处理,从所述数据库中间件集群获取解压缩后的目标数据记录。

d30、根据d22所述的电子设备,所述时间戳为数据记录的创建时间或者更新时间。

d31、根据d30所述的电子设备,当所述时间戳为数据记录的更新时间时,所述处理器进一步被配置执行:

在所述数据库中间件集群中保存的数据记录被更新之后,将所述数据记录判定成为热数据并将时间戳修改为更新完成的时间;调用所述数据库中间件集群将所述数据记录发送至所述分布式数据库系统进行存储。

e32、一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现以下步骤:

在分布式数据库系统中存储每条数据记录对应的时间戳;根据当前时间和所述时间戳判定成为冷数据的数据记录;将所述被判定成为冷数据的数据记录从分布式数据库系统迁移至数据库中间件集群进行存储。

e33、根据e32所述的计算机可读存储介质,将所述被判定成为冷数据的数据记录从分布式数据库系统迁移至数据库中间件集群进行存储包括:

从所述分布式数据库系统中查询被判定成为冷数据的数据记录;调用所述分布式数据库系统将查询到的数据记录发送至所述数据库中间件集群,由所述数据库中间件集群对查询到的数据记录进行压缩存储。

e34、根据e32或e33所述的计算机可读存储介质,所述分布式数据库系统中还存储数据记录状态表,用于保存数据记录的类型和状态,数据记录的初始类型均为热数据,初始状态均为未迁移;

将所述被判定成为冷数据的数据记录从分布式数据库系统迁移至数据库中间件集群进行存储还包括:

调用所述分布式数据库系统将所述数据记录的类型修改为冷数据,状态修改为迁移中。

e35、根据e34所述的计算机可读存储介质,所述处理器进一步被配置执行:在所述数据记录向所述数据库中间件集群完成迁移之后,调用所述分布式数据库系统将所述数据记录的状态修改为已迁移。

e36、根据e33所述的计算机可读存储介质,调用所述分布式数据库系统将查询到的数据记录发送至所述数据库中间件集群,由所述数据库中间件集群对查询到的数据记录进行压缩存储包括:

调用所述分布式数据库系统将查询到的数据记录发送至DBProxy集群,由所述DBProxy集群对查询到的数据记录通过TokuDB存储引擎进行压缩存储。

e37、根据e32所述的计算机可读存储介质,所述处理器进一步被配置执行:

接收针对目标数据记录的操作请求,所述操作请求包括目标数据记录对应的时间戳;根据所述目标数据记录对应的时间戳,从所述分布式数据库系统中查询所述目标数据记录的类型和状态;如果所述目标数据记录的类型为冷数据,并且状态为已迁移,则将所述操作请求分发至所述数据库中间件集群进行处理;如果所述目标数据记录的类型为冷数据,并且状态为迁移中,则将所述操作请求分发至所述分布式数据库系统进行处理,同时按照接收到操作请求的时间顺序记录所述操作请求;在所述目标数据记录的状态被修改为已迁移之后,将记录的操作请求分发至所述数据库中间件集群按照所述时间顺序进行处理;如果所述目标数据记录的类型为热数据,则将所述操作请求分发至所述分布式数据库系统进行处理。

e38、根据e37所述的计算机可读存储介质,将所述操作请求分发至所述数据库中间件集群进行处理包括:

将针对所述目标数据记录的更新请求分发至所述数据库中间件集群;从所述数据库中间件集群中获取所述目标数据记录的解压缩后的数据;将解压缩后的目标数据记录缓存至所述分布式数据库系统;调用所述分布式数据库系统对所述目标数据记录进行更新,并将所述更新后的目标数据记录发送至所述数据库中间件集群进行存储。

e39、根据e37所述的计算机可读存储介质,将所述操作请求分发至所述数据库中间件集群进行处理包括:

将针对所述目标数据记录的查询请求分发至所述数据库中间件集群;调用所述数据库中间件集群中对所述目标数据记录进行解压缩处理,从所述数据库中间件集群获取解压缩后的目标数据记录。

e40、根据e32所述的计算机可读存储介质,所述时间戳为数据记录的创建时间或者更新时间。

e41、根据e40所述的计算机可读存储介质,当所述时间戳为数据记录的更新时间时,所述处理器进一步被配置执行:

在所述数据库中间件集群中保存的数据记录被更新之后,将所述数据记录判定成为热数据并将时间戳修改为更新完成的时间;调用所述数据库中间件集群将所述数据记录发送至所述分布式数据库系统进行存储。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1