CN104376025B - 分布式数据库的数据存储方法和装置 - Google Patents

分布式数据库的数据存储方法和装置 Download PDF

Info

Publication number
CN104376025B
CN104376025B CN201310360240.8A CN201310360240A CN104376025B CN 104376025 B CN104376025 B CN 104376025B CN 201310360240 A CN201310360240 A CN 201310360240A CN 104376025 B CN104376025 B CN 104376025B
Authority
CN
China
Prior art keywords
node
record
external key
key mark
memory
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
Application number
CN201310360240.8A
Other languages
English (en)
Other versions
CN104376025A (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201310360240.8A priority Critical patent/CN104376025B/zh
Priority to EP14835967.2A priority patent/EP3018593B1/en
Priority to PCT/CN2014/081346 priority patent/WO2015021828A1/zh
Publication of CN104376025A publication Critical patent/CN104376025A/zh
Priority to US15/043,853 priority patent/US11086833B2/en
Application granted granted Critical
Publication of CN104376025B publication Critical patent/CN104376025B/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
    • 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/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • 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/24Querying
    • G06F16/245Query processing
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供一种分布式数据库的数据存储方法和装置。该方法包括:第一节点接收记录插入请求,所述记录插入请求携带第一记录;所述第一节点根据外键标识与存储节点的映射关系,确定所述第一记录对应的第一关联记录所在的第一存储节点,其中所述第一关联记录的主键标识与所述第一记录的外键标识相同;所述第一节点将所述第一记录插入所述第一存储节点中的第二节点。本发明实施例提供的方法解决了现有技术中数据插入效率低、更新速度慢的技术问题。

Description

分布式数据库的数据存储方法和装置
技术领域
本发明实施例涉及信息技术领域,涉及一种分布式数据库的数据存储方法和装置。
背景技术
在分布式数据存储中,前端服务器将数据库中的各个数据表中的数据按照某种规则进行分区或分片(Sharding)后分布存储在多个不同的节点上,这里的数据可以是数据表中的多条记录,并由每个节点上运行的数据库实例来管理分配到该节点上的记录。为了保证系统的可靠性,在分布式系统中,通常会为每份数据在其余节点做至少一份的数据备份,即主节点在收到数据后,会在一个或多个节点(从节点)上备份数据;由于采用的分区、备份方法都是单独作用于各个数据表,因此,针对多个数据表的较复杂的关联查询时,若关联的数据表不在同一个节点时,就需要进行跨节点的关联查询,影响查询的响应时间和查询效率。
为了解决上述跨节点查询带来的缺陷,现有技术中,在前端服务器上将维度表中的记录分布存储到各节点上,若要在某些节点上插入与维度表关联的事实表中的记录,则需要将存储事实表的节点上相关联的维度表中的记录拷贝到要插入记录的节点上,使得维度表和事实表中的相关联的记录可以保存在同一个节点上。
但是在现有技术中,由于在记录插入的过程中,需要跨节点拷贝相关的数据,导致数据插入效率低,更新速度慢。
发明内容
本发明实施例提供一种分布式数据库的数据存储方法和装置,以解决现有技术中数据插入效率低、更新速度慢的技术问题。
本发明实施例第一方面提供一种分布式数据库的数据存储方法,包括:
第一节点接收记录插入请求,所述记录插入请求携带第一记录;
所述第一节点根据外键标识与存储节点的映射关系,确定所述第一记录关联的第一关联记录所在的第一存储节点,其中所述第一关联记录的主键标识与所述第一记录的外键标识相同;
所述第一节点将所述第一记录插入所述第一存储节点中的第二节点。
结合第一方面,在第一方面的第一种可能的实施方式中,所述第一节点根据外键标识与存储节点的映射关系,确定所述第一记录对应的第一关联记录所在的第一存储节点,包括:
所述第一节点根据所述第一记录的外键标识在所述外键标识和存储节点的映射关系中进行查询,确定所述第一记录对应的第一关联记录所在的第一存储节点。
结合第一方面,在第一方面的第二种可能的实施方式中,所述第一节点将所述第一记录插入所述第一存储节点中的第二节点之后,还包括:
所述第一节点将所述第一记录插入至第三节点中,所述第三节点为所述第一存储节点中除所述第二节点之外的第三节点。
结合第一方面或第一方面的第二种可能的实施方式,在第一方面的第三种可能的实施方式中,所述第一存储节点中包括存储所述第一关联记录的主存储节点和备份存储节点。
结合第一方面的第二种可能的实施方式,在第一方面的第四种可能的实施方式中,所述第一节点将所述第一记录插入所述第一存储节点中的第二节点之后,还包括:
若所述第一节点在预设时间内接收到所述第二节点或所述第三节点中任一节点返回的所述第一记录插入成功响应消息,则所述第一节点在所述第一节点上插入所述第一记录。
结合第一方面的第四种可能的实施方式,在第一方面的第五种可能的实施方式中,所述第一节点在所述第一节点上插入所述第一记录之后,还包括:
所述第一节点接收更新命令,所述更新命令中携带第二记录;
所述第一节点根据所述第二记录的外键标识在所述外键标识与存储节点的映射关系中进行查询,确定所述第二记录对应的第二关联记录所在的第二存储节点,其中所述第二关联记录的主键标识与所述第二记录的外键标识相同;
所述第一节点从所述第二存储节点中确定第四节点。
结合第一方面的第五种可能的实施方式,在第一方面的第六种可能的实施方式中,所述第一节点确定所述第四节点之后,还包括:
若所述第二记录的外键标识与所述第一记录的外键标识不同,则所述第一节点判断所述第四节点和所述第二节点是否是同一个节点;若是同一个节点,则所述第一节点在所述第一节点、所述第三节点以及所述第二节点中插入所述第二记录;若不是同一个节点,则所述第一节点在所述第二节点上删除所述第一记录,并将所述第二记录插入至所述第二记录所属的第四节点;
若所述第二记录的外键标识与所述第一记录的外键标识相同,则所述第一节点在所述第一节点、所述第三节点以及所述第二节点插入所述第二记录。
结合第一方面的第四种可能的实施方式,在第一方面的第七种可能的实施方式中,所述第一节点在所述第一节点上插入所述第一记录之后,还包括:
所述第一节点接收删除第三记录的命令,所述命令中携带所述第三记录的外键标识;
所述第一节点根据所述第三记录是我外键标识在所述外键标识与存储节点的映射关系中进行查询,确定所述第三记录对应的第三关联记录所在的第三存储节点,其中所述第三关联记录的外键标识与所述第三记录的主键标识相同;
所述第一节点从所述第三存储节点确定存储所述第三记录的第五节点;
所述第一节点将所述命令发送给所述第五节点,以使所述第五节点删除所述第五节点上存储的所述第三记录。
结合第一方面的第四种可能的实施方式,在第一方面的第八种可能的实施方式中,所述第一节点在所述第一节点上插入所述第一记录之后,还包括:
若所述第一节点掉线,则所述第三节点将所述第三节点上所有记录的主键标识发送至分布式数据库中除所述第三节点之外的其他节点,以使所述其他节点根据所有记录的主键标识查询所述所有记录的主键标识对应的记录;
所述第三节点接收所述其他节点发送的所述所有记录的主键标识对应的记录,并将所述所有记录的主键标识对应的记录插入所述第三节点。
结合第一方面的第四种可能的实施方式,在第一方面的第九种可能的实施方式中,所述第一节点在所述第一节点上插入所述第一记录之后,还包括:
所述第一节点确定分布式数据库中除所述第二节点和所述第三节点之外的其他节点负载能力;
所述第一节点将所述第一节点存储的记录发送至第六节点;其中,所述第六节点的负载能力低于所述第一节点的负载能力;
所述第一节点删除所述第一节点上存储的发送至所述第六节点的记录。
本发明实施例第二发明提供一种分布式数据库的数据存储装置,包括:
第一接收模块,用于接收记录插入请求,所述记录插入请求携带第一记录;
第一确定模块,用于根据外键标识与存储节点的映射关系,确定所述第一记录对应的第一关联记录所在的第一存储节点,其中所述第一关联记录的主键标识与所述第一记录的外键标识相同;
第一插入模块,用于将将所述第一记录插入所述第一存储节点中的第二节点。
结合第二方面,在第二方面的第一种可能的实施方式中,所述第一确定模块,具体用于根据所述第一记录的外键标识在所述外键标识和存储节点的映射关系中进行查询,确定所述第一记录对应的第一关联记录所在的第一存储节点。
结合第二方面,在第二方面的第二种可能的实施方式中,所述第一插入模块还用于在将所述第一记录插入所述第一存储节点中的第二节点之后,将所述第一记录插入至第三节点中,所述第三节点为所述第一存储节点中除所述第二节点之外的节点。
结合第二方面或第二方面的第二种可能的实施方式,在第二方面的第三种可能的实施方式中,所述第一存储节点中包括存储所述第一关联记录的主存储节点和备份存储节点。
结合第二方面的第二种可能的实施方式,在第二方面的第四种可能的实施方式中,所述装置还包括:
第二插入模块,用于在所述第一插入模块将所述第一记录插入所述第一存储节点中的第二节点之后,若在预设时间内接收到所述第二节点或所述第三节点中任一节点返回的第一插入成功响应消息,则在所述分布式数据库的数据存储装置的第一节点上插入所述第一记录。
结合第二方面的第四种可能的实施方式,在第二方面的第五种可能的实施方式中,所述装置还包括:
第二接收模块,用于在所述第二插入模块在所述分布式数据库的数据存储装置的第一节点上插入所述第一记录之后,接收更新命令,所述更新命令中携带第二记录;
所述第一确定模块,还用于根据所述第二记录的外键标识在所述第一节点根据所述外键标识与存储节点的映射关系中进行查询,确定所述第二记录对应的第二关联记录所在的第二存储节点,其中所述第二关联记录的主键标识与所述第二记录的外键标识相同;
第二确定模块,用于从所述第二存储节点中确定第四节点。
结合第二方面的第五种可能的实施方式,在第二方面的第六种可能的实施方式中,所述装置还包括:
判断模块,用于所述第二确定模块确定所述第四节点之后,若所述第二记录的外键标识与所述第一记录的外键标识不同,则判断所述第四节点和所述第二节点是否是同一个节点;
若是同一个节点,则所述第二插入模块在所述分布式数据库的数据存储装置的第一节点、所述第三节点以及所述第二节点中插入所述第二记录;
若不是同一个节点,则所述第二插入模块在所述第二节点上删除所述第一记录,并将所述第二记录插入至所述第二记录所属的第四节点;
若所述第二记录的外键标识与所述第一记录的外键标识相同,则所述第二插入模块在所述分布式数据库的数据存储装置的第一节点、所述第三节点以及所述第二节点插入所述第二记录。
结合第二方面的第四种可能的实施方式,在第二方面的第七种可能的实施方式中,所述装置还包括:
第三接收模块,用于在所述第二插入模块在所述分布式数据库的数据存储装置的第一节点上插入所述第一记录之后,接收删除第三记录的命令,所述命令中携带所述第三记录的外键标识;
第三确定模块,用于根据所述第三记录的外键标识在所述外键标识与存储节点的映射关系中进行查询,确定所述第三记录对应的第三关联记录所在的第三存储节点,其中所述第三关联记录的外键标识与所述第三记录的主键标识相同;还用于从所述第三存储节点确定存储所述第三记录的第五节点;
第一发送模块,用于将所述命令发送给所述第五节点,以使所述第五节点删除所述第五节点上存储的所述第三记录。
结合第二方面的第四种可能的实施方式,在第二方面的第八种可能的实施方式中,所述装置还包括:
第二发送模块,用于在所述第二插入模块在所述分布式数据库的数据存储装置的第一节点上插入所述第一记录之后,若所述分布式数据库的数据存储装置的第一节点掉线,则所述第二发送模块将所述第三节点上所有记录的主键标识发送至分布式数据库中除所述第三节点之外的其他节点,以使所述其他节点根据所述所有记录的主键标识查询所述所有记录的主键标识对应的记录;
第四接收模块,用于接收所述其他节点发送的所述所有记录的主键标识对应的记录,并将所述所有记录的主键标识对应的记录插入所述第三节点。
结合第二方面的第四种可能的实施方式,在第二方面的第九种可能的实施方式中,所述装置还包括:
第四确定模块,用于所述第二插入模块在所述分布式数据库的数据存储装置的第一节点上插入所述第一记录之后,确定分布式数据库中除所述第二节点和所述第三节点之外的其他节点负载能力;
第三发送模块,用于将所述第一节点存储的记录发送至第六节点;其中,所述第六节点的负载能力低于所述第一节点的负载能力;
删除模块,用于删除所述分布式数据库的数据存储装置的第一节点上存储的发送至所述第六节点的记录。
本发明实施例提供的方法,通过第一节点接收记录插入请求中的第一记录,并根据第一节点上的外键标识和存储节点的映射关系,确定与该第一记录对应的第一关联记录所在的第一存储节点,从而将该第一记录插入第一存储节点中的任意一个第二节点中,进而提高了数据的插入效率以及更新速率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的分布式数据库的数据存储方法实施例一的流程示意图;
图2为本发明提供的分布式数据库的数据存储方法实施例二的流程示意图;
图3为本发明提供的分布式数据库的数据存储方法实施例三的流程示意图;
图4为本发明提供的分布式数据库的数据存储方法实施例四的流程示意图;
图5为本发明提供的分布式数据库的数据存储方法实施例五的流程示意图;
图6为本发明提供的分布式数据库的数据存储方法实施例六的流程示意图;
图7为本发明提供的分布式数据库的数据存储装置实施例一的结构示意图;
图8为本发明提供的分布式数据库的数据存储装置应用示意图;
图9为本发明提供的分布式数据库的数据存储装置实施例二的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明提供的分布式数据库的数据存储方法实施例一的流程示意图,如图1所示,该方法包括:
S101:第一节点接收记录插入请求,该记录插入请求中携带第一记录。
本发明实施例中分布式数据库系统由至少一个节点(Node)和客户端(Client)组成。第一节点可以是分布式数据库系统中的任意一个节点。
客户端确定需要插入记录后,向前端服务器下发记录插入请求,前端服务器可以向分布式数据库系统中的任意一个节点发送记录插入请求。
不同的数据表具有不同的主键,例如:学生信息表的主键可以是学号,成绩表的主键可以是成绩的序号等等。不同的数据表中的记录可以通过主键标识进行分区(主键标识可以唯一表示数据表中的一条记录,通常主键的取值不能缺失,即不设置为空值)。需要说明的是,通常主键标识可以由数字或字母等来标识。例如:可以采用1,2,3,4……等连续的自然数来表示不同的主键标识。因此,前端服务器通常可以按照主键标识的数值范围来将数据表的记录分布式存储在不同的节点中。例如:主键标识为1-10的记录可以存储在一个节点中,主键标识为11-20的记录可以存储在一个节点中,依次类推。
这里以两张数据表为例,分别是学生信息表和成绩表,学生信息表包括学生的学号、姓名以及住址信息,成绩表包括成绩的序号、学生的学号、学生姓名、科目以及成绩。其中,学生信息表的主键为学生的学号;成绩表的主键为成绩序号,外键为学生的学号;这里的学生信息表和成绩表为通过成绩表的外键和学生信息表的主键联系起来的两张关联的表。具体的,成绩表中某条记录的外键标识(学生的学号)与学生信息表中某条记录的主键标识(学生的学号)相同的话,则将成绩表中该条记录与学生信息表中的该条记录关联起来。
其中,学生信息表即为本发明实施例中涉及的维度表,其只有主键标识,成绩表即为本发明实施例中涉及的事实表,其既有主键标识也有外键标识,并且成绩表的外键标识是学生信息表的主键标识。前端服务器根据学生信息表中各条记录的主键标识(学生的学号)将学生信息表中的记录分布式存储到各个节点上,同样,根据成绩表中各条记录的主键标识(成绩序号)将成绩表中的多条记录分布到分布式数据库系统中的各个节点上。这里假设分布式数据库系统中有5个节点,分别为节点A、节点B、节点C、节点D以及节点E,学生信息表中有学号001-010的10个学生的信息记录,成绩表中有成绩序号1-20的20条成绩记录,其中每个学生对应2门科目的成绩。前端服务器可以将学号001-002的学生的信息记录分布在节点A上,并且节点B和节点C上备份;将003-004的学生的信息记录分布在节点B上,并且在节点A和节点C上备份,将005-006的学生的信息记录分布在节点C上,并且在节点B和节点A上备份,以此类推,将学号范围为007-008、009-010的学生的信息记录分别分布在节点D和节点E上,并且也在相应的节点上备份。节点A上还存储成绩序号范围为1-10的10条成绩记录,并且在节点B和节点C上备份,节点C上存储成绩序号范围为11-20的10条成绩记录,并且在节点A和节点D上备份,以此类推,节点B上可以存储成绩序号范围为21-30的成绩记录,并且在节点D和节点E上备份,节点D以及节点E也分别可以存储成绩序号范围31-40、41-50的成绩记录,并且也在相应的节点上备份,但是目前节点B、节点D以及节点E上均没有存储成绩记录。
这里的第一节点接收前端服务器发送的记录插入请求,对该记录插入请求进行解析,获取该记录插入请求中携带的第一记录,按照上述所举的例子,为了方便说明技术方案,本发明实施例中的第一记录可以为一条成绩序号为22,学生的学号为001的学生的物理成绩记录,第一节点为节点B。
S102:第一节点根据外键标识与存储节点的映射关系,确定上述第一记录对应的第一关联记录所在的第一存储节点,其中该第一关联记录的主键标识与所述第一记录的外键标识相同。
其中一种实施方式,第一节点根据外键标识与存储节点的映射关系,确定上述第一记录对应的第一关联记录所在的第一存储节点,包括:
第一节点根据上述第一记录的外键标识在外键标识和存储节点的映射关系中进行查询,确定上述第一记录对应的第一关联记录所在的第一存储节点。
需要说明的是,系统中的任意一个节点,即可以是本发明实施例中涉及的第一节点,也可以是第一存储节点。即,系统中的任意一个节点即可以作为执行记录插入操作的节点,也可以作为记录存储的存储节点。
具体的,第一节点(节点B)在获取到第一记录之后,通过判断该第一记录所要插入的数据表是否存在外键标识,来判断该第一记录所要插入的数据表是否为事实表,若存在外键标识,则判断该第一记录所要插入的数据表为事实表。例如:这条成绩序号为22,学生的学号为001的学生的物理成绩记录,成绩序号22为主键标识,学生的学号001为外键标识,因此,该成绩记录所要插入的成绩表是事实表(成绩表)。若某一记录的主键标识与该第一记录的外键标识相同,则该记录即为第一记录的关联记录,在此称为第一关联记录。进一步的,可以根据第一节点上的外键标识与存储节点的映射关系,确定用于存储上述第一关联记录所在的第一存储节点,并且该第一存储节点为多个。即第一记录的外键标识为学号001,而学号001的学生信息记录在节点A上存储,在节点B和节点C上备份,因此,第一存储节点包括节点A、节点B和节点C。其中,节点A可以称为该学生信息表的主副本节点,节点B和节点C为该学生信息表的从副本节点,节点A上存储的是主副本,节点B和节点C上备份的从副本,主副本和从副本统称为该第一关联记录的主键副本。
S103:第一节点将第一记录插入上述第一存储节点中的第二节点。
上述节点B在确定完用于存储与第一记录关联的第一关联记录的第一存储节点之后,可以从第一存储节点(节点A、节点B以及节点C)中选择任意一个节点作为外键副本节点,即第二节点(这里假设为节点A),并将这条序号为22,学号为001的学生的物理成绩记录插入外键副本节点(节点A)中,生成外键副本,这样就使得学号为001的学生信息记录以及学号为001的物理成绩记录都存储在同一个节点A上,客户端在查询学号001的学生相关信息时能够避免跨节点查询。另一方面,假设要更新学号为001的学生的信息记录时(更新学号为001的学生的住址信息),只需更新节点A以及备份学号为001的学生信息记录的节点B和节点C上的记录(这里的主副本节点数恒定,由系统的参数决定),而无需多个节点都拷贝节点A上学号为001的学生信息记录,因此在更新时需更新所有拷贝学号为001的学生记录的节点上的记录,因此,本发明实施例的方法也提高了数据的更新速度。
另外,若上述通过判断第一记录所要插入的数据表不是事实表而是维度表,则按照现有技术处理,即根据该第一记录的主键标识(序号22)和存储节点的映射关系,确定该序号为22的成绩记录所要备份的节点(节点D和节点E),则将上述第一记录插入到节点D和节点E中,若在一定时间内节点D或节点E任一节点返回一个插入成功响应消息给节点B,则节点B在节点B上插入该第一记录;若节点B没有收到节点D或节点E任一个节点返回的插入成功响应消息,则节点B向客户端返回插入失败响应消息,结束此次插入流程。
为了更好的体现出本发明实施例在数据的插入效率和更新速度方面的优越性,以另外一个简单地例子来说明:
插入记录时,假设客户通过前端服务器要插入1条科目是语文、学号为001,成绩序号为100的成绩记录到节点2上(目的是将学号为001的成绩记录和学生信息记录插入到同一个节点上),假设当前的节点2上没有001的学生信息记录,即在节点2上找不到学号为001的这个学生的位置(节点1上保存了学号为001的学生信息),则前端服务器需要去节点1上拷贝学号为001的学生信息到节点2上保存后,才将本例子中的成绩记录插入到节点2上,中间多了一个拷贝的过程,会引起系统的延时,因此插入的效率低下;而且在更新时,假设节点1上的学号为001的学生的住址信息更新了,则还要将节点2上存储的学号为001的学生信息更新;而本发明在插入该条成绩记录时,前端服务器只需要根据该条成绩记录的外键标识在节点2上的外键标识和存储节点的映射关系确定学号为001的学生信息存储在节点1上,那么前端服务器就会直接将当前的这条成绩记录插入到节点1上,确保学号为001的学生信息记录和成绩记录在同一个节点上,避免了现有技术中的跨节点拷贝的过程,节省了插入的时间,提高插入效率;同时在更新时只需更新节点1上的学号为001的学生的住址信息,提高了更新速度。
本发明实施例提供的方法,通过第一节点接收记录插入请求中的第一记录,并根据第一节点上的外键标识和存储节点的映射关系,确定与该第一记录对应的第一关联记录所在的第一存储节点,从而将该第一记录插入第一存储节点中的第二节点中,进而提高了数据的插入效率以及更新速率。
图2为本发明提供的分布式数据库的数据存储方法实施例二的流程示意图,在上述图1所示实施例的基础上,上述第一存储节点中包括存储第一关联记录的主存储节点和存储第一关联记录的备份存储节点;且上述第一节点是根据第一记录的外键标识在上述第一节点上的外键标识和存储节点的映射关系中进行查询,确定上述第一记录对应的第一关联记录所在的第一存储节点。进一步地,在S103之后,该方法还包括:
S201:第一节点将第一记录插入至第三节点中,该第三节点为上述第一存储节点中除第二节点之外的其他节点。
具体的,在上述实施例1中第一节点确定与第一记录关联的第一关联记录的第一存储节点(也就是上述例子中的节点A、节点B和节点C),并将第一记录插入上述第一存储节点中的第二节点中之后,第一节点还根据分布式数据库中的系统参数决定在上述第一存储节点中除第二节点之外的第三节点上插入该第一记录,此处假设该第三节点为节点C,也就是说该第一记录可以具有另外一个外键副本节点。
进一步地,在上述图2所示实施例的基础上,在S201之后,该方法还包括:
S202:若上述第一节点在预设时间内接收到第二节点或第三节点中任一节点返回的第一插入成功响应消息,则第一节点在第一节点上插入第一记录。
具体的,在上述第一节点在第二节点和第三节点上插入第一记录之后,第一节点在预设时间内判断是否接收到第二节点或第三节点中的任一节点发送的第一插入成功响应消息,若收到,则第一节点将上所述第一记录插入到第一节点上,若未收到,则第一节点向客户端返回插入失败响应消息,结束此次第一记录插入过程,并且需要注意的是,若分布式数据库系统的一致性要求较高,则在预设时间内第一节点要收到第二节点和第三节点一起返回的插入成功响应消息,第一节点才会将第一记录插入到第一节点中。
本发明实施例提供的方法,通过第一节点接收第一记录,并根据第一节点上的外键标识和存储节点的映射关系,确定与第一记录对应的第一关联记录所在的第一存储节点,从而将该第一记录插入第一存储节点中的第二节点,使得第一记录可以与第一关联记录存储在同一个节点上,避免了客户端的跨节点查询,进而减少了系统关联查询时所带来的网络流量和传输延时,减少了系统的查询响应时间,同时提高了数据的插入效率以及更新速率。
图3为本发明提供的分布式数据库的数据存储方法,本实施例涉及的方法是针对第一节点收到更新记录的命令,所进行的一系列更新操作,在上述实施例的基础上,在S202之后,该方法对节点上的记录以及所要插入的更新的第二记录的外键标识进行判断,并根据判断结果执行相应的更新操作,具体包括:
S301:第一节点接收更新命令,该更新命令中携带第二记录;第一节点根据第二记录的外键标识在外键标识和存储节点的映射关系中进行查询,确定第二记录对应的第二关联记录所在的第二存储节点;其中第二关联记录的主键标识与所述第二记录的外键标识相同;
S302:第一节点从上述多个第二存储节点中确定第四节点。
具体的,第一节点接收更新命令,该更新命令中携带第二记录,继续按照上述实施例中的例子进行举例,该第二记录同样也是一条成绩记录,该第二记录与第一记录的主键标识相同(成绩序号相同);第一节点根据第二记录的外键标识,在第一节点上的外键标识与存储节点的映射关系中进行查询,确定与该第二记录对应的第二关联记录的第二存储节点,且该第二存储节点为多个,并从该第二存储节点中选择第四节点,即该第四节点为该第二记录的外键副本节点。
S303:若上述第二记录的外键标识与上述第一记录的外键标识不同,则第一节点判断第四节点和第二节点是否是同一个节点;若是同一个节点,则第一节点在第一节点、第三节点以及第二节点中插入第二记录;若不是同一个节点,则第一节点在第二节点上删除第一记录,并将第二记录插入至第二记录所属的第四节点;若第二记录的外键标识与第一记录的外键标识相同,则第一节点在第一节点、第三节点以及第二节点插入第二记录。
具体的,第一节点判断上述第二记录的外键标识与第一记录的外键标识是否相同,即判断第二记录中学生的学号与第一记录中学生的学号是否相同,分为两种情况:
第一种:若第二记录的外键标识与第一记录的外键标识不同,则第一节点判断第二记录所属的第四节点和第一记录所属的第二节点是否为同一个节点,若是,则第一节点在第一节点、第三节点以及第二节点中插入第二记录,即在第一节点(相当于本地节点)、两个外键副本节点插入该第二记录;若不是同一个节点,在第一节点在第二节点上删除第一记录,并将第二记录插入至第二记录所属的第四节点,这样是因为一个序号只能对应一条成绩记录,所以需要删除原有的外键副本节点上的第一记录。
第二种:若第二记录的外键标识与第一记录的外键标识相同,则在第一节点、第三节点以及第二节点插入第二记录。
本发明实施例提供的方法,通过第一节点接收更新命令,并根据更新命令中携带的第二记录的外键标识确定存储第二记录的第四节点,即第二记录的外键副本节点,通过判断第四节点与第二节点是否为同一节点进行相应的更新操作,提高了数据插入之后,系统更新数据的速率。
图4为本发明提供的分布式数据库的数据存储方法实施例四的流程示意图,本实施例涉及的方法是针对第一节点接收删除记录的命令后所进行的一系列操作,在上述实施例的基础上,在S202之后,该方法根据删除命令中的主键标识确定所要删除的第三记录,并根据第三记录的外键标识确定存储第三记录的外键副本节点,并删除该外键副本节点上存储的第三记录,具体包括:
S401:第一节点接收删除第三记录的命令,该命令中携带第三记录的外键标识。
具体的,客户端向前端服务器发送删除记录的删除命令,由前端服务器转发给第一节点,该删除命令中携带所要删除的第三记录的外键标识,实际上为第一节点根据该删除命令确定所要删除的记录为第三记录,之后确定第三记录的外键标识,因此可以看作该删除命令中携带了第三记录的外键标识。
S402:第一节点根据第三记录的外键标识在外键标识和存储节点的映射关系中进行查询,确定第三记录对应的第三关联记录所在的第三存储节点;其中第三关联记录的主键标识与第三记录的外键标识相同。
S403:第一节点从第三存储节点确定存储第三记录的第五节点。
具体的,第一节点在确定了所要删除的记录为第三记录后,根据该第三记录的外键标识在第一节点上的外键标识与存储节点的映射关系中进行查询,确定与第三记录对应的第三关联记录所在的第三存储节点,且该第三存储节点可以为多个,即判断第三记录的外键标识处于哪一个外键标识范围,所处的外键标识范围的记录又存储和备份在哪些个第三存储节点上,从而确定存储第三关联记录第三存储节点;第一节点从上述第三存储节点确定第五节点,即确定第三记录的外键副本节点。
S404:第一节点将上述命令发送给第五节点,以使第五节点删除第五节点上存储的第三记录。
图5为本发明提供的分布式数据库的数据存储方法实施例五的流程示意图,本实施例涉及的方法是针对第一节点掉线之后,外键副本恢复的场景,在上述实施例的基础上,如图5所示,在S202之后,该方法包括如下步骤:
S501:若第一节点掉线,则第三节点将第三节点所有记录的主键标识发送至分布式数据库中除第三节点之外的其他节点,以使其他节点根据上述所有记录的主键标识查询上述所有记录的主键标识对应的记录。
S502:第三节点接收其他节点发送的的上述所有记录的主键标识对应的记录,并将上述所有记录的主键标识对应的记录插入第三节点。
一般的,在分布式数据库系统中,一个节点会包括自身节点所存储的记录的主副本,还包括备份其他节点上的记录的从副本,同时还可以包括在该节点作为外键副本节点时所插入的外键副本,以第一节点(节点B)为例,该第一节点上存储的记录包括第一节点本身所存储的记录(例如上述例子中节点B中存储的学号003和学号004的学生信息记录),即主副本;还包括备份节点C(第三节点)上的学号005和学号006的学生信息记录,即从副本;还可以包括学号003或学号004学生的成绩记录,即外键副本;其中,第一节点本身所存储的记录为主副本,第一节点存储的第三节点上的记录为从副本。但是,第三节点在最初的备份时却只备份有第一节点上本身存储的学生信息记录(节点B中存储的学号003和学号004的学生信息记录),作为第一节点上所存储的学生信息记录的从副本,但是第三节点并没有备份第一节点上的外键副本;需要注意的是,节点和主键标识范围的对应关系以及节点间之间的主副本和从副本之间的备份如表1所示,主键标识范围中有多个主键标识:
表1
主键标识范围1 主键标识范围2 主键标识范围3
第一节点 主副本 从副本 从副本
第二节点 从副本 主副本 从副本
第三节点 从副本 从副本 主副本
从表1中可知,在主键标识范围1(相当于前面所举例中的学生信息记录的学号范围)内,第一节点上有自身存储的主副本,第一节点上的主副本也在第二节点和第三节点上备份有从副本,并且第一节点上还存储有第一节点作为外键副本节点时所插入的外键副本,但是第二节点和第三节点所备份的从副本只有第一节点自身存储的主副本中的记录,并没有第一节点上的外键副本。
当第一节点掉线时,第三节点上所备份第一节点的从副本切换为主副本,如表2所示:
表2
主键标识范围1 主键标识范围2 主键标识范围3
第二节点 从副本 主副本 从副本
第三节点 主副本1 从副本 主副本
如表2所示,在主键标识范围1内,第三节点之前备份第一节点的从副本切换为主副本1,则第三节点上现在有自身的主副本还有切换后的主副本1,该切换的主副本1中包括缺少外键副本的主键标识范围(学号为003-004)中的主键列表,这里的第三节点上还存储有第三节点自身的记录(学号为005-006的学生信息记录);第三节点将第三节点上存储的所有记录的主键标识发送至分布式数据库中除第三节点之外的其他节点,以使其他节点根据所有记录的主键标识查询这些主键标识对应的记录,这里的主键标识对应的记录实际上指的是上述缺少外键副本的主键标识范围对应的记录,也就是第三节点上本身所缺少的外键副本。
在分布式数据库中的除第三节点之外的其他节点,查询到上述缺少外键副本的主键标识范围对应的记录之后,将该些记录发送给第三节点,第三节点接收上述其他节点查询的主键标识对应的记录,并将上述主键标识对应的记录插入至第三节点上。
本发明实施例提供的方法,在第一节点掉线时,通过第三节点将所备份第一节点的从副本切换为主副本,并将第三节点上存储的所有记录的主键标识信息发送至分布式数据库中除第三节点之外的其他所有节点,以使其他所有节点根据该主键标识查询该主键标识对应的记录,并将该些记录发送给第三节点保存,完成外键副本的修复,从而确保在节点掉线异常时数据库仍然可以对外服务。
图6为本发明提供的分布式数据库的数据存储方法实施例七的流程示意图,本实施例涉及的方法是针对在分布式数据库系统中,由于数据的冷热不均,不同的节点之间负载不同,为实现负载的均衡,需要将负载大的节点的一部分记录迁移至负载小的节点的场景,在上述实施例的基础上,如图6所示,在S202之后,该方法还包括如下步骤:
S601:第一节点确定分布式数据库中除第二节点和第三节点之外的其他节点负载能力。
S602:第一节点将第一节点存储的记录发送至第六节点;其中,第六节点的负载能力低于第一节点的负载能力;
S603:第一节点删除第一节点上存储的发送至上述第六节点的记录。
具体的,第一节点在确定完分布式数据库中除第二节点和第三节点之外的其他节点负载能力之后,根据自身的负载能力判断机制,确定负载能力低于第一节点的任一节点,将第一节点上的部分记录发送至上述确定的负载能力低于第一节点的节点,之后第一节点删除第一节点上的部分记录。
本实施例提供的方法,通过第一节点确定分布式数据库中除第二节点和第三节点之外的负载能力低于第一节点的任一节点,将第一节点上的部分记录发送至上述确定的节点上,从而降低第一节点的负荷,进而实现分布式数据库中各节点上的负载均衡。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图7为本发明提供的分布式数据库的数据存储装置实施例一的结构示意图,图8为本发明提供的分布式数据库的数据存储装置应用示意图,如图7所示,该装置包括:第一接收模块10,用于接收记录插入请求,所述记录插入请求携带第一记录;第一确定模块11,用于根据外键标识与存储节点的映射关系,确定第一记录对应的第一关联记录所在的第一存储节点,其中所述第一关联记录的主键标识与所述第一记录的外键标识相同;第一插入模块12,用于将所述第一记录插入所述第一存储节点中的第二节点。
需要注意的是,图8中的节点1至节点n均可以指本发明实施例的中的第一节点,在这里以图8中的节点2为第一节点为例,第一节点上的外键标识与存储节点的映射关系可以存储在图8所示的路由表模块中,第一确定模块11可以设置在表关系关联模块中,第一节点在第二节点插入的第一记录实际上是生成第一节点的外键副本,因此外键副本可以存储在该外键副本模块中。
本实施例提供的分布式数据库的数据存储装置可以执行上述图1所示的方法实施例,其实现原理和技术效果类此,在此不再赘述。
图9为本发明提供的分布式数据库的数据存储装置实施例二的结构示意图,在上述图7所示实施例的基础上,如图9所示,所述第一确定模块11,具体用于根据所述第一记录的外键标识在所述外键标识和存储节点的映射关系中进行查询,确定所述第一记录对应的第一关联记录所在的第一存储节点;所述第一插入模块12还用于在将所述第一记录插入所述第一存储节点中的第二节点之后,将所述第一记录插入至第三节点中,所述第三节点为所述第一存储节点中除所述第二节点之外的节点;所述第一存储节点中包括所述存储所述第一关联记录的主存储节点和备份存储节点;该装置还包括:第二插入模块13,用于在所述第一插入模块12将所述第一记录插入所述第一存储节点中的第二节点之后,若在预设时间内接收到所述第二节点或所述第三节点中任一节点返回的第一插入成功响应消息,则在所述分布式数据库的数据存储装置的第一节点上插入所述第一记录。
本实施例提供的分布式数据库的数据存储装置可以执行上述图2所示的方法实施例,其实现原理和技术效果类此,在此不再赘述。
继续参照图9,进一步地,该装置还包括:第二接收模块14,用于在所述第二插入模块13在所述第一节点上插入所述第一记录之后,接收更新命令,所述更新命令中携带第二记录;所述第一确定模块11还用于根据所述第二记录的外键标识在所述外键标识与存储节点的映射关系中进行查询,确定所述第二记录对应的第二关联记录所在的第二存储节点,其中所述第二关联记录的主键标识与所述第二记录的外键标识相同;第二确定模块15,用于从所述第二存储节点中确定第四节点;判断模块16,用于在所述第二确定模块15确定第四节点之后,若所述第二记录的外键标识与所述第一记录的外键标识不同,则判断所述第四节点和所述第二节点是否是同一个节点;若是同一个节点,则所述第二插入模块13在所述分布式数据库的数据存储装置的第一节点、所述第三节点以及所述第二节点中插入所述第二记录;若不是同一个节点,则所述第二插入模块13在所述第二节点上删除所述第一记录,并将所述第二记录插入至所述第二记录所属的第四节点;若所述第二记录的外键标识与所述第一记录的外键标识相同,则第二插入模块13在所述分布式数据库的数据存储装置的第一节点、所述第三节点以及所述第二节点插入所述第二记录。
本实施例提供的分布式数据库的数据存储装置可以执行上述图3所示的方法实施例,其实现原理和技术效果类此,在此不再赘述。
继续参照图9,进一步地,该装置还包括:第三接收模块17,用于在所述第二插入模块13在所述第一节点上插入所述第一记录之后,接收删除第三记录的命令,所述命令中携带所述第三记录的外键标识;第三确定模块18,用于根据所述第三记录的外键标识在所述外键标识与存储节点的映射关系中中进行查询,确定所述第三记录对应的第三关联记录所在的第三存储节点;还用于从所述第三存储节点中确定存储所述第三记录的第五节点;第一发送模块19,用于将所述命令发送给第五节点,以使所述第五节点删除所述第五节点上存储的所述第三记录。
本实施例提供的分布式数据库的数据存储装置可以执行上述图4所示的方法实施例,其实现原理和技术效果类此,在此不再赘述。
继续参照图9,进一步地,该装置还包括:第二发送模块20,用于在所述第二插入模块13在所述分布式数据库的数据存储装置的第一节点上插入所述第一记录之后,若分布式数据库的数据存储装置的第一节点掉线,则所述第二发送模块20将所述第三节点上所有记录的主键标识发送至分布式数据库中除所述第三节点之外的其他节点,以使所述其他节点根据所述所有记录的主键标识查询所述所有记录的主键标识对应的记录;第四接收模块21,用于接收所述其他所有节点发送的所述所有记录的主键标识对应的记录,并将所述所有记录的主键标识对应的记录插入所述第三节点。
本实施例提供的分布式数据库的数据存储装置可以执行上述图5所示的方法实施例,其实现原理和技术效果类此,在此不再赘述。
继续参照图9,进一步地,该装置还包括:第四确定模块22,用于所述第二插入模块13在所述分布式数据库的数据存储装置的第一节点上插入所述第一记录之后,确定分布式数据库中除所述第二节点和所述第三节点之外的其他节点负载能力;第三发送模块23,用于将所述分布式数据库的数据存储装置的第一节点存储的记录发送至第六节点;其中,所述第六节点的负载能力低于所述第一节点的负载能力;删除模块24,用于删除所述分布式数据库的数据存储装置的第一节点上存储的发送至所述第六节点的记录。
本实施例提供的分布式数据库的数据存储装置可以执行上述图5所示的方法实施例,其实现原理和技术效果类此,在此不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (20)

1.一种分布式数据库的数据存储方法,其特征在于,包括:
第一节点接收记录插入请求,所述记录插入请求携带第一记录;
所述第一节点根据外键标识与存储节点的映射关系,确定所述第一记录对应的第一关联记录所在的第一存储节点,其中所述第一关联记录的主键标识与所述第一记录的外键标识相同;
所述第一节点将所述第一记录插入所述第一存储节点中的第二节点。
2.根据权利要求1所述的方法,其特征在于,所述第一节点根据外键标识与存储节点的映射关系,确定所述第一记录对应的第一关联记录所在的第一存储节点,包括:
所述第一节点根据所述第一记录的外键标识在所述外键标识和存储节点的映射关系中进行查询,确定所述第一记录对应的第一关联记录所在的第一存储节点。
3.根据权利要求1所述的方法,其特征在于,所述第一节点将所述第一记录插入所述第一存储节点中的第二节点之后,还包括:
所述第一节点将所述第一记录插入至第三节点中,所述第三节点为所述第一存储节点中除所述第二节点之外的节点。
4.根据权利要求1或3所述的方法,其特征在于,所述第一存储节点包括存储所述第一关联记录的主存储节点和备份存储节点。
5.根据权利要求3所述的方法,其特征在于,所述第一节点将所述第一记录插入所述第一存储节点中的第二节点之后,还包括:
若所述第一节点在预设时间内接收到所述第二节点或所述第三节点中任一节点返回的所述第一记录插入成功响应消息,则所述第一节点在所述第一节点上插入所述第一记录。
6.根据权利要求5所述的方法,其特征在于,所述第一节点在所述第一节点上插入所述第一记录之后,还包括:
所述第一节点接收更新命令,所述更新命令中携带第二记录;
所述第一节点根据所述第二记录的外键标识在所述外键标识和存储节点的映射关系中进行查询,确定所述第二记录对应的第二关联记录所在的第二存储节点;其中所述第二关联记录的主键标识与所述第二记录的外键标识相同;
所述第一节点从所述第二存储节点中确定第四节点;其中,所述第四节点为所述第二存储节点中所述第二记录的外键副本节点。
7.根据权利要求6所述的方法,其特征在于,所述第一节点确定所述第四节点之后,还包括:
若所述第二记录的外键标识与所述第一记录的外键标识不同,则所述第一节点判断所述第四节点和所述第二节点是否是同一个节点;若是同一个节点,则所述第一节点在所述第一节点、所述第三节点以及所述第二节点中插入所述第二记录;若不是同一个节点,则所述第一节点在所述第二节点上删除所述第一记录,并将所述第二记录插入至所述第四节点;
若所述第二记录的外键标识与所述第一记录的外键标识相同,则所述第一节点在所述第一节点、所述第三节点以及所述第二节点插入所述第二记录。
8.根据权利要求5所述的方法,其特征在于,所述第一节点在所述第一节点上插入所述第一记录之后,还包括:
所述第一节点接收删除第三记录的命令,所述命令中携带所述第三记录的外键标识;所述第一节点根据所述第三记录的外键标识在所述外键标识和存储节点的映射关系中进行查询,确定所述第三记录对应的第三关联记录所在的第三存储节点;其中所述第三关联记录的主键标识与所述第三记录的外键标识相同;
所述第一节点从所述第三存储节点确定存储所述第三记录的第五节点;
所述第一节点将所述命令发送给所述第五节点,以使所述第五节点删除所述第五节点上存储的所述第三记录。
9.根据权利要求5所述的方法,其特征在于,所述第一节点在所述第一节点上插入所述第一记录之后,还包括:
若所述第一节点掉线,则所述第三节点将所述第三节点上所有记录的主键标识发送至分布式数据库中除所述第三节点之外的其他节点,以使所述其他节点根据所述所有记录的主键标识查询所述所有记录的主键标识对应的记录;
所述第三节点接收所述其他节点发送的所述所有记录的主键标识对应的记录,并将所述所有记录的主键标识对应的记录插入所述第三节点。
10.根据权利要求5所述的方法,其特征在于,所述第一节点在所述第一节点上插入所述第一记录之后,还包括:
所述第一节点确定分布式数据库中除所述第二节点和所述第三节点之外的其他节点负载能力;
所述第一节点将所述第一节点存储的记录发送至第六节点;其中,所述第六节点的负载能力低于所述第一节点的负载能力;
所述第一节点删除所述第一节点上存储的发送至所述第六节点的记录。
11.一种分布式数据库的数据存储装置,其特征在于,包括:
第一接收模块,用于接收记录插入请求,所述记录插入请求携带第一记录;
第一确定模块,用于根据外键标识与存储节点的映射关系,确定所述第一记录对应的第一关联记录所在的第一存储节点,其中所述第一关联记录的主键标识与所述第一记录的外键标识相同;
第一插入模块,用于将所述第一记录插入所述第一存储节点中的第二节点。
12.根据权利要求11所述的装置,其特征在于,所述第一确定模块,具体用于根据所述第一记录的外键标识在所述外键标识和存储节点的映射关系中进行查询,确定所述第一记录对应的第一关联记录所在的第一存储节点。
13.根据权利要求11所述的装置,其特征在于,所述第一插入模块还用于在将所述第一记录插入第一存储节点中的第二节点之后,将所述第一记录插入至第三节点中,所述第三节点为所述第一存储节点中除所述第二节点之外的节点。
14.根据权利要求11或13所述的装置,其特征在于,所述第一存储节点中包括存储所述第一关联记录的主存储节点和备份存储节点。
15.根据权利要求13所述的装置,其特征在于,所述装置还包括:
第二插入模块,用于在所述第一插入模块将所述第一记录插入所述第一存储节点中的第二节点之后,若在预设时间内接收到所述第二节点或所述第三节点中任一节点返回的第一插入成功响应消息,则在所述分布式数据库的数据存储装置的第一节点上插入所述第一记录。
16.根据权利要求15所述的装置,其特征在于,所述装置还包括:
第二接收模块,用于在所述第二插入模块在所述分布式数据库的数据存储装置的第一节点上插入所述第一记录之后,接收更新命令,所述更新命令中携带第二记录;
所述第一确定模块,还用于根据所述第二记录的外键标识在所述外键标识和存储节点的映射关系中进行查询,确定所述第二记录对应的第二关联记录所在的第二存储节点;其中所述第二关联记录的主键标识与所述第二记录的外键标识相同;
第二确定模块,用于从所述第二存储节点中确定第四节点;其中,所述第四节点为所述第二存储节点中所述第二记录的外键副本节点。
17.根据权利要求16所述的装置,其特征在于,所述装置还包括:
判断模块,用于所述第二确定模块确定所述第四节点之后,若所述第二记录的外键标识与所述第一记录的外键标识不同,则判断所述第四节点和所述第二节点是否是同一个节点;
若是同一个节点,则所述第二插入模块在所述分布式数据库的数据存储装置的第一节点、所述第三节点以及所述第二节点中插入所述第二记录;
若不是同一个节点,则所述第二插入模块在所述第二节点上删除所述第一记录,并将所述第二记录插入至所述第二记录所属的第四节点;
若所述第二记录的外键标识与所述第一记录的外键标识相同,则所述第二插入模块在所述分布式数据库的数据存储装置的第一节点、所述第三节点以及所述第二节点插入所述第二记录。
18.根据权利要求15所述的装置,其特征在于,所述装置还包括:
第三接收模块,用于在所述第二插入模块在所述分布式数据库的数据存储装置的第一节点上插入所述第一记录之后,接收删除第三记录的命令,所述命令中携带所述第三记录的外键标识;
第三确定模块,用于根据所述第三记录的外键标识在所述外键标识与存储节点的映射关系中进行查询,确定所述第三记录对应的第三关联记录所在的第三存储节点,其中所述第三关联记录的外键标识与所述第三记录的主键标识相同;还用于从所述第三存储节点确定存储所述第三记录的第五节点;
第一发送模块,用于将所述命令发送给所述第五节点,以使所述第五节点删除所述第五节点上存储的所述第三记录。
19.根据权利要求15所述的装置,其特征在于,所述装置还包括:
第二发送模块,用于在所述第二插入模块在所述分布式数据库的数据存储装置的第一节点上插入所述第一记录之后,若所述分布式数据库的数据存储装置的第一节点掉线,则所述第二发送模块将所述第三节点上所有记录的主键标识发送至分布式数据库中除所述第三节点之外的其他节点,以使所述其他节点根据所述所有记录的主键标识查询所述所有记录的主键标识对应的记录;
第四接收模块,用于接收所述其他节点发送的所述所有记录的主键标识对应的记录,并将所述所有记录的主键标识对应的记录插入所述第三节点。
20.根据权利要求15所述的装置,其特征在于,所述装置还包括:
第四确定模块,用于所述第二插入模块在所述分布式数据库的数据存储装置的第一节点上插入所述第一记录之后,确定分布式数据库中除所述第二节点和所述第三节点之外的其他节点负载能力;
第三发送模块,用于将所述分布式数据库的数据存储装置的第一节点存储的记录发送至第六节点;其中,所述第六节点的负载能力低于所述第一节点的负载能力;
删除模块,用于删除所述分布式数据库的数据存储装置的第一节点上存储的发送至所述第六节点的记录。
CN201310360240.8A 2013-08-16 2013-08-16 分布式数据库的数据存储方法和装置 Active CN104376025B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201310360240.8A CN104376025B (zh) 2013-08-16 2013-08-16 分布式数据库的数据存储方法和装置
EP14835967.2A EP3018593B1 (en) 2013-08-16 2014-07-01 Data storage method and device for distributed database
PCT/CN2014/081346 WO2015021828A1 (zh) 2013-08-16 2014-07-01 分布式数据库的数据存储方法和装置
US15/043,853 US11086833B2 (en) 2013-08-16 2016-02-15 Data storage method and apparatus for distributed database

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310360240.8A CN104376025B (zh) 2013-08-16 2013-08-16 分布式数据库的数据存储方法和装置

Publications (2)

Publication Number Publication Date
CN104376025A CN104376025A (zh) 2015-02-25
CN104376025B true CN104376025B (zh) 2017-10-10

Family

ID=52468008

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310360240.8A Active CN104376025B (zh) 2013-08-16 2013-08-16 分布式数据库的数据存储方法和装置

Country Status (4)

Country Link
US (1) US11086833B2 (zh)
EP (1) EP3018593B1 (zh)
CN (1) CN104376025B (zh)
WO (1) WO2015021828A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106326239B (zh) * 2015-06-18 2020-01-31 阿里巴巴集团控股有限公司 分布式文件系统及其文件元信息管理方法
CN106844375A (zh) * 2015-12-04 2017-06-13 阿里巴巴集团控股有限公司 数据处理方法及装置
CN107315693B (zh) * 2016-04-26 2020-06-09 阿里巴巴集团控股有限公司 一种数据存储方法和装置
CN108121500A (zh) * 2016-11-30 2018-06-05 深圳市中兴微电子技术有限公司 一种数据的存取方法及装置
US10762072B2 (en) * 2017-01-30 2020-09-01 International Business Machines Corporation Processing messages of a plurality of devices
CN107025121B (zh) * 2017-03-31 2020-10-09 Oppo广东移动通信有限公司 软件升级方法、装置和电子装置
CN110019212B (zh) * 2017-11-29 2021-06-18 杭州海康威视数字技术股份有限公司 一种数据处理方法、装置及数据库服务器
CN108509535B (zh) * 2018-03-15 2020-12-01 烽火通信科技股份有限公司 基于区间的资源id管理系统及方法
CN108874950B (zh) * 2018-06-05 2022-04-12 亚信科技(中国)有限公司 一种基于er关系的数据分布存储方法及装置
CN110032602B (zh) * 2019-04-17 2021-04-27 中国联合网络通信集团有限公司 一种产品信息存储、查询和管理系统及方法
CN112148695A (zh) * 2019-06-26 2020-12-29 华为技术有限公司 一种资源锁管理方法及装置
CN110515923B (zh) * 2019-08-15 2022-12-06 福建中信网安信息科技有限公司 一种分布式数据库之间的数据迁移方法和系统
CN113010599B (zh) * 2019-12-19 2023-07-21 中国移动通信集团四川有限公司 Mysql数据库组复制状态监控方法、装置和系统
CN117349346B (zh) * 2023-12-05 2024-03-26 深圳市威诺达工业技术有限公司 一种识别关系型数据库表中主键和外键的方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101854398A (zh) * 2010-06-07 2010-10-06 中兴通讯股份有限公司 文件副本均衡分布的方法、装置及系统
CN101916261A (zh) * 2010-07-28 2010-12-15 北京播思软件技术有限公司 一种分布式并行数据库系统的数据分区方法
CN102197372A (zh) * 2008-10-24 2011-09-21 微软公司 已分区的、可缩放的、并且可用的结构化存储中的分区管理
CN102402394A (zh) * 2010-09-13 2012-04-04 腾讯科技(深圳)有限公司 一种基于哈希算法的数据存储方法及装置
CN102710465A (zh) * 2012-06-07 2012-10-03 浪潮电子信息产业股份有限公司 一种监控集群存储接口节点负载的方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995003586A1 (en) * 1993-07-21 1995-02-02 Persistence Software, Inc. Method and apparatus for generation of code for mapping relational data to objects
US6092061A (en) * 1997-08-15 2000-07-18 International Business Machines Corporation Data partitioning by co-locating referenced and referencing records
US20020091677A1 (en) * 2000-03-20 2002-07-11 Sridhar Mandayam Andampikai Content dereferencing in website development
US20030221162A1 (en) * 2000-03-20 2003-11-27 Sridhar Mandayam Andampillai Meta-templates in website development and methods therefor
US6598042B1 (en) * 2000-09-29 2003-07-22 International Business Machines Corporation System and method for query by category
US20030188555A1 (en) * 2002-04-05 2003-10-09 Henning Michael Richard Fused bi-conical coupler pulling technique
EP1510952B1 (en) * 2003-08-28 2007-02-14 Accenture Global Services GmbH Capture, aggregation and/or visualisation of structural data of architectures
US20060053368A1 (en) * 2004-05-20 2006-03-09 Bea Systems, Inc. Conduit manager for occasionally-connected application server
US7562102B1 (en) * 2004-11-29 2009-07-14 Progress Software Corporation Extensible handling of new or modified data within an independent distributed database system
US7953698B2 (en) * 2006-08-03 2011-05-31 Sybase, Inc. Replication system with methodology for replicating stored procedure calls
US20090210631A1 (en) * 2006-09-22 2009-08-20 Bea Systems, Inc. Mobile application cache system
CN100498785C (zh) * 2006-11-23 2009-06-10 金蝶软件(中国)有限公司 一种联机分析处理系统中多维数据读写的方法和装置
US7788220B1 (en) * 2007-12-31 2010-08-31 Emc Corporation Storage of data with composite hashes in backup systems
US8150850B2 (en) * 2008-01-07 2012-04-03 Akiban Technologies, Inc. Multiple dimensioned database architecture
US7873598B2 (en) * 2008-04-15 2011-01-18 Microsoft Corporation Slicing of relational databases
US8676863B1 (en) * 2008-09-15 2014-03-18 Liberty Mutual Insurance Company Maintaining a relational database and its schema in response to a stream of XML messages based on one or more arbitrary and evolving XML schemas
US8886796B2 (en) 2008-10-24 2014-11-11 Microsoft Corporation Load balancing when replicating account data
US8244715B2 (en) * 2009-04-09 2012-08-14 Paraccel, Inc. System and method for processing database queries
KR101676033B1 (ko) * 2010-01-08 2016-11-29 삼성전자주식회사 무선 통신 시스템에서 기지국의 전력 소모 감소 방법 및 장치
CN102521374B (zh) * 2011-12-20 2013-10-30 南京橙红信息科技有限公司 基于关系型联机分析处理的智能数据聚集方法及其系统
US8812564B2 (en) * 2011-12-20 2014-08-19 Sap Ag Parallel uniqueness checks for partitioned tables
US8996565B2 (en) * 2012-12-18 2015-03-31 Sap Se Systems and methods for in-memory database processing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102197372A (zh) * 2008-10-24 2011-09-21 微软公司 已分区的、可缩放的、并且可用的结构化存储中的分区管理
CN101854398A (zh) * 2010-06-07 2010-10-06 中兴通讯股份有限公司 文件副本均衡分布的方法、装置及系统
CN101916261A (zh) * 2010-07-28 2010-12-15 北京播思软件技术有限公司 一种分布式并行数据库系统的数据分区方法
CN102402394A (zh) * 2010-09-13 2012-04-04 腾讯科技(深圳)有限公司 一种基于哈希算法的数据存储方法及装置
CN102710465A (zh) * 2012-06-07 2012-10-03 浪潮电子信息产业股份有限公司 一种监控集群存储接口节点负载的方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
分布式存储环境下工作流相关数据的一致性更新;吴红莉等;《系统仿真学报》;20090430;第21卷(第8期);2252-2257 *
分布式存储系统中混合数据布局算法;刘金芝;《江苏技术师范学院学报》;20110430;第17卷(第4期);21-27 *

Also Published As

Publication number Publication date
US11086833B2 (en) 2021-08-10
US20160162520A1 (en) 2016-06-09
EP3018593A1 (en) 2016-05-11
CN104376025A (zh) 2015-02-25
EP3018593A4 (en) 2016-08-10
EP3018593B1 (en) 2019-08-28
WO2015021828A1 (zh) 2015-02-19

Similar Documents

Publication Publication Date Title
CN104376025B (zh) 分布式数据库的数据存储方法和装置
CN102693168B (zh) 一种数据备份恢复的方法、系统和服务节点
CN104346373B (zh) 分区日志队列同步管理方法及设备
CN100559351C (zh) 远程复制系统以及远程复制控制方法
CN103677659B (zh) 信息处理设备和复制控制方法
EP3015998B1 (en) Zoning balance subtask delivering method, apparatus and system
CN100442238C (zh) 异步复制数据的方法和装置
CN103516755B (zh) 虚拟存储方法及设备
CN106814972B (zh) 分布式块存储的快照节点的回滚方法和装置
CN104657430A (zh) 一种数据采集的方法和系统
CN105339929A (zh) 选择用于取消重复数据的存储
CN101122924A (zh) 逻辑日志生成方法、数据库备份/恢复方法与系统
CN110597835B (zh) 一种基于区块链的交易数据删除方法及装置
CN103270499A (zh) 日志存储方法及系统
CN103229134A (zh) 存储设备及其控制方法
CN102833273B (zh) 临时故障时的数据修复方法及分布式缓存系统
CN106503020A (zh) 日志数据处理方法及装置
CN107193690A (zh) 实时备份数据的方法及其系统和备份设备
CN106126374A (zh) 数据写入方法、数据读取方法及装置
CN103677660B (zh) 信息处理设备和区域释放控制方法
CN111680019B (zh) 一种区块链的数据扩容方法及其装置
CN106326082A (zh) 网络系统中记录日志的方法和装置
CN109739684A (zh) 基于向量时钟的分布式键值数据库的副本修复方法与装置
CN100594480C (zh) 复制设备、复制方法和块标识数据获取方法
CN106569729A (zh) 用于分布式系统中数据写入的方法和设备

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant