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

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

Info

Publication number
CN113901069B
CN113901069B CN202111488732.6A CN202111488732A CN113901069B CN 113901069 B CN113901069 B CN 113901069B CN 202111488732 A CN202111488732 A CN 202111488732A CN 113901069 B CN113901069 B CN 113901069B
Authority
CN
China
Prior art keywords
data
columns
copies
column
nodes
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
CN202111488732.6A
Other languages
English (en)
Other versions
CN113901069A (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.)
Hefei Shenwei Ruisi Information Technology Co.,Ltd.
Original Assignee
Weixun Boray Data Technology Beijing 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 Weixun Boray Data Technology Beijing Co ltd filed Critical Weixun Boray Data Technology Beijing Co ltd
Priority to CN202111488732.6A priority Critical patent/CN113901069B/zh
Publication of CN113901069A publication Critical patent/CN113901069A/zh
Application granted granted Critical
Publication of CN113901069B publication Critical patent/CN113901069B/zh
Priority to US18/276,361 priority patent/US20240037119A1/en
Priority to PCT/CN2022/081884 priority patent/WO2023103213A1/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • 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
    • 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/221Column-oriented storage; 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

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)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种分布式数据库的数据存储方法和装置,分布式数据库中的数据分别按照行存储模式和列存储模式存储,该方法包括:当检测到行存储模式下的数据发生变更时,根据预设同步策略获取发生变更的目标行数据;根据目标行数据所在的目标行的属性信息和抗失效节点数量确定原始数据份数和冗余数据份数;基于原始数据份数和冗余数据份数按照预设纠删码算法对目标行数据进行编码,生成包括原始数据份数的原始数据和冗余数据份数的冗余数据的编码数据;将各份编码数据按列或列组平均分发到分布式数据库中不同的节点进行存储,在实现行数据的列化存储的同时完成了列数据分片和数据的可靠性处理,进一步提高了分布式数据库的数据存储效率和可靠性。

Description

