CN114185991A - 基于分布式数据库实现数据同步的方法及相关装置 - Google Patents
基于分布式数据库实现数据同步的方法及相关装置 Download PDFInfo
- Publication number
- CN114185991A CN114185991A CN202111529541.XA CN202111529541A CN114185991A CN 114185991 A CN114185991 A CN 114185991A CN 202111529541 A CN202111529541 A CN 202111529541A CN 114185991 A CN114185991 A CN 114185991A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- key
- data table
- value pair
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
Abstract
本申请实施例公开了一种基于分布式数据库实现数据同步的方法及相关装置,方法包括:通过存入关联元数据信息的业务数据,得到第一键值对数据表;根据元数据信息,将第一键值对数据表同步至第二数据库中。采用本申请实施例可基于键值对数据关联元数据信息构建索引关系,根据元数据信息以及索引关系实现数据的增删改查等操作,同时还支持根据时间戳进行数据回收,释放数据库的存储空间,避免资源浪费。
Description
技术领域
本申请涉及电子技术领域,具体涉及一种基于分布式数据库实现数据同步的方法及相关装置。
背景技术
目前,终端设备中应用的多数键值数据存取需求都是通过Shared-Preference技术实现。而现有Shared-Preference技术满足单机场景下的数据存取需求,但是存在以下缺点:数据库的扩展性较差,在分布式场景中需要开发者手动关联算法的元数据,才能确保数据一致性;功能简单,对于终端设备不够友好,例如不支持数据回收。因此,亟需一种支持分布式场景中实现数据同步的方法。
发明内容
本申请实施例提供了一种基于分布式数据库实现数据同步的方法及相关装置,可基于分布式数据库实现数据同步的功能,来保证数据库之间的数据一致性,同时根据元数据信息能够实现数据回收,及时释放系统资源空间,避免系统资源的浪费。
第一方面,本申请实施例提供一种基于分布式数据库实现数据同步的方法,应用于第一数据库,所述方法包括:
存入业务数据,得到第一键值对数据表,所述业务数据关联元数据信息;
根据所述元数据信息,将所述第一键值对数据表同步至第二数据库中。
第二方面,本申请实施例提供一种基于分布式数据库实现数据同步的方法,应用于第二数据库,所述第二数据库中存有第二键值对数据表,所述第二键值对数据表用于同步第一数据库中的业务数据,所述方法包括:
接收来自第一数据库的同步信息,得到同步数据表,所述同步数据表中的所述业务数据关联元数据信息;
根据所述元数据信息,将所述同步数据表同步到所述第二键值对数据表中,得到增量数据表。
第三方面,本申请实施例提供一种基于分布式数据库实现数据同步的装置,应用于第一数据库,所述装置包括:
存储单元,所述存储单元用于存入业务数据,得到键值对数据表,所述业务数据关联元数据信息;
同步单元,所述同步单元用于根据所述元数据信息,将所述键值对数据表同步至第二数据库中。
第四方面,本申请实施例提供了一种基于分布式数据库实现数据同步的装置,应用于第二数据库,所述装置包括:
接收单元,所述接收单元用于接收来自第一数据库的同步信息,得到同步数据表,所述同步数据表中的业务数据关联元数据信息;
数据更新单元,所述数据更新单元用于根据所述元数据信息,将所述同步数据表同步到所述第二键值对数据表中,得到增量数据表。
第五方面,本申请实施例提供一种电子设备,包括处理器、存储器、通信接口以及一个或多个程序,其中,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行本申请实施例第一方面或第二方面任一方法中的步骤的指令。
第六方面,本申请实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第一方面或第二方面任一方法中所描述的部分或全部步骤。
第七方面,本申请实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面或第二方面任一方法中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
可以看出,本申请实施例公开了一种基于分布式数据库实现数据同步的方法及相关装置,方法包括:通过存入关联元数据信息的业务数据,得到第一键值对数据表;根据元数据信息,将第一键值对数据表同步至第二数据库中。如此,通过本申请实施例提出的方法,可基于键值对数据关联元数据信息构建索引关系,根据元数据信息以及索引关系实现数据的增删改查等操作,同时还支持根据时间戳进行数据回收,释放数据库的存储空间,避免资源浪费。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A是本申请实施例提供的一种常见的数据库架构示意图;
图1B是本申请实施例提供的一种基于分布式数据库实现数据同步方法的交互逻辑示意图;
图2A是本申请实施例提供的一种基于分布式数据库实现数据同步的方法的流程示意图;
图2B是本申请实施例提供的一种数据写入的流程示意图;
图3A是本申请实施例提供的一种数据查询流程示意图;
图3B是本申请实施例提供的一种数据删除的流程示意图;
图4是本申请实施例提供的一种基于分布式数据库实现数据同步的方法的流程示意图;
图5是本申请实施例提供的另一种基于分布式数据库实现数据同步的方法的流程示意图;
图6是本申请实施例提供的一种构建增量数据表的流程示意图;
图7是本申请实施例提供的一种基于分布式数据库实现数据同步的方法的应用场景示意图;
图8是本申请实施例提供的一种基于分布式数据库实现数据同步方法的设备交互流程示意图;
图9是本申请实施例提供的一种基于分布式数据库实现数据同步装置的结构示意图;
图10是本申请实施例提供的另一种基于分布式数据库实现数据同步装置的结构示意图;
图11是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
为了更好地理解本申请实施例的方案,下面先简单的介绍一下常见数据库架构,如图1A,图1A是本申请实施例提供的一种常见的数据库架构示意图;
其中,本申请实施例所涉及到的电子设备可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(user equipment,UE),移动台(mobile station,MS),终端设备(terminal device)等等。在本申请实施例中,该电子设备可包括本申请实施例所描述的第一数据库、第二数据库等。
请参阅图1A所示,第一数据库和第二数据库可以是类似于手机、电脑等若干种具有存储功能的终端设备。具体架构组成如下所述:
具体地,本申请方案提出的键值对数据库架构主要由四部分组成:数据库连接层、数据库核心层、数据库引擎层和可替换的底层数据引擎。
具体地,数据库连接层对外提供连接接口用于操作数据库,包括键值对数据连接和元数据连接两部分。其中,键值对数据连接主要提供键值(key-value,KV)操作接口,包括增删查改和事务接口,其中K用于为数据的唯一标识,V为数据相关信息。其中,KV数据连接主要用于进行KV数据读写;元数据连接主要用于基于时间戳和设备信息等元数据信息查询和修改KV数据。如下表1所示的KV数据连接接口及其功能:
表1
接口 | 功能 |
put | 写入KV数据 |
get | 读取单条KV数据 |
getEntries | 读取多条KV数据 |
del | 删除单条数据 |
startTransaction | 开启事务 |
commit | 提交事务 |
rollback | 回滚事务 |
其中,KV数据连接接口包括写入KV数据对应的接口put,读取单条KV数据对应的接口get,读取多条KV数据对应的接口getEntries,删除单条数据对应的接口del,开启、提交和回滚事务分别对应的startTransaction,commit和rollback接口。
如表2所示的元数据连接接口:
表2
其中,可通过数据库指令get_timestamp_range_data(start_time,end_time)来跳转到实现获取指定时间戳范围内的KV数据功能的接口,通过数据库指令get_device_data(device_id)来跳转到实现获取指定设备的KV数据接口功能的接口,可通过数据库指令put_device_data(device_id,kvs)来跳转到实现写入指定设备的KV数据功能的接口。
数据库核心层负责管理数据库连接和数据库引擎,同时管理数据库执行需要用到的运行时。本申请提出的技术方案支持同一数据库的多连接和异构多引擎,核心层维护连接池和引擎抽象,负责所有连接断开后,底层引擎资源的释放。同时,支持数据回收等执行需要后台运行的线程,核心层负责管理后台线程的生命周期。
数据库引擎层负责建立元数据信息与KV数据的索引关系,封装底层的存储引擎。数据库引擎层屏蔽了底层存储引擎的差异,维护同样的元数据和索引结构。
底层存储引擎负责最终数据的存取。需要说明的是,本申请方案支持异构引擎,包括sqlite等关系型引擎或Leveldb等KV引擎,因此不做具体限定。
进一步地,为了更好地理解本申请实施例的实际应用场景中的交互逻辑,接下来将结合图1B对本申请实施例进行具体说明:
请参阅图1B,图1B是本申请实施例提供的一种基于分布式数据库实现数据同步方法的交互逻辑示意图:
具体地,结合实际场景进行描述,如图1B所示:
S101:写入数据{k,v}。
具体地,业务应用APP将{k,v}数据写入到第一数据库中,其中,每一条写入的{k,v}数据与元数据信息相关联。
S102:数据同步。
具体地,第一数据库根据元数据信息建立相关索引,然后根据元数据信息以及相关索引将{k,v}数据同步到第二数据库中。
进一步地,上述数据同步可以是根据元数据信息对第二数据库中的数据进行更新,也可以是第二数据库根据相关索引从第一数据库中获取目标数据,还可以是第二数据库根据元数据信息将第一数据库中的新增数据进行数据增添。
S103、数据读取。
具体地,连接第二数据库上的业务APP可以通过网络或者是其他方式从第二数据库中读取相关数据。
为更好地理解本申请的技术方案,下面结合具体实施例,对本申请进行详细说明。
请参阅图2A,图2A是本申请实施例提供了一种基于分布式数据库实现数据同步的方法的流程示意图,如图2A所示,本申请中基于分布式数据库实现数据同步的方法包括以下操作步骤:
S201、存入业务数据,得到第一键值对数据表。具体地,上述业务数据关联元数据信息。
具体地,第一数据库和第二数据库以手机终端为例。用户通过手机上的业务APP,在该APP中执行某些业务操作时,系统交互过程中产生的相关业务数据,将这些相关业务数据,且每一条业务数据都与元数据信息相关联。输入的业务数据为键值对数据形式即{k,v}数据结构,根据{k,v}数据结构在第一数据库中构建第一键值对数据表。具体流程,请参照图2B所示,图2B是本申请实施例提供的一种数据写入的流程示意图。如图2B所示:
具体地,首先,第一数据库将接收到的业务数据以{k,v}数据结构的形式写入键值对,其中,每一条业务数据关联元数据信息;进一步地,根据附加元数据信息来构建索引,并且将构建的索引结果写入第一数据库的底层存储引擎中。
示例性地,第一数据库以Leveldb为例,存入业务数据时,第一键值对数据表中存入KV数据键值对的同时,也会将对应的时间戳索引和设备索引关联到表中。例如写入如下表3中的待存入的相关业务数据示例:
表3
key | value | timestamp | flag | device |
ZS | ZSval | 20211208 | 1 | deviceA |
LS | LSval | 20211209 | 1 | deviceA |
WW | WWval | 20210811 | 2 | deivecB |
具体地,每一个key值唯一,可根据key值将对应的value信息存入到对应的位置。每存入一条数据就会产生对应的元数据信息。其中,元数据信息包括时间戳timestamp、设备信息device和操作标记信息flag等,时间戳用于记录该条数据操作的时间信息,设备信息用于建立各个设备之间的映射关系,实现数据传输,flag用于记录业务数据的状态信息如:业务数据未写入或业务数据写入后被删除,flag为0表示当前业务数据未被写入,flag为1表示当前业务数据存在,flag为2表示当前业务数据写入后被删除。
进一步地,在第一数据库Leveldb中建立第一键值对数据表,如表4所示:
表4
key | value |
tdemo_r1 | {ZS,ZSval,20211208,1,deviceA} |
tdemo_r2 | {LS,LSval,20211209,1,deviceA} |
tdemo_r3 | {WW,WWval,20210811,2,deviceB} |
tdemo_i1_ZS_1 | null |
tdemo_i2_LS_2 | null |
tdemo_i3_WW_3 | null |
tdemo_i2_20210811_3 | null |
tdemo_i2_20211208_1 | null |
tdemo_i2_20211209_2 | null |
每一次插入数据和更新数据时,除了KV数据外,同时更新关联的索引数据。示例性地,基于索引查询数据的流程,以时间戳索引为例,查询大于2021201的所有key。
首先,根据索引类型和索引键值,构造索引key前缀,得到key前缀为tdemo_i2_2021201_;
然后,使用Leveldb的前缀查询功能,找到索引key关联的键值id为1和2;
进一步地,根据键值id构造KV键值对真实的key,得到真实key为tdemo_r1和tdemo_r2;
最后,根据真实的key查找到具体的value。
S202、根据所述元数据信息,将所述第一键值对数据表同步至第二数据库中。
具体地,根据上述步骤S202描述,第一数据库中存入的每一条业务数据都与元数据信息相关联。元数据信息中包含有时间戳、设备信息等信息。
进一步地,第一数据库接收来自第二数据库的数据查询请求。该数据查询请求中包含业务数据相关联的元数据信息。第一数据库根据元数据信息中的时间戳确定该时间戳范围内对应的数据,然后根据操作标记信息来确定该范围内的业务数据状态信息,进一步地根据设备信息向该第二数据库返回业务数据的状态信息以及相关的业务数据。
可以看出,本申请实施例公开了一种基于分布式数据库实现数据同步的方法,通过存入关联元数据信息的业务数据,得到第一键值对数据表;根据元数据信息,将第一键值对数据表同步至第二数据库中。如此,通过本申请实施例提出的方法,可基于键值对数据关联元数据信息构建索引关系,根据元数据信息以及索引关系实现数据的增删改查等操作,同时还支持根据时间戳进行数据回收,释放数据库的存储空间,避免资源浪费。
在一个可能的示例中,所述存入业务数据,得到第一键值对数据表之后,可以包括如下步骤:根据所述业务数据的唯一标识对所述第一键值对数据表执行以下至少一种业务操作:
响应于针对所述第二数据库的查询请求,在所述第一键值对数据表中查询对应的所述业务数据,所述查询请求中包括所述业务数据的唯一标识。
示例性地,第一数据库中将业务数据存入第一键值对数据表中,根据键值数据库的特点可知,主键key值唯一,可作为该业务数据的唯一标识。因此,可以根据标识的唯一性来查询到对应的业务数据。
具体地,请参照图3A所示,图3A本申请实施例提供的一种数据查询流程示意图:
示例性地,第一数据库接收到的业务数据如图3A右边所示:
key:ZS;
Val:ZSval;
Timestamp:20211208;
Flag:1;
Device:A。
具体地,第二数据库向第一数据库发送数据查询请求,该数据查询请求中包含业务数据的键值信息。第一数据库通过读取查询请求中的指定键,在第一键值对数据表中进行查询,获取查询结果。本实施例中,以key:ZS为例,进行数据查询。
在实际应用中,上述查询结果有以下两种可能:查询到指定键ZS或者未查询到指定键。
若当前未查询到指定键值,则表明上述查询请求的数据未存入第一数据库的第一键值对数据表中,结束流程。
若当前查询到指定键ZS,则读取ZS对应的数据。
进一步地,根据上述读取的ZS对应的数据中的flag标记值判断当前val是否为空。
若flag=1,则表明key:ZS对应的数据val不为空,第一数据库向第二数据库返回查询结果,即当前key:ZS对应的val值为ZSval。
若flag=2,则表明key:ZS对应的数据val为空,第一数据库向第二数据库返回当前数据状态为:当前业务数据存入后被删除的状态信息。
或者,根据所述业务数据的唯一标识,将新增业务数据插入到所述第一键值对数据表中。
示例性地,第一数据库根据接收到的业务数据,根据业务数据的key值在第一键值对数据表中进行检索,当前key值未存在于第一键值对数据表中,则表明当前业务数据为新增数据,将当前业务数据以{k,v}数据结构的形式添加到第一键值对数据表中。
或者,根据所述业务数据的唯一标识删除对应的所述业务数据,更新所述操作标记信息,所述操作标记信息用于识别数据是否写入或写入后被删除的状态信息。
示例性地,请参照图3B所示,图3B是本申请实施例提供的一种数据删除的流程示意图。
如图3B所示:
示例性地,第一数据库中存储的一条数据仍以上述图3A中的业务数据为例进行展开描述。
具体地,在第一数据库中输入删除key:ZS的SQL语句,指令删除第一键值对数据表中的对应业务数据。
进一步地,根据key:ZS在第一数据库中查询检索,定位到对应的数据。
进一步地,标记数据。将该key值对应的业务数据的相关信息删除后,更新flag操作标记信息为2,用于表示当前业务数据是存入后被删除的状态信息。
需要说明的是,本申请实施例中,数据删除流程只会删除键值对中的值,保留被删除业务数据的键值。并且在键关联的元数据信息的flag中记录删除标记,用于标识数据已经被删除。
或者,根据所述时间戳,对所述第一键值对数据表中的所述业务数据进行超时回收。
具体地,本申请提供的技术方案中,回收数据的基本原则是超时回收,在超时回收的基础上又提供多种策略配置。
示例性地,可采用策略是空间固定策略,根据数据库实例配置的最大空间,在达到配置的空间占用后,选择时间戳最小的数据删除,直到空间满足限额。
示例性地,本申请提供的技术方案中,第一数据库或第二数据库会定期扫描数据库数据,根据数据库实例配置的最大空间,在达到配置的空间占用后,选择时间戳最小的数据删除,直到空间满足限额。例如:上表4所示的几条业务数据示例,第一数据库对当前数据库进行扫描,若当前达到了配置的空间占用,则选择时间戳最小的数据删除timestamp为20211208对应的业务数据,实现对该数据进行超时回收,释放当前数据在系统中的资源占用。
另一种可能性的策略是采用定时清理策略,根据数据库实例配置的超时时间,定期扫描数据库数据,对超过配置时间的数据进行删除。需要说明的是,数据回收的策略并不仅限于此处提及的策略,在此不做具体限定。
需要说明的是,上述对于第一数据库针对业务数据进行的数据查询、增加、删除等一系列操作,既可以是针对不同的业务数据分别进行的独立操作。也可以是针对同一业务数据执行的一系列业务操作的组合,在此不做具体限定。
可以看出,本申请实施例中,通过根据业务数据的唯一标识对第一键值对数据表进行业务数据的增删查改等操作,同时超时回收的原则进行数据回收,以实现对数据库空间的及时释放,保证资源的合理利用。
在一个可能的示例中,请参照图4所示,图4是本申请实施例提供了一种基于分布式数据库实现数据同步的方法的流程示意图,所述存入业务数据,得到第一键值对数据表之后,还能包括如下步骤:
S401、接收所述第二数据库的数据获取请求。
其中,上述数据获取请求包含目标数据的唯一标识,即目标数据的key值。
S402、根据所述目标数据的唯一标识在所述第一键值对数据表中查询目标数据。
具体地,本步骤中,进行目标数据查询的方式可参照上述根据图3A所描述的数据查询的方式,在第一数据库中的第一键值对数据表中进行目标数据查询。在此处不做过多赘述。
S403、若所述目标数据的唯一标识存在,则根据所述操作标记信息判断目标数据是否被删除:若所述目标数据未被删除,则将所述目标数据返回至所述第二数据库;若所述目标数据被删除,则向所述第二数据库返回所述目标数据写入后被删除的状态信息;若所述数据的唯一标识不存在,则向所述第二数据库返回当前数据未写入的状态信息。
具体地,根据key值在第一键值对数据表中查询目标数据,其查询结果有两种:若当前返回结果为key值不存在,则表明第一数据库中还未存入目标数据。则第一数据库向第二数据库返回查询结果为:当前数据不存在。
若当前返回结果为key值存在,进一步地,查询元数据信息中的flag值。若当前flag值为1,则表明key值对应的目标数据不为空,第一数据库向第二数据库返回查询结果:目标数据的键值对信息以及元数据信息。若当前flag值为2,则表明key值对应的目标数据为空,第一数据库向第二数据库返回查询结果为:目标数据存入第一数据库后被删除。
可以看出,本申请实施例中,第一数据库根据key值查询相关数据,来确定数据是否存入;进一步地根据flag值判断存入的数据是否被删除,并将对应的不同查询结果及时反馈至第二数据库中,实现了对当前第一数据库中业务数据的状态准确监控和反馈。
在一个可能的示例中,所述元数据信息还包括:设备信息;所述存入业务数据,得到第一键值对数据表,还能包括如下步骤:根据所述时间戳建立时间戳索引;根据所述设备信息建立设备索引,其中,所述设备索引用于表征所述业务数据来源设备。
具体地,第一数据库每一次数据存入、更新或删除等操作时,除了KV数据以外,同时需要更新关联的索引数据。而索引数据需要根据元数据信息来建立。
具体地,元数据信息中包括但不限于时间戳和设备信息。第一数据库的数据库引擎层负责建立元数据信息与KV数据的索引关系。具体过程,将结合下表5所示的元数据维护的格式来对建立索引的过程进行展开描述:
表5
具体地,元数据信息到KV数据之间需要建立索引关系,便于元数据连接基于元数据信息对KV数据做查询和修改。例如上面提到的元数据连接需要支持基于时间戳范围的数据查询与基于设备的数据读写。这就需要根据时间戳和设备信息来建立时间戳索引time_index以及设备索引dev_index。
进一步地,为确保在不同数据库选择不同的底层存储引擎,数据可以无缝同步和合并,还需要为异构存储引擎实现索引。
本申请方案中所提出来的分布式数据库系统支持不同的底层存储引擎,不同类型的存储引擎实现方法不同。对于关系型存储引擎,索引的建立和查询通过SQL语句完成;对于简单的KV存储引擎,通过列族columnfamily技术构建索引。关系型存储引擎一般均支持独立索引和联合索引,通过将元数据和KV数据合并建表,通过引擎支持的SQL语句即可建立索引。以sqlite为例,根据上述元数据信息通过以下SQL语句建立数据表:
其中,CREATE TABLE IF NOT EXISTS data表示若当前数据不存在,则创建一个新的数据表。
进一步地,通过SQL语句来建立索引:
CREATE INDEX IF NOT EXISTS time_index ON data(timestamp);
CREATE INDEX IF NOT EXISTS dev_index ON data(device);
执行以上SQL语句后,底层关系存储引擎会建立索引关系。在之后数据表更新的过程中,也会维护索引信息。基于索引对数据做查询操作也通过SQL语句完成,例如查询(start,end)时间戳范围内的数据所使用的SQL语句如下所示:
SELECT*FROM data WHERE timestamp>=start AND timestamp<end;
ORDER BY timestamp ASC;
示例性地,KV存储引擎只支持主键索引,需要通过column family方式管理元数据到KV数据的索引。以Leveldb为例,根据上述元数据信息通过以下结构以某种序列化的方式保存在存储引擎中:
Leveldb只支持键值存储,因此上述结构需要做一些column family处理才能关联索引信息。对于本申请方案中的每一个数据库实例,我们有以下定义:
每一个KV数据在底层Leveldb存储引擎中编码存储为以下格式:
Key:t{table}_r{id};
Value:{serializeValue};
其中t和r表示table和row,是固定的前缀。table由KV数据库分配,id是一个单调递增的整数。serializeValue是上述结构的序列化表示。
对于索引,在底层Leveldb存储引擎中编码存储为以下格式:
Key:t{table}_i{index}_{indexKey}_{id};
Value:null;
其中t和i表示table和index,是固定的前缀。table由KV数据库分配,index用于区分不同的索引。indexKey是索引键,id是该索引关联的KV键值对中的id。
可以看出,本申请实施例根据元数据信息建立与业务数据之间的索引关系,进而数据库中进行数据表的增删改查等一系列操作时,可以借助时间戳索引、设备索引等索引关系更快速地找到所需要的目标信息。同时,数据库在执行相关操作时,也会同时对索引信息进行更新,实现索引关系与业务数据之间的同步更新。
在一个可能的示例中,所述根据所述元数据信息,将所述第一键值对数据表同步至第二数据库中,包括如下步骤:根据所述时间戳索引获取目标业务数据;根据所述业务数据的唯一标识将所述目标业务数据存入所述第二数据库中;根据所述设备索引,更新所述第二数据库中所述目标业务数据的来源设备信息。
具体地,要实现将第一数据库中的第一键值对数据表同步至第二数据库中,首先根据时间戳索引确定待同步的目标业务数据;然后,根据上述建立的设备索引,将与待同步的目标业务数据最新关联的设备信息更新到第二数据库中。
可以看出,本申请实施例通过时间戳索引确定目标数据,根据设备索引确定当前目标数据来源的设备信息,从而提高数据同步的准确率和效率。
在一个可能的示例中,请参阅图5,图5是本申请实施例提供了另一种基于分布式数据库实现数据同步的方法的流程示意图,如图5所示,应用于第二数据库,所述第二数据库中存有第二键值对数据表,所述第二键值对数据表用于同步第一数据库中的业务数据;本申请中基于分布式数据库实现数据同步的方法包括以下操作步骤:
S501,接收来自第一数据库的同步信息,得到同步数据表。
其中,上述同步数据表中的所述业务数据关联元数据信息。
具体地,第二数据库向第一数据库发送数据获取请求,其中,数据获取请求中包含有业务数据的唯一标识、元数据信息以及相关索引。其中,业务数据的唯一标识也就是上述提到的key值;元数据信息包括时间戳、设备信息和操作标识信息;相关索引包括但不限于时间戳索引、设备索引等索引。
进一步地,第一数据库根据第二数据库的数据获取请求中的key值、元数据信息以及相关索引,在第一数据库的第一键值对数据表中查询目标业务数据,得到查询结果,所述查询结果也就是需要同步到第二数据库中的同步信息。
进一步地,第一数据库将同步信息返回到第二数据库,在第二数据库中得到一个同步数据表,其中同步数据表与第一数据库中的业务数据及其相关信息一致。
S502,根据所述元数据信息,将所述同步数据表同步到所述第二键值对数据表中,得到增量数据表。
具体地,元数据信息中包括时间戳和操作标识信息。首先,根据业务数据的唯一标识key值确定同步数据表中的业务数据在第二键值对数据表中的位置;然后,根据时间戳信息判断当前第二键值对数据表中的业务数据是否是最新状态。进一步地,若当前第二键值对数据表中的业务数据非最新状态,则将同步数据表中的业务数据同步到第二键值对数据表中,以实现第二键值对数据表中的业务数据信息是最新状态。
或者,当前同步数据表中的业务数据仅有key值而对应的业务数据为空,操作标识信息flag为2,表明当前key值对应的业务数据在第一数据库中存入后被删除。检查第二数据库中的第二键值对数据表中所述key值对应的业务数据信息,若不为空,则更新当前key值对应的业务数据信息,并将所述业务数据对应的flag值置为2。
上述操作结束后,实现了第二数据库的第二键值对数据表和第一数据库的第一键值对数据表的数据一致性。
可以看出,本申请实施例公开了一种基于分布式数据库实现数据同步的方法,通过接收来自第一数据库中关联元数据信息的业务数据的同步信息,得到同步数据表;然后,根据元数据信息,将同步数据表同步到第二键值对数据表中,得到增量数据表。如此,通过本申请实施例提出的方法,可基于键值对数据关联元数据信息构建索引关系,根据元数据信息以及索引关系实现数据的增删改查等操作,同时还支持根据时间戳进行数据回收,释放数据库的存储空间,避免资源浪费。
在一个可能的示例中,所述第二键值对数据表包括所述业务数据和所述业务数据的唯一标识,所述元数据信息包括时间戳;所述根据所述元数据信息,将所述同步数据表同步到所述第二键值对数据表中,得到增量数据表,接下来将结合图6对其实现步骤进行具体描述,图6是本申请提供的一种构建增量数据表的流程示意图。如图6所示:
S601、提取所述同步数据表中的每个所述业务数据的唯一标识,得到增量标识表。
具体地,如上述步骤S501所述,第一数据库将同步信息返回到第二数据库,在第二数据库中得到一个同步数据表,其中同步数据表与第一数据库中的业务数据及其相关信息一致。从同步数据表中对每一条业务数据的唯一标识也就是key值进行提取,得到增量标识表。
S602、根据所述增量标识表,在所述第二键值对数据表中进行数据查询。
具体地,根据增量标识表在第二键值对数据表中进行数据查询。根据每一条业务数据对应的key值唯一性来确定增量标识表中的key值是否存在于第二键值对数据表中。
S603、若查询到与所述增量标识表对应的所述业务数据,则根据所述时间戳更新所述第二键值数据表中的所述业务数据。
具体地,若在第二键值对数据表中查询到与增量标识表中的key值对应的业务数据信息,则根据时间戳判断当前第二键值对数据表中对应业务数据与该key值对应的同步数据表中的业务数据的时间先后性;根据时间先后将最新时间戳对应的业务数据同步到第二键值对数据表中。
S604、若未查询到与所述增量标识表对应的所述业务数据,则将所述业务数据以及所述业务数据的唯一标识存入所述第二键值对数据表中,得到所述增量数据表。
具体地,若当前第二键值对数据表中未查询到与增量标识表中key值对应的信息,则表明当前数据未写入第二数据库的第二键值对数据表中的。此时,将同步信息表中该key值对应的业务数据及其相关信息作为新增数据写入到第二键值对数据表中的,得到新的第二键值对数据表,也就是上述增量数据表。
为了更好地理解上述流程,接下来将结合图7对其实现步骤进行具体描述,图7是本申请提供的一种基于分布式数据库实现数据同步的方法的应用场景示意图。如图7所示:
S701、根据同步策略,找到待同步数据。
具体地,上述同步策略即根据第二数据库发送的数据获取请求,在第一数据库中查询对应的业务数据,然后将查询结果返回到第二数据库。
如图7所示,第一数据库中的信息如下表6所示内容:
表6
Key | Value | Timestamp | Flag | Device |
foo | fooval | 20211027 | 1 | A |
bar | barval | 20210918 | 1 | A |
zss | zssval | 20210718 | 1 | A |
第二数据库中的信息如下表7所示内容:
表7
Key | Value | Timestamp | Flag | Device |
foo | fooval | 20211027 | 1 | A |
bar | barval2 | 20210811 | 1 | B |
zss | - | 20210829 | 2 | B |
此时,根据业务数据的唯一标识key值,在第一数据库中获取对应的同步数据信息,得到同步数据表。
S702、数据同步到第二数据库中。
具体地,将上述同步数据表及其对应的内容同步到第二数据库中。
S703、合并数据。
示例性地,如下表8所示的合并后的数据表:
表8
Key | Value | Timestamp | Flag | Device |
foo | fooval | 20211027 | 1 | A |
bar | barval2 | 20210918 | 1 | A |
zss | - | 20210829 | 2 | - |
具体地,对于key:foo对应的业务数据所有信息第二数据库与第一数据库中的一致,因此合并后的最新表格里面key:foo对应的数据信息维持原状。
示例性地,对于key:bar对应的数据,虽然第二数据库已经存在同样key值的数据,但因为A设备数据的时间戳更新,因此更新第二数据库中对应的业务数据信息。
示例性地,对于key:zss对应的数据,因为第二数据库记录了删除标记flag为2且时间戳第二数据库相较于第一数据库为最新状态,因此该数据仍然记录为删除。
可以看出,本申请实施例通过业务数据的标识信息、元数据信息和相关索引信息,将第二数据库中的业务数据信息同步到最新的时间状态和设备信息状态,实现第一数据库和第二数据库中的数据同步。
下面将结合图8来具体描述基于分布式数据库实现数据同步方法实施例中记载的任何一种基于分布式数据库实现数据同步方法的部分或全部步骤。如图8所示,图8是本申请实施例提供的一种基于分布式数据库实现数据同步方法的设备交互流程示意图。
S801、第一数据库存入业务数据,得到第一键值对数据表,所述业务数据关联元数据信息向第一终端服务器发送热点连接请求。
示例性地,以手机终端设备A在其业务APP中写入相关业务数据为例。手机终端设备A请求存入数据库中第一数据库接收当前业务数据后存入到第一键值对数据表中。其中,第一键值对数据表中存入的数据结构是以{k,v}结构进行存储。每一条业务数据都关联元数据信息,每一条元数据信息都包括但不限于时间戳、设备信息和操作标识信息等。
S802、第一数据库响应于第二数据库的数据查询请求。
示例性地,以手机终端设备B通过业务APP请求获取业务数据为例。手机终端B向第二数据库请求数据,第二数据库向第一数据库发送数据查询请求,以实现第二数据库与第一数据库中的业务数据信息同步,进而保证第二数据库返回到手机终端设备B的业务数据相关信息为最新状态。
S803、第二数据库接收来自第一数据库的同步信息,得到同步数据表,所述同步数据表中的所述业务数据关联元数据信息。
示例性地,第一数据库将同步信息反馈至第二数据库中,形成同步数据表,所述同步数据表中的业务数据关联上述元数据信息。数据库可根据元数据信息构建索引,所述索引包括:时间戳索引、设备索引等。
S804、第一数据库根据所述元数据信息,将所述第一键值对数据表同步至第二数据库中。
示例性地,第二数据库查询请求中包括业务数据的元数据信息,第一数据库可以根据业务数据的元数据信息中的时间戳确定数据的时间状态信息,根据时间戳信息将最新的业务数据反馈至第二数据库中。
S805、第二数据库根据所述元数据信息,将所述同步数据表同步到所述第二键值对数据表中,得到增量数据表。
示例性地,第二数据信息根据元数据信息中的时间戳信息将第二数据库中的第二键值对数据表更新到最新时间戳;根据时间戳和操作标识信息f l ag值判断当前数据是否有进行过删除操作,并且更新至最新状态;结合时间戳索引和设备索引将第二键值对数据表中的业务数据信息对应的设备信息进行更新。
需要说明的是,上述步骤S804和S805可以同步或异步进行。在此不作唯一限定。
可以看出,本申请实施例公开了一种基于分布式数据库实现数据同步的方法,第一数据库通过接收第二数据库的数据查询请求返回相关的同步信息,第二数据库通过接收来自第一数据库中关联元数据信息的业务数据的同步信息,得到同步数据表;然后,根据元数据信息,将同步数据表同步到第二键值对数据表中,得到增量数据表。如此,通过本申请实施例提出的方法,可基于键值对数据关联元数据信息构建索引关系,根据元数据信息以及索引关系实现数据的增删改查等操作,同时还支持根据时间戳进行数据回收,释放数据库的存储空间,避免资源浪费。
上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对电子设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
与图2A的实施例一致,请参照图9,图9是本申请实施例提供的一种基于分布式数据库实现数据同步装置的结构示意图,如图9所示,上述基于分布式数据库实现数据同步的装置900包括:
存储单元901,所述存储单元用于存入业务数据,得到键值对数据表,所述业务数据关联元数据信息。
同步单元902,所述同步单元用于根据所述元数据信息,将所述键值对数据表同步至第二数据库中。
可以看出,本申请实施例公开了一种基于分布式数据库实现数据同步装置,通过存储单元存入与元数据信息关联的业务数据,得到第一键值对数据表;通过同步单元根据元数据信息将第一键值对数据表同步至第二数据库中。如此,通过本申请实施例提出的方法,可基于键值对数据关联元数据信息构建索引关系,根据元数据信息以及索引关系实现数据的增删改查等操作,同时还支持根据时间戳进行数据回收,释放数据库的存储空间,避免资源浪费。
在一个可能的示例中,所述存储单元901具体执行的步骤如下:
存入业务数据,得到第一键值对数据表,所述业务数据关联元数据信息。
在一个可能的示例中,所述元数据信息包括时间戳和操作标记信息,所述第一键值对数据表包括所述业务数据和所述业务数据的唯一标识;所述存入业务数据,得到第一键值对数据表之后,所述存储单元901具体执行的步骤如下:
根据所述业务数据的唯一标识对所述第一键值对数据表执行以下至少一种业务操作:
响应于针对所述第二数据库的查询请求,在所述第一键值对数据表中查询对应的所述业务数据,所述查询请求中包括所述业务数据的唯一标识;或者,
根据所述业务数据的唯一标识,将新增业务数据插入到所述第一键值对数据表中;或者,
根据所述业务数据的唯一标识删除对应的所述业务数据,更新所述操作标记信息,所述操作标记信息用于识别数据是否写入或写入后被删除的状态信息;或者,
根据所述时间戳,对所述第一键值对数据表中的所述业务数据进行超时回收。
所述同步单元902具体执行的步骤如下:
根据所述元数据信息,将所述第一键值对数据表同步至第二数据库中。
在一个可能的示例中,在所述存入业务数据,得到第一键值对数据表之后,所述同步单元902具体执行的步骤如下:
接收所述第二数据库的数据获取请求,所述数据获取请求包含目标数据的唯一标识;
根据所述目标数据的唯一标识在所述第一键值对数据表中查询目标数据;
若所述目标数据的唯一标识存在,则根据所述操作标记信息判断目标数据是否被删除:
若所述目标数据未被删除,则将所述目标数据返回至所述第二数据库;
若所述目标数据被删除,则向所述第二数据库返回所述目标数据写入后被删除的状态信息;
若所述数据的唯一标识不存在,则向所述第二数据库返回当前数据未写入的状态信息。
在一个可能的示例中,所所述元数据信息还包括:设备信息;所述存入业务数据,得到第一键值对数据表,所述同步单元902具体执行的步骤如下:
根据所述时间戳建立时间戳索引;
根据所述设备信息建立设备索引,其中,所述设备索引用于表征所述业务数据来源设备。
在一个可能的示例中,所述根据所述元数据信息,将所述第一键值对数据表同步至第二数据库中,所述同步单元902具体执行的步骤如下:
根据所述时间戳索引获取目标业务数据;
根据所述业务数据的唯一标识将所述目标业务数据存入所述第二数据库中;
根据所述设备索引,更新所述第二数据库中所述目标业务数据的来源设备信息。
可以看出,本申请实施例描述的基于分布式数据库实现数据同步装置,可以通过第一数据库的存储单元存入业务数据构建键值对数据表,然后由同步单元实现将数据同步至第二数据库中。如此,通过本申请实施例提出的方法,可基于键值对数据关联元数据信息构建索引关系,根据元数据信息以及索引关系实现数据的增删改查等操作,同时还支持根据时间戳进行数据回收,释放数据库的存储空间,避免资源浪费。
与图2A的实施例一致,请参照图10,图10是本申请实施例提供的另一种基于分布式数据库实现数据同步装置的结构示意图,如图10所示,应用于第二数据库,如图9所示的基于分布式数据库实现数据同步的装置1000包括:
接收单元1001,所述接收单元用于接收来自第一数据库的同步信息,得到同步数据表,所述同步数据表中的业务数据关联元数据信息;
数据更新单元1002,所述数据更新单元用于根据所述元数据信息,将所述同步数据表同步到所述第二键值对数据表中,得到增量数据表。
在一个可能的示例中,所述接收单元1001具体执行的步骤如下:
接收来自第一数据库的同步信息,得到同步数据表,所述同步数据表中的所述业务数据关联元数据信息。
在一个可能的示例中,所述第二键值对数据表包括所述业务数据和所述业务数据的唯一标识,所述元数据信息包括时间戳;所述根据所述元数据信息,将所述同步数据表同步到所述第二键值对数据表中,得到增量数据表,所述数据更新单元1002具体执行的步骤如下:
提取所述同步数据表中的每个所述业务数据的唯一标识,得到增量标识表;
根据所述增量标识表,在所述第二键值对数据表中进行数据查询;
若查询到与所述增量标识表对应的所述业务数据,则根据所述时间戳更新所述第二键值数据表中的所述业务数据;
若未查询到与所述增量标识表对应的所述业务数据,则将所述业务数据以及所述业务数据的唯一标识存入所述第二键值对数据表中,得到所述增量数据表。
可以看出,本申请实施例描述的基于分布式数据库实现数据同步装置,通过第二数据库接收单元接收来自第一数据库的同步信息,通过数据更新单元将同步信息与第二数据库中的键值对数据表进行合并操作。如此,通过本申请实施例提出的方法,可基于键值对数据关联元数据信息构建索引关系,根据key值得唯一性实现数据查询和反馈,根据键值对信息、元数据信息和相关索引实现数据合并。
与上述图2A所示的实施例一致的,请参阅图11,图11是本申请实施例提供的一种电子设备的结构示意图,如图11所示,所述电子设备包括处理器、存储器和通信接口以及一个或多个程序,其中,所述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行。
在一个可能的示例中,若所述电子设备包括第一数据库,所述一个或多个程序包括用于执行如下步骤的指令:
存入业务数据,得到第一键值对数据表,所述业务数据关联元数据信息;
根据所述元数据信息,将所述第一键值对数据表同步至第二数据库中。
可以看出,本申请实施例所描述的电子设备,可以通过第一数据库存入业务数据构建键值对数据表,然后将数据同步至第二数据库中。如此,通过本申请实施例提出的方法,可基于键值对数据关联元数据信息构建索引关系,根据元数据信息以及索引关系实现数据的增删改查等操作,同时还支持根据时间戳进行数据回收,释放数据库的存储空间,避免资源浪费。
在一个可能的示例中,所述元数据信息包括时间戳和操作标记信息,所述第一键值对数据表包括所述业务数据和所述业务数据的唯一标识;所述存入业务数据,得到第一键值对数据表之后,上述程序包括用于执行如下步骤的指令:
根据所述业务数据的唯一标识对所述第一键值对数据表执行以下至少一种业务操作:
响应于针对所述第二数据库的查询请求,在所述第一键值对数据表中查询对应的所述业务数据,所述查询请求中包括所述业务数据的唯一标识;或者,
根据所述业务数据的唯一标识,将新增业务数据插入到所述第一键值对数据表中;或者,
根据所述业务数据的唯一标识删除对应的所述业务数据,更新所述操作标记信息,所述操作标记信息用于识别数据是否写入或写入后被删除的状态信息;或者,
根据所述时间戳,对所述第一键值对数据表中的所述业务数据进行超时回收。
在一个可能的示例中,在所述根据第二终端设备的第一身份验证信息,确定热点密码之前所述存入业务数据,得到第一键值对数据表之后,上述程序包括用于执行如下步骤的指令:
接收所述第二数据库的数据获取请求,所述数据获取请求包含目标数据的唯一标识;
根据所述目标数据的唯一标识在所述第一键值对数据表中查询目标数据;
若所述目标数据的唯一标识存在,则根据所述操作标记信息判断目标数据是否被删除:
若所述目标数据未被删除,则将所述目标数据返回至所述第二数据库;
若所述目标数据被删除,则向所述第二数据库返回所述目标数据写入后被删除的状态信息;
若所述数据的唯一标识不存在,则向所述第二数据库返回当前数据未写入的状态信息。
在一个可能的示例中所述元数据信息还包括:设备信息;所述存入业务数据,得到第一键值对数据表,上述程序包括用于执行如下步骤的指令:
根据所述时间戳建立时间戳索引;
根据所述设备信息建立设备索引库,其中,所述设备索引库包括所述第一数据库与多个数据库之间的映射关系。
在一个可能的示例中,所述根据所述元数据信息,将所述第一键值对数据表同步至第二数据库中,上述程序包括用于执行如下步骤的指令:
根据所述时间戳索引获取目标业务数据;
根据所述设备索引库,将所述目标业务数据同步到对应的所述第二数据库中。
在一个可能的示例中,所述所述元数据信息包括时间戳和操作标记信息,所述第一键值对数据表包括所述业务数据和所述业务数据的唯一标识;所述存入业务数据,得到第一键值对数据表之后,上述程序包括用于执行如下步骤的指令:
根据所述业务数据的唯一标识对所述第一键值对数据表执行以下至少一种业务操作:
响应于针对所述第二数据库的查询请求,在所述第一键值对数据表中查询对应的所述业务数据,所述查询请求中包括所述业务数据的唯一标识;或者,
根据所述业务数据的唯一标识,将新增业务数据插入到所述第一键值对数据表中;或者,
根据所述业务数据的唯一标识删除对应的所述业务数据,更新所述操作标记信息,所述操作标记信息用于识别数据是否写入或写入后被删除的状态信息;或者,
根据所述时间戳,对所述第一键值对数据表中的所述业务数据进行超时回收。
在一个可能的示例中,所述存入业务数据,得到第一键值对数据表之后,上述程序包括用于执行如下步骤的指令:
接收所述第二数据库的数据获取请求,所述数据获取请求包含目标数据的唯一标识;
根据所述目标数据的唯一标识在所述第一键值对数据表中查询目标数据;
若所述目标数据的唯一标识存在,则根据所述操作标记信息判断目标数据是否被删除:
若所述目标数据未被删除,则将所述目标数据返回至所述第二数据库;
若所述目标数据被删除,则向所述第二数据库返回所述目标数据写入后被删除的状态信息;
若所述数据的唯一标识不存在,则向所述第二数据库返回当前数据未写入的状态信息。
在一个可能的示例中,若所述电子设备包括第二数据库,所述一个或多个程序包括用于执行如下步骤的指令:
接收来自第一数据库的同步信息,得到同步数据表,所述同步数据表中的所述业务数据关联元数据信息;
根据所述元数据信息,将所述同步数据表同步到所述第二键值对数据表中,得到增量数据表。
可以看出,本申请实施例所描述的电子设备,可以通过第二数据库接收第一数据库返回的同步信息产生同步信息表,然后根据键值对信息、元数据信息和索引实现数据的合并得到合并后的增量数据表。如此,通过本申请实施例提出的方法,可基于键值对数据关联元数据信息构建索引关系,根据元数据信息以及索引关系实现数据的增删改查等操作,同时根据上述信息可以实现对第二数据库数据信息的合并,以保证第一数据库和第二数据库数据的意志性。
在一个可能的示例中所述第二键值对数据表包括所述业务数据和所述业务数据的唯一标识,所述元数据信息包括时间戳;所述根据所述元数据信息,将所述同步数据表同步到所述第二键值对数据表中,得到增量数据表,上述程序包括用于执行如下步骤的指令:
提取所述同步数据表中的每个所述业务数据的唯一标识,得到增量标识表;
根据所述增量标识表,在所述第二键值对数据表中进行数据查询;
若查询到与所述增量标识表对应的所述业务数据,则根据所述时间戳更新所述第二键值数据表中的所述业务数据;
若未查询到与所述增量标识表对应的所述业务数据,则将所述业务数据以及所述业务数据的唯一标识存入所述第二键值对数据表中,得到所述增量数据表。
本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有用于电子数据交换的计算机程序,计算机程序包括执行指令,执行指令用于执行如上述基于分布式数据库实现数据同步方法实施例中记载的任何一种基于分布式数据库实现数据同步方法的部分或全部步骤,上述计算机包括电子终端设备。
本申请实施例提供了一种计算机程序产品,其中,计算机程序产品包括计算机程序,计算机程序可操作来使计算机如上述方法实施例中记载的任何一种基于分布式数据库实现数据同步方法的部分或全部步骤,该计算机程序产品可以是一个软件安装包。
需要说明的是,对于前述的任一种基于分布式数据库实现数据同步方法的实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请所必须的。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请一种基于分布式数据库实现数据同步方法及相关装置的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请一种基于分布式数据库实现数据同步方法及相关装置的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
本申请是参照本申请实施例的方法、硬件产品和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看附图、公开内容、以及所附权利要求书,可理解并实现所公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
本领域普通技术人员可以理解上述任一种基于分布式数据库实现数据同步方法实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-OnlyMemory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
可以理解的是,凡是被控制或者被配置以用于执行本申请一种基于分布式数据库实现数据同步方法实施例所描述的流程图的处理方法的产品,如上述流程图的装置以及计算机程序产品,均属于本申请所描述的相关产品的范畴。
显然,本领域的技术人员可以对本申请提供的一种基于分布式数据库实现数据同步方法及装置进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (11)
1.一种基于分布式数据库实现数据同步的方法,应用于第一数据库,其特征在于,包括:
存入业务数据,得到第一键值对数据表,所述业务数据关联元数据信息;
根据所述元数据信息,将所述第一键值对数据表同步至第二数据库中。
2.根据权利要求1所述的方法,其特征在于,所述元数据信息包括时间戳和操作标记信息,所述第一键值对数据表包括所述业务数据和所述业务数据的唯一标识;
所述存入业务数据,得到第一键值对数据表之后,所述方法还包括:
根据所述业务数据的唯一标识对所述第一键值对数据表执行以下至少一种业务操作:
响应于针对所述第二数据库的查询请求,在所述第一键值对数据表中查询对应的所述业务数据,所述查询请求中包括所述业务数据的唯一标识;或者,
根据所述业务数据的唯一标识,将新增业务数据插入到所述第一键值对数据表中;或者,
根据所述业务数据的唯一标识删除对应的所述业务数据,更新所述操作标记信息,所述操作标记信息用于识别数据是否写入或写入后被删除的状态信息;或者,
根据所述时间戳,对所述第一键值对数据表中的所述业务数据进行超时回收。
3.根据权利要求2所述的方法,其特征在于,所述存入业务数据,得到第一键值对数据表之后,所述方法还包括:
接收所述第二数据库的数据获取请求,所述数据获取请求包含目标数据的唯一标识;
根据所述目标数据的唯一标识在所述第一键值对数据表中查询目标数据;
若所述目标数据的唯一标识存在,则根据所述操作标记信息判断目标数据是否被删除:
若所述目标数据未被删除,则将所述目标数据返回至所述第二数据库;
若所述目标数据被删除,则向所述第二数据库返回所述目标数据写入后被删除的状态信息;
若所述数据的唯一标识不存在,则向所述第二数据库返回当前数据未写入的状态信息。
4.根据权利要求2所述的方法,其特征在于,所述元数据信息还包括:设备信息;
所述存入业务数据,得到第一键值对数据表,所述方法还包括:
根据所述时间戳建立时间戳索引;
根据所述设备信息建立设备索引,其中,所述设备索引用于表征所述业务数据来源设备。
5.根据权利要求4所述的方法,其特征在于,所述根据所述元数据信息,将所述第一键值对数据表同步至第二数据库中,包括:
根据所述时间戳索引获取目标业务数据;
根据所述业务数据的唯一标识将所述目标业务数据存入所述第二数据库中;
根据所述设备索引,更新所述第二数据库中所述目标业务数据的来源设备信息。
6.一种基于分布式数据库实现数据同步的方法,应用于第二数据库,所述第二数据库中存有第二键值对数据表,所述第二键值对数据表用于同步第一数据库中的业务数据;其特征在于,包括:
接收来自第一数据库的同步信息,得到同步数据表,所述同步数据表中的所述业务数据关联元数据信息;
根据所述元数据信息,将所述同步数据表同步到所述第二键值对数据表中,得到增量数据表。
7.根据权利要求6所述的方法,其特征在于,所述第二键值对数据表包括所述业务数据和所述业务数据的唯一标识,所述元数据信息包括时间戳;
所述根据所述元数据信息,将所述同步数据表同步到所述第二键值对数据表中,得到增量数据表,包括:
提取所述同步数据表中的每个所述业务数据的唯一标识,得到增量标识表;
根据所述增量标识表,在所述第二键值对数据表中进行数据查询;
若查询到与所述增量标识表对应的所述业务数据,则根据所述时间戳更新所述第二键值数据表中的所述业务数据;
若未查询到与所述增量标识表对应的所述业务数据,则将所述业务数据以及所述业务数据的唯一标识存入所述第二键值对数据表中,得到所述增量数据表。
8.一种分布式数据库实现数据同步的装置,其特征在于,包括:
存储单元,所述存储单元用于存入业务数据,得到键值对数据表,所述业务数据关联元数据信息;
同步单元,所述同步单元用于根据所述元数据信息,将所述键值对数据表同步至第二数据库中。
9.一种分布式数据库实现数据同步的装置,其特征在于,包括:
接收单元,所述接收单元用于接收来自第一数据库的同步信息,得到同步数据表,所述同步数据表中的业务数据关联元数据信息;
数据更新单元,所述数据更新单元用于根据所述元数据信息,将所述同步数据表同步到所述第二键值对数据表中,得到增量数据表。
10.一种电子设备,其特征在于,包括处理器、存储器、通信接口,以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行如权利要求1-5或6-7任一项所述的方法中的步骤的指令。
11.一种计算机可读存储介质,其特征在于,存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求1-5或6-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111529541.XA CN114185991A (zh) | 2021-12-14 | 2021-12-14 | 基于分布式数据库实现数据同步的方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111529541.XA CN114185991A (zh) | 2021-12-14 | 2021-12-14 | 基于分布式数据库实现数据同步的方法及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114185991A true CN114185991A (zh) | 2022-03-15 |
Family
ID=80543823
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111529541.XA Pending CN114185991A (zh) | 2021-12-14 | 2021-12-14 | 基于分布式数据库实现数据同步的方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114185991A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116257531A (zh) * | 2023-05-16 | 2023-06-13 | 广州图灵科技有限公司 | 一种数据库空间回收方法 |
WO2023191931A1 (en) * | 2022-03-31 | 2023-10-05 | Microsoft Technology Licensing, Llc | Maintaining a record data structure using page metadata of a bookkeeping page |
-
2021
- 2021-12-14 CN CN202111529541.XA patent/CN114185991A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023191931A1 (en) * | 2022-03-31 | 2023-10-05 | Microsoft Technology Licensing, Llc | Maintaining a record data structure using page metadata of a bookkeeping page |
US11947822B2 (en) | 2022-03-31 | 2024-04-02 | Microsoft Technology Licensing, Llc. | Maintaining a record data structure using page metadata of a bookkeeping page |
CN116257531A (zh) * | 2023-05-16 | 2023-06-13 | 广州图灵科技有限公司 | 一种数据库空间回收方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6244592B2 (ja) | 列指向データベース処理方法および処理デバイス | |
CN103955486B (zh) | 分布式服务系统及其数据更新、数据查询的方法 | |
CN108427684B (zh) | 数据查询方法、装置及计算设备 | |
US11500832B2 (en) | Data management method and server | |
CN107181686B (zh) | 路由表的同步方法、装置及系统 | |
CN112765262B (zh) | 一种数据重分布方法、电子设备及存储介质 | |
US11822540B2 (en) | Data read method and apparatus, computer device, and storage medium | |
CN114185991A (zh) | 基于分布式数据库实现数据同步的方法及相关装置 | |
CN106874281B (zh) | 实现数据库读写分离的方法和装置 | |
CN111881223B (zh) | 数据管理方法、设备、系统及存储介质 | |
CN107870954B (zh) | 一种分布式数据库的扩展方法及装置 | |
US7860827B1 (en) | Data synchronization method for an application database available on multiple wirelessly connected platforms | |
CN108205560B (zh) | 一种数据同步方法以及装置 | |
CN112162846B (zh) | 事务处理方法、设备及计算机可读存储介质 | |
CN112035420B (zh) | 数据共享方法、共享设备和系统 | |
US8892535B2 (en) | Database management method | |
CN110209534B (zh) | 自动备份mysql数据库的系统及方法 | |
CN112749172A (zh) | 一种缓存与数据库之间的数据同步方法及系统 | |
US20150100545A1 (en) | Distributed database system and a non-transitory computer readable medium | |
CN109491988A (zh) | 一种支持全量更新的数据实时关联方法 | |
CN114328591A (zh) | 事务执行方法、装置、设备和存储介质 | |
CN101431429B (zh) | 一种设备中物理实体信息管理方法及设备与设备管理端 | |
CN112685064A (zh) | 设备标识的处理方法以及装置、存储介质、电子装置 | |
CN112948406B (zh) | 一种配置变更数据存储和同步的方法、系统和装置 | |
CN113364825B (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 |