CN111782634A - 数据分布式存储方法、装置、电子设备及存储介质 - Google Patents

数据分布式存储方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN111782634A
CN111782634A CN202010608688.7A CN202010608688A CN111782634A CN 111782634 A CN111782634 A CN 111782634A CN 202010608688 A CN202010608688 A CN 202010608688A CN 111782634 A CN111782634 A CN 111782634A
Authority
CN
China
Prior art keywords
database
data
target
database table
stored
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
Application number
CN202010608688.7A
Other languages
English (en)
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.)
JD Digital Technology Holdings Co Ltd
Original Assignee
JD Digital Technology Holdings Co Ltd
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 JD Digital Technology Holdings Co Ltd filed Critical JD Digital Technology Holdings Co Ltd
Priority to CN202010608688.7A priority Critical patent/CN111782634A/zh
Publication of CN111782634A publication Critical patent/CN111782634A/zh
Pending legal-status Critical Current

Links

Images

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/21Design, administration or maintenance of databases
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication

Abstract

本发明实施例提供了一种数据分布式存储方法、装置、电子设备及存储介质,所述方法包括:获取数据库建库条件,根据数据库建库条件执行相应数据库建库指令,建立多个主数据库以及与每个主数据库对应的多个备数据库;从主数据库中确定待建立数据库表的目标主数据库,以及从备数据库中确定与目标主数据库对应的目标备数据库;获取数据库表建表条件,根据数据库表建表条件执行相应数据库表建表指令,在目标主数据库以及目标备数据库中分别建立数据库表;获取待存储数据,将待存储数据存储至目标主数据库中的数据库表上;基于预设数据一致性算法将目标主数据库中的数据库表上存储的待存储数据同步至目标备数据库中的数据库表上。

Description

数据分布式存储方法、装置、电子设备及存储介质
技术领域
本发明涉及数据存储技术领域,尤其涉及一种数据分布式存储方法、装置、电子设备及存储介质。
背景技术
目前,数据库已经成为社会信息化发展的载体,国产数据库蓬勃发展,数据库商业化日益成熟,在此背景下,各个互联网巨头纷纷基于业务特点和行业需求开始自研分布式国产数据库。其中一关键技术便是数据库底层如何实现数据分布式存储,以达到数据均匀分布到多个存储单元上,且能够实现快速的数据库读写请求。
相关技术中,以oceanbase与tidb为代表的,基于google的bigtable论文的理论基础实现的分布式结构化数据存储,在国产数据库开发设计中,使用bigtable论文的理论基础实现稀疏的、分布式的、持久化存储,同时bigtable论文的理论是建立在GFS之上的,具有很高的技术门槛,实现复杂且周期很长。
发明内容
本发明实施例的目的在于提供一种数据分布式存储方法、装置、电子设备及存储介质,以实现降低数据分布式存储的复杂度及周期的有益效果。
具体技术方案如下:
在本发明实施例的第一方面,首先提供了一种数据分布式存储方法,所述方法包括:
获取数据库建库条件,根据所述数据库建库条件执行相应数据库建库指令,建立多个主数据库以及与每个主数据库对应的多个备数据库;
从所述主数据库中确定待建立数据库表的目标主数据库,以及从所述备数据库中确定与所述目标主数据库对应的目标备数据库;
获取数据库表建表条件,根据所述数据库表建表条件执行相应数据库表建表指令,在所述目标主数据库以及所述目标备数据库中分别建立数据库表;
获取待存储数据,将所述待存储数据存储至所述目标主数据库中的所述数据库表上;
基于预设数据一致性算法将所述目标主数据库中的所述数据库表上存储的所述待存储数据同步至所述目标备数据库中的所述数据库表上。
在一个可选的实施方式中,所述获取数据库表建表条件,根据所述数据库表建表条件执行相应数据库表建表指令,在所述目标主数据库以及所述目标备数据库中分别建立数据库表,包括:
获取数据库表建表条件,其中,所述数据库表建表条件包括业务逻辑拆分规则以及选择的主键类型;
根据所述业务逻辑拆分规则确定数据库表类型,执行与所述数据库表类型对应的数据库表建表指令;
在所述目标主数据库以及所述目标备数据库分别建立与所述主键类型对应的数据库表。
在一个可选的实施方式中,所述将所述待存储数据存储至所述目标主数据库中的所述数据库表上之前,所述方法还包括:
判断所述目标主数据库中的所述数据库表上已存储数据对应的数量是否小于预设阈值;
若所述目标主数据库中的所述数据库表上已存储数据对应的数量小于预设阈值,则执行所述将所述待存储数据存储至所述目标主数据库中的所述数据库表上的步骤。
在一个可选的实施方式中,所述方法还包括:
若所述目标主数据库中的所述数据库表上已存储数据对应的数量等于预设阈值,则从所述主数据库中确定待建立数据库表的新的目标主数据库,以及从所述备数据库中确定与所述新的目标主数据库对应的新的目标备数据库;
根据所述数据库表建表条件执行相应数据库表建表指令,在所述新的目标主数据库以及所述新的目标备数据库中分别建立新的数据库表;
将所述待存储数据存储至所述新的目标主数据库中的所述新的数据库表上;
基于预设数据一致性算法将所述新的目标主数据库中的所述新的数据库表上存储的所述待存储数据同步至所述新的目标备数据库中的所述新的数据库表上。
在一个可选的实施方式中,所述基于预设数据一致性算法将所述目标主数据库中的所述数据库表上存储的所述待存储数据同步至所述目标备数据库中的所述数据库表上,包括:
基于Raft算法将所述目标主数据库中的所述数据库表上存储的所述待存储数据同步至所述目标备数据库中的所述数据库表上。
在一个可选的实施方式中,所述方法还包括:
获取数据插入指令,并解析所述插入指令中携带的数据库表标识、主键键值、唯一约束和二级索引;
确定创建所述数据库表标识对应的数据库表所选择的主键类型;
以所述唯一约束为约束条件,根据所选择的主键类型对所述数据插入指令中携带的所述主键键值进行主键防重规则校验;
若所述数据插入指令中携带的所述主键键值通过主键防重规则校验,则根据所述数据库表标识、所述主键键值以及所述二级索引插入所述插入指令中携带的数据,并存储在插入所述插入指令中携带的数据的过程中产生的元数据;
基于预设数据一致性算法将所述插入指令中携带的数据以及所述元数据进行同步。
在一个可选的实施方式中,所述以所述唯一约束为约束条件,根据所选择的主键类型对所述数据插入指令中携带的所述主键键值进行主键防重规则校验,包括:
以所述唯一约束为约束条件,根据所选择的主键类型运行布隆过滤器,对所述数据插入指令中携带的所述主键键值进行主键防重规则校验。
在本发明实施例的第二方面,还提供了一种数据分布式存储装置,所述装置包括:
数据库创建模块,用于获取数据库建库条件,根据所述数据库建库条件执行相应数据库建库指令,建立多个主数据库以及与每个主数据库对应的多个备数据库;
数据库确定模块,用于从所述主数据库中确定待建立数据库表的目标主数据库,以及从所述备数据库中确定与所述目标主数据库对应的目标备数据库;
数据库表创建模块,用于获取数据库表建表条件,根据所述数据库表建表条件执行相应数据库表建表指令,在所述目标主数据库以及所述目标备数据库中分别建立数据库表;
数据存储模块,用于获取待存储数据,将所述待存储数据存储至所述目标主数据库中的所述数据库表上;
数据同步模块,用于基于预设数据一致性算法将所述目标主数据库中的所述数据库表上存储的所述待存储数据同步至所述目标备数据库中的所述数据库表上。
在本发明实施例的第三方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第一方面中任一所述的数据分布式存储方法。
在本发明实施例的第四方面,还提供了一种存储介质,所述存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面中任一所述的数据分布式存储方法。
在本发明实施例的第五方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面中任一所述的数据分布式存储方法。
本发明实施例提供的技术方案,通过获取数据库建库条件,根据数据库建库条件执行相应数据库建库指令,建立多个主数据库以及与每个主数据库对应的多个备数据库,从主数据库中确定待建立数据库表的目标主数据库,以及从备数据库中确定与目标主数据库对应的目标备数据库,获取数据库表建表条件,根据数据库表建表条件执行相应数据库表建表指令,在目标主数据库以及目标备数据库中分别建立数据库表,获取待存储数据,将待存储数据存储至目标主数据库中的数据库表上,基于预设数据一致性算法将目标主数据库中的数据库表上存储的待存储数据同步至目标备数据库中的数据库表上。如此从主数据库中确定待建立数据库表的目标主数据库,从备数据库中确定与目标主数据库对应的目标备数据库,将待存储数据存储至目标主数据库中的数据库表上,并基于预设数据一致性算法同步至目标备数据库中的数据库表上,可以实现数据分布式存储,降低了数据分布式存储的复杂度及周期。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中示出的一种数据分布式存储方法的实施流程示意图;
图2为本发明实施例中示出的一种建立多个主数据库以及针对每个主数据库建立多个备数据库的示意图;
图3为本发明实施例中示出的另一种数据分布式存储方法的实施流程示意图;
图4为本发明实施例中示出的一种数据分布式存储装置的结构示意图;
图5为本发明实施例中示出的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前,数据库已经成为社会信息化发展的载体,用户希望可以实现数据分布式存储,以达到数据均匀分布到多个存储单元上,且能够实现快速的数据库读写请求。
在此背景下,本发明实施例提供了一种数据分布式存储技术方案,通过获取数据库建库条件,根据数据库建库条件执行相应数据库建库指令,建立多个主数据库以及与每个主数据库对应的多个备数据库,从主数据库中确定待建立数据库表的目标主数据库,以及从备数据库中确定与目标主数据库对应的目标备数据库,获取数据库表建表条件,根据数据库表建表条件执行相应数据库表建表指令,在目标主数据库以及目标备数据库中分别建立数据库表,获取待存储数据,将待存储数据存储至目标主数据库中的数据库表上,基于预设数据一致性算法将目标主数据库中的数据库表上存储的待存储数据同步至目标备数据库中的数据库表上。
如此从主数据库中确定待建立数据库表的目标主数据库,从备数据库中确定与目标主数据库对应的目标备数据库,将待存储数据存储至目标主数据库中的数据库表上,并基于预设数据一致性算法同步至目标备数据库中的数据库表上,可以实现数据分布式存储,降低了数据分布式存储的复杂度及周期。
如图1所示,为本发明实施例提供的一种数据分布式存储方法的实施流程示意图,该方法具体可以包括以下步骤:
S101,获取数据库建库条件,根据所述数据库建库条件执行相应数据库建库指令,建立多个主数据库以及与每个主数据库对应的多个备数据库;
用户可以输入数据库建库条件,以此来创建相应的数据库。本发明实施例可以获取该数据库建库条件,进而根据该数据库建库条件执行相应数据库建库指令,建立多个主数据库以及与每个主数据库对应的多个备数据库。
例如,用户希望建立A、B、C共3个主数据库,以及针对每个主数据库,分别建立2个备数据库,根据上述数据库建库条件执行相应数据库建库指令,建立A、B、C共3个主数据库,以及针对每个主数据库,分别建立2个备数据库,如图2所示。其中,该数据库建库指令可以如下所示:
Create databases()server_num=3main_zone=‘A’;
通过server_num实现数据库资源管控,建立租户资源管理功能,可支持国产数据库上云应用;通过main_zone实现高可用主机房自定义功能,实现所有容灾切换都会在指定机房范围内选择主数据库。
需要说明的是,对于多个主数据库以及与每个主数据库对应的多个备数据库,从用户视觉层面来看,可以对外显示为一个数据库,本发明实施例对此不作限定。
S102,从所述主数据库中确定待建立数据库表的目标主数据库,以及从所述备数据库中确定与所述目标主数据库对应的目标备数据库;
在本发明实施例中,可以从多个主数据库中确定待建立数据库表的目标主数据库,以及从备数据库中确定与目标主数据库对应的目标备数据库。
其中,考虑到每个主数据库的内存使用率、CPU使用率、负载、数据存储量、存储资源等参数存在差异,在数据存储之前,需要根据这些参数,从多个主数据库中确定待建立数据库表的目标主数据库,以便于在目标主数据库中建立数据库表,将数据存储至数据库表中。
与此同时,从备数据库中需要确定与目标主数据库对应的目标备数据库,以便于在目标备数据库中建立数据库表,将数据同步至目标备数据库中的数据库表上,有效保障数据的安全性。
例如,对于A、B、C共3个主数据库,根据主数据库的内存使用率、CPU使用率、负载、数据存储量、存储资源等参数,确定目标主数据库:主数据库A,与此同时,确定与主数据库A对应的两个备数据库为目标备数据库。
S103,获取数据库表建表条件,根据所述数据库表建表条件执行相应数据库表建表指令,在所述目标主数据库以及所述目标备数据库中分别建立数据库表;
用户可以输入数据库表建表条件,以此在相应的数据库中建立数据库表。本发明实施例可以获取该数据库表建表条件,进而根据该数据库表建表条件执行相应数据库表建表指令,在目标主数据库以及目标备数据库中分别建立数据库表。
例如,用户输入数据库表建表条件,本发明实施例可以获取该数据库表建表条件,根据该数据库表建表条件执行相应数据库表建表指令,在主数据库A以及与主数据库A对应的两个备数据库中分别建立数据库表。
其中,对于数据库表建表条件可以包括业务逻辑拆分规则以及选择的主键类型。在本发明实施例中,业务逻辑拆分规则可以包括业务逻辑不拆分、业务逻辑包含一级拆分、业务逻辑包含二级拆分等,可选择的主键类型包含雪花算法、全部顺序自增、数据库默认等。
则本发明实施例可以获取数据库表建表条件,其中,所述数据库表建表条件包括业务逻辑拆分规则以及选择的主键类型,根据所述业务逻辑拆分规则确定数据库表类型,执行与所述数据库表类型对应的数据库表建表指令,在所述目标主数据库以及所述目标备数据库分别建立与所述主键类型对应的数据库表。
例如,当业务逻辑不拆分时,确定与业务逻辑拆分规则(业务逻辑不拆分)对应的数据库表类型:单表(单表为一个独立的数据库表),执行与数据库表类型(单表)对应的数据库表建表指令,在主数据库A以及与主数据库A对应的两个备数据库中分别建立与所述主键类型(雪花算法)对应的数据库表。其中,与数据库表类型(单表)对应的数据库表建表指令如下所示。
create table xxx()pk_type(),pk_type是主键类型选择,包含雪花、全局顺序自增、数据库默认等。
当业务逻辑包含一级拆分时,确定与业务逻辑拆分规则(业务逻辑包含一级拆分)对应的数据库表类型:分区表,执行与数据库表类型(分区表)对应的数据库表建表指令,在主数据库A以及与主数据库A对应的两个备数据库中分别建立与所述主键类型(雪花算法)对应的数据库表。其中,与数据库表类型(分区表)对应的数据库表建表指令如下所示。
create table xxx()partition by hash(uid)pk_type()。
当业务逻辑包含二级拆分时,确定与业务逻辑拆分规则(业务逻辑包含二级拆分)对应的数据库表类型:子分区表,执行与数据库表类型(子分区表)对应的数据库表建表指令,在主数据库A以及与主数据库A对应的两个备数据库中分别建立与所述主键类型(雪花算法)对应的数据库表。其中,与数据库表类型(子分区表)对应的数据库表建表指令如下所示。
create table xxx()partition by hash(uid)
subpartition by hash(sid)
pk_type()。
另外,为了可以更加方便的路由到数据库表,本发明实施例可以根据数据库表的名称、主键键值、切分键键值等建立索引路由,索引路由可以以Key-Value的形式存在,Key可以是主键键值或者切分键键值,Value可以是数据库表的名称。其中,创建索引路由的指令可以如下所示。
optimize ct_index db.table()
optimize ct_index db.subtable()。
S104,获取待存储数据,将所述待存储数据存储至所述目标主数据库中的所述数据库表上;
在本发明实施例中,可以获取待存储数据,可以将该待存储数据存储至目标主数据库中的数据库表上。例如,对于待存储数据a,可以将该待存储数据a存储至主数据库A的数据库表上。
其中,在将所述待存储数据存储至所述目标主数据库中的所述数据库表上之前,本发明实施例可以判断所述目标主数据库中的所述数据库表上已存储数据对应的数量是否小于预设阈值,若所述目标主数据库中的所述数据库表上已存储数据对应的数量小于预设阈值,则执行所述将所述待存储数据存储至所述目标主数据库中的所述数据库表上的步骤。
例如,在将待存储数据存储至目标数据库中的数据库表上之前,可以判断主数据库A中的数据库表上已存储数据对应的数量是否小于500W,若主数据库A中的数据库表上已存储数据对应的数量小于500W,则可以执行将待存储数据存储至主数据库A中的数据库表上的步骤。
另外,若所述目标主数据库中的所述数据库表上已存储数据对应的数量等于预设阈值,则从所述主数据库中确定待建立数据库表的新的目标主数据库,以及从所述备数据库中确定与所述新的目标主数据库对应的新的目标备数据库;根据所述数据库表建表条件执行相应数据库表建表指令,在所述新的目标主数据库以及所述新的目标备数据库中分别建立新的数据库表;将所述待存储数据存储至所述新的目标主数据库中的所述新的数据库表上;基于预设数据一致性算法将所述新的目标主数据库中的所述新的数据库表上存储的所述待存储数据同步至所述新的目标备数据库中的所述新的数据库表上。
例如,若主数据库A中的数据库表上已存储数据对应的数量等于500W,本发明实施例从上述主数据库A、B、C中确定待建立数据库表的新的目标主数据库:主数据库B,以及与主数据库B对应的两个备数据库为新的目标备数据库,其中,确定待建立数据库表的新的目标主数据库的实施方式可以参考上述,本发明实施例在此不再一一赘述;
根据数据库表建表条件执行相应数据库表建表指令,在主数据库B以及新的目标备数据库中分别建立新的数据库表,从而可以将待存储数据存储至主数据库B中的新的数据库表上,基于Raft算法将主数据库B中的新的数据库表上存储的待存储数据同步至新的目标备数据库中的新的数据库表上,以此保证数据一致性。
如此通过上述步骤,本发明实施例将数据水平拆分,水平拆分其实就是将数据分片存储,每个分片的结构是一致的,仅仅是数据不同。分布式数据库的水平拆分实现就是按照定长块拆分,每个数据库表存储一定量(例如500W)条数据,保证数据的均分分布,同时在存储资源即将耗尽的时候,可以实现无感知弹性扩容,不需要通过迁移工具进行数据迁移。
S105,基于预设数据一致性算法将所述目标主数据库中的所述数据库表上存储的所述待存储数据同步至所述目标备数据库中的所述数据库表上。
在将所述待存储数据存储至所述目标主数据库中的所述数据库表上之后,可以基于预设数据一致性算法将所述目标主数据库中的所述数据库表上存储的所述待存储数据同步至所述目标备数据库中的所述数据库表上。如此在目标主数据库的数据库表上以及目标备数据库的数据库表中分别存储待存储数据,可以形成高可用组,为数据安全提供了有效地保障。
例如,在将待存储数据存储至主数据库A中的数据库表上之后,基于预设数据一致性算法可以将主数据库A中的数据库表上存储的待存储数据同步至与主数据库A对应的两个备数据库中的数据库表上,如此可以形成三副本的高可用组。
其中,可以基于Raft算法将所述目标主数据库中的所述数据库表上存储的所述待存储数据同步至所述目标备数据库中的所述数据库表上。
需要说明的是,对于数据一致性算法,除Raft算法之外,还可以是其它算法,本发明实施例对此不作限定。
对于主数据库A、B、C,以及每个主数据库对应的两个备数据库,通过在主数据库A、B、C中确定待建立数据库表的目标主数据库,将待存储数据存储至目标主数据库中的数据库表上,可以实现将数据分布式存储至主数据库A、B、C中,降低了数据分布式存储的复杂度及周期,而且从备数据库中确定与目标主数据库对应的目标备数据库,基于预设数据一致性算法同步至目标备数据库中的数据库表上,对于每个主数据库中存储的数据,可以实现备份,有效地保障了数据的安全性。
如图3所示,为本发明实施例提供的另一种数据分布式存储方法的实施流程示意图,该方法具体可以包括以下步骤:
S301,获取数据插入指令,并解析所述插入指令中携带的数据库表标识、主键键值、唯一约束和二级索引;
当用户需要插入数据时,可以输入数据插入指令,本发明实施例可以获取该数据插入指令,该数据插入指令可以是Insert语句,并解析所述插入指令中携带的数据库表标识、主键键值、唯一约束和二级索引,如下所示。
Insert语句通过SQL解析器实现AST语法树解析,然后根据SQL优化器计算Insert语句中包含的数据库表标识、主键键值、唯一约束和二级索引等信息。
S302,确定创建所述数据库表标识对应的数据库表所选择的主键类型;
对于该数据库表标识对应的数据库表,确定创建该数据库表所选择的主键类型,该主键类型可以是雪花算法、全局顺序自增、数据库默认等。
例如,对于该数据库表名称对应的数据库表,确定创建该数据库表所选择的主键类型:雪花算法。
S303,以所述唯一约束为约束条件,根据所选择的主键类型对所述数据插入指令中携带的所述主键键值进行主键防重规则校验;
对于唯一约束,即约束主键不能重复,为此,以该唯一约束为约束条件,根据所选择的主键类型对所述数据插入指令中携带的所述主键键值进行主键防重规则校验。
其中,本发明实施例可以采用布隆过滤器,即以所述唯一约束为约束条件,根据所选择的主键类型运行布隆过滤器,对所述数据插入指令中携带的所述主键键值进行主键防重规则校验。
S304,若所述数据插入指令中携带的所述主键键值通过主键防重规则校验,则根据所述数据库表标识、所述主键键值以及所述二级索引插入所述插入指令中携带的数据,并存储在插入所述插入指令中携带的数据的过程中产生的元数据;
如果数据插入指令中携带的所述主键键值通过主键防重规则校验,可以根据数据库表标识、所述主键键值以及所述二级索引(除主键键值之外的全部为二级索引,例如年龄、姓名等)确定数据插入位置,进而可以将该插入指令中携带的数据插入该位置,与此同时,在该位置插入插入指令中携带的数据的过程中产生元数据,可以存储该元数据。
如果数据插入指令中携带的所述主键键值未通过主键防重规则校验,则表示主键键值存在冲突,可以提示用户主键冲突,对主键进行修改。
S305,基于预设数据一致性算法将所述插入指令中携带的数据以及所述元数据进行同步。
对于插入指令中携带的数据以及元数据,可以基于预设数据一致性算法将两者进行同步,例如通过两个raft group分别完成插入指令中携带的数据和元数据存储。
与此同时,可以根据数据库表的名称、主键键值、切分键键值等建立索引路由,索引路由可以以Key-Value的形式存在,Key可以是主键键值或者切分键键值,Value可以是数据库表的名称,可以更加方便的路由到数据库表,以便于完成数据查询。其中,多副本存储可以提供并发高校查询。
与上述方法实施例相对应,本发明实施例还提供了一种数据分布式存储装置,如图4所示,该装置可以包括:数据库创建模块410、数据库确定模块420、数据库表创建模块430、数据存储模块440、数据同步模块450。
数据库创建模块410,用于获取数据库建库条件,根据所述数据库建库条件执行相应数据库建库指令,建立多个主数据库以及与每个主数据库对应的多个备数据库;
数据库确定模块420,用于从所述主数据库中确定待建立数据库表的目标主数据库,以及从所述备数据库中确定与所述目标主数据库对应的目标备数据库;
数据库表创建模块430,用于获取数据库表建表条件,根据所述数据库表建表条件执行相应数据库表建表指令,在所述目标主数据库以及所述目标备数据库中分别建立数据库表;
数据存储模块440,用于获取待存储数据,将所述待存储数据存储至所述目标主数据库中的所述数据库表上;
数据同步模块450,用于基于预设数据一致性算法将所述目标主数据库中的所述数据库表上存储的所述待存储数据同步至所述目标备数据库中的所述数据库表上。
本发明实施例还提供了一种电子设备,如图5所示,包括处理器51、通信接口52、存储器53和通信总线54,其中,处理器51,通信接口52,存储器53通过通信总线54完成相互间的通信,
存储器53,用于存放计算机程序;
处理器51,用于执行存储器53上所存放的程序时,实现如下步骤:
获取数据库建库条件,根据所述数据库建库条件执行相应数据库建库指令,建立多个主数据库以及与每个主数据库对应的多个备数据库;从所述主数据库中确定待建立数据库表的目标主数据库,以及从所述备数据库中确定与所述目标主数据库对应的目标备数据库;获取数据库表建表条件,根据所述数据库表建表条件执行相应数据库表建表指令,在所述目标主数据库以及所述目标备数据库中分别建立数据库表;获取待存储数据,将所述待存储数据存储至所述目标主数据库中的所述数据库表上;基于预设数据一致性算法将所述目标主数据库中的所述数据库表上存储的所述待存储数据同步至所述目标备数据库中的所述数据库表上。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如多个磁盘存储器。可选的,存储器还可以是多个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种存储介质,该存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的数据分布式存储方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的数据分布式存储方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在存储介质中,或者从一个存储介质向另一个存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (10)