一种分布式数据库的数据存储方法和装置
技术领域
本申请涉及数据库技术领域,更具体地,涉及一种分布式数据库的数据存储方法和装置。
背景技术
随着5G,云计算,万物互联,人工智能时代的到来,数据的产生,传输,存储和分析处理的要求却越来越高。其中数据存储方式对于数据的查询效率有重要的影响。
通常联机事务处理OLTP(On-Line Transaction Processing)系统采用行存储方式,即数据表按行连续存放,这样针对行进行处理的交易型事务实现非常高效。而联机实时分析OLAP(On-Line Analytical Processing)是面向数据分析的,海量数据查询但通常每张数据表仅少数几列数据被使用,因此通常采用列存储方式,这样减少了读取的数据量和投影操作,处理更高效。随着数据分析实时处理要求的提高和统一工作负载的需求,在同一个系统中同时支持OLTP和OLAP场景的HTAP(Hybrid Transactional/AnalyticalProcessing)系统应运而生。
为实现HTAP,现有技术通常采用行列混合存储,第一类混合存储方案是同时存在完整的行存储数据和列存储数据;第二类混合存储方案是混合行列,比如PAX(PartitionAttributes Cross,分区属性交叉),即将多行划分为块,块内按列存储,通常这个行块正好是一个页面的大小。然而,对于第一类混合存储方案,行列间通过扩展的Raft一致性协议实现行列格式的转换和数据快速一致,协议交互繁杂,随着需要维护的Raft group的数量增加,节点间通信压力也不断增加;对于第二类混合存储方案,很难在两个方向同时做到与单独的OLTP、OLAP系统,影响了数据处理效率。
另外,在同时支持行列存储的同时,分布式数据库还需要支持数据分片,以及数据多副本间的一致性,这些都增加了分布式数据库存储引擎的实现复杂度和处理时延。因此需要更简洁的行列混合存储方案,并且适合硬件加速的方案更优。
因此,如何进一步提高分布式数据库的数据存储效率和可靠性,是目前有待解决的技术问题。
发明内容
本发明提供一种分布式数据库的数据存储方法,用以解决现有技术中分布式数据库的数据存储效率低和可靠性低的技术问题。
分布式数据库中的数据分别按照行存储模式和列存储模式存储,该方法包括:
当检测到行存储模式下的数据发生变更时,根据预设同步策略获取发生变更的目标行数据;
根据所述目标行数据所在的目标行的属性信息和抗失效节点数量确定原始数据份数和冗余数据份数;
基于所述原始数据份数和所述冗余数据份数按照预设纠删码算法对所述目标行数据进行编码,生成包括所述原始数据份数的原始数据和所述冗余数据份数的冗余数据的编码数据;
将各份所述编码数据按列或列组平均分发到所述分布式数据库中不同的节点进行存储;
其中,所述属性信息包括所述目标行中的各列的字节数或所述目标行的列数,所述抗失效节点数量为存放各份所述冗余数据的节点的数量。
在本申请一些实施例中,若所述属性信息为所述目标行中各列的所述字节数,根据所述目标行数据所在行的属性信息和抗失效节点数量确定原始数据份数和冗余数据份数,具体为:
根据各所述字节数之和确定所述原始数据份数;
根据所述抗失效节点数量和各所述字节数中的最大字节数的乘积确定所述冗余数据份数。
在本申请一些实施例中,若所述属性信息为所述列数,根据所述目标行数据所在行的属性信息和抗失效节点数量确定原始数据份数和冗余数据份数,具体为:
根据所述列数或各分组中单元的数量确定所述原始数据份数;
根据所述抗失效节点数量确定所述冗余数据份数;
其中,所述分组是按照预设分组规则将所述列数划分后生成的,各所述分组中单元的数量相等,各所述单元为单列或一个列组,所述列组根据查询相关性将多个列归并后生成或根据各列的字节长度的和归并后生成。
在本申请一些实施例中,若所述属性信息为所述列数,根据所述目标行数据所在行的属性信息和抗失效节点数量确定原始数据份数和冗余数据份数,具体为:
M= Ceiling(L,n)
K=(M/n)*n1
其中,M为所述原始数据份数,K为所述冗余数据份数,L为所述列数,所述列数是原始列数或已存在列归并后的列数,n为所述分布式数据库中保存有效数据信息的节点数量,n1为所述抗失效节点数量,Ceiling为ceiling函数。
在本申请一些实施例中,所述变更包括新增、更新或删除,所述预设同步策略包括日志同步。
相应的,本发明还提出了一种分布式数据库的数据存储装置,所述分布式数据库中的数据分别按照行存储模式和列存储模式存储,所述装置包括:
获取模块,用于当检测到行存储模式下的数据发生变更时,根据预设同步策略获取发生变更的目标行数据;
确定模块,用于根据所述目标行数据所在的目标行的属性信息和抗失效节点数量确定原始数据份数和冗余数据份数;
编码模块,用于基于所述原始数据份数和所述冗余数据份数按照预设纠删码算法对所述目标行数据进行编码,生成包括所述原始数据份数的原始数据和所述冗余数据份数的冗余数据的编码数据;
分发模块,用于将各份所述编码数据按列或列组平均分发到所述分布式数据库中不同的节点进行存储;
其中,所述属性信息包括所述目标行中的各列的字节数或所述目标行的列数,所述抗失效节点数量为存放各份所述冗余数据的节点的数量。
在本申请一些实施例中,若所述属性信息为各所述目标行中各列的所述字节数,所述确定模块,具体用于:
根据各所述字节数之和确定所述原始数据份数;
根据所述抗失效节点数量和各所述字节数中的最大字节数的乘积确定所述冗余数据份数。
在本申请一些实施例中,若所述属性信息为所述列数,所述确定模块,具体用于:
根据所述列数或各分组中单元的数量确定所述原始数据份数;
根据所述抗失效节点数量确定所述冗余数据份数;
其中,所述分组是按照预设分组规则将所述列数划分后生成的,各所述分组中单元的数量相等,各所述单元为单列或一个列组,所述列组根据查询相关性将多个列归并后生成或根据各列的字节长度的和归并后生成。
在本申请一些实施例中,若所述属性信息为所述列数,所述确定模块,具体用于使:
M= Ceiling(L,n)
K=(M/n)*n1
其中,M为所述原始数据份数,K为所述冗余数据份数,L为所述列数,所述列数是原始列数或已存在列归并后的列数,n为所述分布式数据库中保存有效数据信息的节点数量,n1为所述抗失效节点数量,Ceiling为ceiling函数。
在本申请一些实施例中,所述变更包括新增、更新或删除,所述预设同步策略包括日志同步。
通过应用以上技术方案,当检测到行存储模式下的数据发生变更时,根据预设同步策略获取发生变更的目标行数据;根据目标行数据所在的目标行的属性信息和抗失效节点数量确定原始数据份数和冗余数据份数;基于原始数据份数和冗余数据份数按照预设纠删码算法对目标行数据进行编码,生成包括原始数据份数的原始数据和冗余数据份数的冗余数据的编码数据;将各份编码数据按列或列组平均分发到分布式数据库中不同的节点进行存储;其中,属性信息包括目标行中的各列的字节数或目标行的列数,抗失效节点数量为存放各份冗余数据的节点的数量,分布式数据库中的数据分别按照行存储模式和列存储模式存储,可同时支持高效的执行OLAP系统和OLTP系统,在实现行数据的列化存储的同时完成了列数据分片和数据的可靠性处理,并可适合硬件实现,进一步提高了分布式数据库的数据存储效率和可靠性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地 ,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明实施例提出的一种分布式数据库的数据存储方法的流程示意图;
图2示出了数据存储模式变化原理示意图;
图3示出了编码数据恢复原理示意图;
图4示出了本发明一实施例中基于纠删码算法编解码原理示意图;
图5示出了本发明另一实施例中基于纠删码算法编解码原理示意图;
图6示出了与图5对应的数据存储原理示意图;
图7示出了本发明实施例提出的一种分布式数据库的数据存储装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本发明实施例提供一种分布式数据库的数据存储方法,所述分布式数据库中的数据分别按照行存储模式和列存储模式存储,即采用行列共存,分别存储完整的数据的混合方案。如图1所示,该方法包括以下步骤:
步骤S101,当检测到行存储模式下的数据发生变更时,根据预设同步策略获取发生变更的目标行数据。
本实施例中,对OLTP交易型的新增数据都采用行存储模式进行存储,行存储主要来响应事务查询,多是点查询和点更新。当行存储模式下某行数据发生变更,根据预设同步策略获取发生变更的目标行数据。
为了提高数据处理的可靠性,在本申请一些实施例中,所述变更包括新增、更新或删除,所述预设同步策略包括日志同步。
本领域技术人员还可基于其他一致性的方式的预设同步策略,这并不影响本申请的保护范围。
步骤S102,根据所述目标行数据所在的目标行的属性信息和抗失效节点数量确定原始数据份数和冗余数据份数。
本实施例中,属性信息包括所述目标行中的各列的字节数或所述目标行的列数,抗失效节点数量为存放各份冗余数据的节点的数量,只要分布式数据库中失效或故障节点的数量不大于该抗失效节点数量,都可以利用剩余节点中数据恢复出原始数据。根据该属性信息和抗失效节点数量可确定原始数据份数和冗余数据份数,该原始数据份数与纠删码算法中的原始数据对应,该冗余数据份数与纠删码算法中的冗余数据对应。
为了准确的确定原始数据份数和冗余数据份数,在本申请一些实施例中,若所述属性信息为所述目标行中各列的所述字节数,根据所述目标行数据所在行的属性信息和抗失效节点数量确定原始数据份数和冗余数据份数,具体为:
根据各所述字节数之和确定所述原始数据份数;
根据所述抗失效节点数量和各所述字节数中的最大字节数的乘积确定所述冗余数据份数。
本实施例中,若属性信息为各目标行中的各列的字节数,则根据各所述字节数之和确定所述原始数据份数,根据抗失效节点数量和各字节数中的最大字节数的乘积确定冗余数据份数。
纠删码是一种数据保护方法,将M(即原始数据份数)份原始数据编码形成K(即冗余数据份数)份冗余数据,组成M+K的编码后数据,可以实现当任意K份数据丢失,都可以利用剩下数据恢复出原始数据,实现K:M的保护能力。纠删码算法要求各份数据大小一致,但实际应用中数据库表的各列字段类型并不等长,因此,纠删码的数据列M值通常并不等于行数据的列数。同时,同一列的数据也需要存放在一起,才能发挥列存的优势。因此,本实施例中,在编码的数据粒度选择和最后的数据分发上,需要做相应处理,并进一步约束了冗余数据K的数量选择,比如,如果一列数据包含了3份编码数据,则冗余数据K至少要不小于3才能保证在该列数据丢失时,能够成功恢复所丢失的数据,如图2所示为数据存储模式变化原理示意图,如图3所示为编码数据恢复原理示意图,图2和图3中,A、B…C、D为原始数据,r1、r2为编码得到的冗余数据。
纠删码编码的数据粒度最简单的是以字节为单位按行进行计算,按列分发到节点。每列数据根据类型的不同,都有各自的一个字节长度数值,记为dj(表示第j列有d份编码数据,每份编码数据为一个字节),这样M=Σ(dj)。如需要满足x个节点失效数据不丢失,则可计算出需要的冗余数据份数K= x * max(dj)。举例来说,假定表A有4列, d1=1,d2=1,d3=2,d4=4分别表示各列长度(以字节为单位),则Σ(dj) =1+1+2+4= 8, max(dj) = 4,在将各列分发到各节点后,第1个节点为1个字节,第2个节点为1个字节,第3个节点为2个字节,第4个节点为4个字节,如果要保证任意一个节点失效,数据都能恢复,则冗余数据字节数需要为4字节长度,并分发到第5个节点上,这样当第4个节点失效时,通过1、2、3、5节点的数据信息,仍旧能恢复有效数据;当需要保证任意2节点失效都能恢复,需要选择2倍的最大dj即可(保证第4个节点和一个冗余节点失效可恢复),这里为8个字节,分发时分发到第5个节点和第6个节点,各4个字节。
为了准确的确定原始数据份数和冗余数据份数,在本申请一些实施例中,若所述属性信息为所述列数,根据所述目标行数据所在行的属性信息和抗失效节点数量确定原始数据份数和冗余数据份数,具体为:
根据所述列数或各分组中单元的数量确定所述原始数据份数;
根据所述抗失效节点数量确定所述冗余数据份数;
其中,所述分组是按照预设分组规则将所述列数划分后生成的,各所述分组中单元的数量相等,各所述单元为单列和/或一个列组,所述列组根据查询相关性将多个列归并后生成或根据各列的字节长度的和归并后生成。
本实施例中,数据库的每张逻辑表的列属性不一样,同时列的字段类型可以是变长的数据类型。这就导致不同的表,其行数据长度不一样,即使是同一张表,其每一行数据长度也可能不一样。同时,以PostgreSQL为例,数据库支持的行最长可达1.6TB,每张表最大列数可在250~1600之间(取决于列的类型),因此,采用按行长度进行编码,按列分发,仅能针对行的长度偏小,列数偏小,且行的长度相对固定的场景使用,并支持编码矩阵和解码矩阵的自动生成,如图4所示。
因此,为了扩大适用范围,根据列数或各分组中单元的数量确定原始数据份数,根据所述抗失效节点数量确定所述冗余数据份数。具体的,如果表的列数较少,可将列数作为该原始数据份数;如果列数较多,可先按照预设分组规则将所述列数划分后生成多个分组,每个分组中单元的数量相等,将每个分组中单元的数量作为该原始数据份数,举例来说,如果共有A列,则可分为3组,每组有a1列、a2列、a3列,满足a1=a2=a3,且a1+a2+a3=A。
还可根据查询相关性将多个列归并后生成一个列组,或根据各列的字节长度的和归并后生成一个列组,这样列组放置在一个节点,当节点失效时,对编码后的码块而言仅算一路数据丢失。因此,各单元可以为单列或一个列组。
经过以上处理,按照每一行的列数量作为M值,如果每列长度不一致,则进行填充处理。如此,则每张表的生成矩阵和解码矩阵可以固化,而不必随着行的长度变化而变化,如图5所示为相应的基于纠删码算法编解码原理示意图,如图6所示为相应的数据存储原理示意图。
为了高效的确定原始数据份数和冗余数据份数,在本申请一些实施例中,若所述属性信息为所述列数,根据所述目标行数据所在行的属性信息和抗失效节点数量确定原始数据份数和冗余数据份数,具体为:
M= Ceiling(L,n)
K=(M/n)*n1
其中,M为所述原始数据份数,K为所述冗余数据份数,L为所述列数,所述列数是原始列数或已存在列归并后的列数,n为所述分布式数据库中保存有效数据信息的节点数量,n1为所述抗失效节点数量,Ceiling为ceiling函数。
本实施例中,当硬件实现的内部数据位宽足够大时,也可以不用将所述列数分组,根据列数、抗失效节点数量并结合分布式数据库中节点数量确定原始数据份数和冗余数据份数。
步骤S103,基于所述原始数据份数和所述冗余数据份数按照预设纠删码算法对所述目标行数据进行编码,生成包括所述原始数据份数的原始数据和所述冗余数据份数的冗余数据的编码数据。
本实施例中,预设纠删码算法可包括RS(Reed-solomon)码算法,阵列码算法,LDPC(Low Density Parity Check Code,低密度奇偶校验码)算法,LRC(Locally RepairableCode,局部校验编码)算法。按照预设纠删码算法对目标行数据进行编码,即将目标行数据划分得到原始数据份数的原始数据,并对该原始数据份数的原始数据进行纠删编码得到冗余数据份数的冗余数据,从而获得由原始数据份数的原始数据和冗余数据份数的冗余数据组成的多份编码数据。
步骤S104,将各份所述编码数据按列或列组平均分发到所述分布式数据库中不同的节点进行存储。
本实施例中,若不存在与列组对应的编码数据,将各份编码数据按列平均分发到分布式数据库中不同的节点进行存储;若存在与列组对应的编码数据,将各份编码数据按列或列组平均分发到分布式数据库中不同的节点进行存储,以完成行数据的列化存储,且同时完成列数据分片和数据的可靠性处理。
通过应用以上技术方案,当检测到行存储模式下的数据发生变更时,根据预设同步策略获取发生变更的目标行数据;根据目标行数据所在的目标行的属性信息和抗失效节点数量确定原始数据份数和冗余数据份数;基于原始数据份数和冗余数据份数按照预设纠删码算法对目标行数据进行编码,生成包括原始数据份数的原始数据和冗余数据份数的冗余数据的编码数据;将各份编码数据按列或列组平均分发到分布式数据库中不同的节点进行存储;其中,属性信息包括目标行中的各列的字节数或目标行的列数,抗失效节点数量为存放各份冗余数据的节点的数量,分布式数据库中的数据分别按照行存储模式和列存储模式存储,可同时支持高效的执行OLAP系统和OLTP系统,无需复杂的交互协议,在实现行数据的列化存储的同时完成了列数据分片和数据的可靠性处理,并可适合硬件实现,进一步提高了分布式数据库的数据存储效率和可靠性。
为了进一步阐述本发明的技术思想,现结合具体的应用场景,对本发明的技术方案进行说明。
以TPC-C测试集中的bmsql_stock表为例,该表中各列的信息如表1所示。
表1
Table "public.bmsql_stock"
Column | Type | Collation | Nullable | Default
-----------------+---------------------------+-------------+------------+---------
s_w_id | integer | | not null |
s_i_id | integer | | not null |
s_quantity | integer | | |
s_ytd | integer | | |
s_order_cnt | integer | | |
s_remote_cnt | integer | | |
s_data | character varying(50)| | |
s_dist_01 | character(24) | | |
s_dist_02 | character(24) | | |
s_dist_03 | character(24) | | |
s_dist_04 | character(24) | | |
s_dist_05 | character(24) | | |
s_dist_06 | character(24) | | |
s_dist_07 | character(24) | | |
s_dist_08 | character(24) | | |
s_dist_09 | character(24) | | |
s_dist_10 | character(24) | | |
表1中,共有17列,共9台服务器节点(即节点)可供部署,要求可抗同时三台服务器节点失效,仍然保持数据的可靠性。
在检测到行存储模式下某一行的数据发生变更时,编码生成矩阵可选择M=5,K=3为参数的生成矩阵。同时,按照历史数据或各列数据查询时相关性,选择s_w_id,s_i_id,s_quantity三列归并为一个列组,作为编码的一列。这样,将这17列分为三个大组:
第一组:(s_w_id,s_i_id,s_quantity),s_ytd,s_order_cnt,s_remote_cnt,s_data
第二组:s_dist_01,s_dist_02,s_dist_03,s_dist_04,s_dist_05
第三组:s_dist_06,s_dist_07,s_dist_08,s_dist_09,s_dist_10
对该表的每一行数据,由同一个生成矩阵进行编码,得到三组编码后的码字(即编码数据):
第一组:(s_w_id,s_i_id,s_quantity),s_ytd,s_order_cnt,s_remote_cnt,s_data,r1,r2,r3
第二组:s_dist_01,s_dist_02,s_dist_03,s_dist_04,s_dist_05,r4,r5,r6
第三组:s_dist_06,s_dist_07,s_dist_08,s_dist_09,s_dist_10,r7,r8,r9
再将这三组码字按列/列组进行节点分发,一行数据的分布如表2中所示。
表2
Figure 471279DEST_PATH_IMAGE001
如其中任意三个节点失效,对应的节点数据也丢失。但该行数据仍可以通过获取剩下的数据进行编码恢复出原始数据。
当硬件实现的内部数据位宽足够大时,也可以不用分组,直接按照M=18,K=9的生成矩阵进行编码即可,再将结果码字(即编码数据)均分到9个节点,效果与分为三组计算一样。具体的,当需要抗任意3节点失效,则至少需要3个节点存放冗余信息。这样原表的17列数据只能分布在剩余的6个节点上,纠删码算法要求均分数据,但17列没法均分到6个节点,因此,需要选择大于17的且为6的倍数的最小值,则M=18,这样每个节点可以有三列数据(其中一个节点有一列填充数据),一个节点丢失就丢失3份数据,则一个冗余节点需要3份冗余数据,3个节点则需要9份冗余数据,则K=9。
本申请实施例还提出了一种分布式数据库的数据存储装置,所述分布式数据库中的数据分别按照行存储模式和列存储模式存储,如图7所示,所述装置包括:
获取模块901,用于当检测到行存储模式下的数据发生变更时,根据预设同步策略获取发生变更的目标行数据;
确定模块902,用于根据所述目标行数据所在的目标行的属性信息和抗失效节点数量确定原始数据份数和冗余数据份数;
编码模块903,用于基于所述原始数据份数和所述冗余数据份数按照预设纠删码算法对所述目标行数据进行编码,生成包括所述原始数据份数的原始数据和所述冗余数据份数的冗余数据的编码数据;
分发模块904,用于将各份所述编码数据按列或列组平均分发到所述分布式数据库中不同的节点进行存储;
其中,所述属性信息包括所述目标行中的各列的字节数或所述目标行的列数,所述抗失效节点数量为存放各份所述冗余数据的节点的数量。
在本申请具体的应用场景中,若所述属性信息为所述目标行中各列的所述字节数,确定模块902,具体用于:
根据各所述字节数之和确定所述原始数据份数;
根据所述抗失效节点数量和各所述字节数中的最大字节数的乘积确定所述冗余数据份数。
在本申请具体的应用场景中,若所述属性信息为所述列数,确定模块902,具体用于:
根据所述列数或各分组中单元的数量确定所述原始数据份数;
根据所述抗失效节点数量确定所述冗余数据份数;
其中,所述分组是按照预设分组规则将所述列数划分后生成的,各所述分组中单元的数量相等,各所述单元为单列或一个列组,所述列组根据查询相关性将多个列归并后生成或根据各列的字节长度的和归并后生成。
在本申请具体的应用场景中,若所述属性信息为所述列数,确定模块902,具体用于使:
M= Ceiling(L,n)
K=(M/n)*n1
其中,M为所述原始数据份数,K为所述冗余数据份数,L为所述列数,所述列数是原始列数或已存在列归并后的列数,n为所述分布式数据库中保存有效数据信息的节点数量,n1为所述抗失效节点数量,Ceiling为ceiling函数。
在本申请具体的应用场景中,所述变更包括新增、更新或删除,所述预设同步策略包括日志同步。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (10)

