CN109902127B - 历史态数据处理方法、装置、计算机设备及存储介质 - Google Patents
历史态数据处理方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN109902127B CN109902127B CN201910170575.0A CN201910170575A CN109902127B CN 109902127 B CN109902127 B CN 109902127B CN 201910170575 A CN201910170575 A CN 201910170575A CN 109902127 B CN109902127 B CN 109902127B
- Authority
- CN
- China
- Prior art keywords
- data
- database system
- historical
- target
- stand
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种历史态数据处理方法、装置、计算机设备及存储介质,属于数据库技术领域。该方法包括:当单机数据库***的任一第一设备满足数据转移条件时,从该单机数据库***中,获取待复制的历史态数据;基于该历史态数据,将副本数据复制至集群数据库***;在复制成功时,允许单机数据库***响应于数据库引擎的删除操作,删除存储的该历史态数据和该元信息。本发明提供了对历史态数据进行处理的数据安全策略,当将单机数据库***内的副本数据成功复制到集群数据库***后,才允许删除历史态数据和元信息,节约了单机数据库***的存储空间,避免了对历史态数据的恶意损毁,提升了历史态数据的安全性。
Description
技术领域
本发明涉及数据库技术领域,特别涉及一种历史态数据处理方法、装置、计算机设备及存储介质。
背景技术
随着数据库技术的发展,数据的生命周期包括当前态、过渡态和历史态,这三种状态合称为“数据的全态”(也即全态数据),由于历史态数据能够反映数据的状态变迁过程,逐渐引起技术人员的重视。
目前,在基于MVCC(multi-version concurrency control,多版本并发控制)技术的数据库中,历史态数据为当前活跃事务列表中最小的事务之前的事务生成的数据,例如,用户表(User表)中A账户的余额原本为10元,充值了10元后,服务器执行余额更新事务,将账户余额更新为20元,则在该余额更新事务提交后,“10元”从当前态数据转换为历史态数据。
在相关技术中,如Oracle数据库(支持MVCC)提供了一种“撤销段”以存储过渡态数据,但无法支持历史态数据的存储,而在DB2和SQL Server数据库中,虽然支持在历史表中存储历史态数据,不允许通过DML(data manipulation language,数据操纵语言)操作该历史态数据,但是可以通过特定方式来删除该历史态数据。
因此,相关技术中虽然提供了对历史态数据的存储方法,但由于允许通过特定方式删除该历史态数据,损害了对历史态数据的安全性,容易引发对历史态数据的恶意损毁。
发明内容
本发明实施例提供了一种历史态数据处理方法、装置、计算机设备及存储介质,能够解决历史态数据安全性较低,容易引发对历史态数据恶意损毁的问题。该技术方案如下:
一方面,提供了一种历史态数据处理方法,该方法包括:
当单机数据库***的任一第一设备满足数据转移条件时,从该单机数据库***中,获取待复制的历史态数据;
基于该历史态数据,将副本数据复制至集群数据库***,该副本数据包括该历史态数据、该历史态数据的元信息以及数据关系信息,该数据关系信息用于表示该元信息与该历史态数据对应的当前态数据所属表之间的关系;
在复制成功时,允许该单机数据库***响应于数据库引擎的删除操作,删除该单机数据库***中存储的该历史态数据和该元信息。
一方面,提供了一种历史态数据处理装置,该装置包括:
获取模块,用于当单机数据库***的任一第一设备满足数据转移条件时,从该单机数据库***中,获取待复制的历史态数据;
复制模块,用于基于该历史态数据,将副本数据复制至集群数据库***,该副本数据包括该历史态数据、该历史态数据的元信息以及数据关系信息,该数据关系信息用于表示该元信息与该历史态数据对应的当前态数据所属表之间的关系;
删除模块,用于在复制成功时,允许该单机数据库***响应于数据库引擎的删除操作,删除该单机数据库***中存储的该历史态数据和该元信息。
一方面,提供了一种计算机设备,该计算机设备包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条指令,该至少一条指令由该一个或多个处理器加载并执行以实现如上述历史态数据处理方法所执行的操作。
一方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令,该至少一条指令由处理器加载并执行以实现如上述历史态数据处理方法所执行的操作。
本发明实施例提供的技术方案带来的有益效果至少包括:
通过当单机数据库***的任一第一设备满足数据转移条件时,从该单机数据库***中,获取待复制的历史态数据,从而基于该历史态数据,将副本数据复制至集群数据库***,该副本数据包括该历史态数据、该历史态数据的元信息以及数据关系信息,进而在复制成功时,允许该单机数据库***响应于数据库引擎的删除操作,删除该单机数据库***中存储的该历史态数据和该元信息,提供了对历史态数据进行处理的数据安全策略,当将单机数据库***内的副本数据成功复制到集群数据库***后,才允许删除历史态数据和元信息,节约了单机数据库***的存储空间,避免了对历史态数据的恶意损毁,提升了历史态数据的安全性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种历史态数据处理方法的实施环境示意图;
图2是本发明实施例提供的一种历史态数据处理方法的实施环境逻辑结构框图;
图3是本发明实施例提供的一种历史态数据处理方法的交互流程图;
图4是本发明实施例提供的一种历史态数据处理方法的流程图;
图5是本发明实施例提供的一种历史态数据处理方法的交互流程图;
图6是本发明实施例提供的一种跳表结构的示意图;
图7是本发明实施例提供的一种历史态数据处理装置的结构示意图;
图8是本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
在介绍本发明实施例之前,需要引入一些数据库技术中的基本概念:
本发明实施例涉及的数据库存储有多个数据表,每个数据表可以用于存储元组,元组可以有一个或多个版本。其中,该数据库可以为基于MVCC的任一类型的数据库。在本发明实施例中,对该数据库的类型不作具体限定。需要说明的是,上述数据库中的数据基于状态属性,可以包括三种状态:当前态、过渡态和历史态,该三种状态合称为“数据的全态”,简称全态数据,全态数据中的各个不同状态属性,可以用于标识数据在其生命周期轨迹中所处的状态。
当前态(Current State):元组的最新版本的数据,是处于当前阶段的数据。处于当前阶段的数据的状态,称为当前态。
过渡态(Transitional State):不是元组的最新的版本也不是历史态版本,处于从当前态向历史态转变的过程中,处于过渡态的数据,称为半衰数据。
历史态(Historical state):元组在历史上的一个状态,其值是旧值,不是当前值。处于历史阶段的数据的状态,称为历史态。一个元组的历史态,可以有多个,反映了数据的状态变迁的过程。处于历史态的数据,只能被读取而不能被修改或删除。
需要说明的是,在MVCC机制下,数据的上述三种状态均存在,在非MVCC机制下,数据可以只存在历史态和当前态。在MVCC或封锁并发访问控制机制下,事务提交后的数据的新值处于当前态。以MVCC机制为例,当前活跃事务列表中最小的事务之前的事务生成的数据,其状态处于历史态。在封锁并发访问控制机制下,事务提交后,提交前的数据的值变为历史态的值,即元组的旧值处于历史态。而被读取的版本上尚有活跃事务(非最新相关事务)在使用,而由于最新相关事务修改了元组的值,其最新值已经处于一个当前态,被读取到的值相对当前态已经处于一个历史状态,因此,其数据状态介于当前态和历史态之间,所以称为过渡态。
例如,MVCC机制下,用户表(User表)的A账户余额从10元充值变为20元,然后消费了15元变为5元,此时金融B机构读取数据做检查事务一直进行中,A之后又充值20元变为25元,则25元为当前态数据,B正在读取到的5元为过渡态,其余的两个值20、10是历史上存在过的状态,都是历史态数据。
基于上述名词解释,图1是本发明实施例提供的一种历史态数据处理方法的实施环境示意图。参见图1,在该实施环境中,可以包括单机数据库***所在的第一设备101和集群数据库***所在的第二设备102。
其中,该第一设备101用于提供待复制的历史态数据,该第一设备101上配置有单机数据库***,该第一设备101可以是单机设备,也可以是一主两备集群设备,该第二设备102用于存储第一设备101所待复制的数据,该第二设备102上配置有集群数据库***,该第二设备102可以是分布式集群设备。
可选地,该第一设备101的数量可以是一个或多个,该第二设备102的数量也可以是一个或多个,本发明实施例不对该第一设备101和第二设备102的类型和数量进行具体限定。
在一些实施例中,在金融或证券领域中,由于监管机构通常要求企业保留账户历史态数据至少X年,需要企业在第一设备101上的单机数据库***上存储历史态数据以备监管机构查询,其中,X为大于0的任一数值,而随着账户量级的增大,第一设备101的存储空间会被历史态数据逐渐侵占,从而影响了第一设备101的工作效率,因此需要将第一设备101上的历史态数据复制到第二设备102上,在复制成功后可以将第一设备101中的历史态数据删除,以在妥善存储历史态数据的同时,还能保证第一设备101的工作效率。
在进行历史态数据处理方法之前,需要在第一设备101上的单机数据库***和第二设备102上的集群数据库***之间进行互相注册,从而可以根据注册信息进行鉴权验证,以建立通信连接。可选地,在互相注册后,单机数据库***和集群数据库***之间可以互相访问数据库元信息,其中,该数据库元信息用于表示数据库中全态数据的结构和建立方法。
在一些实施例中,图2是本发明实施例提供的一种历史态数据处理方法的实施环境逻辑结构框图,如图2所示,第一设备101上具有单机数据库***,技术人员可以通过本地执行器来运行数据库引擎,以通过数据库引擎对数据库进行操作。
至少一个第一设备101上的单机数据库***可以通过并发数据流向第二设备102上的集群数据库***传送历史态数据,使得该第二设备102汇集各个第一设备101的历史态数据,并可以存储至少一份副本数据,当该第二设备102为分布式集群设备时,可以通过多个本地执行器来运行多个数据库引擎,进而通过存储接口来访问该第二数据库***内所存储的数据,从而保障了历史态数据的安全性。
基于上述实施环境,为保障历史态数据的安全性和可用性,首先,在单机数据库***的任一第一设备上可以对历史态数据进行多维的安全保护,例如,该多维的安全保护可以包括语句级保护和文件级保护。其次,可以通过主从同步技术、流复制技术等方式,将单机数据库***内存储的历史态数据安全地复制到集群数据库***,在复制成功后,才允许单机数据库***的数据库引擎删除该历史态数据。最后,集群数据库***的副本数据,可以被安全地保护,也只有该副本数据在集群数据库***内被注销后,才允许操作***层面进行删除。
下面,本发明实施例将针对单机数据库***的任一第一设备上的语句级保护和文件级保护进行详述:
一、语句级保护
历史态数据不支持任何形式的修改或删除的命令操作,从而当历史态数据一旦生成后,就不能再进行任何形式的修改,提高了单机数据库***中存储的历史态数据的安全性。
例如,对数据库中存储的历史态数据,禁止在其上执行DML(data manipulationlanguage,数据操纵语言)、DROP(结构化查询语言中的删除指令)、ALTER(结构化查询语言中的修改指令)操作。
二、文件级保护
在单机数据库***的表空间中,可以存储有多个目标数据文件,该目标数据文件为该表空间中存储有历史态数据的数据文件。可选地,在该单机数据库***的表空间中,可以包括专门用于存储历史态数据的历史表空间(historical tablespace),从而该历史态表空间内的任一数据文件均为该目标数据文件。
在相关技术中,当数据库引擎打开任一目标数据文件时,操作***会为该目标数据文件分配一个文件句柄,当该目标数据文件被关闭时,操作***可以回收该目标数据文件的文件句柄,从而操作***具有了删除该目标数据文件的权限。
图3是本发明实施例提供的一种历史态数据处理方法的交互流程图,参见图3,为避免操作***删除该目标数据文件,任一第一设备上的数据库引擎和目标进程可以执行下述交互步骤:
301、当数据库引擎启动或重启时,数据库引擎向目标进程发送句柄释放信号,该句柄释放信号用于指示该目标进程释放目标数据文件的文件句柄,该目标数据文件为表空间中存储有历史态数据的数据文件。
其中,该数据库引擎为数据库的管理***,该目标进程用于在数据库引擎退出时,打开数据库中目标数据文件,获取该目标数据文件的文件句柄。上述重启是指重新启动该数据库引擎成功后。
可选地,当数据库引擎首次启动时,可以检测该目标进程是否启动,如果该目标进程未启动,此时由数据库引擎启动该目标进程,从而向该目标进程发送句柄释放信号。
302、当目标进程接收到该句柄释放信号,目标进程释放所获取的目标数据文件的文件句柄。
303、当该目标进程释放该目标数据文件的文件句柄,数据库引擎读取该数据库元信息,基于该数据库元信息查找目标数据文件,打开该目标数据文件。
304、数据库引擎从表空间的目标成员中,获取该目标数据文件的文件句柄,打开该目标数据文件的文件句柄,该目标成员为该表空间中用于存储该目标数据文件的文件句柄的数据结构。
可选地,该目标成员可以是“int*files”。
305、数据库引擎保持该目标数据文件的文件句柄处于打开状态,直到该数据库引擎退出。
306、当该数据库引擎退出时,数据库引擎向该目标进程发送句柄获取信号,该句柄获取信号用于指示该目标进程获取该文件句柄。
307、当目标进程接收到该文件句柄持有信号,目标进程读取该数据库元信息,基于该数据库元信息查找该目标数据文件,打开该目标数据文件,获取该目标数据文件的文件句柄。
通过上述步骤306-307,当数据库引擎退出或重启时,能够通过目标进行打开目标数据文件,获取该目标数据文件的文件句柄。
可选地,当目标进程确定该目标数据文件打开失败时,则可以进行告警。例如,告警方式可以是发送告警邮件,也可以是调用beep()发出“滴滴”的警报音等。
需要说明的是,上述实施例提供的历史态数据处理方法可以应用于任一配置有单机数据库***的第一设备。通过上述步骤301-307,使得当数据库引擎启动或重启时,由数据库引擎获取目标数据文件的文件句柄,保持该目标数据文件的文件句柄处于打开状态,直到数据库引擎退出时,由目标进程获取目标数据文件的文件句柄,保持该目标数据文件的文件句柄处于打开状态,从而保证了历史态数据的文件句柄不会***作***回收,也就提高了历史态数据的安全性。上述实施例提供了关于单机***的文件级保护,而在一些实施例中,单机数据库***和集群数据库***之间还可以通过数据的复制,来进一步保护历史态数据,如图4所示的实施例所示。
基于上述实施环境,在对历史态数据进行多维的安全保护的情况下,可以实现本发明实施例提供的历史态数据处理方法,图4是本发明实施例提供的一种历史态数据处理方法的流程图。参见图4,该实施例应用于任一第一设备上的单机数据库***,该方法包括:
401、当单机数据库***的任一第一设备满足数据转移条件时,从该单机数据库***中,获取待复制的历史态数据。
可选地,该第一设备可以是单机设备,也可以是一主两备集群设备,该第二设备可以是分布式集群设备,本发明实施例不对该第一设备和第二设备的类型进行具体限定。
在上述过程中,单机数据库***和集群数据库***的数据库均可以是基于MVCC机制的数据库,该历史态数据为在当前活跃事务列表中最小的事务之前的事务生成的数据。
在一些实施例中,该数据转移条件包括:***时间到达预设时间,或,该单机数据库***中的历史态数据占该单机数据库***所在存储空间的比例大于比例阈值。针对上述两种可能的数据转移条件,下面进行详述:
(1)数据转移条件为***时间到达预设时间
在上述(1)中的情况下,该预设时间可以是一段预设时间段,从而每当到达该预设时间段时从该单机数据库***中获取待复制的历史态数据,也可以是一段预设时间周期,从而每间隔该预设时间周期后从该单机数据库***中获取待复制的历史态数据。由于定时对历史态数据进行复制,从而能够按照时间规律进行历史态数据复制,便于归类和查找。
(2)数据转移条件为单机数据库***中的历史态数据占该单机数据库***所在存储空间的比例大于比例阈值
在上述(2)中的情况下,当单机数据库***中的历史态数据所占存储空间大于比例阈值时,从该单机数据库***中获取待复制的历史态数据,从而能够在存储空间不足时,及时对历史态数据进行复制,在复制完成后可以删除该历史态数据,也就能够及时节约单机数据库***的磁盘空间。
其中,该比例阈值可以是历史态数据在全态数据的存储空间中所占的比例阈值,也可以是历史态数据在磁盘的存储空间中所占的比例阈值,该比例阈值可以是大于等于0且小于等于100%的任一数值,例如,该比例阈值为30%。
在上述情况(1)或(2)中,技术人员可以通过SQL(structured query language,结构化查询语言)语句对比例阈值或预设时间进行设置,也可以通过配置文件来对该比例阈值或预设时间进行设置,本发明实施例不对该比例阈值或预设时间的设置方法进行具体限定。
在上述步骤401中,当第一设备上的单机数据库***满足数据转移条件时,单机数据库***可以自动与第二设备上的集群数据库***建立通信连接,在建立通信连接后,第一设备从该单机数据库***中,获取待复制的历史态数据。
以SQL语句为例,可以通过下述语句对比例阈值或预设时间中的至少一项进行设置:
CREATE POLICTY policy_name([time_stmt][condition_stmt]…)TO cluster_address FOR table_name//为指定表建立自动建立通信连接的策略
在上述语句中,policy name用于表示该自动建立通信连接的策略的名词。
其中,time stmt用于设置预设时间,可以以[FROM time1 TO time2]的形式来设置预设时间段(从起始时间time1到结束时间time2),也可以以[PERIOD inteval_value]的形式来设置预设时间周期。
其中,condition stmt用于设置比例阈值,可以以[TABLESPACE=value]的形式来设置比例阈值(value),例如:[TABLESPACE=30],value为30是默认值,表示表空间满了30%则触发策略,范围是[30,100)。
其中,cluster_address用于表示集群数据库***所在的第二设备的IP地址(internet protocol address,互联网协议地址),table name用于表示集群数据库***中用于存储该单机数据库***的历史态数据的数据表的名称。
402、基于该历史态数据,第一设备上的单机数据库***将副本数据复制至第二设备上的集群数据库***,该副本数据包括该历史态数据、该历史态数据的元信息以及数据关系信息,该数据关系信息用于表示该元信息与该历史态数据对应的当前态数据所属表之间的关系。
可选地,对于同一个单机数据库***提交的副本数据,在该集群数据库***中允许存储多份该副本数据,从而在集群数据库***内部建立了冗余机制,使得如果某一份副本数据丢失时,还有冗余的副本数据可以进行数据恢复。
在上述过程中,以第二设备为分布式集群设备为例进行说明,对单机数据库***进行存储多份副本数据时,可以先将该副本数据存储至分布式集群设备中的任一设备,从而重复执行与上述步骤401-410类似的步骤,将该副本数据复制至分布式集群设备中的N个设备,从而对该副本数据进行了N份复制,其中,N为大于1的任一数值,例如N=2。
在一些实施例中,该集群数据库***可以存储有至少一个单机数据库***的副本数据,对于任一副本数据,该集群数据库***允许以只读事务的方式进行查询,从而能够有效防止副本数据被篡改,增加了集群数据库***中存储的副本数据的安全性。
在上述过程中,由于集群数据库***可以存储有至少一个单机数据库***的副本数据,因此在存储来自不同单机数据库***的副本数据时,为了对来自不同第一设备上的单机数据库***的副本数据进行区分,可以执行下述步骤:该集群数据库***在复制过程中,在每个副本数据中历史态数据的表名中添加该第一设备的互联网协议地址(internetprotocol address,IP地址)。
例如,集群数据库***中对每一份副本数据存储的表名可以是:表名={单机数据库***节点IP:单机数据库***中存储的原始表名},从而在集群数据库***中保留了单机数据库***中存储的原始表名,并对单机数据库***进行了唯一标识,方便了集群数据库***对副本数据的管理。
在一些实施例中,集群数据库***还可以不在表名中添加该第一设备的IP地址,而是在集群数据库***内部建立映射关系,该映射关系用于表示第一设备和单机数据库***ID(identification,标识)之间的映射关系,从而根据该映射关系,在该历史态数据的表名中添加单机数据库***ID,以对来自该第一设备的副本数据进行区分。
例如,该映射关系可以为{第一设备A→1001,第一设备B→1002,第一设备C→1003},从而在集群数据库***对来自第一设备A的副本数据进行复制时,在表名中添加“1001”。
需要说明的是,虽然该副本数据只允许只读事务形式的查询操作,但在集群数据库***中可以卸载该副本数据,也即是,在集群数据库***的超级用户权限下,执行“DROPTABLE历史态表名”操作,将该历史态表名对应的副本数据从集群数据库***中卸载,从而在卸载成功后,支持通过第二设备的操作***删除该副本数据。
403、在复制成功时,第一设备允许该单机数据库***响应于数据库引擎的删除操作,删除该单机数据库***中存储的该历史态数据和该元信息。
在上述步骤403中,虽然在该第一设备上对该历史态数据进行了语句级保护,使得历史态数据不支持任何形式的修改或删除的命令操作,但语句级保护是不支持用户对历史态数据进行修改或删除,而在数据库引擎层面,可以由数据库引擎在复制成功后自发执行删除操作,对该历史态数据和该元信息进行删除。
本发明实施例提供的方法,通过当单机数据库***的任一第一设备满足数据转移条件时,从该单机数据库***中,获取待复制的历史态数据,从而基于该历史态数据,将副本数据复制至集群数据库***,该副本数据包括该历史态数据、该历史态数据的元信息以及数据关系信息,进而在复制成功时,允许该单机数据库***响应于数据库引擎的删除操作,删除该单机数据库***中存储的该历史态数据和该元信息,提供了对历史态数据进行处理的数据安全策略,当将单机数据库***内的副本数据成功复制到集群数据库***后,才允许删除历史态数据和元信息,节约了单机数据库***的存储空间,避免了对历史态数据的恶意损毁,提升了历史态数据的安全性。
上述实施例提供了一种历史态数据处理方法,当复制成功时允许删除历史态数据和历史态数据的元信息,避免了对历史态数据的恶意损毁,提升了历史态数据的安全性,而在本发明实施例中,引入跳表结构提升索引效率,能够加快历史态数据复制的速度,引入数据摘要对复制过程中传输的数据进行进一步的校验,能够进一步的提示历史态数据的安全性,图5是本发明实施例提供的一种历史态数据处理方法的交互流程图,参见图5,该实施例应用于第一设备上的单机数据库***和第二设备上的集群数据库***的交互过程,以单个单机数据库***和集群数据库***进行交互为例进行说明,该实施例包括:
501、当单机数据库***的任一第一设备满足数据转移条件时,该第一设备上的单机数据库***与第二设备上的集群数据库***建立通信连接。
上述步骤501与上述步骤301类似,在此不作赘述。
在上述建立通信连接的过程中,可以由单机数据库***检测是否满足数据转移条件,当满足数据转移条件时,单机数据库***向集群数据库***发送连接请求,当集群数据库***接收到该连接请求时,对单机数据库***进行验证,当验证通过时,集群数据库***向单机数据库***发送连接响应,从而建立单机数据库***与集群数据库***之间的通信连接。
在一些实施例中,在单机数据库***和集群数据库***经过初始化过程中的互相注册后,可以互相访问数据库元信息,该数据库元信息用于表示数据库中全态数据的结构和建立方法,从而集群数据库***可以根据与该单机数据库***对应的数据库元信息,检测该单机数据库***是否满足数据转移条件,当满足数据转移条件时,集群数据库***向单机数据库***发送连接请求,当单机数据库***接收到该连接请求时,对集群数据库***进行验证,当验证通过时,单机数据库***向集群数据库***发送连接响应,从而建立单机数据库***与集群数据库***之间的通信连接。
可选地,如果单机数据库***与集群数据库***连接失败,也即是当该单机数据库***与该集群数据库***处于未联机状态,则可以基于该未联机状态进行告警。例如,告警方式可以是发送告警邮件,也可以是调用beep()发出“滴滴”的警报音等。
需要说明的是,该单机数据库***和集群数据库***还可以不设置数据转移条件,从而根据技术人员的操作直接建立通信连接,从而简化了历史态数据处理方法的流程。
502、第一设备上的单机数据库***在存储该历史态数据的数据表中,以每个数据块中的主键标识作为索引键值,构建跳表结构,该主键标识为数据块中的最小事务标识,该跳表结构包括不连续的索引键值。
在上述过程中,图6是本发明实施例提供的一种跳表结构的示意图,如图6所示,以数据库中设置有专门用于存储历史态数据的历史态表空间(historical tablespace)为例进行说明,该历史表空间可以包括至少一个存储历史态数据的数据表(table),在每个数据表中可以包括至少一个数据段(segment),在每个数据段中可以包括至少一个数据区间(extent),在每个数据区间中可以包括至少一个数据块(block),在每个数据块中可以包括至少一数据页(page)。
需要说明的是,上述数据表、数据段、数据区间、数据块以及数据页仅为对历史表空间中的历史态数据在逻辑上进行划分的结果,在物理上,历史态数据的存储载体是数据文件(files),该数据文件可以通过基于磁盘的文件***(disk-based file systems)存储在磁盘上。进一步地,对于未设置历史表空间的数据库,可以将该历史态数据与当前态数据或过渡态数据存储于同一个表空间中,从而在该表空间内可以构建与该历史表空间类似的跳表结构,在此不作赘述。
可选地,在每一数据页中,可以存储历史态数据、历史态数据的元信息或者数据关系信息,该数据关系信息用于表示该元信息与该历史态数据对应的当前态数据所属表之间的关系。
在上述步骤502中,单机数据库***可以获取每个数据块的主键标识,根据该主键标识的集合,构建至少一个等级的索引键值,将各个等级的集合确定为该跳表(skip list)结构,从而在单机数据库***定位待复制的历史态数据时,能够快速定位到待复制的历史态数据所在的数据块,从而提高了索引效率。
在上述过程中,仅以该主键标识为每个数据块中的最小事务标识(transactionidentification)为例进行说明,在一些实施例中,该主键标识还可以为每个数据块中最小事务创建时间戳,本发明实施例不对该主键标识的形式进行具体限定。
例如,如图6所示,该历史表空间的某一数据表的某一数据段的某一数据区间中,包括6个数据块,则单机数据库***获取的每个数据块的最小事务标识(也即主键标识),可以得到索引键值序列[1,500,700,750,1000,1500],将该索引键值序列确定为跳表结构的Level-1(第一等级),基于Level-1的索引键值序列,保留序列头和序列尾的情况下,每间隔一个主键标识确定一个新的索引键值,从而得到Level-2(第二等级)的索引键值序列[1,700,1000,1500],基于Level-3的索引键值序列,仅保留序列头和序列尾,则Level-3(第三等级)的索引键值序列为[1,1500]。
在一些实施例中,还可以仅将各个数据块的主键标识所构成的索引键值序列获取为跳表结构,也即是每个跳表结构仅包括一个等级,从而简化了定位历史态数据过程中的嵌套程度,提高了定位历史态数据的效率。
503、第一设备上的单机数据库***根据该待复制的历史态数据的主键区间,在该跳表结构中查找不大于该主键区间的区间头的最大索引键值。
在上述过程中,单机数据库***可以先按照预设规则从历史表空间中确定待复制的历史态数据,获取该待复制的历史态数据的主键标识,从而根据该待复制的历史态数据的主键区间(也即是主键标识所指示的区间)确定不大于该主键区间的区间头的最大索引键值。
可选地,该预设规则可以是:按照历史表空间中各个历史态数据的时间戳顺序,将距离当前时刻最远的第一预设数量个历史态数据确定为待复制的历史态数据。其中,该第一预设数量为大于0的正整数。
可选地,该预设规则还可以是:按照历史表空间中各个历史态数据的事务标识顺序,将与当前最小事务标识差值最大的第二预设数量个历史态数据确定为待复制的历史态数据。其中,该第二预设数量为大于0的正整数。
504、第一设备上的单机数据库***根据该待复制的历史态数据的主键区间,在该跳表结构中查找不小于该主键区间的区间尾的最小索引键值。
上述步骤504与步骤503类似,在此不做赘述。
在一些实施例中,如果跳表结构中包括多个等级,则可以从索引键值最稀疏的等级开始执行上述步骤503-504所执行的操作,确定在最稀疏的等级中的主键范围,进一步地,在第二稀疏的等级中,从与该主键范围所对应的索引键值的子序列开始执行与上述步骤503-504类似的操作,重复执行直到定位到最稠密的等级所指示的索引键值的子序列。
基于上述步骤502中示例的跳表结构,单机数据库***可以按照事务标识顺序,将500个历史态数据确定为待复制的历史态数据,获取该待复制的历史态数据的主键区间[756,1256],先从Level-3(索引键值序列为[1,1500])开始,确定不大于该主键区间的区间头756的最大索引键值1,确定不小于该主键区间的区间尾1256的最小索引键值1500,从而可以获取Level-2中与[1,1500]对应的索引键值的子序列为[1,700,1000,1500],在该序列中,确定不大于该主键区间的区间头756的最大索引键值700,确定不小于该主键区间的区间尾1256的最小索引键值1500,从而可以获取Level-1中与[700,1500]所对应的索引键值的子序列[700,750,1000,1500],在该序列中,确定不大于该主键区间的区间头756的最大索引键值750,确定不小于该主键区间的区间尾1256的最小索引键值1500,由于Level-1是跳表结构中最稠密的等级,从而可以确定最终的区间为[750,1500]。
505、第一设备上的单机数据库***基于该最大索引键值和该最小索引键值构成的区间,确定与该区间相对应的至少一个数据块。
在上述步骤505中,单机数据库***可以根据主键标识的区间与数据块的映射关系,确定与该区间相对应的至少一个数据块,从而通过跳表结构这种粗粒度的稀疏索引,避免了在定位待复制的历史态数据时对每一个数据块都进行遍历扫描,从而加速了对历史态数据进行读取的效率,保证了对历史态数据的并行化处理。
例如,基于上述示例,如图6所示,最大索引键值750和最小索引键值1500所构成的区间[750,1500],对应于数据块2.2(block 2.2)、数据块3.1(block 3.1)和数据块3.2(block 3.2)。
506、第一设备上的单机数据库***从该至少一个数据块中,获取该待复制历史态数据。
在上述过程中,单机数据库***可以直接将该至少一个数据块中所包含的所有数据获取为该历史态数据。通过上述步骤503-506,单机数据库***可以基于该跳表结构,定位到待复制的历史态数据,获取该历史态数据。
在一些实施例中,单机数据库***还可以不构建跳表结构,而是对整个历史表空间的每个数据块进行逐个扫描,从而获取该历史态数据,简化了获取历史态数据的处理逻辑。
在上述步骤501-506中,当单机数据库***满足数据转移条件时,从该单机数据库***中,获取待复制的历史态数据,从而便于基于该历史态数据进行数据处理。
507、第一设备上的单机数据库***以数据块为单位,对该历史态数据进行复制,得到该历史态数据的副本数据。
在上述过程中,该单机数据库***可以逐一读取该至少一个数据块,以读取到每个数据块为单位,对该历史态数据进行复制,得到历史态数据的副本数据,从而加快了数据复制的速度。
可选地,单机数据库***还可以读取该至少一个数据块中该历史态数据所在的至少一个数据页,以读取到的每个数据页为单位,对该历史态数据进行复制,得到历史态数据的副本数据,当然,还可以以数据区间、数据段等为单位进行复制,本发明实施例不对历史态数据的复制单位进行具体限定。
508、第一设备上的单机数据库***对该历史态数据的元信息进行复制,得到该元信息的副本数据。
在上述过程中,该单机数据库***可以根据该历史态数据,定位该历史态数据的元信息,获取该历史态数据的元信息,从而对该元信息进行复制,得到该元信息的副本数据。
509、第一设备上的单机数据库***对数据关系信息进行复制,得到该数据关系信息的副本数据,该数据关系信息用于表示该元信息与该历史态数据对应的当前态数据所属表之间的关系。
在上述过程中,该单机数据库***可以根据该历史态数据,定位与该历史态数据对应的数据关系信息,获取该数据关系信息,从而对该数据关系信息进行复制,得到该数据关系信息的副本数据。
510、第一设备上的单机数据库***将该历史态数据的副本数据、该元信息的副本数据和该数据关系信息的副本数据作为副本数据,复制至第二设备上的集群数据库***。
上述步骤510与上述步骤402类似,在此不作赘述。
511、在第一设备上的单机数据库***向该第二设备上的集群数据库***复制的过程中,发送该历史态数据的数据摘要,该数据摘要用于指示该集群数据库***在接收到该历史态数据后进行数据校验。
在上述步骤511中,在向该集群数据库***复制的过程中,单机数据库***可以先生成该历史态数据的数据摘要,从而向该集群数据库***发送该历史态数据的数据摘要,以促使集群数据库***执行数据校验,增加了数据传输的安全性。
在上述生成数据摘要的过程中,可以通过消息摘要算法,对该历史态数据进行加密,以得到该历史态数据的数据摘要。可选地,该消息摘要算法可以是MD5算法,也可以是SHA-1算法,本发明实施例不对该消息摘要算法进行具体限定。
在一些实施例中,单机数据库***还可以不执行步骤511-512,而是在执行步骤510后直接执行下述步骤513,从而不向集群数据库***发送该历史态数据的数据摘要,从而加快了数据复制的速度,简化了数据处理的流程。
512、当第二设备上的集群数据库***接收到该历史态数据的数据摘要时,获取副本数据中的历史态数据的数据摘要,当比对确定两方的数据摘要相同时,确定复制成功。
在上述过程中,当集群数据库***接收到该历史态数据的数据摘要时,可以通过消息摘要算法对第二设备上存储的副本数据中的历史态数据进行加密,从而得到该副本数据中的历史态数据的数据摘要,对两方的数据摘要进行正则匹配,当匹配通过时,可以认为两方的数据摘要相同,确定复制成功,执行下述步骤513,当匹配失败时,可以认为复制过程中发生异常,确定复制失败。
需要说明的是,集群数据库***需要和单机数据库***采用相同的消息摘要算法,才能够达到利用数据摘要进行安全性验证的目的。
在一些实施例中,当集群数据库***存储有多份副本数据时,集群数据库***需要对每份副本数据中的历史态数据的数据摘要进行比对,当该多份副本数据之间的数据摘要相同,且与接收到的历史态数据的数据摘要相同时,确定复制成功。
在上述步骤511-512中,通过对两方的数据摘要进行比对,构建了复制后进行自检的机制,增加了数据复制过程的安全性。
在一些实施例中,该单机数据库***和该集群数据库***各自保存有该历史态数据的数据摘要,当比对确定两方的数据摘要不同时进行告警,可以定期进行数据摘要的比对,从而增加了历史态数据处理过程的安全性。
在一些实施例中,当集群数据库***中的任一副本数据的数据摘要与单机数据库***保存的数据摘要不同时,可以由技术人员检测发生异常的副本数据,当该发生异常的副本数据为集群数据库***中存储的副本数据时,集群数据库***可以执行上述步骤501-512所执行的操作,从而将单机数据库***中的历史态数据、历史态数据的元信息和数据关系信息重新复制到该集群数据库***,对异常的副本数据进行覆盖,可选地,当单机数据库***删除了该历史态数据和该元信息时,可以由分布式集群设备中任一经由技术人员确定为正常的副本数据所在的设备,执行上述步骤501-512中由单机数据库***所执行的操作,从而对异常的副本数据进行覆盖。
在一些实施例中,当技术人员确定该发生异常的数据为单机数据库***中保存的历史态数据时,单机数据库***可以对该异常历史态数据进行恢复,在进行恢复时,可以执行与上述步骤501-512类似的操作,只不过是由集群数据库***向单机数据库***发送副本数据,在此不作赘述。
513、在复制成功时,允许该第一设备上的单机数据库***响应于数据库引擎的删除操作,删除该单机数据库***中存储的该历史态数据和该元信息。
上述步骤513与上述步骤403类似,在此不作赘述。
在一些实施例中,在复制成功时,第一设备允许该单机数据库***进行脱机操作。
在一些实施例中,集群数据库***可以通过重做日志(REDO LOG)记录复制过程中的操作信息,从而当复制失败时,如果该集群数据库***中已存储完整的该副本数据,集群数据库***向该单机数据库***重新发送复制成功响应;当复制失败时,如果该集群数据库***中未存储完整的该副本数据,根据该操作信息对该集群数据库***中的残留副本数据进行删除。使得集群数据库***可以通过重做日志,将数据库恢复至复制前的数据状态,从而能够增加复制过程中的安全性。
需要说明的是,在一些实施例中,当该第二设备为分布式集群设备时,在采用重做日志记录操作信息的过程中,可以采用2PC或Paxos提交算法,从而保障了分布式集群设备的各个设备之间达成协议的一致性,也即是保证了该集群数据库***对历史态数据进行复制过程的原子性。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
本发明实施例提供的方法,通过当单机数据库***的任一第一设备满足数据转移条件时,从该单机数据库***中,获取待复制的历史态数据,从而基于该历史态数据,将副本数据复制至集群数据库***,该副本数据包括该历史态数据、该历史态数据的元信息以及数据关系信息,进而在复制成功时,允许该单机数据库***响应于数据库引擎的删除操作,删除该单机数据库***中存储的该历史态数据和该元信息,提供了对历史态数据进行处理的数据安全策略,当将单机数据库***内的副本数据成功复制到集群数据库***后,才允许删除历史态数据和元信息,节约了单机数据库***的存储空间,避免了对历史态数据的恶意损毁,提升了历史态数据的安全性。
进一步地,在读取历史态数据时,通过构建跳表结构,能够快速定位到待复制的历史态数据所在的数据块,从而提高了索引效率,也就提升了获取历史态数据效率。进一步地,将最小事务ID作为跳表结构的主键标识,从而能够唯一标识表空间的数据块。
进一步地,集群数据库***通过REDO LOG记录复制过程中的操作信息,当复制失败时,将历史态数据恢复至复制前的数据状态,保证了复制过程中的原子性,提升了复制过程中的安全性。
进一步地,当满足数据转移条件时,单机数据库***与集群数据库***建立通信连接,当该数据转移条件为***时间到达预设时间时,能够定时建立通信连接,从而按照时间规律进行历史态数据复制,便于归类和查找,进一步地,当该数据转移条件为单机数据库***中历史态数据占该单机数据库***所在存储空间的比例大于比例阈值时,从而能够及时对历史态数据进行复制,在复制成功后可以删除该历史态数据,能够及时节约单机数据库***的磁盘空间。
进一步地,单机数据库***通过向集群数据库***发送历史态数据的数据摘要,以促使集群数据库***执行数据校验,增加了数据传输的安全性。
图7是本发明实施例提供的一种历史态数据处理装置的结构示意图,参见图7,该装置包括获取模块701、复制模块702和删除模块703:
获取模块701,用于当单机数据库***的任一第一设备满足数据转移条件时,从该单机数据库***中,获取待复制的历史态数据;
复制模块702,用于基于该历史态数据,将副本数据复制至集群数据库***,该副本数据包括该历史态数据、该历史态数据的元信息以及数据关系信息,该数据关系信息用于表示该元信息与该历史态数据对应的当前态数据所属表之间的关系;
删除模块703,用于在复制成功时,允许该单机数据库***响应于数据库引擎的删除操作,删除该单机数据库***中存储的该历史态数据和该元信息。
本发明实施例提供的装置,通过当单机数据库***的任一第一设备满足数据转移条件时,从该单机数据库***中,获取待复制的历史态数据,从而基于该历史态数据,将副本数据复制至集群数据库***,该副本数据包括该历史态数据、该历史态数据的元信息以及数据关系信息,进而在复制成功时,允许该单机数据库***响应于数据库引擎的删除操作,删除该单机数据库***中存储的该历史态数据和该元信息,提供了对历史态数据进行处理的数据安全策略,当将单机数据库***内的副本数据成功复制到集群数据库***后,才允许删除历史态数据和元信息,节约了单机数据库***的存储空间,避免了对历史态数据的恶意损毁,提升了历史态数据的安全性。
在一种可能实施方式中,该复制模块702还用于:
以数据块为单位,对该历史态数据进行复制,得到该历史态数据的副本数据;
对该历史态数据的元信息进行复制,得到该元信息的副本数据;
对该数据关系信息进行复制,得到该数据关系信息的副本数据;
将该历史态数据的副本数据、该元信息的副本数据和该数据关系信息的副本数据作为该副本数据复制至该集群数据库***。
在一种可能实施方式中,基于图7的装置组成,该获取模块701包括:
构建单元,用于在存储该历史态数据的数据表中,以每个数据块中的主键标识作为索引键值,构建跳表结构,该主键标识为数据块中的最小事务标识或最小事务创建时间戳,该跳表结构包括不连续的索引键值;
定位获取单元,用于基于该跳表结构,定位到该历史态数据,获取该历史态数据。
在一种可能实施方式中,基于图7的装置组成,该定位获取单元还用于:
根据该历史态数据的主键区间,在该跳表结构中查找不大于该主键区间的区间头的最大索引键值;
根据该历史态数据的主键区间,在该跳表结构中查找不小于该主键区间的区间尾的最小索引键值;
基于该最大索引键值和该最小索引键值构成的区间,确定与该区间相对应的至少一个数据块;
从该至少一个数据块中,获取该历史态数据。
在一种可能实施方式中,基于图7的装置组成,该装置还包括下述任一项或至少两项的组合:
在复制成功时,允许该单机数据库***进行脱机操作;
当该单机数据库***与该集群数据库***处于未联机状态,则基于该未联机状态进行告警;
在向该集群数据库***复制的过程中,发送该历史态数据的数据摘要,该数据摘要用于指示该集群数据库***在接收到该历史态数据后进行数据校验;
该单机数据库***和该集群数据库***各自保存有该历史态数据的数据摘要,当比对确定两方的数据摘要不同时进行告警。
在一种可能实施方式中,基于图7的装置组成,该装置还包括下述任一项或至少两项的组合:
该数据转移条件包括:***时间到达预设时间,或,该单机数据库***中的历史态数据占该单机数据库***所在存储空间的比例大于比例阈值;
在该集群数据库***中允许存储多份该副本数据;
该集群数据库***存储有至少一个单机数据库***的副本数据,对于任一副本数据,该集群数据库***允许以只读事务的方式进行查询。
在一种可能实施方式中,基于图7的装置组成,该装置还包括:
通过重做日志记录复制过程中的操作信息;
当复制失败时,如果该集群数据库***中已存储完整的该副本数据,集群数据库***向该单机数据库***重新发送复制成功响应;
当复制失败时,如果该集群数据库***中未存储完整的该副本数据,根据该操作信息对该集群数据库***中的残留副本数据进行删除。
在一种可能实施方式中,基于图7的装置组成,该装置还包括:
打开模块,用于当该任一第一设备的数据库引擎启动时,打开目标数据文件,该目标数据文件为表空间中存储有历史态数据的数据文件;
该打开模块,还用于从该表空间的目标成员中,获取该目标数据文件的文件句柄,打开该目标数据文件的文件句柄,该目标成员为该表空间中用于存储该目标数据文件的文件句柄的数据结构;
该打开模块,还用于保持该目标数据文件的文件句柄处于打开状态,直到该数据库引擎退出。
在一种可能实施方式中,基于图7的装置组成,该装置还包括:
打开获取模块,用于当该数据库引擎退出时,通过目标进程,打开该目标数据文件,获取该目标数据文件的文件句柄。
在一种可能实施方式中,该打开获取模块还用于:当该数据库引擎退出时,向该目标进程发送句柄获取信号,由该目标进程读取数据库元信息,确定该目标数据文件,打开该目标数据文件,获取该目标数据文件的文件句柄;
该打开模块还用于:当该数据库引擎启动或重启时,向该目标进程发送句柄释放信号,当该目标进行释放该目标数据文件的文件句柄,打开该目标数据文件。
在一种可能实施方式中,基于图7的装置组成,该装置还包括:
当该目标进程确定该目标数据文件打开失败时,则进行告警。
在一种可能实施方式中,基于图7的装置组成,该装置还包括下述任一项或至少两项的组合:
当该数据库引擎启动时,检测该目标进程是否启动,如果未启动,则启动该目标进程;
对所存储的历史态数据,禁止执行数据操纵语言、结构化查询语言中的删除指令以及结构化查询语言中的修改指令。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的历史态数据处理装置在处理历史态数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将计算机设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的历史态数据处理装置与历史态数据处理方法实施例属于同一构思,其具体实现过程详见历史态数据处理方法实施例,这里不再赘述。
图8是本发明实施例提供的一种计算机设备的结构示意图,该计算机设备800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessing units,CPU)801和一个或一个以上的存储器802,在一些实施例中,该计算机设备800可以是:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group AudioLayer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts GroupAudio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。计算机设备600还可能被称为终端、服务器、用户设备、便携式终端、膝上型终端、台式终端等其他名称。
其中,该存储器802中存储有至少一条指令,该至少一条指令由该处理器801加载并执行以实现上述各个历史态数据处理方法实施例提供的方法。当然,该计算机设备还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该计算机设备还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括至少一条指令的存储器,上述至少一条指令可由终端中的处理器执行以完成上述实施例中的历史态数据处理方法。例如,该计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (26)
1.一种历史态数据处理方法,其特征在于,所述方法包括:
当单机数据库***的任一第一设备满足数据转移条件时,从所述单机数据库***中,获取待复制的历史态数据,所述历史态数据为当前活跃事务列表中最小的事务之前的事务生成的数据;
基于所述历史态数据,将副本数据复制至集群数据库***,所述副本数据包括所述历史态数据、所述历史态数据的元信息以及数据关系信息,所述数据关系信息用于表示所述元信息与所述历史态数据对应的当前态数据所属表之间的关系;
在复制成功时,允许所述单机数据库***响应于数据库引擎的删除操作,删除所述单机数据库***中存储的所述历史态数据和所述元信息。
2.根据权利要求1所述的方法,其特征在于,所述基于所述历史态数据,将副本数据复制至集群数据库***包括:
以数据块为单位,对所述历史态数据进行复制,得到所述历史态数据的副本数据;
对所述历史态数据的元信息进行复制,得到所述元信息的副本数据;
对所述数据关系信息进行复制,得到所述数据关系信息的副本数据;
将所述历史态数据的副本数据、所述元信息的副本数据和所述数据关系信息的副本数据作为所述副本数据复制至所述集群数据库***。
3.根据权利要求1所述的方法,其特征在于,所述从所述单机数据库***中,获取待复制的历史态数据包括:
在存储所述历史态数据的数据表中,以每个数据块中的主键标识作为索引键值,构建跳表结构,所述主键标识为数据块中的最小事务标识或最小事务创建时间戳,所述跳表结构包括不连续的索引键值;
基于所述跳表结构,定位到所述历史态数据,获取所述历史态数据。
4.根据权利要求3所述的方法,其特征在于,所述基于所述跳表结构,定位到所述历史态数据,获取所述历史态数据包括:
根据所述历史态数据的主键区间,在所述跳表结构中查找不大于所述主键区间的区间头的最大索引键值;
根据所述历史态数据的主键区间,在所述跳表结构中查找不小于所述主键区间的区间尾的最小索引键值;
基于所述最大索引键值和所述最小索引键值构成的区间,确定与所述区间相对应的至少一个数据块;
从所述至少一个数据块中,获取所述历史态数据。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括下述任一项或至少两项的组合:
在复制成功时,允许所述单机数据库***进行脱机操作;
当所述单机数据库***与所述集群数据库***处于未联机状态,则基于所述未联机状态进行告警;
在向所述集群数据库***复制的过程中,发送所述历史态数据的数据摘要,所述数据摘要用于指示所述集群数据库***在接收到所述历史态数据后进行数据校验;
所述单机数据库***和所述集群数据库***各自保存有所述历史态数据的数据摘要,当比对确定两方的数据摘要不同时进行告警。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括下述任一项或至少两项的组合:
所述数据转移条件包括:***时间到达预设时间,或,所述单机数据库***中的历史态数据占所述单机数据库***所在存储空间的比例大于比例阈值;
在所述集群数据库***中允许存储多份所述副本数据;
所述集群数据库***存储有至少一个单机数据库***的副本数据,对于任一副本数据,所述集群数据库***允许以只读事务的方式进行查询。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过重做日志记录复制过程中的操作信息;
当复制失败时,如果所述集群数据库***中已存储完整的所述副本数据,所述集群数据库***向所述单机数据库***重新发送复制成功响应;
当复制失败时,如果所述集群数据库***中未存储完整的所述副本数据,根据所述操作信息对所述集群数据库***中的残留副本数据进行删除。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述任一第一设备的数据库引擎启动时,打开目标数据文件,所述目标数据文件为表空间中存储有历史态数据的数据文件;
从所述表空间的目标成员中,获取所述目标数据文件的文件句柄,打开所述目标数据文件的文件句柄,所述目标成员为所述表空间中用于存储所述目标数据文件的文件句柄的数据结构;
保持所述目标数据文件的文件句柄处于打开状态,直到所述数据库引擎退出。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
当所述数据库引擎退出时,通过目标进程,打开所述目标数据文件,获取所述目标数据文件的文件句柄。
10.根据权利要求9所述的方法,其特征在于,所述当所述数据库引擎退出时,通过目标进程,打开所述目标数据文件,获取所述目标数据文件的文件句柄包括:
当所述数据库引擎退出时,向所述目标进程发送句柄获取信号,由所述目标进程读取数据库元信息,确定所述目标数据文件,打开所述目标数据文件,获取所述目标数据文件的文件句柄;
当所述任一第一设备的数据库引擎启动时,打开目标数据文件包括:
当所述数据库引擎启动或重启时,向所述目标进程发送句柄释放信号,当所述目标进行释放所述目标数据文件的文件句柄,打开所述目标数据文件。
11.根据权利要求9或10所述的方法,其特征在于,所述方法还包括:
当所述目标进程确定所述目标数据文件打开失败时,则进行告警。
12.根据权利要求9所述的方法,其特征在于,所述方法还包括下述任一项或至少两项的组合:
当所述数据库引擎启动时,检测所述目标进程是否启动,如果未启动,则启动所述目标进程;
对所存储的历史态数据,禁止执行数据操纵语言、结构化查询语言中的删除指令以及结构化查询语言中的修改指令。
13.一种历史态数据处理装置,其特征在于,所述装置包括:
获取模块,用于当单机数据库***的任一第一设备满足数据转移条件时,从所述单机数据库***中,获取待复制的历史态数据,所述历史态数据为当前活跃事务列表中最小的事务之前的事务生成的数据;
复制模块,用于基于所述历史态数据,将副本数据复制至集群数据库***,所述副本数据包括所述历史态数据、所述历史态数据的元信息以及数据关系信息,所述数据关系信息用于表示所述元信息与所述历史态数据对应的当前态数据所属表之间的关系;
删除模块,用于在复制成功时,允许所述单机数据库***响应于数据库引擎的删除操作,删除所述单机数据库***中存储的所述历史态数据和所述元信息。
14.根据权利要求13所述的装置,其特征在于,所述复制模块还用于:
以数据块为单位,对所述历史态数据进行复制,得到所述历史态数据的副本数据;
对所述历史态数据的元信息进行复制,得到所述元信息的副本数据;
对所述数据关系信息进行复制,得到所述数据关系信息的副本数据;
将所述历史态数据的副本数据、所述元信息的副本数据和所述数据关系信息的副本数据作为所述副本数据复制至所述集群数据库***。
15.根据权利要求13所述的装置,其特征在于,所述获取模块包括:
构建单元,用于在存储所述历史态数据的数据表中,以每个数据块中的主键标识作为索引键值,构建跳表结构,所述主键标识为数据块中的最小事务标识或最小事务创建时间戳,所述跳表结构包括不连续的索引键值;
定位获取单元,用于基于所述跳表结构,定位到所述历史态数据,获取所述历史态数据。
16.根据权利要求15所述的装置,其特征在于,所述定位获取单元还用于:
根据所述历史态数据的主键区间,在所述跳表结构中查找不大于所述主键区间的区间头的最大索引键值;
根据所述历史态数据的主键区间,在所述跳表结构中查找不小于所述主键区间的区间尾的最小索引键值;
基于所述最大索引键值和所述最小索引键值构成的区间,确定与所述区间相对应的至少一个数据块;
从所述至少一个数据块中,获取所述历史态数据。
17.根据权利要求13所述的装置,其特征在于,所述装置还包括下述任一项或至少两项的组合:
在复制成功时,允许所述单机数据库***进行脱机操作;
当所述单机数据库***与所述集群数据库***处于未联机状态,则基于所述未联机状态进行告警;
在向所述集群数据库***复制的过程中,发送所述历史态数据的数据摘要,所述数据摘要用于指示所述集群数据库***在接收到所述历史态数据后进行数据校验;
所述单机数据库***和所述集群数据库***各自保存有所述历史态数据的数据摘要,当比对确定两方的数据摘要不同时进行告警。
18.根据权利要求13所述的装置,其特征在于,所述装置还包括下述任一项或至少两项的组合:
所述数据转移条件包括:***时间到达预设时间,或,所述单机数据库***中的历史态数据占所述单机数据库***所在存储空间的比例大于比例阈值;
在所述集群数据库***中允许存储多份所述副本数据;
所述集群数据库***存储有至少一个单机数据库***的副本数据,对于任一副本数据,所述集群数据库***允许以只读事务的方式进行查询。
19.根据权利要求13所述的装置,其特征在于,所述装置还包括:
通过重做日志记录复制过程中的操作信息;
当复制失败时,如果所述集群数据库***中已存储完整的所述副本数据,集群数据库***向所述单机数据库***重新发送复制成功响应;
当复制失败时,如果所述集群数据库***中未存储完整的所述副本数据,根据所述操作信息对所述集群数据库***中的残留副本数据进行删除。
20.根据权利要求13所述的装置,其特征在于,所述装置还包括:
打开模块,用于当所述任一第一设备的数据库引擎启动时,打开目标数据文件,所述目标数据文件为表空间中存储有历史态数据的数据文件;
所述打开模块,还用于从所述表空间的目标成员中,获取所述目标数据文件的文件句柄,打开所述目标数据文件的文件句柄,所述目标成员为所述表空间中用于存储所述目标数据文件的文件句柄的数据结构;
所述打开模块,还用于保持所述目标数据文件的文件句柄处于打开状态,直到所述数据库引擎退出。
21.根据权利要求20所述的装置,其特征在于,所述装置还包括:
打开获取模块,用于当所述数据库引擎退出时,通过目标进程,打开所述目标数据文件,获取所述目标数据文件的文件句柄。
22.根据权利要求21所述的装置,其特征在于,所述打开获取模块还用于:当所述数据库引擎退出时,向所述目标进程发送句柄获取信号,由所述目标进程读取数据库元信息,确定所述目标数据文件,打开所述目标数据文件,获取所述目标数据文件的文件句柄;
所述打开模块还用于:当所述数据库引擎启动或重启时,向所述目标进程发送句柄释放信号,当所述目标进行释放所述目标数据文件的文件句柄,打开所述目标数据文件。
23.根据权利要求21或22所述的装置,其特征在于,所述装置还包括:
当所述目标进程确定所述目标数据文件打开失败时,则进行告警。
24.根据权利要求21所述的装置,其特征在于,所述装置还包括下述任一项或至少两项的组合:
当所述数据库引擎启动时,检测所述目标进程是否启动,如果未启动,则启动所述目标进程;
对所存储的历史态数据,禁止执行数据操纵语言、结构化查询语言中的删除指令以及结构化查询语言中的修改指令。
25.一种计算机设备,其特征在于,所述计算机设备包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条指令,所述至少一条指令由所述一个或多个处理器加载并执行以实现如权利要求1至权利要求12任一项所述的历史态数据处理方法所执行的操作。
26.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如权利要求1至权利要求12任一项所述的历史态数据处理方法所执行的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910170575.0A CN109902127B (zh) | 2019-03-07 | 2019-03-07 | 历史态数据处理方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910170575.0A CN109902127B (zh) | 2019-03-07 | 2019-03-07 | 历史态数据处理方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109902127A CN109902127A (zh) | 2019-06-18 |
CN109902127B true CN109902127B (zh) | 2020-12-25 |
Family
ID=66946715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910170575.0A Active CN109902127B (zh) | 2019-03-07 | 2019-03-07 | 历史态数据处理方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109902127B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110209734B (zh) | 2019-05-05 | 2022-11-18 | 深圳市腾讯计算机***有限公司 | 数据复制方法、装置、计算机设备及存储介质 |
CN111291409B (zh) * | 2020-02-03 | 2022-12-20 | 支付宝(杭州)信息技术有限公司 | 一种数据监控方法及装置 |
CN111291424B (zh) * | 2020-02-19 | 2023-03-24 | 望海康信(北京)科技股份公司 | 标识号生成方法、装置、计算机设备及存储介质 |
CN111680019B (zh) * | 2020-04-29 | 2023-11-24 | 杭州趣链科技有限公司 | 一种区块链的数据扩容方法及其装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101714241A (zh) * | 2009-12-03 | 2010-05-26 | 浙江省电力公司 | 一种电力调度大屏输电网单线潮流图自动生成*** |
CN103164219A (zh) * | 2013-01-08 | 2013-06-19 | 华中科技大学 | 去中心化架构中使用多类型副本的分布式事务处理*** |
CN103699960A (zh) * | 2013-12-11 | 2014-04-02 | 国家电网公司 | 一种中压配电网运行态势可视化方法 |
CN105980991A (zh) * | 2014-02-17 | 2016-09-28 | 斯特拉托斯卡莱有限公司 | 在多个计算节点之间的存储资源共享 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10168941B2 (en) * | 2016-02-19 | 2019-01-01 | International Business Machines Corporation | Historical state snapshot construction over temporally evolving data |
-
2019
- 2019-03-07 CN CN201910170575.0A patent/CN109902127B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101714241A (zh) * | 2009-12-03 | 2010-05-26 | 浙江省电力公司 | 一种电力调度大屏输电网单线潮流图自动生成*** |
CN103164219A (zh) * | 2013-01-08 | 2013-06-19 | 华中科技大学 | 去中心化架构中使用多类型副本的分布式事务处理*** |
CN103699960A (zh) * | 2013-12-11 | 2014-04-02 | 国家电网公司 | 一种中压配电网运行态势可视化方法 |
CN105980991A (zh) * | 2014-02-17 | 2016-09-28 | 斯特拉托斯卡莱有限公司 | 在多个计算节点之间的存储资源共享 |
Also Published As
Publication number | Publication date |
---|---|
CN109902127A (zh) | 2019-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109902127B (zh) | 历史态数据处理方法、装置、计算机设备及存储介质 | |
US11704290B2 (en) | Methods, devices and systems for maintaining consistency of metadata and data across data centers | |
US10503699B2 (en) | Metadata synchronization in a distrubuted database | |
US8108343B2 (en) | De-duplication and completeness in multi-log based replication | |
CN109739935B (zh) | 数据读取方法、装置、电子设备以及存储介质 | |
US7933872B2 (en) | Database backup, refresh and cloning system and method | |
US7117229B2 (en) | Method and system for online reorganization of databases | |
US20090210429A1 (en) | System and method for asynchronous update of indexes in a distributed database | |
CN109992628B (zh) | 数据同步的方法、装置、服务器及计算机可读存储介质 | |
US9922086B1 (en) | Consistent query of local indexes | |
CN112084161B (zh) | 基于数据库的数据处理方法、装置以及可读存储介质 | |
US11531594B2 (en) | Data recovery method and apparatus, server, and computer-readable storage medium | |
EP3391243A1 (en) | Promoted properties in relational structured data | |
US11728976B1 (en) | Systems and methods for efficiently serving blockchain requests using an optimized cache | |
US11960363B2 (en) | Write optimized, distributed, scalable indexing store | |
EP3391249A1 (en) | Replication of structured data records among partitioned data storage spaces | |
US20230110826A1 (en) | Log execution method and apparatus, computer device and storage medium | |
CN109783578B (zh) | 数据读取方法、装置、电子设备以及存储介质 | |
WO2022242372A1 (zh) | 对象处理方法、装置、计算机设备和存储介质 | |
US20190196918A1 (en) | Methods and systems of operating a database management system dmbs in a strong consistency mode | |
Kang et al. | Remus: Efficient live migration for distributed databases with snapshot isolation | |
US10817507B2 (en) | Document store export/import | |
CN116089359A (zh) | 数据库快照的生成方法、装置、电子设备和介质 | |
CN112463447B (zh) | 一种基于分布式数据库实现物理备份的优化方法 | |
CN117131023B (zh) | 数据表处理方法、装置、计算机设备和可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |