CN116069788B - 数据处理方法、数据库系统、计算机设备和存储介质 - Google Patents

数据处理方法、数据库系统、计算机设备和存储介质 Download PDF

Info

Publication number
CN116069788B
CN116069788B CN202310297624.3A CN202310297624A CN116069788B CN 116069788 B CN116069788 B CN 116069788B CN 202310297624 A CN202310297624 A CN 202310297624A CN 116069788 B CN116069788 B CN 116069788B
Authority
CN
China
Prior art keywords
data
identifier
node
page
target
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
CN202310297624.3A
Other languages
English (en)
Other versions
CN116069788A (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.)
Hangzhou Qulian Technology Co Ltd
Original Assignee
Hangzhou Qulian Technology 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 Hangzhou Qulian Technology Co Ltd filed Critical Hangzhou Qulian Technology Co Ltd
Priority to CN202310297624.3A priority Critical patent/CN116069788B/zh
Publication of CN116069788A publication Critical patent/CN116069788A/zh
Application granted granted Critical
Publication of CN116069788B publication Critical patent/CN116069788B/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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • 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
    • G06F16/2255Hash tables
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开一种数据处理方法、数据库系统、计算机设备和存储介质,属于数据库技术领域。该方法应用于包含有第一设备、管理模块和数据系统的数据库系统,第一设备存储索引节点的数据,数据系统中多个第二设备存储数据节点的数据。该方法包括:第一设备获取数据修改集需分发至的n个目标数据节点的全局页标识,生成与n个目标数据节点对应的n个映射信息并发送给管理模块。管理模块生成与n个映射信息对应的n个数据修改信息,将数据修改信息中数据修改任务发送给数据修改信息中第二设备标识所标识的第二设备,以指示第二设备更新数据节点。本申请中,可将默克尔B+树中数据节点的更新和存储压力分散到多个第二设备上,可提升该数据库系统的性能。

Description

