CN117033398A - 一种基于dolt数据库的数据闪回查询方法及装置 - Google Patents

一种基于dolt数据库的数据闪回查询方法及装置 Download PDF

Info

Publication number
CN117033398A
CN117033398A CN202311298506.0A CN202311298506A CN117033398A CN 117033398 A CN117033398 A CN 117033398A CN 202311298506 A CN202311298506 A CN 202311298506A CN 117033398 A CN117033398 A CN 117033398A
Authority
CN
China
Prior art keywords
data
index
determining
version identifier
flashback
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.)
Granted
Application number
CN202311298506.0A
Other languages
English (en)
Other versions
CN117033398B (zh
Inventor
杨松轩
李劲松
相文超
朱江江
田雨
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Lab
Original Assignee
Zhejiang Lab
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Lab filed Critical Zhejiang Lab
Priority to CN202311298506.0A priority Critical patent/CN117033398B/zh
Publication of CN117033398A publication Critical patent/CN117033398A/zh
Application granted granted Critical
Publication of CN117033398B publication Critical patent/CN117033398B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • G06F16/2329Optimistic concurrency control using versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书公开了一种基于dolt数据库的数据闪回查询方法及装置,在指定时刻,将源数据库中的数据同步至dolt数据库,并确定各增量数据表,针对每个增量数据表,确定该增量数据表中的增量数据,在dolt数据库中,建立包括所有增量数据的增量数据集,建立该增量数据集的数据版本标识,响应于闪回查询请求,根据该闪回查询请求,确定所需查询的数据的数据版本标识,以根据数据版本标识,确定该闪回查询请求查询的数据。本方法将从源数据库同步至支持闪回查询dolt数据库中的增量数据建立在数据集中,并建立对应的版本标识,以通过闪回查询所需数据。由于不清除增量数据,因此,闪回查询可查询过去任意时刻的数据的值。

Description

一种基于dolt数据库的数据闪回查询方法及装置
技术领域
本说明书涉及计算机领域,尤其涉及一种基于dolt数据库的数据闪回查询方法及装置。
背景技术
随着互联网技术的发展及用户的需求变化,计算机需要存储的数据也越来越多。在执行各类任务时,数据库中的数据可能会发生相应的变化,如增加、删除、更新等。但由于任务的需求不同,对于某一数据,可能需要闪回查询,即查询该数据在过去某一时刻的值。
通常,数据库中会备份有各数据的若干个不同时刻的值,但会进行定期清除,因此,若需要查询的数据在某一时刻的值已被清除,则无法再获取。也就是说,目前仅能查询一定时间范围内的数据的值。此外,针对每个不同的数据库,该数据库可能不支持闪回查询。
基于此,本说明书提供一种基于dolt数据库的数据闪回查询方法。
发明内容
本说明书提供一种基于dolt数据库的数据闪回查询方法、装置、存储介质及电子设备,以部分的解决现有技术存在的上述问题。
本说明书采用下述技术方案:
本说明书提供了一种基于dolt数据库的数据闪回查询方法,包括:
在指定时刻到来时,将源数据库中的数据同步至dolt数据库;
在同步的数据中确定各增量数据表;
针对每个增量数据表,确定该增量数据表中的增量数据;
在所述dolt数据库中,建立包括所有增量数据的增量数据集;
建立所述增量数据集的数据版本标识;
响应于闪回查询请求,根据所述闪回查询请求,确定所需查询的数据的数据版本标识,作为待查询版本标识;
根据所述待查询版本标识,确定所述闪回查询请求查询的数据。
可选地,在指定时刻到来时,将源数据库中的数据同步至dolt数据库,具体包括:
根据预设周期,在当前周期的结束时刻到来时,将源数据库中的数据同步至dolt数据库。
可选地,建立所述增量数据集的数据版本标识,具体包括:
确定建立所述增量数据集的时间戳;
根据所述时间戳及哈希算法,建立所述增量数据集的数据版本标识。
可选地,建立所述增量数据集的数据版本标识之后,所述方法还包括:
针对每个增量数据,确定该增量数据经过指定操作的类型,其中,所述指定操作的类型包括增加、删除、更新中的一种;
根据该增量数据的指定操作的类型,建立该增量数据的数据索引;
针对每个增量数据,根据该增量数据的数据索引,建立该增量数据的数据索引与所述增量数据集的数据版本标识的映射关系,并存储于所述dolt数据库中。
可选地,根据该增量数据的指定操作的类型,建立该增量数据的数据索引,具体包括:
根据该增量数据的指定操作的类型,确定该增量数据对应的Json字符串;
根据所述Json字符串,确定建立该增量数据的数据索引。
可选地,根据该增量数据的数据索引,建立该增量数据的数据索引与所述增量数据集的数据版本标识的映射关系,具体包括:
根据该增量数据的数据索引,确定该增量数据的数据索引的索引版本标识;
建立所述索引版本标识与所述增量数据集的数据版本标识的映射关系。
可选地,根据该增量数据的数据索引,确定该增量数据的数据索引的索引版本标识,具体包括:
将该增量数据的数据索引发送至git库中;
接收所述git库根据所述数据索引输出的所述数据索引的索引版本标识。
可选地,将源数据库中的数据同步至dolt数据库之前,所述方法还包括:
针对dolt数据库,建立用于执行查询最新数据任务的主分支;并建立工作分支,所述工作分支用于在指定时刻到来时,将源数据库中的数据同步至dolt数据库,在同步的数据中确定各增量数据表,针对每个增量数据表,确定该增量数据表中的增量数据,在所述dolt数据库中,建立包括所有增量数据的增量数据集,建立所述增量数据集的数据版本标识。
可选地,确定该增量数据表中的增量数据之后,所述方法还包括:
通过工作分支,将各增量数据合并至所述主分支执行查询最新数据任务时所查询的完整数据集中。
可选地,所述方法还包括:
针对dolt数据库,建立用于执行查询最新数据任务的主分支;
响应于闪回查询请求,根据所述闪回查询请求,确定所需查询的数据的数据版本标识,作为待查询版本标识,根据所述待查询版本标识,确定所述闪回查询请求查询的数据,具体包括:
响应于闪回查询请求,建立闪回查询分支,通过所述闪回查询分支,根据所述闪回查询请求,确定所需查询的数据的数据版本标识,作为待查询版本标识,根据所述待查询版本标识,确定所述闪回查询请求查询的数据。
可选地,根据所述闪回查询请求,确定所需查询的数据的数据版本标识,作为待查询版本标识,根据所述待查询版本标识,确定所述闪回查询请求查询的数据,具体包括:
确定所述闪回查询请求中所需查询的数据版本标识,作为待查询版本标识;
根据所述待查询版本标识及所述映射关系,确定与所述待查询版本标识映射的索引版本标识;
根据所述索引版本标识,确定所述索引版本标识对应的数据索引;
根据所述索引版本标识对应的数据索引,在所述dolt数据库中,确定所述闪回查询请求中所需查询的数据。
可选地,根据所述闪回查询请求,确定所需查询的数据的数据版本标识,作为待查询版本标识,根据所述待查询版本标识,确定所述闪回查询请求查询的数据,具体包括:
确定所述闪回查询请求中的时间戳;
根据所述闪回查询请求中的时间戳,确定与所述闪回查询请求中的时间戳匹配的数据版本标识,作为待查询版本标识;
根据所述待查询版本标识及所述映射关系,确定与所述待查询版本标识映射的索引版本标识;
根据所述索引版本标识,确定所述索引版本标识对应的数据索引;
根据所述索引版本标识对应的数据索引,在所述dolt数据库中,确定所述闪回查询请求中所需查询的数据。
可选地,根据所述闪回查询请求,确定所需查询的数据的数据版本标识,作为待查询版本标识,根据所述待查询版本标识,确定所述闪回查询请求查询的数据,具体包括:
确定所述闪回查询请求中的时间区间;
根据所述时间区间,确定在所述时间区间内的所有数据版本标识,作为待查询版本标识;
针对每个待查询版本标识,根据该待查询版本标识及所述映射关系,确定与该待查询版本标识映射的索引版本标识;
针对每个索引版本标识,根据该索引版本标识,确定该索引版本标识对应的数据索引;
根据该索引版本标识对应的数据索引,在所述dolt数据库中,确定所述闪回查询请求中所需查询的数据。
本说明书提供了一种基于dolt数据库的数据闪回查询装置,包括:
同步模块,用于在指定时刻到来时,将源数据库中的数据同步至dolt数据库;
增量数据表确定模块,用于在同步的数据中确定各增量数据表;
增量数据确定模块,用于针对每个增量数据表,确定该增量数据表中的增量数据;
增量数据集建立模块,用于在所述dolt数据库中,建立包括所有增量数据的增量数据集;
数据版本标识建立模块,用于建立所述增量数据集的数据版本标识;
待查询版本标识确定模块,用于响应于闪回查询请求,根据所述闪回查询请求,确定所需查询的数据的数据版本标识,作为待查询版本标识;
查询模块,用于根据所述待查询版本标识,确定所述闪回查询请求查询的数据。
可选地,所述同步模块具体用于,根据预设周期,在当前周期的结束时刻到来时,将源数据库中的数据同步至dolt数据库。
可选地,所述数据版本标识建立模块具体用于,确定建立所述增量数据集的时间戳;根据所述时间戳及哈希算法,建立所述增量数据集的数据版本标识。
可选地,所述装置还包括:
映射关系确定模块,用于建立所述增量数据集的数据版本标识之后,针对每个增量数据,确定该增量数据经过指定操作的类型,其中,所述指定操作的类型包括增加、删除、更新中的一种;根据该增量数据的指定操作的类型,建立该增量数据的数据索引;针对每个增量数据,根据该增量数据的数据索引,建立该增量数据的数据索引与所述增量数据集的数据版本标识的映射关系,并存储于所述dolt数据库中。
可选地,所述映射关系确定模块具体用于,根据该增量数据的指定操作的类型,确定该增量数据对应的Json字符串;根据所述Json字符串,确定建立该增量数据的数据索引。
可选地,所述映射关系确定模块具体用于,根据该增量数据的数据索引,确定该增量数据的数据索引的索引版本标识;建立所述索引版本标识与所述增量数据集的数据版本标识的映射关系。
可选地,所述映射关系确定模块具体用于,将该增量数据的数据索引发送至git库中;接收所述git库根据所述数据索引输出的所述数据索引的索引版本标识。
可选地,所述装置还包括:
分支建立模块,用于将源数据库中的数据同步至dolt数据库之前,针对dolt数据库,建立用于执行查询最新数据任务的主分支;并建立工作分支,所述工作分支用于在指定时刻到来时,将源数据库中的数据同步至dolt数据库,在同步的数据中确定各增量数据表,针对每个增量数据表,确定该增量数据表中的增量数据,在所述dolt数据库中,建立包括所有增量数据的增量数据集,建立所述增量数据集的数据版本标识。
可选地,所述装置还包括:
增量数据合并模块,用于确定该增量数据表中的增量数据之后,通过工作分支,将各增量数据合并至所述主分支执行查询最新数据任务时所查询的完整数据集中。
可选地,所述装置还包括:
闪回查询模块用于:针对dolt数据库,建立用于执行查询最新数据任务的主分支;响应于闪回查询请求,建立闪回查询分支,通过所述闪回查询分支,根据所述闪回查询请求,确定所需查询的数据的数据版本标识,作为待查询版本标识,根据所述待查询版本标识,确定所述闪回查询请求查询的数据。
可选地,所述闪回查询模块具体用于,确定所述闪回查询请求中所需查询的数据版本标识,作为待查询版本标识;根据所述待查询版本标识及所述映射关系,确定与所述待查询版本标识映射的索引版本标识;根据所述索引版本标识,确定所述索引版本标识对应的数据索引;根据所述索引版本标识对应的数据索引,在所述dolt数据库中,确定所述闪回查询请求中所需查询的数据。
可选地,所述闪回查询模块具体用于,确定所述闪回查询请求中的时间戳;根据所述闪回查询请求中的时间戳,确定与所述闪回查询请求中的时间戳匹配的数据版本标识,作为待查询版本标识;根据所述待查询版本标识及所述映射关系,确定与所述待查询版本标识映射的索引版本标识;根据所述索引版本标识,确定所述索引版本标识对应的数据索引;根据所述索引版本标识对应的数据索引,在所述dolt数据库中,确定所述闪回查询请求中所需查询的数据。
可选地,所述闪回查询模块具体用于,确定所述闪回查询请求中的时间区间;根据所述时间区间,确定在所述时间区间内的所有数据版本标识,作为待查询版本标识;针对每个待查询版本标识,根据该待查询版本标识及所述映射关系,确定与该待查询版本标识映射的索引版本标识;针对每个索引版本标识,根据该索引版本标识,确定该索引版本标识对应的数据索引;根据该索引版本标识对应的数据索引,在所述dolt数据库中,确定所述闪回查询请求中所需查询的数据。
本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于dolt数据库的数据闪回查询方法。
本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述基于dolt数据库的数据闪回查询方法。
本说明书采用的上述至少一个技术方案能够达到以下有益效果:
从本说明书提供的基于dolt数据库的数据闪回查询方法可以看出,本方法通过将源数据库中的数据同步至支持闪回查询的dolt数据库中,以获取增量数据,建立增量数据集及数据版本标识,以根据该数据版本标识闪回查询所需的数据的数据版本,进而在增量数据集中查询所需数据。由于dolt数据库支持闪回查询,因此,将源数据库中的数据同步至dolt数据库后,无论源数据库是否支持闪回查询,均可通过dolt数据库进行闪回查询。对于不同指定时刻的增量数据有相应的数据版本标识,并且不清除过去任意时刻的增量数据,因此,闪回查询可根据数据版本标识查询增量数据过去任意时刻的版本。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书中提供的一种基于dolt数据库的数据闪回查询方法的流程示意图;
图2为本说明书提供的闪回查询流程示意图;
图3为本说明书提供的一种基于dolt数据库的数据闪回查询装置结构的示意图;
图4为本说明书提供的一种对应于图1的电子设备的结构示意图。
具体实施方式
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1为本说明书中提供的一种基于dolt数据库的数据闪回查询方法的流程示意图,包括以下步骤:
S100:在指定时刻到来时,将源数据库中的数据同步至dolt数据库。
数据库中的数据在用于执行各类任务后,数据的数据值可能发生改变,则该数据为增量数据,且数据的数据值每改变一次,该增量数据新增一个版本。若需闪回查询增量数据的过去任意版本的值,即查询增量数据在经过指定操作之前的某个时刻的值,其中,指定操作的类型包括增加、删除、更新中的一种,则需要先确定数据库是否支持闪回查询。若支持,则通过闪回查询请求,在数据库中查询所需数据。但并非所有数据库均支持闪回查询,且支持闪回查询的数据库仅保留一定数量的增量数据的不同版本的值,因此,可能出现无法闪回查询及利用闪回查询无法查询所需数据的问题。所以,本说明书提供一种基于dolt数据库的数据闪回查询方法。
本说明书的执行主体可为用于查询数据库中的数据的服务器,也可以是其他可用于查询数据的电子设备。其中,服务器可以是单独一台设备,或者由多台设备组成的系统,即分布式服务器。为了便于说明,本说明书以服务器为执行主体,对本说明书提供的基于dolt数据库的数据闪回查询方法进行说明。
随着各类任务的执行,源数据库中的数据可能随着变化,为了记录每个数据经过指定操作后的数值,便于后续闪回查询,在指定时刻到来时,服务器将源数据库中的数据同步至dolt数据库。其中,源数据库是指执行任务所需的数据所在数据库。由于dolt数据库支持闪回查询,因此,在将源数据库中的数据同步至dolt数据库之后,无论源数据库是否支持闪回查询,服务器均可通过dolt数据库进行闪回查询。并且,指定时刻可为当前周期的结束时刻,即根据预设周期,在当前周期的结束时刻到来时,将源数据库中的数据同步至dolt数据库。当然,也可根据其他任意设置的时刻,进行数据同步操作,本说明书对此不做限制。需要说明的是,进行第一次数据同步时,需要将源数据库中的所有数据同步至dolt数据库中,再次进行数据同步时,仅将源数据库中的增量数据同步至dolt数据库中。
在本说明书一个或多个实施例中,服务器在进行数据同步操作时,可使用开源的数据库实时同步工具,如Flink CDC(Change Data Capture,CDC),Flink CDC支持实时捕获主流关系型数据库的数据变化,配置Flink CDC将数据同步到dolt数据库中。
S102:在同步的数据中确定各增量数据表。
服务器进行数据同步时,将源数据库中的所有增量数据同步至dolt数据库中,则增量数据所在的数据表即为增量数据表。
在本说明书一个或多个实施例中,在同步的数据中确定各增量数据表时,需要先进行数据库连接,由于dolt数据库支持使用MySQL的客户端连接,因此可以通过MySQL客户端连接到dolt数据库,以linux的MySQL客户端为例,连接命令是:MySQL --host 10.1.1.1-P 3306 -u root,其中“10.1.1.1”是dolt数据库服务器的IP,“3306”是dolt数据库的端口,“root”是用户名。再通过SQL命令指明需要使用的dolt数据库,假设需要使用的dolt数据库的库标识为“abc”,则SQL语句为:use abc。最后,通过dolt数据库的查询命令:select* from dolt_status,查询当前经过指定操作的数据表的表标识。需要说明的是,上述各类命令仅为本说明书的一种实施例。
S104:针对每个增量数据表,确定该增量数据表中的增量数据。
S106:在所述dolt数据库中,建立包括所有增量数据的增量数据集。
针对同一时刻同步的增量数据,可具有同一时间戳,为了便于后续根据时间相关参数查询,将同一时刻同步的增量数据建立在同一个增量数据集中。
S108:建立所述增量数据集的数据版本标识。
为了便于后续查询,服务器可建立该增量数据集的数据版本标识,后续进行闪回查询时,可根据数据版本标识,获取所需查询的数据的版本,以获取所需查询的数据。
具体的,确定建立该增量数据集的时间戳,根据该时间戳及哈希算法,建立该增量数据集的数据版本标识,即根据哈希算法将增量数据转换为哈希值,并根据哈希值及时间戳,建立该增量数据集的数据版本标识。其中,该数据版本标识可为一个32位长的包含字母和数字的字符串,也可为其他形式的可区别于其他数据版本的标识,本说明书对此不做限制。
S110:响应于闪回查询请求,根据所述闪回查询请求,确定所需查询的数据的数据版本标识,作为待查询版本标识。
S112:根据所述待查询版本标识,确定所述闪回查询请求查询的数据。
基于图1所示的基于dolt数据库的数据闪回查询方法,本方法通过将源数据库中的数据同步至支持闪回查询的dolt数据库中,以获取增量数据,建立增量数据集及数据版本标识,以根据该数据版本标识闪回查询所需的数据的数据版本,进而在增量数据集中查询所需数据。由于dolt数据库支持闪回查询,因此,将源数据库中的数据同步至dolt数据库后,无论源数据库是否支持闪回查询,均可通过dolt数据库进行闪回查询。对于不同指定时刻的增量数据有相应的数据版本标识,并且不清除过去任意时刻的增量数据,因此,闪回查询可根据数据版本标识查询增量数据过去任意时刻的版本。
数据查询除闪回查询外,还包括最新数据查询,若服务器在进行数据同步操作时,接收到最新数据查询请求,则最新数据查询请求的查询结果可能并非最新数据。为了两个任务均能正常执行,在执行步骤S100前,针对dolt数据库,建立用于执行查询最新数据任务的主分支,并建立工作分支,该工作分支用于执行步骤S100~步骤S108。
建立工作分支时,可使用dolt数据库的SQL命令,假设需要创建一个名为“data_version”的工作分支,则SQL命令为:call dolt_checkout('-b', 'data_version')。
为了保证执行最新数据任务的结果正确,执行步骤S104之后,通过工作分支,将各增量数据合并至该主分支执行查询最新数据任务时所查询的完整数据集中。
具体的,服务器首先切换到主分支,假设主分支使用的是dolt数据库默认创建的“main”分支,先使用SQL命令call dolt_checkout('main'),从工作分支切换到主分支,然后使用SQL命令call dolt_merge('data_version'),合并工作分支的提交的增量数据。
若当该工作分支进行数据同步操作时,服务器接收到闪回查询请求,则需要暂停数据同步操作,进行闪回查询,那么数据同步操作的效率就会降低。因此,在接收闪回查询请求时,建立用于闪回查询的闪回查询分支。即建立闪回查询分支,通过该闪回查询分支,执行步骤S110~S112。例如,假设创建一个名为“flashback_query”的闪回查询分支,则SQL命令为:call dolt_checkout('-b', 'flashback_query')。
针对步骤S104~S106,服务器可先建立增量数据集,再确定增量数据。
建立增量数据集时,首先,使用SQL命令添加表标识,例如,假设增量数据表的表标识分别为“table1”、“table2”、“table3”,则添加表标识的SQL命令为:call dolt_add('table1','table2','table3'),然后使用SQL命令提交修改,并添加提交注释,提交修改的SQL命令为:call commit('-m','insert values'),其中'-m'表示添加注释,'insertvalues'是注释的具体内容。使用SQL命令提交修改后,dolt数据库会返回一个哈希值,该哈希值可为一个32位长的包含字母和数字的字符串,该字符串即为该增量数据集的数据版本标识。也就是说,当指定时刻到来时,服务器进行提交修改后,dolt数据库采用哈希算法,得到一个哈希值,该哈希值即为该增量数据集的数据版本标识。为了确定增量数据,服务器可针对每个增量数据表,建立该增量数据表的表标识与该增量数据集的数据版本标识映射关系,并存储于该dolt数据库中。例如,{数据版本标识->[table1,table2,table3]}。
那么,在执行步骤S104时,服务器可在dolt数据库中用表标识及数据版本标识搜索,以表“table1”为例,则dolt数据库的SQL命令为:select * from dolt_diff_table1where to_commit=hash,得到差异数据,即增量数据,假设table1有两个字段tid,tname,那么该命令的搜索结果示例如表1所示:
表1 差异数据结果示例
表1的三条数据分别代表了三种指定操作,即添加一行数据、修改一行数据、删除一行数据。其中“to_tid”、“to_tname”表示操作后的字段值,“to_commit”、“to_commit_date”表示此次提交的数据版本标识和提交时间,“from_tid”、“from_tname”表示操作前的字段值,“from_commit”、“from_commit_date”表示上一次提交的数据版本标识和提交时间,“diff_type”表示此次操作的类型,“diff_type”的值为“added”表示添加数据,“modified”表示修改数据,“removed”表示删除数据。确定增量数据后,即可将增量数据添加至增量数据表中。
为了更便利地在数据库中查询所需数据,针对每个数据,可建立该数据的索引。其中,索引可根据数据的数据值等内容进行建立,那么,当数据经过指定操作时,数据的索引也需要发生变化,因此,为了后续能够根据索引闪回查询数据,在执行步骤S108之后,服务器还需建立增量数据的数据索引。为了区分数据经过不同类型的指定操作,服务器需要先确定增量数据经过指定操作的类型,针对每个增量数据,确定该增量数据经过指定操作的类型,其中,该指定操作的类型包括增加、删除、更新中的一种。再根据该增量数据的指定操作的类型,建立该增量数据的数据索引。
具体的,服务器根据该增量数据的指定操作的类型,确定该增量数据对应的Json字符串,根据该Json字符串,确定建立该增量数据的数据索引。例如,沿用表1示例,若“diff_type”的值为“added”,则将“to_”开头的字段名和字段的值构造一个Json字符串,对字段名去掉“to_”,并在Json字符串中添加关键字“_type:add”,对于表1中的第一行数据,构造好的Json字符串为{"tid": "13","tname": "uuu","_type": "add"}。
若“diff_type”的值为“modified”,则将“to_”开头的字段名和字段的值构造一个Json字符串,对字段名去掉“to_”,并在Json字符串中添加关键字“_type:modify”,对于上述示例表中的第二行数据,构造好的Json字符串为{"tid": "14","tname": "www","_type": "modify"}。
若“diff_type”的值为“removed”,则以操作前的主键字段的字段名和字段值构造一个Json字符串,对字段名去掉“from_”,并在Json字符串中添加关键字“_type:del”,对于上述示例表中的第三行数据,构造好的Json字符串为{"tid": "15","_type": "del"}。
建立数据索引时,针对每个数据表,该数据表存在一个索引文件,该索引文件包括该数据表中所有数据的数据索引。因此,服务器可先根据表标识判断该增量数据表是否为新增的数据表,若根据该表标识查询到该增量数据表中的增量数据的数据索引,则该增量数据表不为新增的数据表,反之,则该增量数据表为新增的数据表。对于新增的数据表,需要先建立该新增的数据表的索引文件,再建立该新增的数据表中的增量数据的数据索引,将该数据索引添加至该新增的数据表的索引文件中。对于已有索引文件的增量数据表,需要先查询该增量数据表的索引文件,再建立该已有索引文件的增量数据表中的增量数据的数据索引,将该数据索引添加至该已有索引文件的增量数据表的索引文件中。
建立增量数据表中增量数据的数据索引时,沿用上述构造Json字符串的示例,若增量数据中“_type”为“add”,则新增一条索引。若增量数据中“_type”为“del”,则删除一条现有的索引,若增量数据中“_type”为“modify”,则修改现有的索引。
由于数据可能经过多次指定操作,则数据存在多个不同版本的数据索引,为了能够根据数据索引查询数据,服务器还需针对每个增量数据,根据该增量数据的数据索引,建立该增量数据的数据索引与该增量数据集的数据版本标识的映射关系,并存储于该dolt数据库中。
具体的,将该增量数据的数据索引发送至git库中,接收该git库根据该数据索引输出的该数据索引的索引版本标识,建立该索引版本标识与该增量数据集的数据版本标识的映射关系,并存储于该dolt数据库中。
针对步骤S110~S112,图2为本说明书提供的闪回查询流程示意图,如图2所示。
服务器在执行闪回查询时,需要先连接dolt数据库,再切换至工作分支,并创建闪回查询分支,最后根据版本标识、时间戳及时间区间进行查询。
当根据版本标识进行闪回查询时,服务器先确定该闪回查询请求中所需查询的数据版本标识,作为待查询版本标识。再根据该待查询版本标识及该映射关系,确定与该待查询版本标识映射的索引版本标识。之后,根据该索引版本标识,确定该索引版本标识对应的数据索引,最后,根据该索引版本标识对应的数据索引,在该dolt数据库中,确定该闪回查询请求中所需查询的数据。
当根据时间戳进行闪回查询时,服务器先确定该闪回查询请求中的时间戳,根据该闪回查询请求中的时间戳,确定与该闪回查询请求中的时间戳匹配的数据版本标识,作为待查询版本标识。其中,匹配可以是与该闪回查询请求中的时间戳与增量数据集建立的时间戳的时间差在预设的时间差范围之内,还可以是该闪回查询请求中的时间戳小于增量数据集建立的时间戳,且该闪回查询请求中的时间戳与增量数据集建立的时间戳的时间差在预设的时间差范围之内,本说明书对此不作限制。接着,根据该待查询版本标识及该映射关系,确定与该待查询版本标识映射的索引版本标识。然后,根据该索引版本标识,确定该索引版本标识对应的数据索引。最后,根据该索引版本标识对应的数据索引,在该dolt数据库中,确定该闪回查询请求中所需查询的数据。
当根据时间区间进行闪回查询时,服务器先确定该闪回查询请求中的时间区间。再根据该时间区间,确定在该时间区间内的所有数据版本标识,作为待查询版本标识。之后,针对每个待查询版本标识,根据该待查询版本标识及该映射关系,确定与该待查询版本标识映射的索引版本标识。然后,针对每个索引版本标识,根据该索引版本标识,确定该索引版本标识对应的数据索引。最后,根据该索引版本标识对应的数据索引,在该dolt数据库中,确定该闪回查询请求中所需查询的数据。
需要说明的是,由于数据同步过程中,需要通过git库确定索引版本标识,若git库在通过数据索引输出该数据索引的索引版本标识时,接收闪回查询请求,则需要暂停输出索引版本标识,那么,则会降低输出索引版本标识的效率。因此,可在接收闪回查询请求时,建立索引的闪回查询分支。
如图2所示,那么,当根据版本标识进行闪回查询时,在dolt数据库中的闪回查询分支上使用dolt数据库的SQL命令切换到指定的数据版本,假设需要在v1版本上进行闪回查询,则SQL命令为call dolt_reset('--hard','v1')。当建立索引的闪回查询分支时,可使用git客户端在索引的git库中创建一个闪回查询分支,假设在索引上创建一个名为“flashback_index”的闪回查询分支,则创建索引闪查询分支的git命令为git checkout -b flashback_index。接着,通过索引闪回查询分支上,切换到与数据版本标识映射的索引版本标识的索引版本。也就是说,根据闪回查询请求中的数据版本标识及该映射关系,确定与该数据版本标识映射的索引版本标识。假设根据v1查到对应的索引版本标识为g1,则切换到g1的git命令切为git reset --hard g1。最后,在索引版本标识的版本中查询得到dolt数据库的主键值,再根据主键值,在dolt数据库上进行查询,得到指定版本的详细数据。
当根据时间戳进行闪回查询时,当根据该闪回查询请求中的时间戳,确定与该闪回查询请求中的时间戳匹配的数据版本标识时,通过dolt数据库的闪回查询分支查询与闪回查询请求中的时间戳匹配的一个数据版本标识。假设闪回查询请求中的时间戳为'2023-03-24 15:00:00',则查询与闪回查询请求中的时间戳匹配的一个数据版本标识的SQL命令为:select * from dolt_log where date <='2023-03-24 15:00:00' limit 1,取出结果中的“commit_hash”字段的值,即为与闪回查询请求中的时间戳匹配的一个数据版本标识,再使用dolt数据库的SQL命令将闪回查询分支切换到这个数据版本标识的版本。
当根据时间区间进行闪回查询时,当根据该闪回查询请求中的时间区间,确定在该时间区间内的所有数据版本标识时,通过dolt数据库的闪回查询分支,查询在该时间区间内的所有数据版本标识。假设时间区间为'2023-03-16 13:00:00'--'2023-03-24 15:00:00',则查询在该时间区间内的所有数据版本标识的SQL命令为:select * from dolt_log where date <='2023-03-24 15:00:00' and date >= '2023-03-16 13:00:00',取出结果中的所有的“commit_hash”字段的值,即为在该时间区间内的所有数据版本标识,对每一个数据版本标识都进行遍历查询。
此外,为了减少不必要的分支占用过多资源,在闪回查询结束后,删除dolt数据库的闪回查询分支及索引闪回查询分支。使用dolt数据库的SQL命令call dolt_branch('-d', ''flashback_query'),删除数据库的闪回查询分支,使用git命令git branch -dflashback_index,删除索引的闪回查询分支。
需要说明的是,通过闪回查询得到的数据可被恢复。
以上为本说明书的一个或多个实施的方法,基于图1所示的基于dolt数据库的数据闪回查询方法的流程示意图,本说明书还提供了相应的基于dolt数据库的数据闪回查询装置,如图3所示。
图3为本说明书提供的一种的基于dolt数据库的数据闪回查询装置的示意图,包括:
同步模块300,用于在指定时刻到来时,将源数据库中的数据同步至dolt数据库;
增量数据表确定模块302,用于在同步的数据中确定各增量数据表;
增量数据确定模块304,用于针对每个增量数据表,确定该增量数据表中的增量数据;
增量数据集建立模块306,用于在所述dolt数据库中,建立包括所有增量数据的增量数据集;
数据版本标识建立模块308,用于建立所述增量数据集的数据版本标识;
待查询版本标识确定模块310,用于响应于闪回查询请求,根据所述闪回查询请求,确定所需查询的数据的数据版本标识,作为待查询版本标识;
查询模块312,用于根据所述待查询版本标识,确定所述闪回查询请求查询的数据。
可选地,所述同步模块300具体用于,根据预设周期,在当前周期的结束时刻到来时,将源数据库中的数据同步至dolt数据库。
可选地,所述数据版本标识建立模块308具体用于,确定建立所述增量数据集的时间戳;根据所述时间戳及哈希算法,建立所述增量数据集的数据版本标识。
可选地,所述装置还包括:
映射关系确定模块314,用于建立所述增量数据集的数据版本标识之后,针对每个增量数据,确定该增量数据经过指定操作的类型,其中,所述指定操作的类型包括增加、删除、更新中的一种;根据该增量数据的指定操作的类型,建立该增量数据的数据索引;针对每个增量数据,根据该增量数据的数据索引,建立该增量数据的数据索引与所述增量数据集的数据版本标识的映射关系,并存储于所述dolt数据库中。
可选地,所述映射关系确定模块314具体用于,根据该增量数据的指定操作的类型,确定该增量数据对应的Json字符串;根据所述Json字符串,确定建立该增量数据的数据索引。
可选地,所述映射关系确定模块314具体用于,根据该增量数据的数据索引,确定该增量数据的数据索引的索引版本标识;建立所述索引版本标识与所述增量数据集的数据版本标识的映射关系。
可选地,所述映射关系确定模块314具体用于,将该增量数据的数据索引发送至git库中;接收所述git库根据所述数据索引输出的所述数据索引的索引版本标识。
可选地,所述装置还包括:
分支建立模块316,用于将源数据库中的数据同步至dolt数据库之前,针对dolt数据库,建立用于执行查询最新数据任务的主分支;并建立工作分支,所述工作分支用于在指定时刻到来时,将源数据库中的数据同步至dolt数据库,在同步的数据中确定各增量数据表,针对每个增量数据表,确定该增量数据表中的增量数据,在所述dolt数据库中,建立包括所有增量数据的增量数据集,建立所述增量数据集的数据版本标识。
可选地,所述装置还包括:
增量数据合并模块318,用于确定该增量数据表中的增量数据之后,通过工作分支,将各增量数据合并至所述主分支执行查询最新数据任务时所查询的完整数据集中。
可选地,所述装置还包括:
闪回查询模块320用于:针对dolt数据库,建立用于执行查询最新数据任务的主分支;响应于闪回查询请求,建立闪回查询分支,通过所述闪回查询分支,根据所述闪回查询请求,确定所需查询的数据的数据版本标识,作为待查询版本标识,根据所述待查询版本标识,确定所述闪回查询请求查询的数据。
可选地,所述闪回查询模块320具体用于,确定所述闪回查询请求中所需查询的数据版本标识,作为待查询版本标识;根据所述待查询版本标识及所述映射关系,确定与所述待查询版本标识映射的索引版本标识;根据所述索引版本标识,确定所述索引版本标识对应的数据索引;根据所述索引版本标识对应的数据索引,在所述dolt数据库中,确定所述闪回查询请求中所需查询的数据。
可选地,所述闪回查询模块320具体用于,确定所述闪回查询请求中的时间戳;根据所述闪回查询请求中的时间戳,确定与所述闪回查询请求中的时间戳匹配的数据版本标识,作为待查询版本标识;根据所述待查询版本标识及所述映射关系,确定与所述待查询版本标识映射的索引版本标识;根据所述索引版本标识,确定所述索引版本标识对应的数据索引;根据所述索引版本标识对应的数据索引,在所述dolt数据库中,确定所述闪回查询请求中所需查询的数据。
可选地,所述闪回查询模块320具体用于,确定所述闪回查询请求中的时间区间;根据所述时间区间,确定在所述时间区间内的所有数据版本标识,作为待查询版本标识;针对每个待查询版本标识,根据该待查询版本标识及所述映射关系,确定与该待查询版本标识映射的索引版本标识;针对每个索引版本标识,根据该索引版本标识,确定该索引版本标识对应的数据索引;根据该索引版本标识对应的数据索引,在所述dolt数据库中,确定所述闪回查询请求中所需查询的数据。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述图1提供的一种基于dolt数据库的数据闪回查询方法。
本说明书还提供了图4所示的一种对应于图1的电子设备的结构示意图。如图4所示,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述图1所述的基于dolt数据库的数据闪回查询方法。
当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。

Claims (15)

1.一种基于dolt数据库的数据闪回查询方法,其特征在于,所述方法包括:
在指定时刻到来时,将源数据库中的数据同步至dolt数据库;
在同步的数据中确定各增量数据表;
针对每个增量数据表,确定该增量数据表中的增量数据;
在所述dolt数据库中,建立包括所有增量数据的增量数据集;
建立所述增量数据集的数据版本标识;
响应于闪回查询请求,根据所述闪回查询请求,确定所需查询的数据的数据版本标识,作为待查询版本标识;
根据所述待查询版本标识,确定所述闪回查询请求查询的数据。
2.如权利要求1所述的方法,其特征在于,在指定时刻到来时,将源数据库中的数据同步至dolt数据库,具体包括:
根据预设周期,在当前周期的结束时刻到来时,将源数据库中的数据同步至dolt数据库。
3.如权利要求1所述的方法,其特征在于,建立所述增量数据集的数据版本标识,具体包括:
确定建立所述增量数据集的时间戳;
根据所述时间戳及哈希算法,建立所述增量数据集的数据版本标识。
4.如权利要求1所述的方法,其特征在于,建立所述增量数据集的数据版本标识之后,所述方法还包括:
针对每个增量数据,确定该增量数据经过指定操作的类型,其中,所述指定操作的类型包括增加、删除、更新中的一种;
根据该增量数据的指定操作的类型,建立该增量数据的数据索引;
针对每个增量数据,根据该增量数据的数据索引,建立该增量数据的数据索引与所述增量数据集的数据版本标识的映射关系,并存储于所述dolt数据库中。
5.如权利要求4所述的方法,其特征在于,根据该增量数据的指定操作的类型,建立该增量数据的数据索引,具体包括:
根据该增量数据的指定操作的类型,确定该增量数据对应的Json字符串;
根据所述Json字符串,确定建立该增量数据的数据索引。
6.如权利要求4所述的方法,其特征在于,根据该增量数据的数据索引,建立该增量数据的数据索引与所述增量数据集的数据版本标识的映射关系,具体包括:
根据该增量数据的数据索引,确定该增量数据的数据索引的索引版本标识;
建立所述索引版本标识与所述增量数据集的数据版本标识的映射关系。
7.如权利要求6所述的方法,其特征在于,根据该增量数据的数据索引,确定该增量数据的数据索引的索引版本标识,具体包括:
将该增量数据的数据索引发送至git库中;
接收所述git库根据所述数据索引输出的所述数据索引的索引版本标识。
8.如权利要求1所述的方法,其特征在于,将源数据库中的数据同步至dolt数据库之前,所述方法还包括:
针对dolt数据库,建立用于执行查询最新数据任务的主分支;并建立工作分支,所述工作分支用于在指定时刻到来时,将源数据库中的数据同步至dolt数据库,在同步的数据中确定各增量数据表,针对每个增量数据表,确定该增量数据表中的增量数据,在所述dolt数据库中,建立包括所有增量数据的增量数据集,建立所述增量数据集的数据版本标识。
9.如权利要求8所述的方法,其特征在于,确定该增量数据表中的增量数据之后,所述方法还包括:
通过工作分支,将各增量数据合并至所述主分支执行查询最新数据任务时所查询的完整数据集中。
10.如权利要求1所述的方法,其特征在于,所述方法还包括:
针对dolt数据库,建立用于执行查询最新数据任务的主分支;
响应于闪回查询请求,根据所述闪回查询请求,确定所需查询的数据的数据版本标识,作为待查询版本标识,根据所述待查询版本标识,确定所述闪回查询请求查询的数据,具体包括:
响应于闪回查询请求,建立闪回查询分支,通过所述闪回查询分支,根据所述闪回查询请求,确定所需查询的数据的数据版本标识,作为待查询版本标识,根据所述待查询版本标识,确定所述闪回查询请求查询的数据。
11.如权利要求6所述的方法,其特征在于,根据所述闪回查询请求,确定所需查询的数据的数据版本标识,作为待查询版本标识,根据所述待查询版本标识,确定所述闪回查询请求查询的数据,具体包括:
确定所述闪回查询请求中所需查询的数据版本标识,作为待查询版本标识;
根据所述待查询版本标识及所述映射关系,确定与所述待查询版本标识映射的索引版本标识;
根据所述索引版本标识,确定所述索引版本标识对应的数据索引;
根据所述索引版本标识对应的数据索引,在所述dolt数据库中,确定所述闪回查询请求中所需查询的数据。
12.如权利要求6所述的方法,其特征在于,根据所述闪回查询请求,确定所需查询的数据的数据版本标识,作为待查询版本标识,根据所述待查询版本标识,确定所述闪回查询请求查询的数据,具体包括:
确定所述闪回查询请求中的时间戳;
根据所述闪回查询请求中的时间戳,确定与所述闪回查询请求中的时间戳匹配的数据版本标识,作为待查询版本标识;
根据所述待查询版本标识及所述映射关系,确定与所述待查询版本标识映射的索引版本标识;
根据所述索引版本标识,确定所述索引版本标识对应的数据索引;
根据所述索引版本标识对应的数据索引,在所述dolt数据库中,确定所述闪回查询请求中所需查询的数据。
13.如权利要求6所述的方法,其特征在于,根据所述闪回查询请求,确定所需查询的数据的数据版本标识,作为待查询版本标识,根据所述待查询版本标识,确定所述闪回查询请求查询的数据,具体包括:
确定所述闪回查询请求中的时间区间;
根据所述时间区间,确定在所述时间区间内的所有数据版本标识,作为待查询版本标识;
针对每个待查询版本标识,根据该待查询版本标识及所述映射关系,确定与该待查询版本标识映射的索引版本标识;
针对每个索引版本标识,根据该索引版本标识,确定该索引版本标识对应的数据索引;
根据该索引版本标识对应的数据索引,在所述dolt数据库中,确定所述闪回查询请求中所需查询的数据。
14.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~13任一项所述的方法。
15.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述权利要求1~13任一项所述的方法。
CN202311298506.0A 2023-10-09 2023-10-09 一种基于dolt数据库的数据闪回查询方法及装置 Active CN117033398B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311298506.0A CN117033398B (zh) 2023-10-09 2023-10-09 一种基于dolt数据库的数据闪回查询方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311298506.0A CN117033398B (zh) 2023-10-09 2023-10-09 一种基于dolt数据库的数据闪回查询方法及装置

Publications (2)

Publication Number Publication Date
CN117033398A true CN117033398A (zh) 2023-11-10
CN117033398B CN117033398B (zh) 2024-01-16

Family

ID=88641654

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311298506.0A Active CN117033398B (zh) 2023-10-09 2023-10-09 一种基于dolt数据库的数据闪回查询方法及装置

Country Status (1)

Country Link
CN (1) CN117033398B (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050055385A1 (en) * 2003-09-06 2005-03-10 Oracle International Corporation Querying past versions of data in a distributed database
US20160224550A1 (en) * 2004-06-10 2016-08-04 Oracle International Corporation Dbfs with flashback archive
CN108959341A (zh) * 2018-04-04 2018-12-07 阿里巴巴集团控股有限公司 一种数据同步的方法、装置及设备
CN109299099A (zh) * 2018-10-11 2019-02-01 瀚高基础软件股份有限公司 一种PostgreSQL数据库的数据闪回查询及恢复方法、装置
CN110232093A (zh) * 2019-04-30 2019-09-13 武汉达梦数据库有限公司 数据库同步中基于闪回查询的初始化装载方法及设备
CN110321359A (zh) * 2019-07-05 2019-10-11 浪潮软件集团有限公司 一种基于cmsp的空间数据增量更新方法
CN114385587A (zh) * 2021-12-17 2022-04-22 中国船舶重工集团公司第七0九研究所 一种面向关系型数据库版本快照的构建方法及查询方法
CN115113871A (zh) * 2022-06-21 2022-09-27 北京元年科技股份有限公司 基于数据中台的前端代码版本信息查看方法、装置及设备
CN115185955A (zh) * 2022-03-31 2022-10-14 阿里云计算有限公司 一种数据湖数据处理方法和系统
CN115934718A (zh) * 2022-12-06 2023-04-07 贵州易鲸捷信息技术有限公司 基于多版本时间戳排序机制的数据闪回查询或闪回恢复方法
CN116541387A (zh) * 2023-05-04 2023-08-04 平凯星辰(北京)科技有限公司 数据闪回方法、装置、电子设备及存储介质

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050055385A1 (en) * 2003-09-06 2005-03-10 Oracle International Corporation Querying past versions of data in a distributed database
US20160224550A1 (en) * 2004-06-10 2016-08-04 Oracle International Corporation Dbfs with flashback archive
CN108959341A (zh) * 2018-04-04 2018-12-07 阿里巴巴集团控股有限公司 一种数据同步的方法、装置及设备
CN109299099A (zh) * 2018-10-11 2019-02-01 瀚高基础软件股份有限公司 一种PostgreSQL数据库的数据闪回查询及恢复方法、装置
CN110232093A (zh) * 2019-04-30 2019-09-13 武汉达梦数据库有限公司 数据库同步中基于闪回查询的初始化装载方法及设备
CN110321359A (zh) * 2019-07-05 2019-10-11 浪潮软件集团有限公司 一种基于cmsp的空间数据增量更新方法
CN114385587A (zh) * 2021-12-17 2022-04-22 中国船舶重工集团公司第七0九研究所 一种面向关系型数据库版本快照的构建方法及查询方法
CN115185955A (zh) * 2022-03-31 2022-10-14 阿里云计算有限公司 一种数据湖数据处理方法和系统
CN115113871A (zh) * 2022-06-21 2022-09-27 北京元年科技股份有限公司 基于数据中台的前端代码版本信息查看方法、装置及设备
CN115934718A (zh) * 2022-12-06 2023-04-07 贵州易鲸捷信息技术有限公司 基于多版本时间戳排序机制的数据闪回查询或闪回恢复方法
CN116541387A (zh) * 2023-05-04 2023-08-04 平凯星辰(北京)科技有限公司 数据闪回方法、装置、电子设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
王栋;边根庆;李睿尧;: "一种基于增量存储的多副本文件版本控制方法", 物联网技术, no. 09 *
郑晓津;: "基于增量信息与多版本的DLG数据库管理技术研究", 测绘与空间地理信息, no. 05 *

Also Published As

Publication number Publication date
CN117033398B (zh) 2024-01-16

Similar Documents

Publication Publication Date Title
CN109299102B (zh) 一种基于Elastcisearch的HBase二级索引系统及方法
WO2017096939A1 (zh) 一种在基于HDFS的spark-sql大数据处理系统上建立索引的方法
CN106970936B (zh) 数据处理方法及装置、数据查询方法及装置
US7392263B2 (en) File system represented inside a database
CN110046170B (zh) 基于多文件管理的语句执行方法、装置、设备和介质
CN110399359B (zh) 一种数据回溯方法、装置及设备
CN113204571A (zh) 涉及写入操作的sql执行方法、装置及存储介质
CN115374117A (zh) 一种数据处理方法、装置、可读存储介质及电子设备
US7149742B1 (en) System and method for remote data access
US10558636B2 (en) Index page with latch-free access
CN106156050B (zh) 一种数据处理方法及装置
CN117033398B (zh) 一种基于dolt数据库的数据闪回查询方法及装置
CN113946628A (zh) 一种基于拦截器的数据同步方法及装置
CN108959330B (zh) 一种数据库的处理、数据查询方法及设备
CN114595286A (zh) 一种数据同步方法、装置、电子设备及存储介质
CN116010419A (zh) 一种创建唯一索引和优化逻辑删除的方法及装置
CN112328696A (zh) 一种MySQL数据库中数据同步到SQL Server数据库中的方法和装置
CN116521705A (zh) 一种数据查询方法、装置、存储介质及电子设备
CN115658815A (zh) 基于cdc实现的数据同步的方法
CN108153799B (zh) 数据库访问控制方法、装置和数据库系统
CN112148739B (zh) 独立于加密数据库的密文索引方法及系统
CN113448969A (zh) 数据处理方法、设备、程序产品及存储介质
CN117743472B (zh) 一种存储任务断点同步方法、装置、介质及设备
CN116521734A (zh) 一种数据查询的方法、装置、介质及设备
JPS62131349A (ja) デ−タベ−ス処理方式

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