1.一种分布式数据库的数据存储方法,其特征在于,所述分布式数据库中的数据分别按照行存储模式和列存储模式存储,所述方法包括:
当检测到行存储模式下的数据发生变更时,根据预设同步策略获取发生变更的目标行数据;
根据所述目标行数据所在的目标行的属性信息和抗失效节点数量确定原始数据份数和冗余数据份数;
基于所述原始数据份数和所述冗余数据份数按照预设纠删码算法对所述目标行数据进行编码,生成包括所述原始数据份数的原始数据和所述冗余数据份数的冗余数据的编码数据;
若不存在与列组对应的编码数据,将各份编码数据按列平均分发到分布式数据库中不同的节点进行存储;若存在与列组对应的编码数据,将各份编码数据按列或列组平均分发到分布式数据库中不同的节点进行存储;
其中,所述属性信息包括所述目标行中的各列的字节数或所述目标行的列数,所述抗失效节点数量为存放各份所述冗余数据的节点的数量。
2.如权利要求1所述的方法,其特征在于,若所述属性信息为所述目标行中各列的所述字节数,根据所述目标行数据所在行的属性信息和抗失效节点数量确定原始数据份数和冗余数据份数,具体为:
根据各所述字节数之和确定所述原始数据份数;
根据所述抗失效节点数量和各所述字节数中的最大字节数的乘积确定所述冗余数据份数。
3.如权利要求1所述的方法,其特征在于,若所述属性信息为所述列数,根据所述目标行数据所在行的属性信息和抗失效节点数量确定原始数据份数和冗余数据份数,具体为:
根据所述列数或各分组中单元的数量确定所述原始数据份数;
根据所述抗失效节点数量确定所述冗余数据份数;
其中,所述分组是按照预设分组规则将所述列数划分后生成的,各所述分组中单元的数量相等,各所述单元为单列或一个列组;
所述列组根据查询相关性将多个列归并后生成或根据各列的字节长度的和归并后生成。
4.如权利要求1所述的方法,其特征在于,若所述属性信息为所述列数,根据所述目标行数据所在行的属性信息和抗失效节点数量确定原始数据份数和冗余数据份数,具体为:
M=Ceiling(L,n)
K=(M/n)*n1
其中,M为所述原始数据份数,K为所述冗余数据份数,L为所述列数,所述列数是原始列数或已存在列归并后的列数,n为所述分布式数据库中保存有效数据信息的节点数量,n1为所述抗失效节点数量,Ceiling为ceiling函数。
5.如权利要求1所述的方法,其特征在于,所述变更包括新增、更新或删除,所述预设同步策略包括日志同步。
6.一种分布式数据库的数据存储装置,其特征在于,所述分布式数据库中的数据分别
按照行存储模式和列存储模式存储,所述装置包括:
获取模块,用于当检测到行存储模式下的数据发生变更时,根据预设同步策略获取发生变更的目标行数据;
确定模块,用于根据所述目标行数据所在的目标行的属性信息和抗失效节点数量确定原始数据份数和冗余数据份数;
编码模块,用于基于所述原始数据份数和所述冗余数据份数按照预设纠删码算法对所
述目标行数据进行编码,生成包括所述原始数据份数的原始数据和所述冗余数据份数的冗余数据的编码数据;
分发模块,若不存在与列组对应的编码数据,用于将各份编码数据按列平均分发到布式数据库中不同的节点进行存储;若存在与列组对应的编码数据,用于将各份编码数据按列或列组平均分发到分布式数据库中不同的节点进行存储;
其中,所述属性信息包括所述目标行中的各列的字节数或所述目标行的列数,所述抗失效节点数量为存放各份所述冗余数据的节点的数量。
7.如权利要求6所述的装置,其特征在于,若所述属性信息为所述目标行中各列的所述字节数,所述确定模块,具体用于:
根据各所述字节数之和确定所述原始数据份数;
根据所述抗失效节点数量和各所述字节数中的最大字节数的乘积确定所述冗余数据份数。
8.如权利要求6所述的装置,其特征在于,若所述属性信息为所述列数,所述确定模块,
具体用于:
根据所述列数或各分组中单元的数量确定所述原始数据份数;
根据所述抗失效节点数量确定所述冗余数据份数;
其中,所述分组是按照预设分组规则将所述列数划分后生成的,各所述分组中单元的数量相等,各所述单元为单列或一个列组;
所述列组根据查询相关性将多个列归并后生成或根据各列的字节长度的和归并后生成。
9.如权利要求6所述的装置,其特征在于,若所述属性信息为所述列数,所述确定模块,
具体用于使:
M=Ceiling(L,n)
K=(M/n)*n1
其中,M为所述原始数据份数,K为所述冗余数据份数,L为所述列数,所述列数是原始列数或已存在列归并后的列数,n为所述分布式数据库中保存有效数据信息的节点数量,n1为所述抗失效节点数量,Ceiling为ceiling函数。
10.如权利要求6所述的装置,其特征在于,所述变更包括新增、更新或删除,所述预设同步策略包括日志同步。
CN202111488732.6A 2021-12-08 2021-12-08 一种分布式数据库的数据存储方法和装置 Active CN113901069B (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN202111488732.6A CN113901069B (zh) 2021-12-08 2021-12-08 一种分布式数据库的数据存储方法和装置
US18/276,361 US20240037119A1 (en) 2021-12-08 2022-06-14 A method and device for storing data in a distributed database
PCT/CN2022/081884 WO2023103213A1 (zh) 2021-12-08 2022-06-14 一种分布式数据库的数据存储方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111488732.6A CN113901069B (zh) 2021-12-08 2021-12-08 一种分布式数据库的数据存储方法和装置

Publications (2)

Publication Number Publication Date
CN113901069A CN113901069A (zh) 2022-01-07
CN113901069B true CN113901069B (zh) 2022-03-15

Family

ID=79025651

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111488732.6A Active CN113901069B (zh) 2021-12-08 2021-12-08 一种分布式数据库的数据存储方法和装置

Country Status (3)

Country Link
US (1) US20240037119A1 (zh)
CN (1) CN113901069B (zh)
WO (1) WO2023103213A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113901069B (zh) * 2021-12-08 2022-03-15 威讯柏睿数据科技(北京)有限公司 一种分布式数据库的数据存储方法和装置
CN115964445B (zh) * 2023-02-23 2024-03-05 合肥申威睿思信息科技有限公司 一种分布式数据库的多副本实现方法和装置
CN117216068A (zh) * 2023-11-07 2023-12-12 本原数据(北京)信息技术有限公司 支持数据库混合负载的数据存储方法、装置及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110347344A (zh) * 2019-07-19 2019-10-18 北京计算机技术及应用研究所 一种基于分布式存储系统的自动配置块存储方法
CN112835743A (zh) * 2021-01-25 2021-05-25 中央财经大学 分布式账本数据存储优化方法、装置、电子设备及介质

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9195657B2 (en) * 2010-03-08 2015-11-24 Microsoft Technology Licensing, Llc Columnar storage of a database index
CN101840377A (zh) * 2010-05-13 2010-09-22 上海交通大学 基于rs纠删码的数据存储方法
US9483516B2 (en) * 2014-03-14 2016-11-01 Sap Se Multi-version concurrency control across row store and column store
CN105095247B (zh) * 2014-05-05 2018-07-17 中国电信股份有限公司 符号数据分析方法和系统
US10671594B2 (en) * 2014-09-17 2020-06-02 Futurewei Technologies, Inc. Statement based migration for adaptively building and updating a column store database from a row store database based on query demands using disparate database systems
US20160078085A1 (en) * 2014-09-17 2016-03-17 Futurewei Technologies, Inc. Method and system for adaptively building and updating a column store database from a row store database based on query demands
US9836507B2 (en) * 2014-09-17 2017-12-05 Futurewei Technologies, Inc. Method and system for adaptively building a column store database from a temporal row store database based on query demands
US10331384B2 (en) * 2015-03-31 2019-06-25 International Business Machines Corporation Storing data utilizing a maximum accessibility approach in a dispersed storage network
US11669546B2 (en) * 2015-06-30 2023-06-06 Pure Storage, Inc. Synchronizing replicated data in a storage network
CN106557494B (zh) * 2015-09-25 2019-09-20 北京国双科技有限公司 更新列存储表的方法及装置
CN107977285A (zh) * 2017-12-19 2018-05-01 郑州云海信息技术有限公司 一种纠删码存储机制的数据修改方法、装置及介质
CN108959587B (zh) * 2018-07-10 2021-03-02 上海达梦数据库有限公司 基于列存储的数据更新方法、装置、服务器及存储介质
CN110515541B (zh) * 2019-07-29 2020-10-27 西安交通大学 分布式存储中纠删码非对齐数据更新方法
CN110618895B (zh) * 2019-09-29 2023-06-09 北京天融信网络安全技术有限公司 一种基于纠删码的数据更新方法、装置和存储介质
CN111625394B (zh) * 2020-05-27 2023-03-21 成都信息工程大学 基于纠删码的数据恢复方法、装置、设备及存储介质
WO2022089749A1 (en) * 2020-10-29 2022-05-05 Telefonaktiebolaget Lm Ericsson (Publ) Checking state consistency in a log replication configuration
CN113064919B (zh) * 2021-03-31 2022-11-22 北京达佳互联信息技术有限公司 数据处理方法、数据存储系统、计算机设备及存储介质
CN113901069B (zh) * 2021-12-08 2022-03-15 威讯柏睿数据科技(北京)有限公司 一种分布式数据库的数据存储方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110347344A (zh) * 2019-07-19 2019-10-18 北京计算机技术及应用研究所 一种基于分布式存储系统的自动配置块存储方法
CN112835743A (zh) * 2021-01-25 2021-05-25 中央财经大学 分布式账本数据存储优化方法、装置、电子设备及介质

Also Published As

Publication number Publication date
US20240037119A1 (en) 2024-02-01
WO2023103213A1 (zh) 2023-06-15
CN113901069A (zh) 2022-01-07

Similar Documents

Publication Publication Date Title
CN113901069B (zh) 一种分布式数据库的数据存储方法和装置
CN110750382B (zh) 用于提高数据修复性能的最小存储再生码编码方法及系统
Maity et al. Robust gradient descent via moment encoding and LDPC codes
CN109359222B (zh) 数据存储方法及系统、设备和存储介质
CN104052576B (zh) 一种云存储下基于纠错码的数据恢复方法
US11520778B2 (en) Merkle tree storage of big data
CN106484559B (zh) 一种校验矩阵的构造方法及水平阵列纠删码的构造方法
CN110427156B (zh) 一种基于分片的mbr的并行读方法
CN103746774B (zh) 一种高效数据读取的容错编码方法
CN111831223B (zh) 提高数据去重系统可扩展性的容错编码方法、装置及系统
CN111309523A (zh) 数据读写方法、数据远程复制方法及装置、分布式存储系统
CN110389848B (zh) 基于分块构造的部分重复码构造方法及故障节点修复方法
CN112835738B (zh) 一种条带数据存储结构的构建方法
WO2015180038A1 (zh) 部分复制码的构建方法、装置及其数据修复的方法
CN103838649A (zh) 一种降低二进制编码存储系统中计算量的方法
CN107153661A (zh) 一种基于hdfs系统的数据的存储、读取方法及其装置
CN110851282B (zh) 一种基于内存网格的分布式数据计算方法及系统
CN115686382B (zh) 一种数据存储及读取方法
CN111224747A (zh) 可降低修复带宽和磁盘读取开销的编码方法及其修复方法
Iliadis Reliability evaluation of erasure coded systems under rebuild bandwidth constraints
CN116303789A (zh) 多分片多副本数据库并行同步方法、装置及可读介质
WO2018209541A1 (zh) 基于t-设计的部分重复码的编码结构以及构造方法
Zhao et al. G-update: A group-based update scheme for heterogenous erasure-coded storage systems
CN114528139A (zh) 数据处理和节点部署的方法、装置、电子设备及介质
CN113157715A (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
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: Room 701, floor 7, building 3, courtyard 6, lizexi street, Chaoyang District, Beijing 100102

Patentee after: Beijing birui Data Technology Co.,Ltd.

Address before: Room 701, floor 7, building 3, courtyard 6, lizexi street, Chaoyang District, Beijing 100102

Patentee before: WEIXUN BORAY DATA TECHNOLOGY (BEIJING) Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220616

Address after: 231283 room 207, building F1, phase II, Hefei Innovation Industrial Park, No. 2800, innovation Avenue, high tech Zone, China (Anhui) pilot Free Trade Zone, Hefei, Anhui

Patentee after: Hefei Shenwei Ruisi Information Technology Co.,Ltd.

Address before: Room 701, floor 7, building 3, courtyard 6, lizexi street, Chaoyang District, Beijing 100102

Patentee before: Beijing birui Data Technology Co.,Ltd.

EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20220107

Assignee: Beijing birui Data Technology Co.,Ltd.

Assignor: Hefei Shenwei Ruisi Information Technology Co.,Ltd.

Contract record no.: X2022990000524

Denomination of invention: Data storage method and device for distributed database

Granted publication date: 20220315

License type: Common License

Record date: 20220819