数据处理方法、数据库系统、计算机设备和存储介质
技术领域
本申请涉及数据库技术领域,特别涉及一种数据处理方法、数据库系统、计算机设备和存储介质。
背景技术
默克尔B+树是以B+树为基础进行改进的树结构,其包含两种类型的节点:索引节点和处于最后一层的数据节点。相关技术中,索引节点存放其下属节点的最小键和哈希值,数据节点存放键值对(即key-value)。默克尔B+树中每个节点存放的数据可以以页的形式存储在磁盘中。
目前,数据库可以基于默克尔B+树实现,也即,数据库的底层存储引擎可以为默克尔B+树结构。然而,在数据量持续增长的情况下,数据库的性能会在数据量积累到一定程度后,受单机内存大小和磁盘性能的影响,吞吐量表现持续下降。
发明内容
本申请提供了一种数据处理方法、数据库系统、计算机设备和存储介质,可以提升数据库系统的性能。所述技术方案如下:
第一方面,提供了一种数据处理方法,所述方法应用于数据库系统,所述数据库系统包括第一设备、管理模块和数据系统,所述数据系统包括多个第二设备,所述第一设备用于存储默克尔B+树中索引节点的数据,所述多个第二设备用于存储所述默克尔B+树中数据节点的数据,所述方法包括:
所述第一设备获取数据修改集中每个指定数据在所述默克尔B+树中需分发至的目标数据节点的全局页标识,以得到n个目标数据节点中每个目标数据节点的全局页标识,所述n为正整数;
所述第一设备生成与所述n个目标数据节点一一对应的n个映射信息,将所述n个映射信息发送给所述管理模块,所述n个映射信息中每个映射信息包括对应的目标数据节点的全局页标识和数据列表,所述数据列表包括所述数据修改集中需分发至对应的目标数据节点的至少一个指定数据;
所述管理模块接收到所述第一设备发送的所述n个映射信息后,生成与所述n个映射信息一一对应的n个数据修改信息,所述n个数据修改信息中每个数据修改信息包括对应的映射信息中的全局页标识关联的第二设备标识和数据修改任务,所述数据修改任务包括对应的映射信息中的全局页标识关联的局部页标识以及对应的映射信息中的数据列表;
所述管理模块将所述n个数据修改信息中任意的一个数据修改信息中的数据修改任务发送给所述一个数据修改信息中的第二设备标识所标识的第二设备,所述数据修改任务用于指示更新所述默克尔B+树中的数据节点。
在本申请中,通过数据库系统中的分布式架构可以将默克尔B+树中的数据节点的更新和存储压力分散到数据系统中的多个第二设备上,可降低单个设备的数据更新与存储压力,从而可提高该数据库系统的吞吐量,进而提升该数据库系统的性能。
第二方面,提供了一种数据库系统,所述数据库系统包括第一设备、管理模块和数据系统,所述数据系统包括多个第二设备,所述第一设备用于存储默克尔B+树中索引节点的数据,所述多个第二设备用于存储所述默克尔B+树中数据节点的数据;
所述第一设备,用于获取数据修改集中每个指定数据在所述默克尔B+树中需分发至的目标数据节点的全局页标识,以得到n个目标数据节点中每个目标数据节点的全局页标识,所述n为正整数;生成与所述n个目标数据节点一一对应的n个映射信息,将所述n个映射信息发送给所述管理模块,所述n个映射信息中每个映射信息包括对应的目标数据节点的全局页标识和数据列表,所述数据列表包括所述数据修改集中需分发至对应的目标数据节点的至少一个指定数据;
所述管理模块,用于接收到所述第一设备发送的所述n个映射信息后,生成与所述n个映射信息一一对应的n个数据修改信息,所述n个数据修改信息中每个数据修改信息包括对应的映射信息中的全局页标识关联的第二设备标识和数据修改任务,所述数据修改任务包括对应的映射信息中的全局页标识关联的局部页标识以及对应的映射信息中的数据列表;将所述n个数据修改信息中任意的一个数据修改信息中的数据修改任务发送给所述一个数据修改信息中的第二设备标识所标识的第二设备,所述数据修改任务用于指示更新所述默克尔B+树中的数据节点。
第三方面,提供了一种数据处理方法,所述方法应用于数据库系统中的管理模块,所述数据库系统包括第一设备、所述管理模块和数据系统,所述数据系统包括多个第二设备,所述第一设备用于存储默克尔B+树中索引节点的数据,所述多个第二设备用于存储所述默克尔B+树中数据节点的数据,所述方法包括:
接收所述第一设备发送的n个映射信息,所述n个映射信息与n个目标数据节点一一对应,所述n个目标数据节点为数据修改集中的指定数据在所述默克尔B+树中需分发至的数据节点,所述n个映射信息中每个映射信息包括对应的目标数据节点的全局页标识和数据列表,所述数据列表包括所述数据修改集中需分发至对应的目标数据节点的至少一个指定数据,所述n为正整数;
生成与所述n个映射信息一一对应的n个数据修改信息,所述n个数据修改信息中每个数据修改信息包括对应的映射信息中的全局页标识关联的第二设备标识和数据修改任务,所述数据修改任务包括对应的映射信息中的全局页标识关联的局部页标识以及对应的映射信息中的数据列表;
将所述n个数据修改信息中任意的一个数据修改信息中的数据修改任务发送给所述一个数据修改信息中的第二设备标识所标识的第二设备,所述数据修改任务用于指示更新所述默克尔B+树中的数据节点。
第四方面,提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述第一方面所述的数据处理方法中由第一设备、管理模块或第二设备执行的操作。
第五方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的数据处理方法中由第一设备、管理模块或第二设备执行的操作。
第六方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的数据处理方法中由第一设备、管理模块或第二设备执行的操作。
可以理解的是,上述第二方面、第三方面、第四方面、第五方面、第六方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种默克尔B+树的示意图;
图2是本申请实施例提供的一种数据库系统的结构示意图;
图3是本申请实施例提供的一种数据处理方法的流程图;
图4为本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施方式作进一步地详细描述。
应当理解的是,本申请提及的“多个”是指两个或两个以上。在本申请的描述中,除非另有说明,“/”表示或的意思,比如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,比如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,为了便于清楚描述本申请的技术方案,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
在本申请中描述的“一个实施例”或“一些实施例”等语句意味着在本申请的一个或多个实施例中包括该实施例描述的特定特征、结构或特点。由此,在本申请中的不同之处出现的“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等语句不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。此外,术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
在对本申请实施例进行详细地解释说明之前,先对本申请实施例的应用场景予以说明。
本申请实施例应用于基于默克尔B+树进行数据处理的场景中。比如,区块链系统中的执行模块在执行完一个区块中所有的交易后,会产生一系列的账本修改集。这种情况下,可以通过本申请实施例提供的数据处理方法来基于默克尔B+树处理这些账本修改集。
接下来对默克尔B+树的结构进行介绍。
默克尔B+树是一种树数据结构,默克尔B+树包含两种类型的节点:索引节点(indexNode)和处于最下层的数据节点(dataNode)。索引节点和数据节点均为逻辑节点。
数据节点中存放有多个键值对,每个键值对包括一个key值和一个value值。数据节点具有最小键和哈希值。数据节点的最小键是其存放的所有键值对的key值中最小的key值。可选地,数据节点的哈希值是其存放的所有键值对拼接得到的数据的哈希值,或者,数据节点的哈希值是其存放的所有键值对的value值拼接得到的数据的哈希值。
索引节点中存放有其下属的所有节点中每个节点的最小键和哈希值。索引节点具有最小键和哈希值,索引节点的最小键是其存放的所有节点的最小键中最小的key值,索引节点的哈希值是其存放的所有节点的哈希值拼接得到的数据的哈希值。
示例地,图1是本申请实施例提供的一种默克尔B+树的示意图。参见图1,该默克尔B+树包括多个数据节点(图1中以节点n4、节点n5、节点n6为例)和多个索引节点(图1中以节点n1、节点n2、节点n3为例)。其中,节点n1的下属节点包括节点n2和节点n3,节点n2的下属节点包括节点n4和节点n5,节点n3的下属节点包括节点n6。在本申请实施例中,处于最上层的索引节点可以称为根节点,比如,图1中的节点 n1为根节点。
图1中的数据节点n4存放有键值对key:a-value:1和键值对key:b-value:2。数据节点n5存放有键值对key:c-value:3和键值对key:d-value:4。数据节点 n6存放有键值对key:e-value:5和键值对key:f-value:6。这种情况下,数据节点n4的最小键为key:a与key:b中的较小值key:a,数据节点n4的哈希值为key:a-value:1与key:b-value:2拼接得到的数据的哈希值hash:H(n4)。数据节点n5的最小键为key:c与key:d中的较小值key:c,数据节点n5的哈希值为key:c-value:3与key:d-value:4拼接得到的数据的哈希值hash:H(n5)。数据节点n6的最小键为key:e与key:f中的较小值key:e,数据节点n6的哈希值为key:e-value:5与key:f-value:6拼接得到的数据的哈希值hash:H(n6)。
图1中的索引节点 n2存放有其下属的数据节点n4的最小键key:a、哈希值hash:H(n4)和其下属的数据节点n5的最小键key:c、哈希值hash:H(n5)。索引节点 n3存放有其下属的数据节点n6的最小键key:e、哈希值hash:H(n6)。并且,索引节点n2的最小键为key:a与key:c中的较小值key:a,索引节点n2的哈希值为hash:H(n4)与hash:H(n5)拼接得到的数据的哈希值hash:H(n2)。索引节点n3的最小键为key:e,索引节点n3的哈希值为hash:H(n6)的哈希值hash:H(n3)。
图1中的索引节点n1(即根节点n1)存放有其下属的索引节点n2的最小键key:a、哈希值hash:H(n2)和其下属的索引节点n3的最小键key:e、哈希值hash:H(n3)。
默克尔B+树中除根节点之外的其他节点均具有键范围。具体来讲,对于默克尔B+树中任意一层的所有节点中任意的一个节点,若这个节点是这一层的第一个节点(一般为这一层中处于最左端的节点),则这个节点的键范围为小于这一层中位于这个节点后的下一个节点的最小键的范围。若这个节点是这一层的最后一个节点(一般为这一层中处于最右端的节点),则这个节点的键范围为大于或等于这个节点的最小键的范围。若这个节点是这一层中除第一个节点和最后一个节点之外的节点,则这个节点的键范围为大于或等于这个节点的最小键且小于这一层中位于这个节点后的下一个节点的最小键的范围。
比如,如图1所示,默克尔B+树中第二层包括索引节点n2和索引节点n3。索引节点n2为第二层的第一个节点,索引节点n2的键范围为小于索引节点n3的最小键key:e的范围,即索引节点n2的键范围为小于key:e的范围。索引节点n3为第二层的最后一个节点,索引节点n3的键范围为大于或等于索引节点n3的最小键key:e的范围,即索引节点n3的键范围为大于或等于key:e的范围。
默克尔B+树中的每个节点(包括索引节点和数据节点)存放的数据可存储在磁盘中,具体可以存储于磁盘的磁盘页(也可称为数据页)中。在一些实施例中,为了适应磁盘的读写策略,通常规定每个磁盘页的大小为4K(千字节)。这种情况下,任意一个索引节点的数据中除了包含这个索引节点下属的每个节点的最小键和哈希值之外,还可以包含这个索引节点的页标识(identity,ID)和这个索引节点下属的每个节点的页标识。某个节点的页标识用于标识存储有这个节点的数据的磁盘页。也即,这个索引节点的页标识用于标识存储有这个索引节点的数据的磁盘页,这个索引节点下属的某个节点的页标识用于标识存储有这个索引节点下属的这个节点的数据的磁盘页。
目前,数据库可以基于默克尔B+树实现,也即,数据库的底层存储引擎可以为默克尔B+树结构。然而,在数据量持续增长的情况下,数据库的性能会在数据量积累到一定程度后,受单机内存大小和磁盘性能的影响,吞吐量表现持续下降。
为此,本申请实施例提出了一种新的数据库系统,该数据库系统是基于现有的数据库基本流程实现的新的分布式横向拓展方案,可以解决数据库的单机性能瓶颈,同时保证数据库的功能和协议的正确性,如保证数据的读、写、多版本控制、快速回滚等各种协议的正确性。
下面对本申请实施例提供的数据库系统涉及的相关概念进行说明。
需说明的是,将默克尔B+树中每个节点的数据存储至磁盘页后,相当于在磁盘中保存了默克尔B+树的逻辑树。这种情况下,可以记录默克尔B+树中根节点(MerkleRoot)的页标识,根据默克尔B+树中根节点的页标识可以从磁盘中获取到默克尔B+树中所有的节点数据,因而默克尔B+树中根节点的页标识可以与磁盘中保存的默克尔B+树的逻辑树对应。当后续对默克尔B+树进行更新时,每更新一次,就会在磁盘中保存默克尔B+树的一个新版本的逻辑树,且会记录与这一版本的逻辑树对应的根节点的页标识(即更新后的默克尔B+树中根节点的页标识)。这种情况下,磁盘中不仅保存有最新版本的逻辑树,还保存有至少一个历史版本的逻辑树。可以记录与最新版本的逻辑树对应的根节点的页标识,还可以记录与该至少一个历史版本中每个历史版本的逻辑树对应的根节点的页标识。
在多版本控制和数据回滚方面,由于默克尔B+树相当于在磁盘中保存了多个逻辑树,当默克尔B+树需要回滚到某个版本时,只需要将当前根节点指向这个版本的逻辑树的根节点即可。
下面对本申请实施例提供的数据库系统进行说明。
本申请实施例提供的数据库系统保留了现有的基于默克尔B+树的单机数据库(可称为vidb(Verified Independent Database,经过验证的独立数据库))已经支持的功能,以保证该数据库系统可以适用于现有的需要应用默克尔B+树进行数据处理的系统。比如,该数据库系统可以适用于区块链系统,区块链系统可以对该数据库系统进行数据读写,比如,区块链系统可以从该数据库系统中查询数据、向该数据库系统中添加数据、对该数据库系统中的数据进行更新或删除等。
默克尔B+树的数据包括索引数据(index数据)和用户数据(data数据)。索引数据是指索引节点的数据。用户数据是指数据节点的数据。相应的,磁盘中也存储了索引数据和用户数据。默克尔B+树的结构特性决定了一般情况下索引数据的大小远小于用户数据的大小,因而从磁盘压力角度以及内存管理角度考虑,本申请实施例提供的数据库系统中的分布式横向拓展方案是从用户数据入手来对现有的单机数据库进行改进。
图2是本申请实施例提供的一种数据库系统的结构示意图。参见图2,该数据库系统可以包括:第一设备201、管理模块202、数据系统203。数据系统203可以包括多个第二设备2031。
第一设备201可以与管理模块202进行通信,比如,第一设备201可以通过有线连接或无线连接与管理模块202进行通信。管理模块202可以与数据系统203进行通信,比如,管理模块202可以通过有线连接或无线连接与数据系统203中的每个第二设备2031进行通信。
第一设备201也可以称为主机。第一设备201用于存储默克尔B+树的索引数据,即存储默克尔B+树中索引节点的数据,具体地,第一设备201可以将默克尔B+树中每个索引节点的数据存储至第一设备201的磁盘中的磁盘页。可选地,第一设备201可以与外部模块对接,以处理外部模块发送的需要处理的用户数据,比如,第一设备201可以与区块链系统中的执行模块对接,以处理执行模块发送的账本修改集。
第一设备201维护index数据管理和index文件存储的功能。index数据在第一设备201的内存中以逻辑节点进行管理,在第一设备201的磁盘上按照磁盘页为单位进行组织,磁盘页也可称为page,通常为4K的字节数组。第一设备201中的每个磁盘页具有在第一设备201中唯一的页标识。由于第一设备201的磁盘页中存储有默克尔B+树中所有索引节点的数据,所以本申请实施例中默克尔B+树中一个索引节点的页标识用于在第一设备201的磁盘页中唯一标识存储有这个索引节点的数据的磁盘页。
第二设备2031也可以称为数据分片服务器。第二设备2031用于存储默克尔B+树的用户数据,即存储默克尔B+树中数据节点的数据,具体地,第二设备2031可以将默克尔B+树中数据节点的数据存储至第二设备2031的磁盘中的磁盘页。数据系统203中的多个第二设备2031用于存储默克尔B+树中所有数据节点的数据。可选地,每个第二设备2031可以是一台物理机,拥有独立的处理器、内存和磁盘资源,第二设备2031维护用户数据,负责用户数据的读写。
第二设备2031维护data数据管理和data文件存储的功能。data数据在第二设备2031的内存中以逻辑节点进行管理,在第二设备2031的磁盘上按照磁盘页为单位进行组织。第二设备2031中的每个磁盘页具有在第二设备2031中唯一的页标识(可称为局部页标识),还具有在整个数据系统203中唯一的页标识(可称为全局页标识)。在本申请实施例提供的分布式架构下,全局页标识需要能够表示第二设备信息和磁盘页信息,也即,全局页标识用于标识某个第二设备2031中的某个磁盘页,这可以通过将全局页标识关联到第二设备标识和局部页标识来实现。由于数据系统203中的第二设备2031的磁盘页中存储有默克尔B+树中所有数据节点的数据,所以本申请实施例中可以通过默克尔B+树中一个数据节点的全局页标识关联的第二设备标识和局部页标识唯一定位到数据系统203中的一个第二设备2031中的一个磁盘页。
管理模块202向上对接第一设备201,向下对接数据系统203。管理模块202可以是独立的物理机。管理模块202可以接收、处理并回复第一设备201发送的所有与用户数据有关的指令(包括但不限于数据查询指令、数据修改指令、数据回滚指令等)。管理模块202可以总体管理数据系统203,比如,管理模块202可以内部维护数据系统203的设备拓扑元信息、各个第二设备2031内部的磁盘页分配控制、各个第二设备2031的执行进度控制。其中,数据系统203的设备拓扑元信息用于指示数据系统203中的第二设备2031的底层拓扑,数据系统203的设备拓扑元信息可以包括数据系统203中多个第二设备2031的设备数量,还可以包括数据系统203中的多个第二设备2031中每个第二设备2031的设备标识等。管理模块202对第二设备2031内部的磁盘页分配控制,是指管理模块202为第二设备2031中数据节点的数据分配磁盘页进行存储,可选地,可以通过freelist组件为数据节点分配页标识,以通过所分配的页标识所标识的磁盘页来存储数据节点的数据,示例地,freelist组件用于配置空闲页标识列表、待释放页标识列表和最大页标识。管理模块202对第二设备2031的执行进度控制,是指管理模块202管理第二设备2031针对数据节点的数据修改操作的执行进度。
在一些实施例中,区块链系统中的执行模块在执行某个区块中的交易的过程中会产生需要查询的键(即key值),该执行模块可以向第一设备201发送携带有待查询的key值的数据查询请求。第一设备201接收到该数据查询请求后可以根据最新版本的默克尔B+树中的根节点的标识,通过管理模块202从多个第二设备2031中查询该数据查询请求携带的key值对应的value值并返回给该执行模块。
在一些实施例中,该执行模块在执行完某个区块中所有的交易后会产生一系列的账本修改集,这些账本修改集可以包括需要添加的键值对、需要更新的键值对、和/或需要删除的键等,这种情况下,该执行模块可以向第一设备201发送携带有账本修改集的数据修改请求。第一设备201接收到该数据修改请求后可以确定这个区块的执行进度为正在执行,然后根据最新版本的默克尔B+树中的根节点的页标识和该账本修改集中的键值对和/或键,通过管理模块202更新多个第二设备2031中存储的用户数据和第一设备201存储的索引数据,也即更新默克尔B+树,在完成对默克尔B+树的更新后第一设备201可以确定这个区块的执行进度为已执行完成。之后,若多个第二设备2031将更新后的用户数据存储至磁盘页且第一设备201也将更新后的索引数据存储至磁盘页,就实现了对更新后的默克尔B+树的持久化,则第一设备201可以确定这个区块的执行进度为已落盘。
由上可知,在本申请实施例中,第一设备201接收到一个区块对应的账本修改集后,即可确定这个区块的执行进度为正在执行。之后,第一设备201可以从根节点开始,根据该账本修改集,通过与管理模块202、多个第二设备2031的协同,完成对默克尔B+树的更新,也就完成了这个区块的执行流程,此时这个区块的执行进度为已执行完成。在完成对默克尔B+树的更新后,第一设备201和多个第二设备2031若完成对更新后的默克尔B+树的持久化,也就完成了这个区块的落盘流程,此时这个区块的执行进度为已落盘。
需说明的是,在该数据库系统中,由于第一设备201负责索引数据层(index层),而数据系统203负责用户数据层(data层),所以index层的行为和data层的行为可以天然并发进行。如此,该数据库系统对于一个区块的执行过程的并发度较高。
需说明的是,上述数据库系统理论上可以实现无限制的横向拓展,即可以动态的增加数据系统202中的第二设备2031,以此保证在数据量持续增大的情况下,该数据库系统维持稳定的吞吐能力,获得稳定的性能表现。
另外,在该数据库系统对接区块链系统的情况下,由于区块链系统中存在着区块标识(如区块号)这一天然的全局时钟,所以对数据系统203中的第二设备2031的动态增加可以根据区块标识实现。具体来讲,若该数据库系统中的第一设备201接收到携带有目标设备标识的设备增加请求,则第一设备201可以先确定当前正在处理的账本修改集对应的区块标识,该账本修改集对应的区块标识用于指示区块链系统中的执行模块是在执行完哪个区块中的交易后产生的该账本修改集。第一设备201在处理完这一区块标识对应的账本修改集,即在根据这一区块标识对应的账本修改集完成对默克尔B+树的更新后,再指示管理模块202将该设备增加请求携带的目标设备标识增加到数据系统203的设备拓扑元信息,将目标设备标识增加到数据系统203的设备拓扑元信息后,即可实现将目标设备标识所标识的设备添加到数据系统203,此时可将目标设备标识所标识的设备称为第二设备2031,从而第一设备201在处理下一区块标识对应的账本修改集时可以根据数据系统203的新的底层拓扑来处理。如此,可以实现对区块链系统透明的横向拓展功能。
示例地,第一设备201接收到携带有目标设备标识的设备增加请求后,需要确定当前区块的执行进度。若当前区块的执行进度不为已执行完成,则第一设备201需等待当前区块的执行进度为已执行完成后,确定最新执行完成的区块的下一个区块的区块标识。然后第一设备201将目标设备标识和该区块标识(可称为指定区块标识)携带于设备新增指令中发送给管理模块202,以指示新增目标设备标识所标识的设备以及指示所新增的设备是从指定区块标识所标识的区块开始被启用。管理模块202接收到该设备新增指令后,可以将指定区块标识和目标设备标识添加到数据系统203的设备拓扑元信息,还可以将新增设备后数据系统203中第二设备2031的设备数量添加到数据系统203的设备拓扑元信息,如此,后续在执行区块标识大于或等于指定区块标识的区块时可以基于新增设备后的数据系统203进行。
需要说明的是,在本次在数据系统203中新增设备之前,管理模块202还可以确定已经分配出去的最大全局页标识。
管理模块202可以将已经分配出去的最大全局页标识确定为全局页标识分界点,该全局页标识分界点具有对应的旧设备数量(即本次新增设备之前数据系统203中第二设备2031的设备数量)和新设备数量(即本次新增设备之后数据系统203中第二设备2031的设备数量)。
管理模块202根据该全局页标识分界点可以确定各个第二设备2031的极限局部页标识。各个第二设备2031的极限局部页标识为小于或等于该全局页标识分界点的全局页标识在各个第二设备2031中对应的最大的局部页标识。具体来讲,管理模块202可以将该全局页标识分界点与该旧设备数量进行取模运算,得到第二设备标识,以及将该全局页标识分界点除以该旧设备数量得到的数值进行向下取整,得到局部页标识,然后将设备标识小于或等于该第二设备标识的第二设备2031的极限局部页标识设置为该局部页标识,将设备标识大于该第二设备标识的第二设备2031的极限局部页标识设置为比该局部页标识小1的局部页标识。
管理模块202可以确定各个第二设备2031的预置值。对于数据系统203中初始的多个第二设备2031,每个第二设备2031的预置值均为0。本次在数据系统203中新增设备之前,管理模块202根据各个第二设备2031的极限局部页标识可以确定本次新增的第二设备2031的预置值,本次新增的第二设备2031的预置值为在本次新增设备后比数据系统203中设备标识最小的第二设备2031的极限局部页标识大1的局部页标识对应的全局页标识。可选地,管理模块202可以将各个第二设备2031的极限局部页标识中最大的极限局部页标识与1相加后再与该全局页标识分界点对应的新设备数量相乘,得到本次新增的第二设备2031的预置值。
通过上述过程,管理模块202获得指定区块标识、目标设备标识、全局页标识分界点、各个第二设备2031的极限局部页标识(即各个第二设备2031的设备标识对应的极限局部页标识)、全局页标识分界点对应的旧设备数量、全局页标识分界点对应的新设备数量、新增设备的预置值(即目标设备标识对应的预置值)。这些信息是本次新增设备时产生的设备动态信息,管理模块202可以将该设备动态信息也记录在数据系统203的设备拓扑元信息中。
这种情况下,在大于或等于指定区块标识所标识的指定区块的执行过程中,管理模块202若接收到第一设备201发送的一个全局页标识,则在这个全局页标识小于或等于该全局页标识分界点的情况下,管理模块202将这个全局页标识与该全局页标识分界点对应的旧设备数量进行取模运算,得到第二设备标识,然后将这个全局页标识减去该第二设备标识对应的预置值后再除以该旧设备数量后得到的数值进行向下取整,得到局部页标识。在这个全局页标识大于该全局页标识分界点的情况下,管理模块202将这个全局页标识与该全局页标识分界点对应的新设备数量进行取模运算,得到第二设备标识,然后将这个全局页标识减去该第二设备标识对应的预置值后再除以该新设备数量后得到的数值进行向下取整,得到局部页标识。
这种情况下,在大于或等于指定区块标识所标识的指定区块的执行过程中,管理模块202若在一个第二设备2031中为一个数据节点分配了一个局部页标识,则在这个第二设备2031不为最新增加的第二设备2031(即这个第二设备2031的设备标识不为目标设备标识)的情况下,若这个局部页标识小于或等于这个第二设备2031的极限局部页标识,则管理模块202将这个局部页标识与该全局页标识分界点对应的旧设备数量相乘后与这个第二设备2031的设备标识和这个第二设备2031的设备标识对应的预置值累加,得到全局页标识。在这个第二设备2031不为最新增加的第二设备2031的情况下,若这个局部页标识大于这个第二设备2031的极限局部页标识,则管理模块202将这个局部页标识与该全局页标识分界点对应的新设备数量相乘后与这个第二设备2031的设备标识和这个第二设备2031的设备标识对应的预置值累加,得到全局页标识。在这个第二设备2031为最新增加的第二设备2031的情况下,管理模块202将这个局部页标识与该全局页标识分界点对应的新设备数量相乘后与这个第二设备2031的设备标识和这个第二设备2031的设备标识对应的预置值累加,得到全局页标识。
值得注意的是,在该数据库系统的运行过程中,可能会多次向数据系统203中增加第二设备2031,则管理模块202在每次向数据系统203中新增第二设备2031后,就会向数据系统203的设备拓扑元信息中添加一个设备动态信息。如此,数据系统203的设备拓扑元信息中包括多个设备动态信息,该多个设备动态信息是顺序记录的,每个设备动态信息包括指定区块标识、目标设备标识、全局页标识分界点、各个第二设备2031的极限局部页标识、全局页标识分界点对应的旧设备数量和新设备数量、目标设备标识对应的预置值。
这种情况下,管理模块202在将一个全局页标识转换为第二设备标识和局部页标识时,若这个全局页标识小于该多个设备动态信息中最早记录的设备动态信息中的全局页标识分界点,则管理模块202可以将这个全局页标识与该最早记录的设备动态信息中的全局页标识分界点对应的旧设备数量进行取模运算,得到第二设备标识,然后将这个全局页标识减去该第二设备标识对应的预置值后再除以该旧设备数量后得到的数值进行向下取整,得到局部页标识。若这个全局页标识大于该多个设备动态信息中最晚记录的设备动态信息中的全局页标识分界点,则管理模块202可以将这个全局页标识与该最晚记录的设备动态信息中的全局页标识分界点对应的新设备数量进行取模运算,得到第二设备标识,然后将这个全局页标识减去该第二设备标识对应的预置值后再除以该新设备数量后得到的数值进行向下取整,得到局部页标识。若这个全局页标识大于该多个设备动态信息中一个设备动态信息中的全局页标识分界点且小于或等于在这个设备动态信息后顺序记录的下一个设备动态信息中的全局页标识分界点,则管理模块202可以将这个全局页标识与这个设备动态信息中的全局页标识分界点对应的新设备数量进行取模运算,得到第二设备标识,然后将这个全局页标识减去该第二设备标识对应的预置值后再除以该新设备数量后得到的数值进行向下取整,得到局部页标识。
管理模块202在将一个第二设备标识和一个局部页标识转换为全局页标识时,若这个第二设备标识与该多个设备动态信息中每个设备动态信息中的目标设备标识均不同,则说明这个第二设备标识所标识的第二设备2031为数据系统203中初始的第二设备2031,在这个局部页标识小于或等于该多个设备动态信息中最早记录的设备动态信息中这个第二设备标识对应的极限局部页标识的情况下,管理模块202将这个局部页标识与该最早记录的设备动态信息中全局页标识分界点对应的旧设备数量相乘后与这个第二设备标识和这个第二设备标识对应的预置值累加,得到全局页标识。若这个第二设备标识与该多个设备动态信息中每个设备动态信息中的目标设备标识均不同,则在这个局部页标识大于该多个设备动态信息中最晚记录的设备动态信息中这个第二设备标识对应的极限局部页标识的情况下,管理模块202将这个局部页标识与该最晚记录的设备动态信息中全局页标识分界点对应的新设备数量相乘后与这个第二设备标识和这个第二设备标识对应的预置值累加,得到全局页标识。若这个第二设备标识与该多个设备动态信息中每个设备动态信息中的目标设备标识均不同,则在这个局部页标识大于一个设备动态信息中这个第二设备标识对应的极限局部页标识且小于在这个设备动态信息后顺序记录的下一个设备动态信息中这个第二设备标识对应的极限局部页标识的情况下,管理模块202将这个局部页标识与这个设备动态信息中全局页标识分界点对应的新设备数量相乘后与这个第二设备标识和这个第二设备标识对应的预置值累加,得到全局页标识。若这个第二设备标识与该多个设备动态信息中任意的一个设备动态信息中的目标设备标识相同,则管理模块202将这个局部页标识与这个设备动态信息中全局页标识分界点对应的新设备数量相乘后与这个第二设备标识和这个第二设备标识对应的预置值累加,得到全局页标识。
下面对基于该数据库系统构建初始的默克尔B+树的过程进行说明,该过程可以包括如下步骤(1)至步骤(4):
(1)第一设备获取待存储的多个键值对。
该多个键值对是需要基于默克尔B+树进行存储的键值对。该多个键值对是用于构建初始默克尔B+树的键值对。
该多个键值对可以由其他系统发送给第一设备。比如,区块链系统中的执行模块在执行完一个区块中所有的交易后,会产生一系列的账本修改集,这些账本修改集可以包括需要存储的多个键值对。这种情况下,区块链系统中的执行模块可以将该多个键值对携带于数据存储请求中发送给第一设备,以指示第一设备基于默克尔B+树对该多个键值对进行存储,此时第一设备即可根据该多个键值对构建初始默克尔B+树。
区块链系统中存在着区块标识(如区块号)这一天然的全局时钟,区块标识是连续递增的。在一些实施例中,该数据存储请求中可以携带区块标识,该区块标识用于指示是在执行哪个区块中的交易后产生的该数据存储请求。第一设备可以将该数据存储请求中携带的区块标识确定为当前区块的区块标识,且可以确定当前区块的执行进度为正在执行。
(2)第一设备向管理模块发送携带有该多个键值对的数据存储指令。
该数据存储指令用于指示根据待存储的该多个键值对构建初始默克尔B+树中的数据节点。根据该多个键值对构建默克尔B+树中的数据节点,即是将该多个键值对存放至默克尔B+树中的数据节点。
默克尔B+树中的数据节点包含键值对。数据节点具有最小键和哈希值。数据节点的最小键是其包含的所有键值对的key值中最小的key值。可选地,数据节点的哈希值是其包含的所有键值对拼接得到的数据的哈希值,或者,数据节点的哈希值是其存放的所有键值对的value值拼接得到的数据的哈希值。
默克尔B+树中的索引节点包含其下属的所有节点中每个节点的最小键和哈希值。索引节点具有最小键和哈希值,索引节点的最小键是其包含的所有节点的最小键中最小的key值,索引节点的哈希值是其包含的所有节点的哈希值拼接得到的数据的哈希值。
(3)管理模块接收到第一设备发送的数据存储指令后,将该多个键值对发送给数据系统中的一个第二设备。
可选地,管理模块可以从数据系统中随机选择一个第二设备,向这个第二设备发送该多个键值对。
或者,管理模块可以根据数据系统中每个第二设备的设备标识,选择设备标识最小的一个第二设备,向这个第二设备发送该多个键值对。比如,数据系统中第二设备的数量为10,这10个第二设备的设备标识分别为0至9,则管理模块可以向设备标识为0的第二设备发送该多个键值对。
(4)这个第二设备接收到该多个键值对后,根据该多个键值对构建数据节点,向管理模块发送磁盘页分配请求。
这个第二设备根据该多个第二键值对构建数据节点的过程与相关技术中某个设备根据一些键值对构建数据节点的过程类似,本申请实施例对此不进行详细阐述。
需说明的是,这个第二设备在根据该多个第二键值对构建数据节点的过程中不为构建出的各个数据节点分配页标识,而是在其后向管理模块发送磁盘页分配请求,以请求管理模块为构建出的各个数据节点分配页标识。该磁盘页分配请求中携带构建出的各个数据节点的最小键和哈希值。该磁盘页分配请求用于请求为构建出的各个数据节点分配页标识,也即,请求分配用于存储构建出的各个数据节点的数据的磁盘页。
另外,这个第二设备构建出的各个数据节点的数据量均小于或等于预设数据量。其中,预设数据量可以预先进行设置,如预设数据量可以与磁盘页的存储空间大小(如4K)相同。
(5)管理模块接收到这个第二设备发送的磁盘页分配请求后,为该磁盘页分配请求中指示的各个数据节点分配全局页标识,向第一设备发送数据存储结果。
可选地,管理模块内部为这个第二设备维护一个freelist组件,这个第二设备的freelist组件用于配置这个第二设备的空闲页标识列表、待释放页标识列表和最大页标识,这个第二设备的freelist组件用于实现这个第二设备中磁盘页的分配。管理模块可以通过这个第二设备的freelist组件为这个第二设备构建出的每个数据节点分配这个第二设备中的局部页标识,以实现在这个第二设备中为构建出的每个数据节点分配磁盘页。
管理模块为该磁盘页分配请求中指示的某个数据节点分配这个第二设备中的局部页标识后,这个数据节点就具有了第二设备标识(即这个第二设备的设备标识)和局部页标识,用以指示为这个数据节点在该第二设备标识所标识的第二设备中分配该局部页标识所标识的磁盘页,也即,指示将这个数据节点的数据存储至该第二设备标识所标识的第二设备中由该局部页标识所标识的磁盘页。
这种情况下,管理模块可以将为该磁盘页分配请求指示的各个数据节点分配的局部页标识和对应的第二设备标识携带于磁盘页分配结果中返回给这个第二设备。
这个第二设备接收到该磁盘页分配结果后,确定该磁盘页分配结果中的第二设备标识与这个第二设备的设备标识相同,则这个第二设备可以根据该磁盘页分配结果中各个数据节点的局部页标识,将各个数据节点的数据存储至这个第二设备的磁盘页中由该局部页标识所标识的磁盘页。
管理模块在为构建出的某个数据节点分配了这个第二设备中的局部页标识后,还可以根据这个第二设备的设备标识和该局部页标识确定关联的全局页标识。然后,管理模块可以向第一设备发送数据存储结果,该数据存储结果包括构建出的各个数据节点的最小键、哈希值和全局页标识。第一设备接收到该数据存储结果后,可以根据该数据存储结果中的各个数据节点的最小键、哈希值、全局页标识构建索引节点。
第一设备在构建索引节点的过程中,可以为构建出的各个索引节点分配页标识,任意一个索引节点的页标识用于在第一设备中标识后续用来存储这个索引节点的数据的磁盘页。这种情况下,对于任意一个索引节点,第一设备还可以在这个索引节点的数据中添加这个索引节点的页标识以及这个索引节点下属的每个节点的页标识。另外,第一设备构建出的每个索引节点的数据量均小于或等于预设数据量。
第一设备可以将构建出的各个索引节点的数据存储至第一设备的磁盘页。具体地,第一设备可以将构建出的各个索引节点的数据存储至第一设备中由各个索引节点的页标识所标识的磁盘页。
需说明的是,这个第二设备将构建出的各个数据节点的数据存储至这个第二设备的磁盘页后,就实现了对默克尔B+树中的数据节点的持久化。第一设备将构建出的各个索引节点的数据存储至第一设备的磁盘页后,就实现了对默克尔B+树中的索引节点的持久化。
这个第二设备将默克尔B+树中各个数据节点的数据存储至这个第二设备的磁盘页后,以及第一设备将默克尔B+树中各个索引节点的数据存储至这个第一设备的磁盘页后,相当于在磁盘中保存了这一版本的默克尔B+树的逻辑树。这种情况下,第一设备还可以记录默克尔B+树中根节点的页标识,根据默克尔B+树中根节点的页标识可以通过根节点逐层获取到默克尔B+树中所有的节点数据,即可以从磁盘中获取到默克尔B+树中所有的节点数据,因而默克尔B+树中根节点的页标识可以与磁盘中保存的这一版本的默克尔B+树的逻辑树对应。
需说明的是,第一设备在构建出根节点后,可以获得该根节点的数据,此时第一设备可以确定当前区块的执行进度为已执行完成。之后,第一设备可以根据该根节点的数据获取该根节点的哈希值,并将该根节点的哈希值返回给上层的区块链系统。并且,第一设备还可以记录该根节点的页标识与当前区块的区块标识之间的映射关系,以便可以确定该根节点的页标识与哪一版本的默克尔B+树对应。区块链系统在接收到第一设备发送的该根节点的哈希值后,可以确定当前区块已执行完成,此时区块链系统可以开始执行下一个区块。
另外,这个第二设备将构建出的各个数据节点的数据均存储至这个第二设备的磁盘页后,可以向管理模块发送持久化完成消息。之后,管理模块可以向第一设备发送持久化完成消息。第一设备接收到持久化完成消息后,在已将构建出的各个索引节点的数据存储至自身的磁盘页的情况下,确定当前区块的执行进度为已落盘。之后,第一设备向区块链系统发送持久化完成消息,以指示当前区块已落盘。
在通过上述步骤构建初始的默克尔B+树,并在磁盘中保存了默克尔B+树中所有的节点数据后,后续就可以基于默克尔B+树进行数据处理。下面对本申请实施例提供的数据处理方法进行详细地解释说明。
图3是本申请实施例提供的一种数据处理方法的流程图,该方法可以应用于图2所示的数据库系统。参见图3,该方法包括以下步骤:
步骤301:第一设备接收数据修改请求,该数据修改请求携带数据修改集。
该数据修改请求用于指示基于该数据修改请求携带的数据修改集更新默克尔B+树,该数据修改集可以包括至少一个指定数据,任意一个指定数据可以为待添加的键值对、待更新的键值对、或待删除的键。示例地,指定数据中的key值、value值的类型都可以是字节数组类型。
该数据修改请求可以由其他系统发送给第一设备。示例地,区块链系统中的执行模块在执行完一个区块中所有的交易后会产生一系列的账本修改集,账本修改集可以包括需要添加的键值对、需要更新的键值对、和/或需要删除的键。这种情况下,该执行模块可以向第一设备发送携带有账本修改集(即上述数据修改集)的数据修改请求。可选地,该数据修改请求中还可以携带区块标识,该区块标识用于指示是在执行哪个区块中的交易后产生的该数据修改请求。该数据修改请求中的区块标识所标识的区块为该数据修改请求中的数据修改集对应的区块,基于该数据修改集更新默克尔B+树的过程是该数据修改集对应的区块执行过程的一个环节。第一设备可以将该数据修改请求中携带的区块标识确定为当前区块的区块标识,且确定当前区块的执行进度为正在执行。
可选地,本申请实施例中的默克尔B+树可支持批量修改。这种情况下,该数据修改集包括的指定数据的数量可以为多个,也即,该数据修改集包括的待添加的键值对、待更新的键值对、和/或待删除的键的数量可以为多个,据此可以实现对默克尔B+树中节点的并发更新。
步骤302:第一设备获取该数据修改集中每个指定数据在默克尔B+树中需分发至的目标数据节点的全局页标识。
如此,第一设备可以得到该数据修改集中所有指定数据需分发至的所有目标数据节点(可称为n个目标数据节点,n为正整数)中每个目标数据节点的全局页标识。
一个目标数据节点的全局页标识用于在数据系统的所有第二设备的磁盘页中唯一标识存储有这个目标数据节点的数据的磁盘页。在一些实施例中,第一设备不仅可以确定目标数据节点的全局页标识,还可以确定目标数据节点的溢出(overflow)信息,该溢出信息用于指示目标数据节点真实对应的磁盘页数量,即目标数据节点的数据存储在几个连续的磁盘页中。一般情况下,磁盘页可存储的数据量是一致的,比如,磁盘页可存储的数据量均可以为预设数据量(包括但不限于4K)。这种情况下,若一个数据节点仅在包含一个键值对的情况下其数据量就大于预设数据量,则可以分配多个连续的磁盘页来存储这个数据节点的数据,这种情况下,这个数据节点不仅具有全局页标识,还具有溢出信息,比如,溢出信息为2,表示这个数据节点的数据存储在两个连续的磁盘页中。而若一个数据节点的数据量小于或等于预设数据量,则可以正常分配一个磁盘页来存储这个数据节点的数据,这种情况下,这个数据节点具有全局页标识,但是不具有溢出信息,或者这个数据节点的溢出信息为1,用以指示这个数据节点的数据存储在一个磁盘页中。
需说明的是,第一设备的磁盘页中存储有默克尔B+树中所有索引节点的数据,因而本申请实施例中默克尔B+树中一个索引节点的页标识用于在第一设备的磁盘页中唯一标识存储有这个索引节点的数据的磁盘页。另外,若一个索引节点的下属节点也为索引节点,则这个索引节点的数据中包含这个索引节点自身的页标识和这个索引节点下属的每个索引节点的页标识。若一个索引节点的下属节点为数据节点,则这个索引节点的数据中包含这个索引节点自身的页标识和这个索引节点下属的每个数据节点的页标识(即全局页标识)。
可选地,步骤302的操作可以为:第一设备根据默克尔B+树中根节点的页标识获取第一设备的磁盘页中存储的根节点的数据;对于该数据修改集中任意的一个指定数据,根据根节点的数据和这个指定数据中的key值获取这个指定数据需分发至的目标数据节点的全局页标识。
根节点的数据包含根节点的页标识,以及包含根节点下属的每个节点的最小键和哈希值,以及包含根节点下属的每个节点的页标识。
这种情况下,对于该数据修改集中任意的一个指定数据中的key值,第一设备可以将该key值与根节点下属的每个节点的键范围进行比对,以确定该key值处于根节点下属的哪个节点的键范围,即确定需要将该key值所属的这个指定数据分发至根节点下属的哪个节点。
若这个节点为数据节点,则第一设备可以确定这个数据节点为这个指定数据需分发至的目标数据节点,然后第一设备可以从根节点的数据中获取这个数据节点的页标识,也就获取到了这个指定数据需分发至的目标数据节点的全局页标识。
若这个节点为索引节点,则第一设备可以根据根节点的数据中包含的这个索引节点的页标识获取第一设备的磁盘页中存储的这个索引节点的数据。之后,第一设备可以根据这个索引节点的数据,继续将该key值与这个索引节点下属的每个节点的键范围进行比对,以确定该key值处于这个索引节点下属的哪个节点的键范围,即确定需要将该key值所属的这个指定数据分发至这个索引节点下属的哪个节点。这种情况下,若这个节点为索引节点,则继续重复上述过程,直至确定该key值处于某个数据节点的键范围,此时第一设备可以确定这个数据节点为这个指定数据需分发至的目标数据节点,并从这个数据节点上属的索引节点的数据中获取这个数据节点的页标识,也就获取到了这个指定数据需分发至的目标数据节点的全局页标识。
需说明的是,上述根据该key值获取目标数据节点的全局页标识的过程是将该key值所属的指定数据在默克尔B+树中从根节点分发至最后一层索引节点(即数据节点上属的索引节点)的过程。将该key值分发至最后一层的一个索引节点后,通过比对该key值与这个索引节点下属的每个数据节点的键范围,可以确定该key值处于哪个数据节点的键范围,继而就可以将这个数据节点作为目标数据节点,并从这个索引节点的数据中获取目标数据节点的全局页标识。
在一些实施例中,第一设备根据索引节点的页标识获取第一设备的磁盘页中存储的索引节点的数据时,是将索引节点的页标识在第一设备中对应的磁盘页中存储的索引节点的数据读取到第一设备的内存,继而后续第一设备可以在第一设备的内存中对索引节点的数据进行修改。
需注意的是,该数据修改集中任意一个指定数据可以对应一个目标数据节点,这个指定数据对应的目标数据节点即是这个指定数据需分发至的目标数据节点。比如,该数据修改集中任意一个待添加的键值对可以对应一个目标数据节点,这个目标数据节点即是该键值对所需插入的数据节点;该数据修改集中任意一个待更新的键值对可以对应一个目标数据节点,这个目标数据节点即是存放有该键值对的key值的数据节点;该数据修改集中任意一个待删除的键(即key值)可以对应一个目标数据节点,这个目标数据节点即是存放有该key值的数据节点。如此,该数据修改集总共可以对应n个目标数据节点,每个目标数据节点对应一个或多个指定数据,即每个目标数据节点对应一个或多个待添加的键值对、一个或多个待更新的键值对、和/或一个或多个待删除的键。
步骤303:第一设备生成与n个目标数据节点一一对应的n个映射信息,将该n个映射信息发送给管理模块。
可选地,第一设备可以将该n个映射信息携带于数据修改指令中发送给管理模块,以指示管理模块基于该n个映射信息更新默克尔B+树中的数据节点。
n个映射信息中任意的一个映射信息包括这个映射信息对应的目标数据节点的全局页标识、该数据修改集中需分发至这个映射信息对应的目标数据节点的至少一个指定数据。也即,一个映射信息中包括一个目标数据节点的全局页标识和数据列表,该数据列表包括该数据修改集中所有需分发至这个目标数据节点的指定数据。示例地,该数据列表中的指定数据可以是有序的,比如,该数据列表中的指定数据可以按字典序有序。可选地,在某个目标数据节点具有溢出信息的情况下,这个目标数据节点对应的映射信息中还可以包括这个目标数据节点的溢出信息。
步骤304:管理模块接收到第一设备发送的该n个映射信息后,生成与该n个映射信息一一对应的n个数据修改信息。
需说明的是,一个全局页标识具有关联的第二设备标识和局部页标识。一个全局页标识关联的第二设备标识用于指示这个全局页标识所标识的磁盘页所在的第二设备。这个全局页标识关联的局部页标识用于在这个全局页标识关联的第二设备标识所标识的第二设备中唯一标识一个磁盘页,可选地,局部页标识用于指示磁盘页在第二设备中的偏移量,也即用以指示磁盘页在第二设备中所处的文件物理位置。
n个数据修改信息中任意的一个数据修改信息包括这个数据修改信息对应的映射信息中的全局页标识关联的第二设备标识和数据修改任务,该数据修改任务包括这个数据修改信息对应的映射信息中的全局页标识关联的局部页标识、这个数据修改信息对应的映射信息中的数据列表。可选地,在某个映射信息包括溢出信息的情况下,这个映射信息对应的数据修改信息中的数据修改任务中还可以包括这个映射信息中的溢出信息。
对于该n个映射信息中任意一个映射信息中的全局页标识,管理模块可以确定该全局页标识关联的第二设备标识和局部页标识,具体的确定方式已在上文图2实施例中进行详细阐述,本申请实施例在此不再赘述。
步骤305:管理模块将n个数据修改信息中任意的一个数据修改信息中的数据修改任务发送给这一个数据修改信息中的第二设备标识所标识的第二设备。
可选地,管理模块可以将数据修改任务携带于数据修改消息中发送给第二设备,以指示第二设备基于数据修改任务更新数据节点。
为了优化性能,在一些实施例中,管理模块可以采用数据压缩手段来减小数据传输量,以期得到更好的性能。也即,管理模块可以先对数据修改任务进行压缩,再将压缩后的数据修改任务发送给第二设备。在另一些实施例中,若该n个数据修改信息中存在包括的第二设备标识相同的多个数据修改信息,则管理模块可以将该多个数据修改信息中的数据修改任务携带于同一个数据修改消息中发送给该多个数据修改信息中的第二设备标识所标识的第二设备。也即,管理模块可以积攒一批需要发送给同一个第二设备的数据修改任务,然后将这批数据修改任务携带于一个数据修改消息中发送给这个第二设备,以减少该数据库系统中的总网络请求轮次,提高性能。
步骤306:对于该多个第二设备中任意的一个第二设备,若这个第二设备接收到管理模块发送的数据修改任务,则根据该数据修改任务更新默克尔B+树中的数据节点。
可选地,对于任意一个数据修改任务,这个第二设备根据该数据修改任务更新默克尔B+树中的数据节点的操作可以包括如下步骤(1)至步骤(5):
(1)这个第二设备根据该数据修改任务中的局部页标识,或根据该数据修改任务中的局部页标识和溢出信息,获取这个第二设备中的磁盘页中存储的目标数据节点的数据。
若该数据修改任务中不包括溢出信息,则这个第二设备直接获取该数据修改任务中的局部页标识在这个第二设备中所标识的磁盘页中存储的数据作为目标数据节点的数据。
若该数据修改任务中包括溢出信息,则这个第二设备获取从该数据修改任务中的局部页标识在这个第二设备中所标识的磁盘页起的连续j个磁盘页中存储的数据作为目标数据节点的数据,j为该溢出信息指示的磁盘页个数。
(2)这个第二设备根据该数据修改任务中的数据列表修改目标数据节点的数据,以更新目标数据节点。
若该数据修改任务中的数据列表中存在待添加的键值对,则这个第二设备在目标数据节点的数据中添加该键值对;若该数据修改任务中的数据列表中存在待更新的键值对,则这个第二设备将目标数据节点的数据中的指定键值对更新为该键值对,指定键值对的key值与该键值对的key值相同;若该数据修改任务中的数据列表中存在待删除的键,则这个第二设备在目标数据节点的数据中删除该键所属的键值对。如此,可以完成对目标数据节点的更新。
在一些实施例中,若更新后的目标数据节点为空,即更新后的目标数据节点不包含数据,则这个第二设备可以向管理模块发送节点删除消息,以指示更新后的目标数据节点为空。
管理模块接收到这个第二设备发送的节点删除消息后,向第一设备发送节点删除消息。第一设备接收到管理模块发送的节点删除消息后,可以将目标数据节点上属的索引节点的数据中指向目标数据节点的索引项(包括目标数据节点的最小键、哈希值和页标识)删除,且将该索引节点的数据中包含的该索引节点的页标识删除,以更新该索引节点。若更新后的索引节点为空,则第一设备继续向上回溯更新上属的索引节点,直至更新至根节点;若更新后的索引节点不为空,则第一设备为更新后的索引节点分配页标识,然后根据更新后的索引节点的最小键、哈希值和页标识,继续向上回溯更新上属的索引节点,直至更新至根节点。如此,第一设备就完成了对默克尔B+树中索引节点的更新。
在另一些实施例中,若更新后的目标数据节点不为空,即若更新后的目标数据节点中包含数据,则这个第二设备根据更新后的目标数据节点确定至少一个新数据节点,然后请求管理模块为该至少一个新数据节点中的每个新数据节点分配页标识,具体可以包括如下步骤(3)至步骤(5)。
(3)若更新后的目标数据节点的数据量小于或等于预设数据量,则这个第二设备向管理模块发送磁盘页分配请求。
这种情况下,更新后的目标数据节点为新数据节点。该磁盘页分配请求中携带更新后的目标数据节点的最小键和哈希值。该磁盘页分配请求用于请求为更新后的目标数据节点分配页标识,也即,请求分配用于存储更新后的目标数据节点的数据的磁盘页。
(4)若更新后的目标数据节点的数据量大于预设数据量,则这个第二设备将更新后的目标数据节点分裂为至少两个数据节点,然后向管理模块发送磁盘页分配请求。
由更新后的目标数据节点分裂而来的至少两个数据节点中每个数据节点的数据量小于或等于预设数据量,且每个数据节点中至少包含一个键值对。
这种情况下,该至少两个数据节点均为新数据节点。该磁盘页分配请求携带该至少两个数据节点中每个数据节点的最小键和哈希值。该磁盘页分配请求用于请求为该至少两个数据节点中的各个数据节点分配页标识,也即,请求分配用于存储该至少两个数据节点中各个数据节点的磁盘页。
需注意的是,若更新后的目标数据节点的数据量大于预设数据量,但是更新后的目标数据节点中仅包含一个键值对,则这个第二设备无需对更新后的目标数据节点进行分裂,这种情况下,可以根据更新后的目标数据节点的数据量和预设数据量为更新后的目标数据节点设置溢出信息,比如,可以将更新后的目标数据节点的数据量除以预设数据量得到的数值进行向上取整,得到该溢出信息。这种情况下,更新后的目标数据节点为新数据节点,这个第二设备可以向管理模块发送磁盘页分配请求,该磁盘页分配请求中携带更新后的目标数据节点的最小键、哈希值和溢出信息。
可选地,若这个第二设备接收到的一个数据修改消息中仅携带一个数据修改任务,则这个第二设备处理完这个数据修改任务后即可向管理模块发送磁盘页分配请求。而若这个第二设备接收到的一个数据修改消息中携带有多个数据修改任务,则这个第二设备可以在处理完这个数据修改消息中的所有数据修改任务后再向管理模块发送磁盘页分配请求,这种情况下,该磁盘页分配请求中携带有对这个数据修改消息中的所有数据修改任务处理后得到的新数据节点(为更新后的目标数据节点、或由更新后的目标数据节点分裂出的至少两个数据节点中的每个数据节点)的最小键和哈希值,进一步地,还可能携带新数据节点的溢出信息。
需说明的是,这个第二设备获取这个第二设备中的磁盘页中存储的目标数据节点的数据时,是将这个第二设备的磁盘页中存储的目标数据节点的数据读取到这个第二设备的内存,然后在这个第二设备的内存中对目标数据节点的数据进行修改,以实现对目标数据节点的更新,得到新数据节点。这个第二设备得到新数据节点后,是将新数据节点先暂存在内存中,再请求管理模块分配页标识。
这种情况下,新数据节点是存在于这个第二设备的内存中的逻辑节点,其需要存在一个唯一标识,以便后续可以将管理模块分配的局部页标识与新数据节点进行关联。具体来讲,这个第二设备可以为新数据节点设置一个唯一标识,如此在后续这个第二设备接收到管理模块针对该磁盘页分配请求的回复后,可以按照此关联关系来设置该新数据节点的局部页标识。示例地,这个第二设备可以通过该磁盘页分配请求的请求标识与所有待分配磁盘页的新数据节点构成的数据的脚标,来标识一个待分配磁盘页的新数据节点,若这个第二设备在后续接收到针对该磁盘页分配请求的回复,则可以按照此关联关系,直接给该磁盘页分配请求中所有待分配磁盘页的新数据节点的局部页标识依次赋值。
(5)管理模块接收到这个第二设备发送的磁盘页分配请求后,确定该磁盘页分配请求中指示的各个新数据节点的第二设备标识和局部页标识,向这个第二设备发送携带有各个新数据节点的第二设备标识和局部页标识的磁盘页分配结果。
可选地,管理模块内部为该多个第二设备中的每个第二设备维护一个freelist组件,一个第二设备的freelist组件用于配置这个第二设备的空闲页标识列表、待释放页标识列表和最大页标识,一个第二设备的freelist组件用于实现这个第二设备中磁盘页的分配。管理模块可以通过各个第二设备的freelist组件为数据节点分配各个第二设备中的局部页标识,以实现在各个第二设备中为数据节点分配磁盘页。
管理模块接收到一个第二设备发送的磁盘页分配请求后,若该磁盘页分配请求中指示的新数据节点的数量小于第一数量,则管理模块在这个第二设备中为该磁盘页分配请求中指示的各个新数据节点分配局部页标识,将这个第二设备的设备标识确定为各个新数据节点的第二设备标识。
管理模块接收到一个第二设备发送的磁盘页分配请求后,若该磁盘页分配请求中指示的新数据节点的数量大于或等于第一数量,则管理模块从该多个第二设备中除这个第二设备之外的其他第二设备中选择第二数量的第二设备,根据预设比例在这个第一设备和选择出的第二数量的第二设备中为该磁盘页分配请求中指示的各个新数据节点分配局部页标识,将为各个新数据节点所分配的局部页标识所属的第二设备的设备标识确定为各个新数据节点的第二设备标识。
其中,第一数量、第二数量、预设比例均可以预先进行设置,如第一数量、第二数量、预设比例均可以由技术人员根据实际需求进行设置。
可选地,管理模块从该多个第二设备中除这个第二设备之外的其他第二设备中选择第二数量的第二设备时,可以从该多个第二设备中除这个第二设备之外的其他第二设备中随机选择第二数量的第二设备,或者,可以按照一定规则从该多个第二设备中除这个第二设备之外的其他第二设备中选择第二数量的第二设备,比如,可以选择排序在这个第二设备之后的第二数量的第二设备。
在本申请实施例中,当待分配磁盘页的新数据节点的数量超出一定阈值(即第一数量)后,可以按照预设比例随机的在不同的第二设备中为新数据节点分配局部页标识。如此,可以实现将待分配磁盘页的多个新数据节点的数据分散到多个第二设备的磁盘页进行存储,通过这种分布式存储方式可以减轻各个第二设备的存储压力。
例如,当前存在3个第二设备,分别为:第二设备1、第二设备2、第二设备3,管理模块接收到第二设备1发送的磁盘页分配请求,该磁盘页分配请求中指示的新数据节点的数量为100,超出了阈值80,则可以按照8:1:1的比例,在第二设备1中分配出80个新页的局部页标识,在第二设备2和第二设备3中都分配10个新页的局部页标识。需注意的是,此处所述的新页可以是一个磁盘页,也可以是连续的多个磁盘页。具体来讲,若某个待分配磁盘页的新数据节点不存在溢出信息,那么分配给这个新数据节点的是一个磁盘页,这种情况下,为这个新数据节点分配局部页标识时可以分配一个局部页标识。若某个待分配磁盘页的新数据节点存在溢出信息,那么分配给这个新数据节点的需要是连续的多个磁盘页,这种情况下,为这个新数据节点分配局部页标识时需要分配连续的多个局部页标识。
管理模块为该磁盘页分配请求中指示的某个新数据节点分配第二设备中的局部页标识后,这个新数据节点就具有了第二设备标识和局部页标识,用以指示为这个新数据节点在该第二设备标识所标识的第二设备中分配该局部页标识所标识的磁盘页,也即,指示将这个新数据节点的数据存储至该第二设备标识所标识的第二设备中该局部页标识所标识的磁盘页。
这种情况下,对于向管理模块发送该磁盘页分配请求的一个第二设备,管理模块可以将为该磁盘页分配请求指示的各个新数据节点分配的局部页标识和对应的第二设备标识携带于磁盘页分配结果中返回给这个第二设备。
这个第二设备接收到该磁盘页分配结果后,对于该磁盘页分配结果中任意的一个新数据节点的第二设备标识和全局页标识,若这个新数据节点的第二设备标识与这个第二设备的设备标识相同,则这个第二设备可以将这个新数据节点的数据存储至这个第二设备的磁盘页中由这个新数据节点的局部页标识所标识的磁盘页。若这个新数据节点的第二设备标识与这个第二设备的设备标识不同,则这个第二设备可以将这个新数据节点的局部页标识和这个新数据节点的数据携带于数据存储消息中发送给这个新数据节点的第二设备标识所标识的第二设备;这个新数据节点的第二设备标识所标识的第二设备接收到该数据存储消息后,可以将这个新数据节点的数据存储至自身的磁盘页中由这个新数据节点的局部页标识所标识的磁盘页。可选地,这个第二设备向这个新数据节点的第二设备标识所标识的第二设备发送数据存储消息时,可以采用数据压缩等手段来减小数据传输量,以期得到更好的性能。第二设备将更新得到的各个新数据节点的数据存储至第二设备的磁盘页后,就实现了对默克尔B+树的数据节点的持久化。
管理模块在为某个新数据节点分配了某个第二设备中的局部页标识后,还可以根据这个第二设备的设备标识和该局部页标识确定关联的全局页标识。然后,管理模块可以向第一设备发送数据修改结果,该数据修改结果包括各个新数据节点的最小键、哈希值和全局页标识,进一步地,还可能包括新数据节点的溢出信息。第一设备接收到该数据修改结果后,可以根据该数据修改结果中的各个新数据节点的最小键、哈希值、全局页标识、溢出信息更新默克尔B+树中的索引节点。具体来讲,第一设备将目标数据节点上属的索引节点的数据中目标数据节点的索引项更新为新数据节点的索引项(包括新数据节点的最小键、哈希值、页标识、溢出信息),且将该索引节点的数据中包含的该索引节点的页标识删除,以更新该索引节点。若更新后的索引节点的数据量小于或等于预设数据量,则第一设备为更新后的索引节点分配页标识,然后根据更新后的索引节点的最小键、哈希值和页标识,继续向上回溯更新上属的索引节点,直至更新至根节点;若更新后的索引节点的数据量大于预设数据量,则第一设备将更新后的索引节点分裂为至少两个索引节点,该至少两个索引节点中每个索引节点的数据量小于或等于预设数据量,该至少两个索引节点中每个索引节点包含至少一个数据节点的索引项,第一设备为该至少两个索引节点中每个索引节点分配页标识,然后根据该至少两个索引节点中每个索引节点的最小键、哈希值和页标识,继续向上回溯更新上属的索引节点,直至更新至根节点。如此,如此,第一设备就完成了对默克尔B+树中索引节点的更新。
第一设备可以将更新得到的各个索引节点的数据存储至第一设备的磁盘页。具体地,第一设备可以将更新得到的各个索引节点的数据存储至第一设备中由各个索引节点的页标识所标识的磁盘页。第一设备将更新得到的各个索引节点的数据存储至第一设备的磁盘页后,就实现了对默克尔B+树的索引节点的持久化。
需说明的是,第一设备在完成对默克尔B+树中索引节点的更新后,可以获得默克尔B+树中根节点的数据,此时第一设备可以确定当前区块的执行进度为已执行完成。之后,第一设备可以根据该根节点的数据获取该根节点的哈希值,并将该根节点的哈希值返回给上层的区块链系统。并且,第一设备还可以记录该根节点的页标识与当前区块的区块标识之间的映射关系,以便可以确定该根节点的页标识与哪一版本的默克尔B+树对应。区块链系统在接收到第一设备发送的该根节点的哈希值后,可以确定当前区块已执行完成,此时区块链系统可以开始执行下一个区块。
为了性能考虑,对于第二设备而言,本地的脏页刷盘过程(即将新数据节点的数据存储至新数据节点的局部页标识所标识的磁盘页的过程)可以在确定脏页的局部页标识后,就交给后台的异步刷盘逻辑开始执行。这种情况下,第二设备在完成后台的异步刷盘逻辑后,即第二设备在根据管理模块发送的磁盘页分配结果将相应的新数据节点的数据存储至自身的磁盘页或将相应的新数据节点的数据发送至其他第二设备进行存储后,就可以向管理模块回复通知消息,以指示对应的数据修改任务已处理完成,据此管理模块可以确定在什么时间点该n个数据修改信息中的数据修改任务均已处理完成。
管理模块在确定该n个数据修改信息中的数据修改任务均已处理完成后,可以向第一设备发送持久化完成消息。第一设备接收到持久化完成消息后,在已将更新得到的索引节点的数据均存储至第一设备的磁盘页的情况下,确定当前区块的执行进度为已落盘。之后,第一设备向区块链系统发送持久化完成消息,以指示当前区块已落盘。
在本申请实施例中,数据库系统包括第一设备、管理模块和数据系统,数据系统包括多个第二设备,第一设备用于存储默克尔B+树中索引节点的数据,该多个第二设备用于存储默克尔B+树中数据节点的数据。在需要更新默克尔B+树时,第一设备获取数据修改集中的每个指定数据在默克尔B+树中需分发至的目标数据节点的全局页标识,以得到n个目标数据节点中每个目标数据节点的全局页标识。之后,第一设备生成与n个目标数据节点一一对应的n个映射信息,并将n个映射信息发送给管理模块,每个映射信息包括对应的目标数据节点的全局页标识和数据列表。之后,管理模块生成与n个映射信息一一对应的n个数据修改信息,每个数据修改信息包括对应的映射信息中的全局页标识关联的第二设备标识和数据修改任务。管理模块将n个数据修改信息中任意的一个数据修改信息中的数据修改任务发送给这一个数据修改信息中的第二设备标识所标识的第二设备,以指示第二设备更新数据节点。如此,通过该数据库系统中的这种分布式架构可以将默克尔B+树中的数据节点的更新和存储压力分散到数据系统中的多个第二设备上,可降低单个设备的数据更新与存储压力,从而可提高该数据库系统的吞吐量,进而提升该数据库系统的性能。
需说明的是,通过上述步骤301至步骤305可以实现对默克尔B+树的节点数据的修改。
在一些实施例中,还可以对默克尔B+树的节点数据进行查询,具体查询过程可以包括如下步骤a至步骤e:
步骤a:第一设备接收数据查询请求,该数据查询请求携带待查询的key值。
该数据查询请求用于指示在默克尔B+树中查询该数据查询请求携带的key值对应的value值。该数据查询请求可以由其他系统发送给第一设备。示例地,区块链系统中的执行模块在执行一个区块中的交易的过程中会产生需要查询的key值。这种情况下,该执行模块可以向第一设备发送携带有该key值的数据查询请求。
步骤b:第一设备获取该key值在默克尔B+树中需分发至的数据节点的全局页标识,向管理模块发送数据查询指令,该数据查询指令携带待查询的key值和该数据节点的全局页标识。
该数据查询指令用于指示在该全局页标识所标识的磁盘页存储的数据节点的数据中查询该数据查询指令携带的key值对应的value值。
步骤c:管理模块接收到该数据查询指令后,确定该数据查询指令中的全局页标识关联的第二设备标识和局部页标识,向该第二设备标识所标识的第二设备发送数据查询消息,该数据查询消息中携带待查询的key值和局部页标识。
步骤d:第二设备接收到该数据查询消息后,从第二设备中由该局部页标识所标识的磁盘页中获取数据节点的数据,从该数据节点的数据中获取该key值所属的键值对中的value值,向管理模块发送携带有该value值的数据查询结果。
步骤e:管理模块接收到该数据查询结果后,将该数据查询结果返回给第一设备。
第一设备接收到该数据查询结果后,可以将该数据查询结果中的value值返回给区块链系统。
在一些实施例中,还可以对默克尔B+树进行版本回滚,下面对此进行说明:
区块链系统能够保证回滚和出块不会并发执行,也即,回滚流程需要在执行完一个区块后且尚未开始执行另一个区块前进行。
区块链系统若需要将目标区块及目标区块后的所有区块都回滚掉,即区块链系统若需要回滚至目标区块的上一个区块,则区块链系统可以向第一设备发送回滚请求,该回滚请求携带目标区块标识,用于指示将目标区块及目标区块后的所有区块回滚掉,即是将目标区块及目标区块后的所有区块的相应版本的默克尔B+树回滚掉,换句话说,是将默克尔B+树的节点数据回滚至目标区块的上一个区块的相应版本的默克尔B+树的节点数据。
第一设备接收到该回滚请求后,需要确定当前区块的执行进度。若当前区块的执行进度不为已落盘,则第一设备需等待当前区块的执行进度为已落盘后,再向管理模块发送回滚指令,该回滚指令可以携带目标区块标识。管理模块接收到该回滚指令后,可以删除目标区块标识所标识的目标区块及目标区块后的所有区块对应的版本信息。某个区块对应的版本信息为在处理这个区块对应的数据修改集的过程中记录的信息,比如,某个区块对应的版本信息可以包括这个区块对应的freelist组件的修改内容等。如此,在删除目标区块及目标区块后的所有区块对应的版本信息后,管理模块中所记录的最新版本信息对应的区块即为目标区块的上一个区块,从而就回滚至了目标区块的上一个区块的相应版本的默克尔B+树的数据节点的数据。之后,管理模块可以向第一设备发送回滚完成消息。
第一设备接收到管理模块发送的回滚完成消息后,可以删除目标区块及目标区块后的所有区块对应的根节点的数据,以及删除目标区块及目标区块后的所有区块的标识。如此,第一设备中所记录的最新区块为目标区块的上一个区块,所记录的最新版本的默克尔B+树为目标区块的上一个区块对应的根节点的数据所属的默克尔B+树,从而就回滚至了目标区块的上一个区块的相应版本的默克尔B+树的索引节点的数据。
图4为本申请实施例提供的一种计算机设备的结构示意图。如图4所示,计算机设备4包括:处理器40、存储器41以及存储在存储器41中并可在处理器40上运行的计算机程序42,处理器40执行计算机程序42时实现上述实施例中的数据处理方法中由第一设备、管理模块或第二设备执行的操作。
计算机设备4可以是一个通用计算机设备或一个专用计算机设备。在具体实现中,计算机设备4可以是台式机、便携式电脑、网络服务器、掌上电脑、移动手机、平板电脑、无线终端设备、通信设备或嵌入式设备,本申请实施例不限定计算机设备4的类型。本领域技术人员可以理解,图4仅仅是计算机设备4的举例,并不构成对计算机设备4的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,比如还可以包括输入输出设备、网络接入设备等。
处理器40可以是中央处理单元(Central ProcessingUnit,CPU),处理器40还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者也可以是任何常规的处理器。
存储器41在一些实施例中可以是计算机设备4的内部存储单元,比如计算机设备4的硬盘或内存。存储器41在另一些实施例中也可以是计算机设备4的外部存储设备,比如计算机设备4上配备的插接式硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(SecureDigital,SD)卡、闪存卡(Flash Card)等。进一步地,存储器41还可以既包括计算机设备4的内部存储单元也包括外部存储设备。存储器41用于存储操作系统、应用程序、引导装载程序(Boot Loader)、数据以及其他程序等。存储器41还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机设备,该计算机设备包括:至少一个处理器、存储器以及存储在该存储器中并可在该至少一个处理器上运行的计算机程序,该处理器执行该计算机程序时实现上述任意各个方法实施例中的步骤。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当其在计算机上运行时,使得计算机执行上述各个方法实施例中的步骤。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述方法实施例中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,该计算机程序包括计算机程序代码,该计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。该计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、ROM(Read-Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、CD-ROM(Compact Disc Read-OnlyMemory,只读光盘)、磁带、软盘和光数据存储设备等。本申请提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
应当理解的是,实现上述实施例的全部或部分步骤可以通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。该计算机指令可以存储在上述计算机可读存储介质中。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/计算机设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/计算机设备实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (17)

1.一种数据处理方法,其特征在于,所述方法应用于数据库系统中的管理模块,所述数据库系统包括第一设备、所述管理模块和数据系统,所述数据系统包括多个第二设备,所述第一设备用于存储默克尔B+树中索引节点的数据,所述多个第二设备用于存储所述默克尔B+树中数据节点的数据,所述方法包括:
接收所述第一设备发送的n个映射信息,所述n个映射信息与n个目标数据节点一一对应,所述n个目标数据节点为数据修改集中的指定数据在所述默克尔B+树中需分发至的数据节点,所述n个映射信息中每个映射信息包括对应的目标数据节点的全局页标识和数据列表,所述数据列表包括所述数据修改集中需分发至对应的目标数据节点的至少一个指定数据,所述n为正整数;
生成与所述n个映射信息一一对应的n个数据修改信息,所述n个数据修改信息中每个数据修改信息包括对应的映射信息中的全局页标识关联的第二设备标识和数据修改任务,所述数据修改任务包括对应的映射信息中的全局页标识关联的局部页标识以及对应的映射信息中的数据列表;
将所述n个数据修改信息中任意的一个数据修改信息中的数据修改任务发送给所述一个数据修改信息中的第二设备标识所标识的第二设备,所述数据修改任务用于指示更新所述默克尔B+树中的数据节点。
2.如权利要求1所述的方法,其特征在于,所述将所述n个数据修改信息中任意的一个数据修改信息中的数据修改任务发送给所述一个数据修改信息中的第二设备标识所标识的第二设备,包括:
若所述n个数据修改信息中存在包括的第二设备标识相同的多个数据修改信息,则将所述多个数据修改信息中的数据修改任务携带于同一个数据修改消息中发送给所述多个数据修改信息中的第二设备标识所标识的第二设备。
3.如权利要求1所述的方法,其特征在于,所述将所述n个数据修改信息中任意的一个数据修改信息中的数据修改任务发送给所述一个数据修改信息中的第二设备标识所标识的第二设备之后,还包括:
接收所述多个第二设备中任意的一个第二设备发送的磁盘页分配请求,所述磁盘页分配请求用于请求为至少一个新数据节点中的每个新数据节点分配页标识,所述至少一个新数据节点是根据所述数据修改任务确定得到的;
确定所述磁盘页分配请求中指示的各个新数据节点的第二设备标识和局部页标识;
向所述一个第二设备发送携带有所述各个新数据节点的第二设备标识和局部页标识的磁盘页分配结果。
4.如权利要求3所述的方法,其特征在于,所述确定所述磁盘页分配请求中指示的各个新数据节点的第二设备标识和局部页标识,包括:
若所述磁盘页分配请求中指示的新数据节点的数量小于第一数量,则在所述一个第二设备中为所述磁盘页分配请求中指示的各个新数据节点分配局部页标识,将所述一个第二设备的设备标识确定为所述各个新数据节点的第二设备标识;
若所述磁盘页分配请求中指示的新数据节点的数量大于或等于第一数量,则从所述多个第二设备中除所述一个第二设备之外的其他第二设备中选择第二数量的第二设备,根据预设比例在所述一个第一设备和选择出的所述第二数量的第二设备中为所述磁盘页分配请求中指示的各个新数据节点分配局部页标识,将为所述各个新数据节点所分配的局部页标识所属的第二设备的设备标识确定为所述各个新数据节点的第二设备标识。
5.如权利要求3所述的方法,其特征在于,所述确定所述磁盘页分配请求中指示的各个新数据节点的第二设备标识和局部页标识之后,包括:
根据所述磁盘页分配请求中指示的各个新数据节点的第二设备标识和局部页标识确定所述各个新数据节点的全局页标识;
向所述第一设备发送数据修改结果,所述数据修改结果携带所述各个新数据节点的最小键、哈希值和全局页标识,所述数据修改结果用于指示更新所述默克尔B+树中的索引节点。
6.如权利要求1至5任意一项所述的方法,其特征在于,所述数据修改集具有对应的区块,所述数据修改集是在执行完对应的区块中的交易后产生的;所述方法还包括:
接收所述第一设备发送的设备新增指令,所述设备新增指令携带目标设备标识和指定区块标识,所述设备新增指令用于指示新增所述目标设备标识所标识的设备以及指示所新增的设备是从所述指定区块标识所标识的区块开始被启用;
将所述指定区块标识和所述目标设备标识添加到所述数据系统的设备拓扑元信息。
7.如权利要求6所述的方法,其特征在于,所述数据系统中初始的第二设备的预置值为0;所述将所述指定区块标识和所述目标设备标识添加到所述数据系统的设备拓扑元信息,包括:
将已分配的最大全局页标识确定为全局页标识分界点,确定所述全局页标识分界点对应的旧设备数量和新设备数量,根据所述全局页标识分界点确定所述数据系统中各个第二设备的极限局部页标识,根据所述数据系统中各个第二设备的极限局部页标识确定所述目标设备标识所标识的设备的预置值,所述目标设备标识所标识的设备的预置值为在本次新增设备后比所述数据系统中设备标识最小的第二设备的极限局部页标识大1的局部页标识对应的全局页标识;
将设备动态信息添加到所述数据系统的设备拓扑元信息,所述设备动态信息包括所述指定区块标识、所述目标设备标识、所述全局页标识分界点、所述数据系统中各个第二设备的极限局部页标识、所述全局页标识分界点对应的旧设备数量和新设备数量、所述目标设备标识所标识的设备的预置值,所述设备动态信息用于实现全局页标识与关联的第二设备标识和局部页标识之间的转换。
8.如权利要求7所述的方法,其特征在于,所述方法还包括:
在大于或等于所述指定区块标识所标识的指定区块的执行过程中,若接收到所述第一设备发送的一个全局页标识,则在所述一个全局页标识小于或等于所述全局页标识分界点的情况下,将所述一个全局页标识与所述全局页标识分界点对应的旧设备数量进行取模运算,得到与所述一个全局页标识关联的第二设备标识,将所述一个全局页标识减去所述一个全局页标识关联的第二设备标识所标识的第二设备的预置值后再除以所述全局页标识分界点对应的旧设备数量后得到的数值进行向下取整,得到与所述一个全局页标识关联的局部页标识;
在所述一个全局页标识大于所述全局页标识分界点的情况下,将所述一个全局页标识与所述全局页标识分界点对应的新设备数量进行取模运算,得到与所述一个全局页标识关联的第二设备标识,将所述一个全局页标识减去所述一个全局页标识关联的第二设备标识所标识的第二设备的预置值后再除以所述全局页标识分界点对应的新设备数量后得到的数值进行向下取整,得到与所述一个全局页标识关联的局部页标识。
9.如权利要求7或8所述的方法,其特征在于,所述方法还包括:
在大于或等于所述指定区块标识所标识的指定区块的执行过程中,若在一个第二设备中为一个数据节点分配了一个局部页标识,则在所述一个第二设备的设备标识不为所述目标设备标识的情况下,若所述一个局部页标识小于或等于所述一个第二设备的极限局部页标识,则将所述一个局部页标识与所述全局页标识分界点对应的旧设备数量相乘后与所述一个第二设备的设备标识和所述一个第二设备的预置值累加,得到与所述一个第二设备的设备标识和所述一个局部页标识关联的全局页标识;
在所述一个第二设备的设备标识不为所述目标设备标识的情况下,若所述一个局部页标识大于所述一个第二设备的极限局部页标识,则将所述一个局部页标识与所述全局页标识分界点对应的新设备数量相乘后与所述一个第二设备的设备标识和所述一个第二设备的预置值累加,得到与所述一个第二设备的设备标识和所述一个局部页标识关联的全局页标识;
在所述一个第二设备的设备标识为所述目标设备标识的情况下,将所述一个局部页标识与所述全局页标识分界点对应的新设备数量相乘后与所述一个第二设备的设备标识和所述一个第二设备的预置值累加,得到与所述一个第二设备的设备标识和所述一个局部页标识关联的全局页标识。
10.一种数据处理方法,其特征在于,所述方法应用于数据库系统,所述数据库系统包括第一设备、管理模块和数据系统,所述数据系统包括多个第二设备,所述第一设备用于存储默克尔B+树中索引节点的数据,所述多个第二设备用于存储所述默克尔B+树中数据节点的数据,所述方法包括:
所述第一设备获取数据修改集中每个指定数据在所述默克尔B+树中需分发至的目标数据节点的全局页标识,以得到n个目标数据节点中每个目标数据节点的全局页标识,所述n为正整数;
所述第一设备生成与所述n个目标数据节点一一对应的n个映射信息,将所述n个映射信息发送给所述管理模块,所述n个映射信息中每个映射信息包括对应的目标数据节点的全局页标识和数据列表,所述数据列表包括所述数据修改集中需分发至对应的目标数据节点的至少一个指定数据;
所述管理模块接收到所述第一设备发送的所述n个映射信息后,生成与所述n个映射信息一一对应的n个数据修改信息,所述n个数据修改信息中每个数据修改信息包括对应的映射信息中的全局页标识关联的第二设备标识和数据修改任务,所述数据修改任务包括对应的映射信息中的全局页标识关联的局部页标识以及对应的映射信息中的数据列表;
所述管理模块将所述n个数据修改信息中任意的一个数据修改信息中的数据修改任务发送给所述一个数据修改信息中的第二设备标识所标识的第二设备,所述数据修改任务用于指示更新所述默克尔B+树中的数据节点。
11.如权利要求10所述的方法,其特征在于,所述管理模块将所述n个数据修改信息中任意的一个数据修改信息中的数据修改任务发送给所述一个数据修改信息中的第二设备标识所标识的第二设备之后,还包括:
若所述多个第二设备中任意的一个第二设备接收到所述管理模块发送的所述数据修改任务,则所述一个第二设备根据所述数据修改任务中的局部页标识,获取所述一个第二设备的磁盘页中存储的目标数据节点的数据;
所述一个第二设备根据所述数据修改任务中的数据列表修改所述目标数据节点的数据,以更新所述目标数据节点;
所述一个第二设备根据更新后的所述目标数据节点确定至少一个新数据节点,请求所述管理模块为所述至少一个新数据节点中的每个新数据节点分配页标识。
12.如权利要求11所述的方法,其特征在于,所述一个第二设备根据更新后的所述目标数据节点确定至少一个新数据节点,请求所述管理模块为所述至少一个新数据节点中的每个新数据节点分配页标识,包括:
若更新后的所述目标数据节点的数据量小于或等于预设数据量,则所述一个第二设备确定更新后的所述目标数据节点为新数据节点,向所述管理模块发送磁盘页分配请求;若更新后的目标数据节点的数据量大于预设数据量,则所述一个第二设备将更新后的所述目标数据节点分裂为至少两个数据节点,确定所述至少两个数据节点均为新数据节点,向所述管理模块发送磁盘页分配请求;
所述管理模块接收到所述一个第二设备发送的所述磁盘页分配请求后,确定所述磁盘页分配请求中指示的各个新数据节点的第二设备标识和局部页标识,向所述一个第二设备发送携带有所述各个新数据节点的第二设备标识和局部页标识的磁盘页分配结果。
13.如权利要求12所述的方法,其特征在于,所述管理模块向所述一个第二设备发送携带有所述各个新数据节点的第二设备标识和局部页标识的磁盘页分配结果之后,还包括:
所述一个第二设备接收到所述管理模块发送的所述磁盘页分配结果后,对于所述磁盘页分配结果中任意的一个新数据节点的第二设备标识和局部页标识,若所述一个新数据节点的第二设备标识与所述一个第二设备的设备标识相同,则所述一个第二设备将所述一个新数据节点的数据存储至所述一个第二设备的磁盘页中由所述一个新数据节点的局部页标识所标识的磁盘页;
若所述一个新数据节点的第二设备标识与所述一个第二设备的设备标识不同,则所述一个第二设备将所述一个新数据节点的局部页标识和所述一个新数据节点的数据携带于数据存储消息中发送给所述一个新数据节点的第二设备标识所标识的第二设备,由所述一个新数据节点的第二设备标识所标识的第二设备将所述一个新数据节点的数据存储至自身的磁盘页中由所述一个新数据节点的局部页标识所标识的磁盘页。
14.如权利要求10至13任意一项所述的方法,其特征在于,所述数据修改集具有对应的区块,所述数据修改集是在执行完对应的区块中的交易后产生的;所述方法还包括:
所述第一设备接收到携带有目标设备标识的设备增加请求后,确定当前区块的执行进度;
所述第一设备在所述当前区块的执行进度为已执行完成的情况下,确定最新执行完成的区块的下一个区块的区块标识为指定区块标识;
所述第一设备将所述目标设备标识和所述指定区块标识携带于设备新增指令中发送给所述管理模块,以指示新增所述目标设备标识所标识的设备以及指示所新增的设备是从所述指定区块标识所标识的区块开始被启用;
所述管理模块接收到所述第一设备发送的所述设备新增指令后,将所述指定区块标识和所述目标设备标识添加到所述数据系统的设备拓扑元信息。
15.一种数据库系统,其特征在于,所述数据库系统包括第一设备、管理模块和数据系统,所述数据系统包括多个第二设备,所述第一设备用于存储默克尔B+树中索引节点的数据,所述多个第二设备用于存储所述默克尔B+树中数据节点的数据;
所述第一设备,用于获取数据修改集中每个指定数据在所述默克尔B+树中需分发至的目标数据节点的全局页标识,以得到n个目标数据节点中每个目标数据节点的全局页标识,所述n为正整数;生成与所述n个目标数据节点一一对应的n个映射信息,将所述n个映射信息发送给所述管理模块,所述n个映射信息中每个映射信息包括对应的目标数据节点的全局页标识和数据列表,所述数据列表包括所述数据修改集中需分发至对应的目标数据节点的至少一个指定数据;
所述管理模块,用于接收到所述第一设备发送的所述n个映射信息后,生成与所述n个映射信息一一对应的n个数据修改信息,所述n个数据修改信息中每个数据修改信息包括对应的映射信息中的全局页标识关联的第二设备标识和数据修改任务,所述数据修改任务包括对应的映射信息中的全局页标识关联的局部页标识以及对应的映射信息中的数据列表;将所述n个数据修改信息中任意的一个数据修改信息中的数据修改任务发送给所述一个数据修改信息中的第二设备标识所标识的第二设备,所述数据修改任务用于指示更新所述默克尔B+树中的数据节点。
16.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至9任意一项所述的方法。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至9任意一项所述的方法。
CN202310297624.3A 2023-03-24 2023-03-24 数据处理方法、数据库系统、计算机设备和存储介质 Active CN116069788B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310297624.3A CN116069788B (zh) 2023-03-24 2023-03-24 数据处理方法、数据库系统、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310297624.3A CN116069788B (zh) 2023-03-24 2023-03-24 数据处理方法、数据库系统、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN116069788A CN116069788A (zh) 2023-05-05
CN116069788B true CN116069788B (zh) 2023-06-20

Family

ID=86180529

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310297624.3A Active CN116069788B (zh) 2023-03-24 2023-03-24 数据处理方法、数据库系统、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN116069788B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106462544A (zh) * 2014-03-31 2017-02-22 亚马逊科技公司 分布式存储系统中的会话管理
CN110134550A (zh) * 2019-05-15 2019-08-16 腾讯科技(深圳)有限公司 一种数据处理方法、装置以及计算机可读存储介质
CN112579602A (zh) * 2020-12-22 2021-03-30 杭州趣链科技有限公司 多版本数据存储方法、装置、计算机设备及存储介质
CN112632029A (zh) * 2020-12-04 2021-04-09 杭州海康威视系统技术有限公司 分布式存储系统的数据管理方法、装置及设备
WO2021179488A1 (zh) * 2020-03-11 2021-09-16 平安科技(深圳)有限公司 监控数据存储方法、设备、服务器及存储介质
CN114328540A (zh) * 2021-12-31 2022-04-12 杭州趣链科技有限公司 数据管理方法、装置、系统及存储介质
CN115098893A (zh) * 2022-06-30 2022-09-23 蚂蚁区块链科技(上海)有限公司 基于区块链的数据存储方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200394177A1 (en) * 2019-06-15 2020-12-17 Facebook, Inc. Scalable, secure, efficient, and adaptable distributed digital ledger transaction network

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106462544A (zh) * 2014-03-31 2017-02-22 亚马逊科技公司 分布式存储系统中的会话管理
CN110134550A (zh) * 2019-05-15 2019-08-16 腾讯科技(深圳)有限公司 一种数据处理方法、装置以及计算机可读存储介质
WO2021179488A1 (zh) * 2020-03-11 2021-09-16 平安科技(深圳)有限公司 监控数据存储方法、设备、服务器及存储介质
CN112632029A (zh) * 2020-12-04 2021-04-09 杭州海康威视系统技术有限公司 分布式存储系统的数据管理方法、装置及设备
CN112579602A (zh) * 2020-12-22 2021-03-30 杭州趣链科技有限公司 多版本数据存储方法、装置、计算机设备及存储介质
WO2022134128A1 (zh) * 2020-12-22 2022-06-30 杭州趣链科技有限公司 多版本数据存储方法、装置、计算机设备及存储介质
CN114328540A (zh) * 2021-12-31 2022-04-12 杭州趣链科技有限公司 数据管理方法、装置、系统及存储介质
CN115098893A (zh) * 2022-06-30 2022-09-23 蚂蚁区块链科技(上海)有限公司 基于区块链的数据存储方法及装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
A Value-Attribute Mapping Method Based on Inverted Index;Limin Wang 等;2018 Sixth International Conference on Advanced Cloud and Big Data (CBD);第1-6页 *
分布式实时轨迹存取系统设计方法;张超;余祖应;宋筱轩;胡鹏;张文峰;;指挥信息系统与技术(第03期);第70-75页 *
面向区块链的高效物化视图维护和可信查询;蔡磊;朱燕超;郭庆兴;张召;金澈清;;软件学报(第03期);第680-694页 *

Also Published As

Publication number Publication date
CN116069788A (zh) 2023-05-05

Similar Documents

Publication Publication Date Title
JP6778795B2 (ja) データを記憶するための方法、装置及びシステム
KR101994021B1 (ko) 파일 조작 방법 및 장치
US11157445B2 (en) Indexing implementing method and system in file storage
CN110347651B (zh) 基于云存储的数据同步方法、装置、设备及存储介质
WO2019062574A1 (zh) 一种元数据查询方法及装置
CN110018998B (zh) 一种文件管理方法、系统及电子设备和存储介质
CN101567003A (zh) 并行文件系统中资源的管理和分配方法
CN111177144B (zh) 表同步方法、装置、设备、存储介质及系统
CN111782134B (zh) 数据处理方法、装置、系统和计算机可读存储介质
CN111400334B (zh) 数据处理方法、装置、存储介质及电子装置
KR20150071500A (ko) 데이터 관리 방법 및 장치
CN110968589A (zh) 一种分布式系统中自增id的管理方法和装置
CN111144582B (zh) 训练及更新机器学习模型的方法及相应装置
CN113806300A (zh) 数据存储方法、系统、装置、设备及存储介质
CN104915270A (zh) 用于压缩与解压缩的同步历史数据的系统和方法
CN115840731A (zh) 文件处理方法、计算设备及计算机存储介质
JP7261317B2 (ja) 圧縮データの記憶及び取得の最適化
US20200151148A1 (en) Web-scale distributed deduplication
CN116069788B (zh) 数据处理方法、数据库系统、计算机设备和存储介质
CN112965939A (zh) 一种文件合并方法、装置和设备
CN111309677A (zh) 一种分布式文件系统的文件管理方法及装置
CN115964002A (zh) 一种电能表终端档案管理方法、装置、设备及介质
CN116010430B (zh) 数据恢复方法、数据库系统、计算机设备和存储介质
CN112464049B (zh) 号码详单下载方法、装置和设备
US20130218851A1 (en) Storage system, data management device, method and program

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