CN114519049A - 一种数据处理方法及装置 - Google Patents

一种数据处理方法及装置 Download PDF

Info

Publication number
CN114519049A
CN114519049A CN202011300288.6A CN202011300288A CN114519049A CN 114519049 A CN114519049 A CN 114519049A CN 202011300288 A CN202011300288 A CN 202011300288A CN 114519049 A CN114519049 A CN 114519049A
Authority
CN
China
Prior art keywords
data
target
copy
node
key
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
CN202011300288.6A
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.)
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 CN202011300288.6A priority Critical patent/CN114519049A/zh
Publication of CN114519049A publication Critical patent/CN114519049A/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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • 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
    • 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及一种数据处理方法及装置,用于提高数据处理效率。该方法包括:获得数据操作请求,所述数据操作请求包括目标键,所述数据操作请求用于请求对目标数据表进行数据操作;根据所述目标键从所述目标数据表对应的至少两个数据副本中选择目标数据副本;发送对所述目标数据副本进行数据操作的数据操作指令。在该方法中,增加了数据副本的数量,那么根据目标键直接选中目标数据副本的概率自然也就增大了,进而可以快速地对目标数据副本进行数据操作,提高了针对目标数据表的数据操作效率,进而提高数据处理效率。

Description

一种数据处理方法及装置
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据处理方法及装置。
背景技术
在分布式存储系统(例如greenplum数据库)中,在创建数据表时一般指定一个分布键,进而可以根据指定的分布键将数据表中的数据进行分片处理得到数据副本,然后将数据副本包括的各个数据分片存储在分布式存储集群中的不同数据节点中,以实现数据的分布式存储。
在实际数据业务中,一般是通过查询语句来对数据表进行数据操作,查询语句中一般会包括数据表中的键(即数据表的列名),系统通过判断查询语句中的键与指定的分布键是否匹配来确定是否能够直接对预先创建的数据副本进行数据操作。在此过程中,当查询语句中所包括的键与预先指定的分布键相同时,则可以直接通过分布键定位需要操作的数据副本,进而再根据查询语句中的查询条件从数据副本包括的数据分片中确定需要执行数据操作的数据分片,以执行对数据分片的数据操作;而当查询语句中所包括的键与预先指定的分布键不同时,则无法直接根据分布键对预先创建的数据副本进行数据操作,而是需要进行一些额外的操作,例如需要通过全表扫描、广播表或者重分布数据等方式才能确定需要操作的数据,如此,数据处理效率较低,降低了分布式存储系统的性能。
发明内容
本申请实施例提供一种数据处理方法及装置,用于提高数据处理效率。
第一方面,提供一种数据处理方法,在该方法中,在获得用于请求对目标数据表进行数据操作的数据操作请求时,根据该数据操作请求包括的目标键从目标数据表对应的至少两个数据副本中选择目标数据副本,然后再发送对目标数据副本进行数据操作的数据操作指令。
在上述方案中,由于预先为目标数据表创建了多个数据副本,即增加了数据副本的数量,那么根据目标键直接选中目标数据副本的概率自然也就增大了,进而可以快速地对目标数据副本进行数据操作,这样提高了针对目标数据表的数据操作效率,进而提高了数据处理效率。
在一种可能的实现方式中,目标数据表对应的至少两个数据副本是将该目标数据表中的至少两个键作为分布键分别对该目标数据表进行分片处理得到的。
在上述方案中,可以指定至少两个分布键,并通过至少两个分布键对目标数据表进行分片处理以得到对应的至少两个数据副本,这样,在通过分布键对目标数据表进行分片处理时,一个分布键可以对应一个单独的数据副本,所以指定了几个分布键就可以得到几个对应的数据副本,而每个数据副本里面的数据都是这个数据表的一个完整备份。进一步地,在针对数据表进行数据操作时,例如进行单表操作或者多表关联操作时,由于预先指定的分布键的数量增多了,所以查询语句中指定的需要操作的键是分布键的概率自然也就增加了,这样可以通过指定的分布键直接快速地确定出需要操作的数据副本,可以尽量减少集群中的数据传输和交互,可以尽量提高数据处理效率。
在一种可能的实现方式中,本申请实施例中的数据处理方法可以应用于分布式存储系统,该分布式存储系统包括主节点和多个数据节点,具体地,可以由主节点来执行该数据处理方法。如此,可以提高分布式存储系统中的数据处理效率,进而增强分布式存储系统的数据处理性能。
在一种可能的实现方式中,目标数据表对应的至少两个数据副本中的每个数据副本均包括至少两个数据分片,而不同的数据分片存储在不同的数据节点中。如此,通过数据分片将目标数据表中的数据分布式地进行存储,可提升数据查询效率。
在一种可能的实现方式中,至少两个数据副本中的第一数据副本所包括的第一数据分片有备份分片,第一数据分片和对应的备份分片分别存储在不同的数据节点中。
在上述方案中,可以对数据副本中的数据分片进行冗余存储,可以提升数据分片的高可靠性。
在一种可能的实现方式中,数据操作请求用于请求对第一数据表和第二数据表进行关联操作,第一数据表和第二数据表中的至少一个数据表通过至少两个键分片处理为对应的数据副本。
在上述方案中,可以对多个数据表进行表关联操作,增加了方案的适用范围。并且,进行多表关联操作中的部分数据表或全部数据表都有与多个键关联对应的多个数据副本,这样在进行多表关联操作时,根据关联键直接确定出数据副本的概率也就提高了,进而可以提高多表关联操作的效率,进而提升数据处理效率。
在一种可能的实现方式中,在根据目标键选择目标数据副本时,可以将至少两个数据副本中以目标键作为分布键进行分片处理对应得到的数据副本确定为目标数据副本。
在上述方案中,这样可以快速且准确地确定出目标数据副本。
在一种可能的实现方式中,数据操作请求中还包括操作条件信息,在该方法中,还可以根据操作条件信息从用于存储目标数据副本所包括的数据分片的至少一个数据节点中确定目标数据节点,然后再根据操作请求生成数据操作指令,并将该数据操作指令发送给确定出的目标数据节点,以使得目标数据节点根据数据操作指令对该目标数据节点中存储的数据分片执行对应的数据操作。
在上述方案中,由于目标数据副本所包括的数据分片是分布式地存储在多个数据节点中的,所以还是需要对应的数据节点来直接执行对目标数据副本的数据操作,为此,根据操作条件信息可以准确地定位出目标数据副本中需要执行数据操作的数据分片,然后以此定位出需要执行数据操作的目标数据节点,进而可以实现对数据分片的准确定位和数据操作,提高了数据操作效率。
在一种可能的实现方式中,分布式存储系统还包括备份主节点,而备份主节点包括数据同步模块。主节点可以先将至少两个数据副本对应的至少两个分布键中的主分布键对应的数据副本确定为所述目标数据副本,并且将数据操作请求发送给数据同步模块,使得数据同步模块根据数据操作请求将针对目标数据副本的数据操作同步给其余数据副本,其中的其余数据副本是至少两个分布键中除去主分布键外的其余分布键所对应的数据副本。
在上述方案中,新增了数据同步模块来实现主数据副本与其余数据副本之间的数据更新和同步,在包括有数据同步模块的架构中,主节点仅对主数据副本对应的数据节点下发插入指令,而除主数据副本之外的其余数据副本中的数据插入则由数据同步模块管理和控制,如此,相当于是通过数据同步模块将主数据副本中插入的数据同步到其余各个数据副本中,以实现主数据副本与其余数据副本之间的数据同步,这样,通过数据同步模块可以分担一部分主节点的工作,以降低主节点的处理负荷,可以在一定程度上提高主节点的处理效率。
在一种可能的实现方式中,数据操作请求用于请求对目标数据表执行更新操作或删除操作。主节点可以根据操作条件信息从用于存储目标数据副本所包括的数据分片的至少两个数据节点中确定第一数据节点;以及,主节点根据数据操作请求生成与目标键对应的第一数据操作指令,并将第一数据操作指令发送给第一数据节点,以使第一数据节点根据第一数据操作指令对第一数据节点中的第一数据执行对应的数据操作;进一步地,主节点接收第一数据节点发送的键标识信息,该键标识信息用于标识所第一数据所对应的键中除去目标键的其余键以及其余键对应的数据信息;主节点再从其余键中确定属于至少两个分布键的待处理分布键,并根据数据操作请求生成与所述待处理分布键对应的第二数据操作指令;进一步地,根据待处理分布键对应的数据信息从所述待处理分布键对应的数据副本所对应的数据节点中确定第二数据节,再将第二数据操作指令发送给第二数据节点,以使第二数据节点根据第二数据操作指令对第二数据节点中的第二数据执行对应的数据操作。
在上述方案中,由于增加了数据表的数据副本的数量,所以数据操作请求中的目标键是分布键的概率也就增加了,也就是说,根据目标键确定出可直接进行数据操作的数据副本的概率也就增大了,进而可以根据分布键确定需要进行写操作的数据分片和对应的数据节点,无需进行全表扫描等额外操作,提高了写数据操作的效率,进而提升了分布式存储系统的数据处理效率。
第二方面,提供一种数据处理装置,所述装置包括:
获得单元,用于获得数据操作请求,所述数据操作请求包括目标键,所述数据操作请求用于请求对目标数据表进行数据操作;
选择单元,用于根据所述目标键从所述目标数据表对应的至少两个数据副本中选择目标数据副本;
处理单元,用于发送对所述目标数据副本进行数据操作的数据操作指令。
在一种可能的实现方式中,所述至少两个数据副本是将所述目标数据表中的至少两个键作为分布键分别对所述目标数据表进行分片处理得到的。
在一种可能的实现方式中,所述数据操作请求用于请求对第一数据表和第二数据表进行表关联操作,所述目标键包括所述第一数据表中的键以及所述第二数据表中的键,所述第一数据表和所述第二数据表中的至少一个数据表通过至少两个键分片处理为对应的至少两个数据副本。
在一种可能的实现方式中,所述选择单元用于:
将所述至少两个数据副本中以所述目标键作为分布键进行分片处理对应得到的数据副本确定为所述目标数据副本。
在一种可能的实现方式中,所述装置应用于分布式存储系统,所述分布式存储系统包括主节点和多个数据节点;所述至少两个数据副本中的每个数据副本包括至少一个数据分片,不同的数据分片存储在不同的数据节点中。
在一种可能的实现方式中,所述至少两个数据副本中的第一数据副本所包括的第一数据分片有备份分片,所述第一数据分片和对应的备份分片分别存储在不同的数据节点中。
在一种可能的实现方式中,所述数据操作请求还包括操作条件信息,所述处理单元用于:
根据所述操作条件信息,从用于存储所述目标数据副本所包括的数据分片的至一个数据节点中确定目标数据节点;
根据所述数据操作请求生成数据操作指令,并将所述数据操作指令发送给所述目标数据节点,使得所述目标数据节点根据所述数据操作指令对所述目标数据节点中存储的数据分片执行对应的数据操作。
在一种可能的实现方式中,所述分布式存储系统还包括备份主节点,所述备份主节点是所述主节点的备份节点,所述备份主节点包括数据同步模块;
所述选择单元用于:
将所述至少两个数据副本对应的至少两个分布键中的主分布键对应的数据副本确定为所述目标数据副本;
对应的,所述处理单元用于:
将所述数据操作请求发送给所述数据同步模块,使得所述数据同步模块根据所述数据操作请求将针对所述目标数据副本的数据操作同步给其余数据副本,所述其余数据副本是所述至少两个分布键中除去所述主分布键外的其余分布键所对应的数据副本。
第三方面,提供一种数据处理装置,该装置包括至少一个处理器,以及与所述至少一个处理器通信连接的存储器、通信接口;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,使得所述装置执行如第一方面中任一项所述的数据处理方法。
第四方面,提供一种计算机可读存储介质,包括程序或指令,当所述程序或指令在计算机上运行时,使得如第一方面中任一项所述的数据处理方法被执行。
第五方面,提供一种包含指令的计算机程序产品,当所述计算机程序产品在计算机上运行时,使得计算机执行第一方面中任一项所述的数据处理方法包括的步骤。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请的保护范围。
附图说明
图1为本申请实施例中的分布式存储系统的架构示意图;
图2为本申请实施例中的分布式存储系统的另一架构示意图;
图3为本申请实施例中的数据处理方法的流程示意图;
图4为本申请实施例中的利用多个分布键以得到数据表的多个数据副本的示意图;
图5为本申请实施例中的数据处理方法的另一流程示意图;
图6为本申请实施例中的数据处理装置的结构框图;
图7为本申请实施例中的数据处理装置的结构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例作进一步地详细描述。
分布式存储系统,采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
分布式存储系统中部署有分布式数据库,也就是说,分布式数据库中的数据是分布式地存储在分布式存储系统中,而分布式存储系统可以理解为是一个分布式集群,在分布式集群中部署有多台服务器,数据表中的数据可以跨多台服务器分布式地存储。在分布式数据库中有两个重要的概念:分片和副本。其中:
分片,又称数据分片,是按照某个维度将存放在单一数据库中的数据分散地存放至多个数据库或表中以达到提升性能瓶颈以及可用性的效果,是把数据库中的数据集均匀分布在集群中,每个服务器上都可以对自己的数据进行运算,体现分布式的概念,因为有分片,分布式数据库容易实现横向扩展,这样可以充分利用硬件资源。
副本,是对数据的冗余存储,数据通过一些方法同时存储在多个服务器上,如果一个服务器宕机或者故障后,这个服务器上的数据可以在集群中的其它服务器中找到副本,这样数据无丢失,集群仍然可以对外提供服务,达到数据库高可靠性的目的。
在分布式存储系统中,在创建数据表时一般是指定一个分布键,数据表里面的数据根据这个分布键采用某种分布策略将该数据表中的数据切分成多个数据分片,并且计算各个数据分片所对应的segment节点,进而将各个数据分片分别存储到各自对应的segment节点中,以实现对数据表中的数据的分布式存储。对于数据库中的各个数据表都可以进行前述的分片处理,以实现对各个数据表中的数据的分布式存储。
在对数据表中的数据进行分布式存储之后,可以对分布存储的数据进行数据操作,而在实际数据业务中,一般是通过查询语句来对数据表进行数据操作,查询语句中一般会包括数据表中的键(即数据表的列名),系统通过判断查询语句中的键与指定的分布键是否匹配来确定是否能够直接对预先创建的数据副本进行数据操作。在此过程中,当查询语句中所包括的键与预先指定的分布键相同时,则可以直接通过分布键定位需要操作的数据副本,进而再根据查询语句中的查询条件从数据副本包括的数据分片中确定需要执行数据操作的数据分片,以执行对数据分片的数据操作;而当查询语句中所包括的键与预先指定的分布键不同时,则无法直接根据分布键对预先创建的数据副本进行数据操作,而是需要进行一些额外的操作,例如需要通过全表扫描、广播表或者重分布数据等方式才能确定需要操作的数据,如此,数据处理效率较低,降低了分布式存储系统的性能。
具体来说,在针对单表操作时,若查询语句中的键与预先指定的分布键不同时,系统无法直接使用分布键来确定需要操作的数据副本,则更无法定位需要操作的数据分片,此时可以进行全表扫描或者按照索引查找(如果预先建立了索引的话)对应需操作的数据分片,这样需要花费较长的查询时间,查找数据分片的效率较低,导致数据处理效率也较低。
而针对多表关联操作,例如需要对两个数据表进行数据的关联查询,如果多表关联的关联键不是数据表指定的分布键,那么就会进行表的广播或者重分布,这样在分布式集群中会造成大量的数据传输和交互,导致分布式集群的性能下降,并且需要花费较多的时间才能确定出对应的数据分片,导致数据处理效率较低。例如,有A、B两张数据表,数据表A的数据量是M,数据表B的数据量是N,数据表A和数据表B均有id、num这两个字段,而预先为数据表A和数据表B指定的分布键均是id。
情形1:需要对数据表A和数据表B进行关联查询,关联查询语句例如是select*from A,B where A.id=B.id,可见关联键是id,此时数据表A和数据表B的分布键均与关联键一致,属于单库关联,无需进行数据表的广播或者重分布。
情形2:需要对数据表A和数据表B进行关联查询,关联查询语句例如是select*from A,B where A.id=B.num,可见数据表A的关联键是分布键,而数据表B的关联键却并不是分布键,此时可以通过以下两种方式来实现两个表的关联查询:
方式1,将数据表B按照num字段将数据重分布到每一个数据节点上,然后再与数据表B进行关联查询,此过程中重分布的数据量为数据表B的数据量N;
方式2,将数据表A进行广播,使得每个数据节点上都有一份数据表A的全量数据,然后再与数据表B进行关联查询,此过程中广播的数据量是M*节点数。
所以,当N>M*节点数的时候,可以选择将数据表A进行广播,否则选择将数据表B进行重分布,使得在集群中重新传输的数据量尽量少。
情形3:需要对数据表A和数据表B进行关联查询,关联查询语句例如是select*from A,B where A.num=B.num,可见数据表A和数据表B的关联键均并不是指定的分布键,此时可以通过以下两种方式来实现两个表的关联查询:
方式1,将数据表A与数据表B按照id字段,将数据重分布到每个数据节点,重分布的数据量代价是M+N;
方式2,将其中一张表进行广播后再关联,选择小表广播,代价小,广播的代价是min(M,N)*节点数。
如上介绍的多表关联操作的情形2和情形3中,若分布键选择不合适,表关联操作时的关联键与预先指定的数据表的分布键在较大概率下不一致,这是因为相关技术中只是通过一个分布键创建了对应的数据副本,所以能够直接利用关联键确定数据副本的概率较低,换言之,能够直接使用预先创建的数据副本的概率较低,在这种情形下进行表关联操作则会进行表广播或者数据重分布,使得集群内的数据传输量增多,导致集群的性能下降,并且需要花费较多的时间才能确定出需要操作的数据分片,数据处理效率也较低。
鉴于此,本申请实施例提供一种数据处理方法来解决上述问题,具体地,在为数据表创建数据副本时,可以创建多个数据副本,以目标数据表为例,可以预先为目标数据表创建对应的至少两个数据副本,在获得用于请求对目标数据表进行数据操作的数据操作请求是,可以根据该数据操作请求中包括的目标键从预先创建的至少两个数据副本中选择目标数据副本,然后再发送对目标数据副本进行数据操作的数据操作指令,从而实现对目标数据副本的数据操作。如此,由于预先创建了多个数据副本,即增加了数据副本的数量,那么根据目标键直接选中目标数据副本的概率自然也就增大了,进而提高了数据处理效率。
本申请实施例中,以目标数据表为例,例如可以预先将目标数据表中的至少两个键作为分布键分别对目标数据表进行分片处理以得到对应的至少两个数据副本,也就是说,可以指定目标数据表中的多个不同的列名(即数据表的字段)作为分布键,即可以指定至少两个分布键,进而在通过分布键对目标数据表进行分片处理时,一个分布键可以对应一个单独的数据副本,所以指定了几个分布键就可以得到几个对应的数据副本,而每个数据副本里面的数据都是这个数据表的一个完整备份,相对于相关技术中只能指定一个分布键的方式,可以得到以多个分布键进行分片处理的多个数据副本。进一步地,在针对数据表进行数据操作时,例如进行单表操作或者多表关联操作时,由于预先指定的分布键的数量增多了,所以查询语句中指定的需要操作的键是分布键的概率自然也就增加了,这样可以通过指定的分布键直接快速地确定出需要操作的数据副本以及数据分片,可以尽量提高数据处理效率,并且对于多表关联操作时,表广播和重分布的概率也降低了,如此,可以尽量减少集群中的数据传输和交互,从而提高集群性能。
本申请实施例提供的技术方案可以应用于分布式存储系统中,例如可以应用于部署有greenplum数据库的分布式存储系统中,或者还可以应用于具有类似集群架构的其它分布式存储系统中,本申请实施例对此不作限制。
请参见图1所示的分布式存储系统的架构示意图,本申请实施例提供的技术方案例如可以应用于图1所示的分布式存储系统。图1所示的分布式存储系统包括主节点和多个数据节点,在图1中是以数据节点1、数据节点2、数据节点3、数据节点4、数据节点5这5个数据节点表示多个数据节点为例,而在实际中并不限定数据节点的数量,主节点和各个数据节点之间可以通信。主节点一般只存储系统元数据,业务数据全部分布在数据节点上。主节点作为整个分布式存储系统的入口,负责建立与客户端的连接,用户可以通过客户端向主节点提交结构化查询语言(structured query language,SQL)语句,主节点对SQL语句进行解析并形成执行计划,再分发任务给对应的数据节点,并且收集各个数据节点的执行结果,正因为主节点不负责计算,所以主节点一般并不会成为系统的瓶颈。为确保系统的高可靠性,可以为主节点配置备份节点,主节点通过同步进程保持与对应的备份主节点的事务日志一致,当主节点出现故障时,对应的备份主节点可以承担主节点的全部工作。在实际的网络架构中,主节点、备份主节点和各个数据节点可以部署为服务器,主节点和备份节点可以是相同配置的服务器,或者,主节点的服务器配置也可以优于对应的备份主节点。
以分布式数据库是greenplum数据库为例,greenplum数据库是一款开源数据仓库。greenplum数据库是典型的主/从(master/slave)架构。greenplum采用的是无共享(shared nothing)架构,在shared nothing架构的数据库集群中,每一个节点都拥有自己的内存和磁盘,节点之间不互相共享内存和磁盘,即不存在共享资源,数据库中的数据分布到多个节点上,节点之间通过网络连接,各个节点之间可以通过协议通信,并行处理和扩展能力较好,各个节点相互独立,各自处理自己的数据,处理后的结果可能向上层汇总或在节点之间流转。
在greenplum数据库中,以master节点表示上述的主节点,以及以segment节点表示上述的数据节点,segment节点主要负责业务数据的存储和存取,用户查询SQL的执行,每个segment节点存放一部分用户数据,但是用户不能直接访问segment节点,所有对segment节点的访问都必须经过master节点。进行数据访问时,所有的segment节点先并行处理与自己有关的数据,如果需要关联处理其他segment节点上的数据,segment节点可以通过网络进行与其它segment节点之间的数据传输。segment节点越多,数据就会打的越散,处理速度就越快,所以,通过增加segment节点的数量,greenplum的性能可以成线性增长。每个segment节点(例如称作主segment节点,以Primary segment表示)上的数据可以冗余存放在另一个segment节点(例如称作镜像segment节点,以Mirror segment表示)上,数据实时同步,当Primary segment失效时,Mirror segment将自动提供服务,当Primary segment恢复正常后,可以使用一些工具来同步Mirror segment与Primary segment之间的数据。
请参见图2所示的greenplum数据库的架构示意图,备份主节点(图2中以Standbymaster)是主节点(图2中以Primary master表示)的备份节点,主节点与多个数据节点(在图2中以segment节点表示)通信连接,例如segment节点1、segment节点2和segment节点3,需要说明的是,图2中仅是以3个segment节点为例进行图示说明,在实际架构中,可以包括其它数量的数据节点。其中的主节点、备份主节点、segment节点的功能可以对应参见图1中介绍的内容,此处就不重复说明了。
以上述的greenplum数据库为例,在创建数据表时,需要指定一个分布键。然后会根据分布键的值,按照某种分布策略(如hash分布策略或者随机分布策略),把一行数据写到某一个数据分片中,以实现数据表的分片处理。每一个数据分片都会对应一个segment实例,这个segment实例负责管理这个数据分片里面的数据。
在执行数据业务时,一般是通过下发SQL语句来请求执行对应的数据操作,而SQL语句的执行过程也是按照分布式来执行的,由客户端提交的SQL语句发送到主节点后,主节点根据SQL语句的信息生成分布式执行计划分发到不同的segment节点执行,每个segment节点执行完毕后向master节点返回各自的执行结果,最后由主节点将各个segment节点返回的结果合并成一个最终结果,以得到SQL语句对应的执行结果。
为便于对本申请实施例的技术方案进行说明,以下结合附图对本申请实施例中的技术方案进行说明。
请参见图3所示,图3为本申请实施例提供的一种数据处理方法,该数据处理方法可以由分布式存储系统中的主节点执行,该分布式存储系统中包括有主节点和多个数据节点,以分布式存储系统中部署有前述的greenplum数据库为例,则主节点可以理解为是图2中的Primary master节点或者Standby master节点,数据节点可以理解为是图2中的segment节点。图3所示的流程描述如下。
步骤301:获得数据操作请求,该数据操作请求包括目标键,该数据操作请求用于请求对目标数据表进行数据操作。
在实际数据业务中,用户可以通过客户端发起数据操作请求,具体来说可以通过客户端向主节点发送SQL语句,主节点在接收到SQL语句之后,可以理解为获得了数据操作请求,将该数据操作请求中包括有表标识(例如表名)和键,该数据操作请求用于请求对该表标识所指示的数据表进行的数据操作,例如将需要进行数据操作的数据表称作目标数据表,以及将该数据操作请求中所包括的键称作目标键。
本申请实施例中,以目标数据表为例,可以预先为目标数据表创建多个数据副本,也就是说,目标数据表对应有至少两个数据副本,而这至少两个数据副本中的每个数据副本可以与目标数据表中的一个键关联,也就是说,目标数据表的一个数据副本与该目标数据表中的一个键对应。在一种可能的实施方式中,目标数据表是通过该目标数据表中的至少两个键分片为对应的至少两个数据副本,即,是将该目标数据表中的至少两个键作为分布键分别对目标数据表进行分片处理以对应得到至少两个数据副本。
具体地,在创建数据表的时候,可以指定多个不同的列名(即数据表的字段)作为分布键,即可以指定至少两个分布键,进而在通过分布键对数据表进行分片处理时,一个分布键可以对应一个单独的数据副本,所以指定了几个分布键就可以得到几个对应的数据副本,每个数据副本里面的数据都是这个数据表的一个完整备份,具体来说,一个数据副本可以包括一个或多个数据分片,而每个数据副本所包括的全部数据分片的组合是这个数据表包括的全部数据,相对于相关技术中只能指定一个分布键的方式,可以得到以多个分布键进行分片处理的多个数据副本。
例如,对于一个数据表(例如称作数据表X),数据表X包括有key1、key2、key3在内的多个键(即列名),本申请实施例中,将数据表X的key1、key2、key3这三个键均指定为分布键,并分别以key1、key2、key3这三个分布键按照设定的分布策略(例如hash分布策略)对数据表X进行分片处理。具体地,请参见图4所示,将以key1、key2、key3分别对数据表X进行分片处理后得到的数据副本在图4中依次以副本1、副本2、副本3表示,并且,副本1包括segment1-1、segment1-2、segment1-3这三个数据分片,副本2包括segment2-1、segment2-2、segment2-3这三个数据分片,副本3包括segment3-1、segment3-2、segment3-3这三个数据分片,并且,各个数据副本所包括的各个数据分片均存储在不同的数据节点上,以副本1为例,其包括的数据分片segment1-1存储在数据节点1上、segment1-2存储在数据节点2上、segment1-3存储在数据节点3上,即副本1所包括的各个数据分片分别存储在不同的数据节点上。
在通过多个分布键对某个数据表进行分片处理以得到对应的多个数据副本之后,可以从多个数据副本中指定一个作为主数据副本,而将除去主数据副本的其余数据副本例如称作常规数据副本,继续以图4为例,例如将副本1指定为主数据副本,而副本2、副本3则可以称作常规数据副本。在具体实施过程中,可以按照用户需求指定主数据副本,例如将在业务过程过使用频率最高的分布键所对应的数据副本指定为主数据副本,或者可以将在业务过程中进行多表关联操作时经常作为关联键使用的分布键所对应的数据副本指定为主数据副本,或者可以随机选择一个分布键所对应的数据副本作为主数据副本,本申请实施例对此不作限制。
另外,为便于描述,本申请实施例中将主数据副本对应的分布键称作主分布键,继续以图4为例,假设将其中的副本1指定为了主数据副本,那么则可以将分布键key1称作是主分布键。
此外,为了系统的高可靠性,还可以为数据副本配置冗余备份,例如,对于目标数据表对应的至少两个数据副本,可以为该至少两个数据副本中第一数据副本中的第一数据分片配置冗余备份,例如将第一数据分片的冗余备份称作备份分片,那么第一数据分片和对应的备份分片可以分别存储在不同的数据节点中。其中,第一数据副本可以是至少两个数据副本中的任意一个数据副本,也就是说,可以为至少两个数据副本中的全部数据副本或者部分数据副本进行冗余备份,以及,第一数据分片可以是第一数据副本中的任意一个数据分片,所以,对一个数据副本进行冗余备份,可以是指对该数据副本中的全部数据分片或者部分数据分片进行冗余备份。
在包括主数据副本的配置中,可以仅为主数据副本配置冗余存储,即只为主数据副本设置冗余备份,如图4中所示的,为副本1设置了冗余备份,在图4中是以“副本1的备份”表示的,主数据副本的冗余备份中的各个数据分片与主数据副本中对应相同的各个数据分片需要分别存储在不同的数据节点上,例如图4中所示的,副本1中的segment1-1存储在数据节点1上,而副本1的备份中的segment1-1却存储在数据节点2上的,这样当segment1-1出现异常时,例如segment1-1所在的数据节点1出现故障时,可以从位于其它不同数据节点上及时获得副本备份,以确保数据的高可用性,进而提高系统的可靠性。
如上介绍的,目标数据表包括对应的至少两个数据副本,而每个数据副本与一个分布键对应,用于对该目标数据表进行分片的分布键可能是该目标数据表所包括的全部键中的全部或部分,例如,目标数据表包括key1、key2、key3、key4这四个键,而以其中的key1、key2、key3分别对该目标数据表进行分片处理以得到与key1、key2、key3对应的三个数据副本。由于用于对目标数据表进行分片处理的至少两个分布键可能是目标数据表所包括的全部键或部分键,那么数据操作请求中的目标键可能是属于前述的至少两个分布键,或者也可能并不属于前述的至少两个分布键。
在具体实施过程中,例如可以按照以下方式获得目标数据表对应的至少两个数据副本。
先确定针对目标数据表的至少两个分布键,例如用户可以通过输入命令的方式向系统指定该至少两个分布键,具体来说,例如可以选择在业务过程中使用频率较高的多个键作为至少两个分布键,这样在后续进行数据操作时能够利用这些分布键直接定位数据分片的概率也较高。进一步地,分别以至少两个分布键中的每个分布键对目标数据表中的数据进行分片处理,以得到各个分布键所对应的多个数据分片,并按照设定策略(例如hash策略或者随机策略)为每个分布键所包括的各个数据分片选择存储用的数据节点,然后再将各个分布键对应的各个数据分片分别存储在对应确定的数据节点中,以实现数据的分布式存储。而每个分布键所对应的全部数据分片的集合可以看作是目标数据表的一个数据副本,所以数据副本的数量与至少两个分布键的数量是一致的,这样相当于是从多个维度(即多个分布键)对目标数据表进行了分片处理,进而得到多个维度对应的多个数据副本。
在上述得到多个数据副本的过程中,根据用户输入的多个分布键的输入位置可以确定主分布键,例如可以将输入的多个分布键中的第一个分布键或者最后一个分布键确定为是主分布键,而主分布键得到的数据副本则可以确定为是主数据副本。
本申请实施例中,还可以在分布式存储系统中配置数据同步模块,数据同步模块主要用于主数据副本和其余各个常规数据副本之间的数据更新和同步,通过数据同步模块可以确保主数据副本和其余各个常规数据副本之间的数据实时更新和同步。在具体实施过程中,数据同步模块可以配置在备份主节点中,因为在一般情形下备份主节点的业务量是较小的,所以可以通过备份主节点来进行主数据副本和其余副本之间的数据同步处理,这样可以提高备份主节点的利用率,同时可以尽量降低主节点的处理负荷,并且数据同步模块是部署在原有架构的备份主节点上,这样无需对原有的系统架构进行改变,无架构成本上的增加,更利于方案实施。
此外,数据同步模块也可以采用主副架构,即可以分别配置一个主数据同步模块和一个副数据同步模块,例如图4中的数据同步模块(主)和数据同步模块(副),其中的同步模块(主)表示主数据同步模块,数据同步模块(副)表示副数据同步模块,在实际中,可以优先使用主数据同步模块进行主数据副本与其余副本之间的数据更新与同步,当主数据同步模块出现异常或失效时则可以启用副数据同步模块,以通过副数据同步模块及时接管数据更新和同步任务,以确保数据同步的准确性和及时性,确保业务无影响,提高系统可靠性。
主节点获得的数据操作请求是用于请求对目标数据表进行相应数据操作的请求,而具体进行何种数据操作,可以通过该数据操作请求中所包括的操作条件信息来确定。一般来说,数据操作包括读操作和写操作两种类型,而读操作主要是指查询(select)操作,写操作可以包括插入(insert)操作、删除(delete)操作和更新(update)操作,也就是常说的“增删改查”这四种类型的数据操作。
而在实际业务过程中,查询操作是使用频率较高的一种数据操作类型,所以大量的SQL语句中均包含有select语法类型,而SQL语句中所包括的语法类型以及该语法类型需要作用的对象等信息可以理解为是数据操作请求中的操作条件信息,例如一条SQL语句是:select*from tableA where age=32,对应的数据操作请求是从表A中查找age为32的相关数据,那么其中的select、tableA、age为32等信息均可以理解为是操作条件信息,也就是说,操作条件信息是表征用于对目标数据表进行具体的数据操作的信息。本申请实施例中,在数据操作请求中,还可以包括如前介绍的操作条件信息。
需要说明的是,本申请实施例中的数据操作请求可以是针对单表的单表操作请求,或者也可以是针对多表的多表关联操作请求,例如是针对两个表的关联查询操作请求等。当数据操作请求是针对多表的关联查询操作请求时,其中的“多表”例如可以包括第一数据表和第二数据表,那么该数据操作请求可用于请求对第一数据表和第二数据表进行表关联操作,而数据操作请求中的目标键则既包括第一数据表中的键也包括第二数据表中的键。对于需要被关联操作的第一数据表和第二数据表,其中的至少一个数据表是按照前述介绍的通过至少两个分布键分片为对应的至少两个数据副本,即可以这样理解:第一数据表通过至少两个分布键分片为对应的至少两个数据副本而第二数据表仅通过一个分布键分片为对应的一个数据副本,或者第一数据表仅通过一个分布键分片为对应的一个数据副本而第二数据表通过至少两个数据表分片为对应的至少两个数据副本,或者第一数据表通过至少两个分布键分片为对应的至少两个数据副本以及第二数据表也通过至少两个分布键分片为对应的至少两个数据副本。
步骤302:根据目标键从目标数据表对应的至少两个数据副本中选择目标数据副本。
如前所述的,由于目标数据表对应有多个数据副本,例如是通过目标数据表中的至少两个不同的键作为分布键对目标数据表进行分片处理得到的多个数据副本,由于用于对目标数据表进行分片的至少两个分布键可能是目标数据表所包括的全部键或者部分键,所以数据操作请求中的目标键可能是属于至少两个分布键,或者也可能并不属于至少两个分布键,所以,需要先判断目标键是否属于目标数据表所对应的至少两个分布键。
当目标键并不属于至少两个分布键时,主节点无法直接通过分布键来匹配对应的数据副本,也就无法直接查询数据操作所针对的数据分片,在该情形下,可以采用相关技术中的方式来进行查询,例如对于单表操作,可以通过查询索引或者全表扫描的方式来查询对应的数据分片,而低于多表关联操作,可以通过广播表或者重分布数据等方式来查询对应的数据分片。
而当目标键属于至少两个数据副本对应的至少两个分布键时,说明有与目标键对应的数据副本,并且将以目标键作为分布键进行分片对应的数据副本称作目标数据副本,进而,主节点可以从多个数据副本中确定出目标数据副本,并且可以明确用于存储目标数据副本所包括的各个数据分片的数据节点,例如目标数据副本是图4中的副本1,那么可以明确用于存储副本1所包括的各个数据分片的数据节点是数据节点1、数据节点2、数据节点3。需要说明的是,由于本申请实施例中增加了数据副本的,例如是通过增加分布键的方式创建了多个数据副本,所以数据操作请求中的目标键是分布键的概率自然也就增加了,这样直接找到对应的数据副本的概率也相应增大,便于提高数据操作效率。
步骤303:发送对目标数据副本进行数据操作的数据操作指令。
在从多个数据副本中选择出与目标键对应的目标数据副本之后,进一步地,可以对目标数据副本进行对应的数据操作。在本申请实施例中,可以由主节点从多个数据副本中选择目标数据副本,而由于目标数据副本对应的数据分片是存储在数据节点中的,所以需要由对应的数据节点直接对需要操作的数据分片进行数据操作处理,所以,主节点可以直接根据数据操作请求生成对目标数据副本进行数据操作的数据操作指令,并发送该数据操作指令,具体地,是发送给目标数据副本对应的数据节点,以使得对应的数据节点可以根据接收到的数据操作指令对对应存储的数据分片执行对应的数据操作。
在具体实施过程中,主节点根据操作条件信息,从用于存储目标数据副本所包括的数据分片的至少一个数据节点中确定目标数据节点,再根据数据操作请求生成数据操作指令,并将该数据操作指令发送给确定出的目标数据节点,使得该目标数据节点根据数据操作指令对目标数据节点中存储的数据分片执行对应的数据操作。
在目标键属于至少两个分布键,可以确定出与目标键对应的目标数据副本以及目标数据副本中的各个数据分片所对应的各个数据节点。进一步地,主节点可以根据数据操作请求中的操作条件信息,从与目标数据副本所对应的所有数据节点中确定出与操作条件信息对应的数据节点,为便于描述,本申请实施例将与数据操作请求中的操作条件信息对应的数据节点称作目标数据节点。
例如前述例子,数据操作请求需要查询age为32的对应数据,那么根据之前在存储各个数据分片时确定数据节点的设定策略,此时也可以再次采用该设定策略确定出age=32所对应的数据节点,例如按照设定策略,是将age=1~16对应的数据分片1存储在了数据节点1上、将age=17~25对应的数据分片2存储在了数据节点2上、将age=26~38对应的数据分片3存储在了数据节点3上,那么按照相同的设定策略,可以确定age=32所对应的是数据分片3且存储的数据节点是数据节点3,那么则可以将数据节点3确定为是目标数据节点。
在确定出了本次数据操作请求所针对的数据分片所在的目标数据节点之后,则可以根据数据操作请求生成对应的数据操作指令,然后将该数据操作指令发送给目标数据节点,进一步地,目标数据节点在接收到主节点发送的数据操作指令之后,则执行相应的数据操作,例如查询对应的数据或者更新对应的数据等,在数据操作执行完毕之后,目标数据节点可以将对应的执行结果再返回给主节点。
在具体实施过程中,目标数据节点可能是一个数据节点,或者也能是多个数据节点,在目标数据节点包括读个数据节点时,主节点可以根据数据操作请求生成分布式执行计划,即生成分布式的数据操作指令,然后将各个数据操作指令发送给相应的数据节点,各个数据节点可以并行执行各自的数据操作指令,并将各自得到的执行结果均返回给主节点,以便于主节点根据各个数据节点返回的执行结果进行结果汇总和聚合,以得到最终的数据处理结果。
本申请实施例中由于通过增加分布键的数量,通过多个维度分片以得到数据表的多份数据副本,这样在针对该数据表进行数据操作时,由于需要操作的键是分布键的概率增大了,所以可以较大概率地直接根据分布键来确定对应的数据副本,进而在确定出的数据副本中定位出需要操作的数据分片,从而可以提高数据处理效率,进而提升分布式存储系统的性能。
在具体业务过程中,针对数据仓库的数据操作主要包括读操作和写操作,读操作可以通过slecet语句执行,写操作可以包括插入(insert)操作、删除(delete)操作和更新(update)操作,也就是常说的“增删改查”这四种类型的数据操作。
为便于理解,以下分别结合读操作和写操作这两种操作类型对本申请实施例中的方案进行说明。
对于读操作,主节点收到客户端发送的SQL语句之后,主节点负责对SQL语句进行解析,生成分布式执行计划,进而将各个分布式执行计划分发到对应不同的数据节点进行执行,每一个数据节点把自己的执行结果返回给主节点,主节点汇总处理得到最终结果返回给客户端。读操作可以通过slecet语句执行,读操作也可以理解为是查询操作,在具体实施过程中,涉及到单表查询和多表联合查询。
在单表查询过程中,即针对一个数据表进行查询,例如需要对表A进行查询,对应的查询语句例如是:select*from tableA where age=32,即需要查询表A中age为32对应的数据,而表A已经预先创建有多个数据副本,例如通过至少两个不同的分布键分片为对应的至少两个数据副本,所以用于对表A进行查询操作的键(即前述查询语句中的“age”)是分布键的概率自然也就增大了,那么直接通过分布键能够选择到数据副本的概率也就增大了,进而从确定出的数据副本中查询到对应需查询的数据所在的数据分片的概率也就增大了,进而可以尽量提高数据查询效率。
在多表联合查询过程中,即针对多个数据表进行联合查询,例如需要对表A和表B进行联合查询,对应的查询语句例如是:select*from tableA,tableB where tableA.id=tableB.num,即需要查询表A中的id与表B中的num相同时对应的数据,而如前所介绍的,表A和表B中的至少一个表(例如是表A,或表B,或表A和表B)是预先通过至少两个分布键分片为对应的至少两个数据副本的,所以在进行关联查询时,关联键是分布键的概率也就增大了,例如用于关联查询的表A的关联键(即id)是表A预先进行分片的分布键的概率增大了,用于关联查询的表B的关联键(即num)是表B预先进行分片的分布键的概率也增大了,较为理想的情况是表A的id和表B的num都是分布键,那么这个操作只需要在对应的数据节点中就可以完成查询,因为两者的等值查询,以id为分布键副本的一个数据分片内的id值,如果有对应相等的num,则可在以num为分布键副本的一个数据分片内,因为在同一个系统内,键一样,对应的分布计算方法一样,那么必定有相同的分片序号。根据分片序号可以快速定位到对应的数据节点,实现数据的查询,则可以无需进行数据重分布。也就是说,由于增加了分布键的个数,那么SQL语句中用于进行关联查询的关联键是分布键的概率也就增加了。当关联键就是分布键时,不需要做数据重分布或者表广播,主节点可以根据分布键快速定位到对应的数据分片所在的数据节点,所以在生成分布式执行计划时能够快速地确定出需要执行计划的数据节点,就可以实现快速的关联查询,提高了查询效率。
对于写操作,以下对写操作包括的insert操作、update操作、delete操作分别进行说明。
写操作中的insert操作,即SQL语句是insert语句,insert语句中需要插入的记录包含数据表中的所有列,即包括了数据表中的所有键,那么自然就包含了该数据表的全部分布键,也就是说,当本申请实施例中的数据操作请求是用于请求对目标数据表执行插入操作时,数据操作请求中的目标键包括目标数据表中的所有键,在该实施例中,根据分布式存储系统是否包括数据同步模块可以通过不同的方式实现,以下具体说明。
在一种可能的实施方式中,分布式存储系统未包括数据同步模块,由于数据操作请求中的目标键是目标数据表中的所有键,所以,用于将目标数据表进行分片的至少两个分布键必然包含有目标键,此时,主节点可以将用于分片的各个分布键分别对应的数据副本均确定为是目标数据副本,也就是说,用于分片的分布键有多少个就对应有多少个目标数据副本,而每个目标数据副本所包括的数据分片分别存储在不同的数据节点上,所以每个目标数据副本均对应有至一个数据节点。进一步地,针对各个目标数据副本,主节点根据数据操作请求中的操作条件信息从该目标数据副本对应的至少两个数据节点中确定出对应需执行插入操作的数据节点,然后将数据操作请求下发给各个需要执行插入操作的数据节点,在具体实施时,主节点也可以根据数据操作请求生成对应的分布式执行计划,并将各个分布式执行计划下对应下发给各个需要执行插入操作的数据节点。本申请实施例中,主节点可以直接根据数据操作请求向各个数据副本对应的数据节点下发插入指令,各个数据副本对应的数据节点可以并行执行主节点下发的插入指令,并行地在各个数据副本之中插入数据,提高了数据插入效率,并且针对各个数据副本都插入了数据,可确保数据插入的准确性和完整性。
在另一种可能的实施方式中,分布式存储系统中包括有如前所述的数据同步模块,数据同步模块可以实现各个数据副本之间的数据同步。由于数据操作请求中的目标键是目标数据表中的所有键,所以,用于将目标数据表进行分片的至少两个分布键必然包含有目标键,此时,主节点可以从目标数据表对应的至少两个分布键中确定出主分布键,如前所述的,主分布键可以是预先配置的,而与主分布键对应的数据副本称作主数据副本,主节点可以将主数据副本确定为是前述的目标数据副本,然后根据数据操作请求中的操作条件信息从主数据副本对应的至少两个数据节点中确定需要插入数据的数据节点,然后将数据操作请求下发给确定出的需要插入数据的数据节点。另外,主节点将数据操作请求发送给数据同步模块,使得所述数据同步模块根据该数据操作请求将针对目标数据副本的数据操作同步给其余数据副本,而其中的其余数据副本是至少两个分布键中除去主分布键外的其余分布键所对应的数据副本,例如图3中所示的,假设分布键key1是主分布键,那么副本1是主数据副本,而副本2和副本3则可以称作其余数据副本。
在具体实施过程中,数据同步模块可以从目标数据表对应的至少两个分布键中确定除去主分布键的其余分布键,进而明确与其余分布键对应的其余数据副本,数据同步模块可以从其余数据副本所对应的数据节点中确定需执行插入操作的数据节点,然后将数据操作请求发送给各个需执行插入操作的数据节点。也就是说,在包括有数据同步模块的架构中,主节点仅对主数据副本对应的数据节点下发插入指令,而除主数据副本之外的其余数据副本中的数据插入则由数据同步模块管理和控制,如此,相当于是通过数据同步模块将主数据副本中插入的数据同步到其余各个数据副本中,以实现主数据副本与其余数据副本之间的数据同步,这样,通过数据同步模块可以分担一部分主节点的工作,以降低主节点的处理负荷,可以在一定程度上提高主节点的处理效率。
如前所述的,数据同步模块可以部署在主节点对应的备份主节点中,其中的备份主节点是主节点的备份节点,这样可以提高备份主节点的资源利用率,并且由于插入操作的执行频率较小,所以一般也并不会频繁的使用备份主节点进行数据同步,可以尽量保证备份主节点的备份作用。当然,在另外一些实施例中,数据同步模块还可以部署在主节点或者数据节点中,本申请实施例不做限制,当数据同步模块部署在主节点中时,相当于是通过主节点实现上述数据同步模块执行的操作,此时上述两种实施方式可理解为是相同的流程。
对于写操作中的更新操作和删除操作,可以按照以下图5所示的流程执行对应的更新操作或删除操作,图5所示的流程描述如下。
步骤501:主节点根据操作条件信息,从用于存储目标数据副本所包括的数据分片的至少两个数据节点中确定第一数据节点。
在步骤501之前,可以按照步骤301和步骤302的描述从目标数据表对应的多个数据副本中确定出目标数据副本,与目标数据副本对应的分布键即为数据操作请求中的目标键。
步骤502:主节点根据数据操作请求生成与目标键对应的第一数据操作指令,并将第一数据操作指令发送给第一数据节点,以使第一数据节点根据第一数据操作指令对第一数据节点中的第一数据执行对应的数据操作。
步骤502的实施例可以参见前述的步骤303的描述,第一数据节点根据第一数据操作指令对第一数据节点中的第一数据执行的数据操作例如是更新操作或者删除操作。
步骤503:主节点接收第一数据节点发送的键标识信息,该键标识信息用于标识第一数据所对应的键中除去目标键的其余键以及该其余键对应的数据信息。
步骤504:主节点从其余键中确定属于至少两个分布键的待处理分布键。
步骤505:主节点根据数据操作请求生成与待处理分布键对应的第二数据操作指令,并根据待处理分布键对应的数据信息从待处理分布键对应的数据副本所对应的数据节点中确定第二数据节点。
步骤506:主节点将第二数据操作指令发送给第二数据节点,以使第二数据节点根据第二数据操作指令对第二数据节点中的第二数据执行对应的数据操作。
为便于理解,以下举例对图5中的方案进行详细说明。
对于写操作中的update、delete等操作,即SQL语句是update语句或delete语句,在update语句和delete语句的操作条件中一般并未包含目标数据表全部的键,也就是说,数据操作请求中的目标键并不一定是目标数据表的分布键。所以,主节点可以先从目标数据表的至少两个分布键中查询是否有目标键,若有的话,则可以将目标键对应的数据副本(例如称作目标数据副本)选择出来。进一步地,主节点根据数据操作请求的操作条件信息和分片时采用的设定策略(例如hash策略)从目标数据副本对应的多个数据节点中选择出需要进行更新操作或删除操作的数据节点,例如将目标数据副本对应的需要进行更新操作或删除操作的数据节点称作第一数据节点,进而可以根据数据操作请求生成对应的数据操作指令,例如称作第一数据操作指令,该第一数据操作指令可以是更新指令或者删除指令,然后将生成的第一数据操作指令发送给第一数据节点,进一步地,第一数据节点可以根据第一数据操作指令对第一数据节点中存储的第一数据进行对应的数据操作,例如执行了对目标数据副本的更新操作或删除操作,至此,完成了对一个数据副本(即目标数据副本)的更新操作或删除操作。
在具体实施过程中,由于是通过至少两个分布键将目标数据表分片为了至少两个数据副本,所以,为了完成对全部数据副本的更新或删除,还需要对除去上述的目标数据副本之外的其余数据副本进行对应的更新或删除操作,以下举例说明。
举例来说,主节点从客户端接收到的SQL语句是:update tableA.age=25wheretableA.id=100,即需要将表A(即tableA)中id为100的age值更新为25,而在更新之前表A中id为100的age值假设是23,此外,假设表A包括id、num、age这三个键,而预先通过id、num这两个分布键将表A分片为了对应的两个副本,例如将以id分片的副本称作第一副本,将以num分片的副本称作第二副本。在获得前述的更新语句后,主节点确定目标键中属于分布键的是id,则确定以id分片的第一副本,即上述描述中的目标数据副本,再根据数据操作请求(可以理解为是前述的更新语句)生成与id对应的第一数据操作指令,根据操作条件信息(例如前述更新语句中的id=100)和之前分片时所采用的设定策略从第一副本对应的多个数据节点中确定id=100所对应的数据分片所在的数据节点,例如将该数据节点称作第一数据节点,进一步地,主节点将第一数据操作指令发送给第一数据节点,第一数据节点在接收到第一数据操作指令之后,即可对第一数据节点中存储的包括id=100的数据(例如称作第一数据)进行对应的数据操作,例如进行前述的更新操作,由于在数据分片中的数据一般是按照数据表的行来存储的,所以在包括id=100的第一数据就还包括num和age对应的值,例如num=88且age=23,而本次更新的目的就是要将age由23更新为25,所以在第一数据节点针对第一数据进行更新操作之后,更新后的第一数据中的age=25。
进一步地,第一数据节点在进行更新操作之后,还可以向主节点发送键标识信息,而该键标识信息标识的是第一数据所对应的键中除去目标键的其余键以及其余键对应的数据信息,该数据信息是指对第一数据进行数据操作之前数据。继续上述例子,第一数据所对应的全部键包括id、num、age这三个键,而其中的id是目标键,所以除去id外的其余键是num、age这两个键,并且,num对应的数据信息是88以及age对应的数据信息是23,所以,第一数据节点可以将前述的键标识信息发送给主节点,主节点根据该键标识信息确定出num、age这两个键以及各个键对应的数据信息。然后,主节点从其余键中判断有没有分布键,经确认,其中的num是分布键,例如将其余键中属于分布键的键称作待处理分布键,那么num即可称作代理分布键,进一步地,主节点根据数据操作请求生成与待处理分布键对应的第二数据操作指令,具体来说,可以是将前述的更新语句重新构造成一个新的执行语句,例如是:update tableA.age=25where tableA.id=100and tableA.num=88,并根据待处理分布键对应的数据信息(即num=88)以及分片时的设定策略从待处理分布键对应的数据副本(即上述例子中的第二副本)所对应的数据节点中确定第二数据节点,然后将第二数据操作指令发送给第二数据节点,以使第二数据节点根据第二数据操作指令对第二数据节点中num=88且id=100对应的数据进行更新,具体来说,是对第二数据节点中num=88且id=100所对应的age=23进行更新,即将其更新为age=25,从而实现对第二副本的数据更新。
当然,当待处理分布键包括多个分布键时,可以重复上述举例的待处理分布键是num的实现方式对其余分布键所对应的数据副本进行更新操作,此处就不再重复说明了。
自上述更新实施例中,也可以部署有数据同步模块,在主节点控制对目标数据副本进行更新操作之后,目标数据副本对应的第一数据节点可以将键标识信息发送给数据同步模块,然后由数据同步模块替代后续需要主节点执行的操作来实现对其余数据副本的更新操作,也就是说,可以有主节点控制对目标数据副本进行数据更新,而其余数据副本的更新可以由数据同步模块执行,具体的实现方式与上述的插入操作过程中由数据同步模块对其余数据副本进行更新操作的过程是类似的,此处也就不再重复说明了。
在上述举例的各种类型的写操作的过程中,由于本申请实施例中增加了数据表的数据副本的数量,所以数据操作请求中的目标键是分布键的概率也就增加了,也就是说,根据目标键确定出可直接进行数据操作的数据副本的概率也就增大了,进而可以根据分布键确定需要进行写操作的数据分片和对应的数据节点,无需进行全表扫描等额外操作,提高了数据操作的效率,进而提升了分布式存储系统的数据处理效率。
基于与上述方法实施例同一技术构思,本申请实施例还提供了一种数据处理装置,用于执行上述如图3、图5所示的方法,相关特征可参见上述方法实施例,此处不再赘述,如图6所示,该数据处理装置包括获得单元601、选择单元602以及处理单元603。其中:
获得单元601,用于获得数据操作请求,数据操作请求包括目标键,数据操作请求用于请求对目标数据表进行数据操作;
选择单元602,用于根据目标键从目标数据表对应的至少两个数据副本中选择目标数据副本;
处理单元603,用于发送对目标数据副本进行数据操作的数据操作指令。
在一种可能的实施方式中,至少两个数据副本是将目标数据表中的至少两个键作为分布键分别对目标数据表进行分片处理对应得到的。
在一种可能的实施方式中,数据操作请求用于请求对第一数据表和第二数据表进行表关联操作,目标键包括第一数据表中的键以及第二数据表中的键,第一数据表和第二数据表中的至少一个数据表通过至少两个键分片处理为对应的至少两个数据副本。
在一种可能的实施方式中,选择单元602用于:
将至少两个数据副本中以目标键作为分布键进行分片处理对应得到的数据副本确定为目标数据副本。
在一种可能的实施方式中,本申请实施例中的数据处理装置应用于分布式存储系统,分布式存储系统包括主节点和多个数据节点;至少两个数据副本中的每个数据副本包括至少一个数据分片,不同的数据分片存储在不同的数据节点中。
在一种可能的实施方式中,至少两个数据副本中的第一数据副本所包括的第一数据分片有备份分片,第一数据分片和对应的备份分片分别存储在不同的数据节点中。
在一种可能的实施方式中,数据操作请求还包括操作条件信息,处理单元603用于:
根据操作条件信息,从用于存储目标数据副本所包括的数据分片的至一个数据节点中确定目标数据节点;
根据数据操作请求生成数据操作指令,并将数据操作指令发送给目标数据节点,使得目标数据节点根据数据操作指令对目标数据节点中存储的数据分片执行对应的数据操作。
在一种可能的实施方式中,分布式存储系统还包括备份主节点,备份主节点是主节点的备份节点,备份主节点包括数据同步模块;
选择单元602用于:
将至少两个数据副本对应的至少两个分布键中的主分布键对应的数据副本确定为目标数据副本;
对应的,处理单元603用于:
将数据操作请求发送给数据同步模块,使得数据同步模块根据数据操作请求将针对目标数据副本的数据操作同步给其余数据副本,其余数据副本是至少两个分布键中除去主分布键外的其余分布键所对应的数据副本。
上述数据处理装置可以用于执行如图3、图5所示的方法。其中,获得单元601可以执行如图3所示的方法实施例中的步骤301;选择单元602可以执行如图3所示的方法实施例中的步骤302;处理单元603可以执行如图3所示的方法实施例中的步骤303,还可以执行如图5所示的方法实施例中的步骤503~步骤506。
需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。在本申请的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
基于与上述方法实施例同一技术构思,本申请实施例还提供了一种数据处理装置,该数据处理装置例如是图1或图2中的主节点,用于执行上述如图3、图5所示的方法,相关特征可参见上述方法实施例,此处不再赘述。如图7所示,本申请实施例中的数据处理装置包括至少一个处理器701,以及与至少一个处理器701连接的存储器702和通信接口703,本申请实施例中不限定处理器701与存储器702之间的具体连接介质,图7中是以处理器701和存储器702之间通过总线700连接为例,总线700在图7中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线700可以分为地址总线、数据总线、控制总线等,为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
在本申请实施例中,存储器702存储有可被至少一个处理器701执行的指令,至少一个处理器701通过执行存储器702存储的指令,可以执行前述的数据处理方法中所包括的步骤。
其中,处理器701是数据处理装置的控制中心,可以利用各种接口和线路连接整个数据处理装置的各个部分,通过运行或执行存储在存储器702内的指令以及调用存储在存储器702内的数据,数据处理装置的各种功能和处理数据,从而对数据处理装置进行整体监控。可选的,处理器701可包括一个或多个处理单元,处理器701可集成应用处理器和调制解调处理器,其中,处理器701主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器701中。在一些实施例中,处理器701和存储器702可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器701可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所申请的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器702作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器702可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(random rccessmemory,RAM)、静态随机访问存储器(static random access memory,SRAM)、可编程只读存储器(programmable read only memory,PROM)、只读存储器(read only memory,ROM)、带电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器702是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器702还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
通信接口703是能够用于进行通信的传输接口,例如可以通过通信接口703接收数据或者发送数据。
继续参见图7,该数据处理装置还包括帮助数据处理装置内的各个器件之间传输信息的基本输入/输出系统(I/O系统)704、用于存储操作系统705、应用程序706和其他程序模块707的大容量存储设备708。
基本输入/输出系统704包括有用于显示信息的显示器709和用于用户输入信息的诸如鼠标、键盘之类的输入设备710。其中显示器709和输入设备710都通过连接到系统总线700的基本输入/输出系统704连接到处理器701。基本输入/输出系统704还可以包括输入输出控制器以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器还提供输出到显示屏、打印机或其他类型的输出设备。
大容量存储设备708通过连接到系统总线700的大容量存储控制器(未示出)连接到处理器701。大容量存储设备708及其相关联的计算机可读介质为该服务器包提供非易失性存储。也就是说,大容量存储设备708可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
根据本申请的各种实施例,该数据处理装置包还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即该数据处理装置可以通过连接在系统总线700上的通信接口703连接到网络711,或者说,也可以使用通信接口703来连接到其他类型的网络或远程计算机系统(未示出)。
基于同一技术构思,本申请实施例还提供一种存储介质,该存储介质可以是计算机可读存储介质,该存储介质中存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行如前述的数据处理方法的步骤。
基于同一技术构思,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当该计算机指令在计算机上运行时,使得计算机执行如前述的数据处理方法的步骤。
基于同一技术构思,本申请实施例还提供一种芯片系统,该芯片系统包括处理器,还可以包括存储器,用于实现如前述的数据处理方法的步骤。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
在一些可能的实施方式中,本申请实施例提供的数据处理方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算机上运行时,所述程序代码用于使所述计算机执行前文所描述的根据本申请各种示例性实施方式的数据处理方法中的步骤。
本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,数字通用光盘(digital versatile disc,DVD))、或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (18)