1.一种数据分布式存储方法,其特征在于,所述方法包括:
获取数据库建库条件,根据所述数据库建库条件执行相应数据库建库指令,建立多个主数据库以及与每个主数据库对应的多个备数据库;
从所述主数据库中确定待建立数据库表的目标主数据库,以及从所述备数据库中确定与所述目标主数据库对应的目标备数据库;
获取数据库表建表条件,根据所述数据库表建表条件执行相应数据库表建表指令,在所述目标主数据库以及所述目标备数据库中分别建立数据库表;
获取待存储数据,将所述待存储数据存储至所述目标主数据库中的所述数据库表上;
基于预设数据一致性算法将所述目标主数据库中的所述数据库表上存储的所述待存储数据同步至所述目标备数据库中的所述数据库表上。
2.根据权利要求1所述的方法,其特征在于,所述获取数据库表建表条件,根据所述数据库表建表条件执行相应数据库表建表指令,在所述目标主数据库以及所述目标备数据库中分别建立数据库表,包括:
获取数据库表建表条件,其中,所述数据库表建表条件包括业务逻辑拆分规则以及选择的主键类型;
根据所述业务逻辑拆分规则确定数据库表类型,执行与所述数据库表类型对应的数据库表建表指令;
在所述目标主数据库以及所述目标备数据库分别建立与所述主键类型对应的数据库表。
3.根据权利要求1所述的方法,其特征在于,所述将所述待存储数据存储至所述目标主数据库中的所述数据库表上之前,所述方法还包括:
判断所述目标主数据库中的所述数据库表上已存储数据对应的数量是否小于预设阈值;
若所述目标主数据库中的所述数据库表上已存储数据对应的数量小于预设阈值,则执行所述将所述待存储数据存储至所述目标主数据库中的所述数据库表上的步骤。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述目标主数据库中的所述数据库表上已存储数据对应的数量等于预设阈值,则从所述主数据库中确定待建立数据库表的新的目标主数据库,以及从所述备数据库中确定与所述新的目标主数据库对应的新的目标备数据库;
根据所述数据库表建表条件执行相应数据库表建表指令,在所述新的目标主数据库以及所述新的目标备数据库中分别建立新的数据库表;
将所述待存储数据存储至所述新的目标主数据库中的所述新的数据库表上;
基于预设数据一致性算法将所述新的目标主数据库中的所述新的数据库表上存储的所述待存储数据同步至所述新的目标备数据库中的所述新的数据库表上。
5.根据权利要求1所述的方法,其特征在于,所述基于预设数据一致性算法将所述目标主数据库中的所述数据库表上存储的所述待存储数据同步至所述目标备数据库中的所述数据库表上,包括:
基于Raft算法将所述目标主数据库中的所述数据库表上存储的所述待存储数据同步至所述目标备数据库中的所述数据库表上。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述方法还包括:
获取数据插入指令,并解析所述插入指令中携带的数据库表标识、主键键值、唯一约束和二级索引;
确定创建所述数据库表标识对应的数据库表所选择的主键类型;
以所述唯一约束为约束条件,根据所选择的主键类型对所述数据插入指令中携带的所述主键键值进行主键防重规则校验;
若所述数据插入指令中携带的所述主键键值通过主键防重规则校验,则根据所述数据库表标识、所述主键键值以及所述二级索引插入所述插入指令中携带的数据,并存储在插入所述插入指令中携带的数据的过程中产生的元数据;
基于预设数据一致性算法将所述插入指令中携带的数据以及所述元数据进行同步。
7.根据权利要求1所述的方法,其特征在于,所述以所述唯一约束为约束条件,根据所选择的主键类型对所述数据插入指令中携带的所述主键键值进行主键防重规则校验,包括:
以所述唯一约束为约束条件,根据所选择的主键类型运行布隆过滤器,对所述数据插入指令中携带的所述主键键值进行主键防重规则校验。
8.一种数据分布式存储装置,其特征在于,所述装置包括:
数据库创建模块,用于获取数据库建库条件,根据所述数据库建库条件执行相应数据库建库指令,建立多个主数据库以及与每个主数据库对应的多个备数据库;
数据库确定模块,用于从所述主数据库中确定待建立数据库表的目标主数据库,以及从所述备数据库中确定与所述目标主数据库对应的目标备数据库;
数据库表创建模块,用于获取数据库表建表条件,根据所述数据库表建表条件执行相应数据库表建表指令,在所述目标主数据库以及所述目标备数据库中分别建立数据库表;
数据存储模块,用于获取待存储数据,将所述待存储数据存储至所述目标主数据库中的所述数据库表上;
数据同步模块,用于基于预设数据一致性算法将所述目标主数据库中的所述数据库表上存储的所述待存储数据同步至所述目标备数据库中的所述数据库表上。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-7中任一所述的方法步骤。
10.一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的方法。
CN202010608688.7A 2020-06-29 2020-06-29 数据分布式存储方法、装置、电子设备及存储介质 Pending CN111782634A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010608688.7A CN111782634A (zh) 2020-06-29 2020-06-29 数据分布式存储方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010608688.7A CN111782634A (zh) 2020-06-29 2020-06-29 数据分布式存储方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN111782634A true CN111782634A (zh) 2020-10-16