1.一种数据处理方法,其特征在于,所述方法包括:
获得数据操作请求,所述数据操作请求包括目标键,所述数据操作请求用于请求对目标数据表进行数据操作;
根据所述目标键从所述目标数据表对应的至少两个数据副本中选择目标数据副本;
发送对所述目标数据副本进行数据操作的数据操作指令。
2.如权利要求1所述的方法,其特征在于,所述至少两个数据副本是将所述目标数据表中的至少两个键作为分布键分别对所述目标数据表进行分片处理得到的。
3.如权利要求2所述的方法,其特征在于,所述数据操作请求用于请求对第一数据表和第二数据表进行表关联操作,所述第一数据表和所述第二数据表中的至少一个数据表通过至少两个键分片处理为对应的数据副本。
4.如权利要求2所述的方法,其特征在于,根据所述目标键从所述目标数据表对应的至少两个数据副本中选择目标数据副本,包括:
将所述至少两个数据副本中以所述目标键作为分布键进行分片处理得到的数据副本确定为所述目标数据副本。
5.如权利要求1~4任一所述的方法,其特征在于,所述方法应用于分布式存储系统,所述分布式存储系统包括主节点和多个数据节点;所述至少两个数据副本中的每个数据副本包括至少一个数据分片,不同的数据分片存储在不同的数据节点中。
6.如权利要求5所述的方法,其特征在于,所述至少两个数据副本中的第一数据副本所包括的第一数据分片有备份分片,所述第一数据分片和对应的备份分片分别存储在不同的数据节点中。
7.如权利要求5所述的方法,其特征在于,所述数据操作请求还包括操作条件信息,发送对所述目标数据副本进行数据操作的数据操作指令,包括:
根据所述操作条件信息,从用于存储所述目标数据副本所包括的数据分片的至少一个数据节点中确定目标数据节点;
根据所述数据操作请求生成数据操作指令,并将所述数据操作指令发送给所述目标数据节点,使得所述目标数据节点根据所述数据操作指令对所述目标数据节点中存储的数据分片执行对应的数据操作。
8.如权利要求7所述的方法,其特征在于,所述分布式存储系统还包括备份主节点,所述备份主节点是所述主节点的备份节点,所述备份主节点包括数据同步模块;
根据所述目标键从所述目标数据表对应的至少两个数据副本中选择目标数据副本,包括:
将所述至少两个数据副本对应的至少两个分布键中的主分布键对应的数据副本确定为所述目标数据副本;
对应的,所述方法还包括:
将所述数据操作请求发送给所述数据同步模块,使得所述数据同步模块根据所述数据操作请求将针对所述目标数据副本的数据操作同步给其余数据副本,所述其余数据副本是所述至少两个分布键中除去所述主分布键外的其余分布键所对应的数据副本。
9.一种数据处理装置,其特征在于,包括:
获得单元,用于获得数据操作请求,所述数据操作请求包括目标键,所述数据操作请求用于请求对目标数据表进行数据操作;
选择单元,用于根据所述目标键从所述目标数据表对应的至少两个数据副本中选择目标数据副本;
处理单元,用于发送对所述目标数据副本进行数据操作的数据操作指令。
10.如权利要求9所述的装置,其特征在于,所述至少两个数据副本是将所述目标数据表中的至少两个键作为分布键分别对所述目标数据表进行分片处理得到的。
11.如权利要求10所述的装置,其特征在于,所述数据操作请求用于请求对第一数据表和第二数据表进行表关联操作,所述目标键包括所述第一数据表中的键以及所述第二数据表中的键,所述第一数据表和所述第二数据表中的至少一个数据表通过至少两个键分片处理为对应的数据副本。
12.如权利要求10所述的装置,其特征在于,所述选择单元用于:
将所述至少两个数据副本中以所述目标键作为分布键进行分片处理得到的数据副本确定为所述目标数据副本。
13.如权利要求9~12任一所述的装置,其特征在于,所述装置应用于分布式存储系统,所述分布式存储系统包括主节点和多个数据节点;所述至少两个数据副本中的每个数据副本包括至少一个数据分片,不同的数据分片存储在不同的数据节点中。
14.如权利要求13所述的装置,其特征在于,所述至少两个数据副本中的第一数据副本所包括的第一数据分片有备份分片,所述第一数据分片和对应的备份分片分别存储在不同的数据节点中。
15.如权利要求13所述的装置,其特征在于,所述数据操作请求还包括操作条件信息,所述处理单元用于:
根据所述操作条件信息,从用于存储所述目标数据副本所包括的数据分片的至少一个数据节点中确定目标数据节点;
根据所述数据操作请求生成数据操作指令,并将所述数据操作指令发送给所述目标数据节点,使得所述目标数据节点根据所述数据操作指令对所述目标数据节点中存储的数据分片执行对应的数据操作。
16.如权利要求15所述的装置,其特征在于,所述分布式存储系统还包括备份主节点,所述备份主节点是所述主节点的备份节点,所述备份主节点包括数据同步模块;
所述选择单元用于:
将所述至少两个数据副本对应的至少两个分布键中的主分布键对应的数据副本确定为所述目标数据副本;
对应的,所述处理单元用于:
将所述数据操作请求发送给所述数据同步模块,使得所述数据同步模块根据所述数据操作请求将针对所述目标数据副本的数据操作同步给其余数据副本,所述其余数据副本是所述至少两个分布键中除去所述主分布键外的其余分布键所对应的数据副本。
17.一种数据处理装置,其特征在于,包括:
至少一个处理器;以及与所述至少一个处理器通信连接的存储器、通信接口;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,使得所述装置执行如权利要求1~8中任一项所述的方法。
18.一种计算机可读存储介质,其特征在于,包括程序或指令,当所述程序或指令在计算机上运行时,使得如权利要求1~8中任一项所述的方法被执行。
CN202011300288.6A 2020-11-19 2020-11-19 一种数据处理方法及装置 Pending CN114519049A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011300288.6A CN114519049A (zh) 2020-11-19 2020-11-19 一种数据处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011300288.6A CN114519049A (zh) 2020-11-19 2020-11-19 一种数据处理方法及装置

Publications (1)

Publication Number Publication Date
CN114519049A true CN114519049A (zh) 2022-05-20

Family

ID=81595508

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011300288.6A Pending CN114519049A (zh) 2020-11-19 2020-11-19 一种数据处理方法及装置

Country Status (1)

Country Link
CN (1) CN114519049A (zh)

Similar Documents

Publication Publication Date Title
US20200218733A1 (en) Adaptive Distribution Method For Hash Operation
US10002148B2 (en) Memory-aware joins based in a database cluster
US9251163B2 (en) File sharing system and file sharing method
US20130110873A1 (en) Method and system for data storage and management
JP6107429B2 (ja) データベースシステム、検索方法およびプログラム
CN110147407B (zh) 一种数据处理方法、装置及数据库管理服务器
CN111159252A (zh) 事务执行方法、装置、计算机设备及存储介质
KR20160124744A (ko) 인-메모리 데이터베이스를 호스팅하는 시스템 및 방법
US20110040788A1 (en) Coherent File State System Distributed Among Workspace Clients
WO2017156855A1 (en) Database systems with re-ordered replicas and methods of accessing and backing up databases
US11226986B2 (en) Data table partitioning management method and apparatus
CN112328700A (zh) 一种分布式数据库
KR101527634B1 (ko) 샤딩 서비스를 제공하는 방법 및 장치
CN113656384B (zh) 数据处理方法、分布式数据库系统、电子设备及存储介质
WO2022127866A1 (zh) 数据处理方法、装置、电子设备、存储介质
CN115080666A (zh) 数据同步方法、系统、电子设备及存储介质
US11461201B2 (en) Cloud architecture for replicated data services
CN111459913B (zh) 分布式数据库的容量扩展方法、装置及电子设备
CN114519049A (zh) 一种数据处理方法及装置
CN111782634A (zh) 数据分布式存储方法、装置、电子设备及存储介质
CN111221857A (zh) 从分布式系统中读数据记录的方法和装置
US11868352B2 (en) Systems and methods for spilling data for hash joins
US11468090B2 (en) Maintain constant load on global database after regionalization
US11768853B2 (en) System to copy database client data
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