Family

ID=72761161

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010608688.7A Pending CN111782634A (zh) 2020-06-29 2020-06-29 数据分布式存储方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN111782634A (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103631924A (zh) * 2013-12-03 2014-03-12 Tcl集团股份有限公司 一种分布式数据库平台的应用方法和系统
CN105912678A (zh) * 2016-04-13 2016-08-31 北京思特奇信息技术股份有限公司 一种数据存储方法、数据读取方法及其对应的系统
WO2019154394A1 (zh) * 2018-02-12 2019-08-15 中兴通讯股份有限公司 分布式数据库集群系统、数据同步方法及存储介质

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103631924A (zh) * 2013-12-03 2014-03-12 Tcl集团股份有限公司 一种分布式数据库平台的应用方法和系统
CN105912678A (zh) * 2016-04-13 2016-08-31 北京思特奇信息技术股份有限公司 一种数据存储方法、数据读取方法及其对应的系统
WO2019154394A1 (zh) * 2018-02-12 2019-08-15 中兴通讯股份有限公司 分布式数据库集群系统、数据同步方法及存储介质

Similar Documents

Publication Publication Date Title
US11960464B2 (en) Customer-related partitioning of journal-based storage systems
US10346434B1 (en) Partitioned data materialization in journal-based storage systems
CN110147407B (zh) 一种数据处理方法、装置及数据库管理服务器
Abourezq et al. Database-as-a-service for big data: An overview
US10515228B2 (en) Commit and rollback of data streams provided by partially trusted entities
WO2015039569A1 (zh) 副本存储装置及副本存储方法
EP3707614B1 (en) Redistributing table data in database cluster
WO2016169237A1 (zh) 数据处理方法及装置
Liu et al. An improved hadoop data load balancing algorithm
CN112685499A (zh) 一种工作业务流的流程数据同步方法、装置及设备
US10235407B1 (en) Distributed storage system journal forking
CN111886592A (zh) 用于对分片数据集合执行内联接的方法和系统
US11157456B2 (en) Replication of data in a distributed file system using an arbiter
US11429311B1 (en) Method and system for managing requests in a distributed system
CN111459913B (zh) 分布式数据库的容量扩展方法、装置及电子设备
CN111782634A (zh) 数据分布式存储方法、装置、电子设备及存储介质
US11132401B1 (en) Distributed hash table based logging service
CN111163151A (zh) 一种信息处理方法、设备及计算机可读存储介质
US10255139B2 (en) Synchronized backup and recovery of heterogeneous DBMSs using third party backup tool
CN107102898B (zh) 一种基于numa架构的内存管理、构建数据结构的方法及装置
US11816088B2 (en) Method and system for managing cross data source data access requests
CN114676093B (zh) 一种文件管理方法、装置、电子设备及存储介质
US11868352B2 (en) Systems and methods for spilling data for hash joins
US20220365905A1 (en) Metadata processing method and apparatus, and a computer-readable storage medium
WO2020207078A1 (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant after: Jingdong Technology Holding Co.,Ltd.

Address before: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant before: Jingdong Digital Technology Holding Co.,Ltd.

Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant after: Jingdong Digital Technology Holding Co.,Ltd.

Address before: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant before: JINGDONG DIGITAL TECHNOLOGY HOLDINGS Co.,Ltd.