CN113360456A - 数据归档方法、装置、设备以及存储介质 - Google Patents
数据归档方法、装置、设备以及存储介质 Download PDFInfo
- Publication number
- CN113360456A CN113360456A CN202110921637.4A CN202110921637A CN113360456A CN 113360456 A CN113360456 A CN 113360456A CN 202110921637 A CN202110921637 A CN 202110921637A CN 113360456 A CN113360456 A CN 113360456A
- Authority
- CN
- China
- Prior art keywords
- block
- target
- data
- block head
- pointed
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/113—Details of archiving
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种数据归档方法、装置、设备以及存储介质,其中方法包括:当存在针对目标区块头的归档需求时,在本地空间中查找目标区块头指向的当前状态树,以及位于目标区块头之前的各个第一区块头指向的当前状态树;根据查找到的各个当前状态树和查找到的各个当前状态树之间的节点复用情况,重构出目标区块头指向的新状态树;基于目标区块头指向的新状态树,和位于目标区块头之后的各个第二区块头对应的目标状态数据,重构出各个第二区块头指向的新状态树;将本地空间中存储的各个当前状态树作为归档数据,归档至目标归档服务器;并在成功归档后,删除本地空间中的各个当前状态树。可以释放区块链节点的存储空间。
Description
技术领域
本申请涉及互联网技术领域,具体涉及计算机技术领域,尤其涉及一种数据归档方法、装置、设备以及存储介质。
背景技术
随着区块链技术的发展,区块头链应运而生,所谓的区块头链是指:位于区块链节点中,由区块头依次连接而组成的链型结构;一个区块头指向位于区块链节点的本地空间中的一个状态树,所谓的状态树是指用于组织存储用户的状态数据的数据结构,该状态数据可以是某个用户的资产(如数字资源、虚拟电子资源等)。目前,通常会采用节点复用的方式来构建每个区块头所指向的状态树,使得相邻两个区块头所指向的状态树之间可复用部分树节点,以减少树节点的数量,从而节省区块链节点的存储空间。由于节点复用的方式,使得历史状态树中的部分树节点可能仍然被新区块所指向的新状态树引用,因此各个状态树所存储的状态数据不能随便删除。但随着区块链网络的运行时间的增长,区块链节点中所存储的状态数据也在不断膨胀,大量的状态数据给区块链节点带来了存储空间的压力;基于此,如何减轻区块链节点的存储压力成为了研究热点。
发明内容
本申请实施例提供了一种数据归档方法、装置、设备以及存储介质,可以实现对区块链节点中所存储的过期的状态数据进行归档处理,来释放区块链节点的存储空间,减轻区块链节点的存储压力,从而提升区块链节点的运行性能,进而保证区块链节点在运行过程中的稳定性。
一方面,本申请实施例提供了一种数据归档方法,所述方法包括:
当存在针对目标区块头的归档需求时,在本地空间中查找所述目标区块头指向的当前状态树,以及位于所述目标区块头之前的各个第一区块头指向的当前状态树;任一区块头指向的当前状态树是指:当存在所述归档需求时,所述任一区块头指向的状态树;
根据查找到的各个当前状态树和所述查找到的各个当前状态树之间的节点复用情况,重构出所述目标区块头指向的新状态树;所述目标区块头指向的新状态树独立存储所述目标区块头对应的所有状态数据;
基于所述目标区块头指向的新状态树,和位于所述目标区块头之后的各个第二区块头对应的目标状态数据,重构出所述各个第二区块头指向的新状态树;任一新状态树,与相应区块头的后一区块头所指向的新状态树存在节点复用;
将所述本地空间中存储的各个当前状态树作为归档数据,归档至目标归档服务器;并在成功归档后,删除所述本地空间中的各个当前状态树。
另一方面,本申请实施例提供了一种数据归档装置,所述装置包括:
查找单元,用于当存在针对目标区块头的归档需求时,在本地空间中查找所述目标区块头指向的当前状态树,以及位于所述目标区块头之前的各个第一区块头指向的当前状态树;任一区块头指向的当前状态树是指:当存在所述归档需求时,所述任一区块头指向的状态树;
第一重构单元,用于根据查找到的各个当前状态树和所述查找到的各个当前状态树之间的节点复用情况,重构出所述目标区块头指向的新状态树;所述目标区块头指向的新状态树独立存储所述目标区块头对应的所有状态数据;
第二重构单元,用于基于所述目标区块头指向的新状态树,和位于所述目标区块头之后的各个第二区块头对应的目标状态数据,重构出所述各个第二区块头指向的新状态树;任一新状态树,与相应区块头的后一区块头所指向的新状态树存在节点复用;
归档单元,用于将所述本地空间中存储的各个当前状态树作为归档数据,归档至目标归档服务器;并在成功归档后,删除所述本地空间中的各个当前状态树。
再一方面,本申请实施例提供了一种数据归档设备,所述数据归档设备包括输入设备、输出设备,所述数据归档设备还包括:
处理器,适于实现一条或多条指令;以及,
计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如下步骤:
当存在针对目标区块头的归档需求时,在本地空间中查找所述目标区块头指向的当前状态树,以及位于所述目标区块头之前的各个第一区块头指向的当前状态树;任一区块头指向的当前状态树是指:当存在所述归档需求时,所述任一区块头指向的状态树;
根据查找到的各个当前状态树和所述查找到的各个当前状态树之间的节点复用情况,重构出所述目标区块头指向的新状态树;所述目标区块头指向的新状态树独立存储所述目标区块头对应的所有状态数据;
基于所述目标区块头指向的新状态树,和位于所述目标区块头之后的各个第二区块头对应的目标状态数据,重构出所述各个第二区块头指向的新状态树;任一新状态树,与相应区块头的后一区块头所指向的新状态树存在节点复用;
将所述本地空间中存储的各个当前状态树作为归档数据,归档至目标归档服务器;并在成功归档后,删除所述本地空间中的各个当前状态树。
再一方面,本申请实施例提供了一种计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令适于由所述处理器加载并执行如下步骤:
当存在针对目标区块头的归档需求时,在本地空间中查找所述目标区块头指向的当前状态树,以及位于所述目标区块头之前的各个第一区块头指向的当前状态树;任一区块头指向的当前状态树是指:当存在所述归档需求时,所述任一区块头指向的状态树;
根据查找到的各个当前状态树和所述查找到的各个当前状态树之间的节点复用情况,重构出所述目标区块头指向的新状态树;所述目标区块头指向的新状态树独立存储所述目标区块头对应的所有状态数据;
基于所述目标区块头指向的新状态树,和位于所述目标区块头之后的各个第二区块头对应的目标状态数据,重构出所述各个第二区块头指向的新状态树;任一新状态树,与相应区块头的后一区块头所指向的新状态树存在节点复用;
将所述本地空间中存储的各个当前状态树作为归档数据,归档至目标归档服务器;并在成功归档后,删除所述本地空间中的各个当前状态树。
再一方面,本申请实施例提供了一种计算机程序产品,计算机程序产品包括计算机程序;该计算机程序存储在计算机可读存储介质中,计算机程序被数据归档设备的处理器执行时,执行上述的数据归档方法。
在本申请实施例中,当存在归档需求时,目标设备可以在本地空间中查找目标区块头指向的当前状态树,以及位于目标区块头之前的各个第一区块头指向的当前状态树。进而可以根据查找到的各个当前状态树和查找到的各个当前状态树之间的节点复用情况,重构出目标区块头指向的新状态树,目标区块头指向的新状态树是独立存储目标区块头对应的所有状态数据的。进一步的,可以基于目标区块头指向的新状态树,和位于目标区块头之后的各个第二区块头对应的目标状态数据,重构出各个第二区块头指向的新状态树。其中,任一新状态树,与相应区块头的后一区块头所指向的状态树存在节点复用。在重构出目标区块头指向的新状态树和各个第二区块头指向的新状态树之后,可以将本地空间中存储的各个当前状态树作为归档数据,归档至目标归档服务器,并在成功归档后,删除本地空间中的各个当前状态树。通过上述实施方法,可以构建目标区块头指向的新状态树以及目标区块头之后各个第二区块头所指向的新状态树,其中目标区块头指向的新状态树是独立存储目标区块头对应的所有状态数据,该目标区块头指向的新状态树与目标区块头之前的第一区块头所指向的当前状态树不存在复用的树节点,即该目标区块头指向的新状态树与目标区块头之前的第一区块头所指向的当前状态树不存在节点复用。并且,由于目标区块头之后各个第二区块头所指向的新状态树是基于目标区块头指向的新状态树所构建的,那么同理,任一第二区块头所指向的新状态树可与该任一第二区块头的后一区块头所指向的新状态树存在节点复用,而与目标区块头之前的第一区块头所指向的当前状态树不存在节点复用。那么,后续可以在将本地空间中存储的各个当前状态树作为归档数据,并成功归档至对应的归档服务器中之后,可以删除本地空间中的各个当前状态树,从而释放了区块链节点的存储空间,减小了区块链节点中因大量历史状态数据而给存储空间带来的压力,进而可以有效保障区块链节点运行的稳定性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本申请实施例提供的一种状态树的结构示意图;
图1b是本申请实施例提供的一种状态树之间的节点复用情况的结构示意图;
图1c是本申请实施例提供的一种数据归档系统的架构示意图;
图2是本申请实施例提供的一种数据归档方法的流程示意图;
图3是本申请实施例提供的一种确定存在归档需求的结构示意图;
图4是本申请实施例提供的一种数据归档方法的流程示意图;
图5a是本申请实施例提供的一种目标区块头所指向的新状态树的结构示意图;
图5b是本申请实施例提供的一种第二区块头所指向的新状态树的结构示意图;
图6a是本申请实施例提供的一种数据归档方法的流程示意图;
图6b是本申请实施例提供的一种数据归档系统的架构示意图;
图7是本申请实施例提供的一种数据归档装置的结构示意图;
图8是本申请实施例提供的一种数据归档设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例涉及区块链网络,下面对区块链网络的相关术语及概念进行简要介绍:
区块链网络可以理解为一个用于进行节点与节点之间数据共享的网络,位于区块链网络中的节点可称为区块链节点;所谓的区块链节点是指:区块链网络中进行数据处理的计算机设备,该计算机设备可以是终端设备或者服务器,对此不做限定。此处所提及的终端设备可以是智能手机、平板电脑、笔记本电脑、台式电脑、车载计算机、智能家居、可穿戴电子设备、虚拟现实(Virtual Reality,VR)/增强现实(Augmented Reality,AR)设备等等;服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器,等等。
为了保证区块链网络内的信息互通,每个区块链节点之间可以存在信息连接,以使区块链节点之间可以实现信息传输,进而实现信息共享;任意两个区块链节点之间可以实现点对点(Peer To Peer,P2P)通信,具体可以通过有线通信链路或无线通信链路进行P2P通信。对于每个区块链节点,均具有与其对应的节点标识,而且,区块链网络中的每个区块链节点均可以存储有区块链网络中其他区块链节点的节点标识,以便后续根据其他区块链节点的节点标识,将生成的区块广播至区块链网络中的其他区块链节点。任一区块链节点的节点标识可为互联网协议(Internet Protocol,IP)地址,或者其他任一种能够用于标识该区块链节点的信息。以节点标识为IP地址为例,每个区块链节点中可维护一个如下表1所示的节点标识列表:
表1
节点名称 | 节点标识 |
节点1 | 117.114.151.174 |
节点2 | 117.116.189.145 |
… | … |
节点N | xx.xx.xx.xx |
针对任一区块链节点而言,其内部可维护一条区块头链,该区块头链可由区块头连接组成的链形结构,每个区块头可以指向区块链节点的本地空间中的一个状态树,每个状态树中的各个数据节点均存储有状态数据。与完整的区块链不同的是,区块头链不需要保留所有账户完整的状态数据,仅在区块头中存储状态快照即可。所谓的状态快照是指用于指向状态树的数据,其中,状态快照可以表示目标设备中所存储的状态数据的固定长度的数据,只要任何状态数据有任何变化,状态快照均可以发生变化,以此可以判断所有状态数据的完整性。其中,目标设备可以根据区块头中的状态快照所指向的状态树来确定区块头所指向的状态树。状态数据可以存储在与区块头对应的区块体中,一个区块头和一个区块体可以组成区块链节点中所包括的一个区块。在区块体中,可以采用树型数据结构来对所有账户对应的状态数据进行存储,即状态数据可以以状态树的数据结构进行存储,该状态树中的叶子节点中可以存储有具体的状态数据。
在本申请实施例中,状态树可以是默克尔帕特里夏树(Merkle Patricia Trie,MPT),MPT一种组织数据的树形结构。MPT在存储状态数据时,是以键值对(Key-Value)数据的形式进行存储的。MPT所包含的树节点可以包括数据节点、拓展节点以及分支节点三种类型的树节点。数据节点是树型结构的叶子节点,只会出现在MPT底部,存储着具体的状态数据。拓展节点是指具有一个子节点的父节点,包含一个任意长度字符串(Key),和一个指向子节点的哈希指针。分支节点是指具有1至16个子节点的父节点,有一个容量为16的哈希值数组,数组中的这16个位置分别对应16进制下的0-9a-f,并且分别有可能作为哈希指针而指向一个子节点。哈希指针是指MPT中子节点的哈希值,存储在父节点中。
为更好的理解本申请实施例所提供的MPT,下面结合图1a所示的MPT进一步说明。如图1a所示,本申请中的MPT可以是目标设备的本地空间中的任一状态树,其中,表2所示为需要利用MPT进行数据存储的状态数据:
表2
Key | Value | |
状态数据1 | ab567cd | 12.34 |
状态数据2 | abc1235 | fenghm |
状态数据3 | abc12b5 | 100 |
每个状态数据可以键值对(Key-Value)的形式进行组织。Key可以是状态数据对应的关键字符串,该关键字符串可以是例如某一用户在业务上的账户标识,Value可以是状态数据对应的具体值。区块头对应的状态数据的数量可以包括一个或多个。例如,表1所示中的3个状态数据为某一区块头对应的状态数据。如状态数据1对应的关键字符串可以为“ab567cd”,该状态数据3对应的具体值可以为12.34。又如,状态数据2对应的关键字符串可以为“abc1235”,该状态数据2对应的具体值可以为fenghm。又如,状态数据3对应的关键字符串可以为“abc12b5”,该状态数据1对应的具体值可以为100。
可以理解的是,在MPT中,哈希指针是指MPT中子节点的哈希值,且存储在父节点中,则可以根据每个树节点的哈希指针来确定当前树节点(对应于父节点)对应的下一层树节点(对应于子节点)。其中,表2所示的每个状态数据中的关键字符串(Key)可以对应一条从MPT中的树根节点到相应数据节点的节点路径。上述描述中的状态快照对应的具体值可以树根节点中的哈希指针。基于此,可以根据每个树节点中所存储的哈希指针确定针对各个状态数据所对应的节点路径。例如,针对表2中的状态数据1,其中,状态数据1对应的节点路径可以包括拓展节点11、分支节点12、拓展节点13以及数据节点14。其中,拓展节点13中的哈希指针是对数据节点14中所存储的状态数据12.34进行哈希计算得到的哈希值,分支节点12中的字符“5”的哈希指针是对拓展节点13中存储的数据进行哈希计算得到的哈希值。从上述可知,拓展节点11的哈希指针指向分支节点12,分支节点12中的字符“5”的哈希指针指向拓展节点13,拓展节点13的哈希指针指向数据节点14。同理可知,状态数据2和状态数据3分别对应的节点路径。
可以理解的是,在构建每个区块头所指向的状态树时,可以采用节点复用的方式来构建,则可以使得相邻两个区块头所指向的状态树之间可复用部分树节点,非相邻两个区块头所指向的状态树之间也可复用部分树节点,在本申请不作限定。例如,当前区块头对应的某一状态数据中执行交易后,可以得到更新后的新状态数据,对于新区块头所指向的新状态树,该新状态树可以根据该更新后的新状态数据进行构建得到,该新状态树中的数据节点用于存储更新后的状态数据。未更新过的历史状态数据可以被新区块头中的状态快照指向,而根据该指向即可以确定该新区块头所指向的新状态树与当前区块头所指向的状态树之间的节点复用情况。通过上述可知,可以根据节点复用情况确定任意相邻的两个区块头中的后一区块头所指向的状态树,和前一区块头所指向的状态树中,被复用的树节点,而该复用的树节点即是复用树节点。
例如,图1b所示,目标设备在区块链节点中所产生的新区块头100,该区块头100所指向的状态树中具有一个数据节点,该数据节点存储的状态数据为43.21,从区块头99所指向的状态树中可以看出,当前区块头99中的状态数据包括12.34、fenghm、100,其中,区块头100所对应的状态数据43.21是根据区块头99所对应的状态数据为12.34执行交易后所更新得到的新状态数据。即可以根据状态数据43.21构建区块头100所指向的状态树。而针对区块头99中的未更新过的历史状态数据(fenghm和100),可以被区块头100中所存储的状态快照指向,区块头99中对应的未更新过的历史状态数据所在的分支中的树节点可以被区块头100指向的状态树所复用。例如,在图1b中,区块头99所指向的状态树中的拓展节点15、分支节点16、拓展节点17、数据节点18、拓展节点19、数据节点20是被区块头100指向的状态树所复用的树节点,这些复用的树节点也就是复用树节点。
基于上述区块链网络的相关介绍,本申请实施例提出了一种基于状态树的数据归档方案以及相应的数据归档系统,以实现对区块链节点中所存储的过期的状态数据进行归档处理,来释放区块链节点的存储空间,减轻区块链节点的存储压力,从而提升区块链节点的运行性能,进而保证区块链节点在运行过程中的稳定性。请参见图1c,是本申请实施例提供的一种数据归档系统的架构示意图,该数据归档系统包括区块链网络,以及位于区块链网络外的归档服务器。其中,区块链网络中可以包括多个区块链节点,一个区块链节点可与一个或多个归档服务器进行通信;所谓的归档服务器是指:基于和区块链节点的通信,为相应区块链节点提供数据存储服务和数据查询服务的服务器。图1c中所示的区块链节点的数目以及归档服务器的数目仅仅是示意性的,根据实际需要,可以部署任意数目的区块链节点和与每个区块链节点进行通信的归档服务器。
在本申请实施例中,为了释放区块链节点的存储空间,本申请实施例基于图1c所示的数据归档系统提供了一种数据归档方案,在具体实现中,该数据归档方案可由目标设备执行,该目标设备可以是图1c所示中的任一区块链节点。该数据归档方案的大致原理如下:当存在针对目标区块头的归档需求时,可以在本地空间中查找目标区块头指向的当前状态树,以及位于目标区块头之前的各个第一区块头指向的当前状态树。其中,任一区块头指向的当前状态树是指:当存在归档需求时,任一区块头指向的状态树。进而可以根据查找到的各个当前状态树和查找到的各个当前状态树之间的节点复用情况,重构出目标区块头指向的新状态树,目标区块头指向的新状态树是独立存储目标区块头对应的所有状态数据的。进一步的,可以基于目标区块头指向的新状态树,和位于目标区块头之后的各个第二区块头对应的目标状态数据,重构出各个第二区块头指向的新状态树。其中,第二区块头是指:位于目标区块头之后的区块头;任一新状态树,与相应区块头的后一区块头所指向的新状态树存在节点复用,即相邻的两个新状态树存在节点复用,非相邻的两个新状态树也可以存在节点复用。在重构出目标区块头指向的新状态树和各个第二区块头指向的新状态树之后,可以将本地空间中存储的各个当前状态树作为归档数据,归档至目标归档服务器,并在成功归档后,删除本地空间中的各个当前状态树。
基于上述数据归档方案的相关描述可知,本申请实施例中所构建的目标区块头指向的新状态树是独立存储目标区块头对应的所有状态数据,该目标区块头指向的新状态树与目标区块头之前的第一区块头所指向的当前状态树不存在复用的树节点,即该目标区块头指向的新状态树与目标区块头之前的第一区块头所指向的当前状态树不存在节点复用。并且,由于目标区块头之后各个第二区块头所指向的新状态树是基于目标区块头指向的新状态树所构建的,那么同理,任一第二区块头所指向的新状态树可与该任一第二区块头的后一区块头所指向的新状态树存在节点复用,而与目标区块头之前的第一区块头所指向的当前状态树不存在节点复用。那么,后续可以在将本地空间中存储的各个当前状态树作为归档数据,并成功归档至对应的归档服务器中之后,可以删除本地空间中的各个当前状态树,从而释放了区块链节点的存储空间,减小了区块链节点中因大量历史状态数据而给存储空间带来的压力,进而可以有效保障区块链节点运行的稳定性。
基于上述所提供的数据归档方案,本申请实施例提供了一种数据归档方法,该数据归档方法可由上述所提及的目标设备执行。请参阅图2,该数据归档方法可包括以下步骤S201-S204:
S201,当存在针对目标区块头的归档需求时,在本地空间中查找目标区块头指向的当前状态树,以及位于目标区块头之前的各个第一区块头指向的当前状态树。
其中,任一区块头指向的当前状态树可以是指:当存在归档需求时,任一区块头指向的状态树。
在一种具体实现中,可以是在目标设备接收到一个归档请求时,确定当前存在针对目标区块头的归档需求。例如,归档管理员可以向目标设备发送一个针对目标区块头的归档请求,以使目标设备接收该归档请求,而在目标设备接收到该归档请求之后,也就确定存在针对目标区块头的归档需求。在一种实现方式中,当归档管理员需要对目标设备的本地空间存储的状态数据进行数据归档时,归档管理员可以通过在终端所输出的用户操作界面执行相关操作,以向目标设备发送针对目标区块头的归档请求。例如参见图3所示:归档管理员所使用的终端可在终端屏幕中显示一个用户操作界面,该用户操作界面可以至少包括由301标记的区块头设置区域,以及由302标记的确认控件。若归档管理员想要对第100个区块头所指示的当前状态树存储的状态数据进行归档处理,则该归档管理员可在该区块头设置区域301中输入第100个区块头的相关信息(如区块头号),然后对该确认控件302执行触发操作(如点击操作、按压操作等),从而触发归档管理员所使用的终端根据在区块头设置区域301中获取到的相关信息所指示的区块头,确定目标区块头,并向目标设备发送针对该目标区块头的归档请求。
另一种具体实现中,归档需求还可以是触发归档定时任务所产生的。如可以设置一个归档定时任务,该归档定时任务中指示了对目标设备在本地空间中的状态数据进行归档的触发条件。例如,该触发条件可以是当前时间到达预设归档时间,或者,目标设备在本地空间的剩余存储空间到达了预设剩余存储空间等等。
在一种具体实现中,当存在针对目标区块头的归档需求时,可以对针对目标区块头的归档需求进行需求校验,以校验该归档需求是否是合法的,如果校验结果是合法的,则可以进行后续的步骤,如果校验结果是不合法的,则不可以进行后续的步骤。其中,可以根据目标区块头的区块高度对目标区块头的归档需求进行需求校验,其具体实现过程可以为下述描述:可以在区块头链中确定当前区块头,并在区块头链中确定最新区块头。其中,该当前区块头可以是指在本地空间中指向有状态树,且区块高度最小的区块头;该最新区块头可以是指在本地空间中指向有状态树,且区块高度最大的区块头。而在确定区块头链中的当前区块头和最新区块头之后,可以根据目标区块头的区块高度、以及当前区块头和最新区块头分别对应的区块高度对归档需求进行需求校验。例如,如果目标区块头的区块高度大于当前区块头的区块高度,且小于最新区块头的区块高度,则表明当前存在可归档的数据,也可以表明针对目标区块头的归档需求是合法的,即可以执行在本地空间中查找目标区块头指向的当前状态树,以及位于目标区块头之前的各个第一区块头指向的当前状态树的步骤。如果目标区块头的区块高度小于当前区块头的区块高度,或大于最新区块头的区块高度,则表明当前不存在可归档的数据,也可以表明针对目标区块头的归档需求是不合法的,则无需进行后续的步骤。在这种情况下,目标设备还可以向归档管理设备返回一个报错信息,该报错信息可以用于指示当前归档需求不满足归档要求,以便于归档管理设备对应的归档管理员对归档需求进行调整。例如,该报错信息可以显示在图3中的用户操作界面上的第二区域,例如图3中用户操作界面上显示的数据归档失败可以是一个报错信息。
其中,为了方便后续描述,可以将当前区块头以及当前区块头和目标区块头之间的各个区块头,均被作为第一区块头;可以将最新区块头以及最新区块头和目标区块头之间的各个区块头,均被作为第二区块头。
具体实现中,在当存在针对目标区块头的归档需求时,目标设备可以在本地空间中查找目标区块头指向的当前状态树,以及位于目标区块头之前的各个第一区块头指向的当前状态树。其中,在查找当前状态树时,可以根据目标区块头中所存储的状态快照来进行查找,每一个状态快照可以指向一个状态树。同理,位于目标区块头之前的各个第一区块头指向的当前状态树也可以根据各个第一区块头所存储的状态快照来进行查找。
S202,根据查找到的各个当前状态树和查找到的各个当前状态树之间的节点复用情况,重构出目标区块头指向的新状态树。
其中,目标区块头指向的新状态树独立存储目标区块头对应的所有状态数据,即目标区块头指向的新状态树与各个第一区块头指向的当前状态树之间不存在节点复用情况。
在一种具体实现方式中,目标设备可以根据查找到的各个当前状态树之间的节点复用情况,从查找到的各个当前状态树中确定一个或多个复用树节点。其中,复用树节点可以是指:在目标区块头指向的当前状态树和任一第一区块头指向的当前状态树中,被复用的树节点。而在确定复用树节点之后,可以根据复用树节点以及目标区块头指向的当前状态树的各个树节点,确定目标区块头指向的新状态树。例如,目标设备可以复制一个或多个复用树节点,以及复制查找到的目标区块头指向的当前状态树中的各个树节点,以采用复制得到的树节点,重构出目标区块头指向的新状态树。其中,复制得到的树节点可以包括:复制得到的各个复用树节点,以及复制得到的目标区块头指向的当前状态树中的各个树节点。
S203,基于目标区块头指向的新状态树,和位于目标区块头之后的各个第二区块头对应的目标状态数据,重构出各个第二区块头指向的新状态树。
其中,假设第二区块头的数量为M个,M为正整数。则第m个第二区块头对应的目标状态数据可以是指:第m个第二区块头对应的多个状态数据中,与第m个第二区块头的前一区块头对应的各个状态数据均不同的状态数据;也可以说是第m个第二区块头对应的多个状态数据的基础上,进行状态数据的更新,而产生的新的状态数据。例如,第m个第二区块头对应的状态数据包括:状态数据A、状态数据B、状态数据C,第m个第二区块头的前一区块头对应的状态数据包括:状态数据D、状态数据B、状态数据C,从上述数据可知,第m个第二区块头对应的目标状态数据为状态数据D。其中,m∈[1,M]。
在一种具体实现中,针对各个第二区块头中的任一第二区块头,例如,以该任一第二区块头为第m个第二区块头为例进行说明,重构出第m个第二区块头指向的新状态树的具体实施过程可以是:目标设备可以基于第m个第二区块头对应的目标状态数据,生成新叶子节点,该新叶子节点也就是新数据节点。再将第m个第二区块头对应的目标状态数据,存储至新叶子节点中。以基于存储了目标状态数据的新叶子节点,以及第m个第二区块头的前一区块头所指向的新状态树,重构第m个第二区块头指向的新状态树。通过上述方法,可以重构出每一个第二区块头所指向的新状态树。其中,针对任一第二区块头所指向的新状态树,可以与相应区块头的后一第二区块头所指向的新状态树存在节点复用。例如,第m个第二区块头指向的新状态树和前一区块头指向的新状态树之间,复用至少一个叶子节点(数据节点)。在一种实现中,当m等于1时,前一区块头为目标区块头。
S204,将本地空间中存储的各个当前状态树作为归档数据,归档至目标归档服务器,并在成功归档后,删除本地空间中的各个当前状态树。
具体实现中,在通过上述步骤重构出目标区块头指向的新状态树、以及重构出各个第二区块头指向的新状态树之后,即可以将归档数据归档至目标服务器,该归档数据可以是本地空间中存储的各个当前状态树。而在目标归档服务器成功归档之后,则可以删除本地空间中的各个当前状态树,而在删除本地空间中的当前状态树之后,可以使得本地空间的当前存储空间变大,从而可以减小本地空间的存储压力。
在一种具体实现中,在将归档数据归档至目标归档服务器时,也需要将针对数据归档处理的开始区块号和结束区块号归档至目标归档服务器,以便于后续目标设备在接收到针对指定区块头的数据查询请求时,可以根据开始区块号和结束区块号进行数据的查询。其中,在将归档数据归档至目标归档服务器时,可以将各个第一区块头中,区块高度最小的第一区块头的区块号作为开始区块号,并将各个第一区块头中,区块高度最大的第一区块头的区块号作为结束区块号。那么,在确定开始区块号和结束区块号之后,可以将本地空间中存储的各个当前状态树作为归档数据,并采用归档数据、开始区块号以及结束区块号生成归档请求。进而将该归档请求发送至目标归档服务器,以请求目标归档服务器对归档数据进行哈希运算,得到归档数据哈希值,并在存储归档数据哈希值、归档数据、开始区块号以及结束区块号后,返回归档数据哈希值。其中,哈希运算可以是摘要哈希运算,也可以是其他方式的哈希运算,在本申请不作限定。
在上述将归档数据归档至目标归档服务器的过程中,如果目标设备接收到目标归档服务器发送的归档数据哈希值,则可以确定归档数据已被目标归档服务器成功归档。而在目标设备确定归档数据被成功归档之后,则可以将归档数据哈希值、归档时间戳、开始区块号、结束区块号、以及目标归档服务器的服务器标识记录在本地空间的归档记录中。以便于后续可以根据本地空间的归档记录进行数据查询。其中,归档时间戳可以是指将归档数据归档至目标归档服务器时的时间,目标归档服务器的服务器标识可以是指目标归档服务器对应的IP地址,也可以是其他能够用于标识该目标归档服务器的信息,在本申请不作限定。在下述描述中,以服务器标识为IP地址为例进行相关的说明。
在一种具体实现中,在目标归档服务器接收到目标设备发送的归档数据,并根据所述归档数据进行哈希运算,得到归档数据哈希值之后,也可以将归档数据哈希值、归档数据、开始区块号、结束区块号后以及归档时间戳记录在目标归档服务器中的归档记录中,以便于可以根据目标归档服务器中的归档记录进行数据查询。
举例来说,假设归档数据以列表的形式进行记录,则上述的归档记录具体可以是归档记录列表,即可以将归档数据等信息记录在本地空间的归档记录列表中,对应的,也可以将归档数据等信息记录在目标归档服务器中的归档记录中。例如,表3所示为在本地空间的归档记录列表:
表3
归档时间戳 | 归档数据哈希值 | 开始区块号 | 结束区块号 | 服务器标识 |
T1 | A | A1 | A2 | IP1 |
T2 | B | B1 | B2 | IP2 |
T3 | C | C1 | C2 | IP3 |
… | … | … | … | … |
表3中的每一行是一次数据归档处理的归档相关信息,该归档记录列表中可以记录每一次数据归档处理的归档相关信息,且可以将每一次数据归档处理的归档相关信息记录在当前归档记录列表的末尾,以保证归档记录列表中所记录内容的有序性,方便后续用户查看归档记录列表。本地空间的归档记录列表中的归档相关信息可以包括归档时间戳、归档数据哈希值、开始区块号、结束区块号、服务器标识。如表3所示,某一次数据归档处理后在归档记录列表中所记录的归档相关信息包括:归档时间戳为T1、归档数据哈希值为A、开始区块号A1、结束区块号A2、服务器标识IP1。
又如,表4所示为在目标归档服务器的归档记录列表:
表4
归档时间戳 | 归档数据哈希值 | 开始区块号 | 结束区块号 | 归档数据 |
T4 | D | D1 | D2 | 归档数据D |
T2 | B | B1 | B2 | 归档数据B |
T5 | E | E1 | E2 | 归档数据E |
… | … | … | … | … |
表4中的每一行是一次数据归档处理的归档相关信息,目标归档服务器的归档记录列表中也可以记录每一次数据归档处理的归档相关信息,且可以将每一次数据归档处理的归档相关信息记录在当前归档记录列表的末尾,以保证归档记录列表中所记录内容的有序性,方便后续用户查看归档记录列表。目标归档服务器的归档记录列表中的归档相关信息可以包括归档时间戳、归档数据哈希值、开始区块号、结束区块号、归档数据。如表4所示,某一次数据归档处理后在归档记录列表中所记录的归档相关信息包括:归档时间戳为T1、归档数据哈希值为A、开始区块号A1、结束区块号A2、归档数据A。
其中,目标归档服务器的归档记录列表与在本地空间的归档记录列表是同步记录的,即本地空间的归档记录列表中的记录在目标归档服务器的归档记录列表中存在相应的记录。在一种具体实现中,如果目标设备可以与多个归档服务器进行通信,即目标设备在本地空间中的每一次所要进行归档的归档数据可以归档至不同的归档服务器中。根据表3中的服务器标识,也可以确定某一次记录的归档数据具体是归档到了哪一个归档服务器。例如,表3中的第三行所记录的信息是某一次数据归档处理的归档相关信息,假设表4所示的归档记录列表对应的目标归档服务器的服务器标识为IP2,则可以根据表3可知,该某一次数据归档处理得到归档数据是归档到服务器标识为IP2的目标归档服务器。则可以在服务器标识为IP2的目标归档服务器的归档记录列表中查询到与该某一次数据归档处理的归档相关信息,例如,表4中的第三行中所记录的信息即是该某一次数据归档处理的归档相关信息。
在一种具体实现中,目标设备在每一次进行数据归档时,是可以将与归档数据相关的信息记录在本地空间的归档记录中、以及目标归档服务器的归档记录中的。那么,后续目标设备在接收到例如数据查询请求时,可以根据上述的两个归档记录中记录的信息进行查询。具体地,目标设备可以响应于针对指定区块头的数据查询请求,以进行数据查询。在目标设备响应该数据查询请求之后,可以在本地空间的归档记录中读取结束区块号,以根据该结束区块号确定是在本地空间对指定区块头的数据进行查询,还是在目标归档服务器中对指定区块头的数据进行查询。例如,如果指定区块头的区块号小于或等于结束区块号,则可以在目标归档服务器中进行查询;如果指定区块头的区块号大于结束区块号,则可以在本地空间中进行查询。
具体地,在指定区块头的区块号小于或等于结束区块号的情况下,可以根据本地空间内的归档记录中的归档数据哈希值,以及指定区块头的区块号生成指定数据查询请求。而在生成指定数据查询请求之后,可以将指定数据查询请求发送至目标归档服务器,以使该目标归档服务器根据指定数据查询请求携带的归档数据哈希值指示的归档数据中的当前状态树,和指定区块头的区块号,确定并返回指定区块头对应的状态数据。目标设备可以接收目标归档服务器返回的指定区块头对应的状态数据,并输出接收到的状态数据。
在指定区块头的指定区块号大于结束区块号的情况下,可以在本地空间中确定指定区块头所指向的新状态树,以及确定位于指定区块头之前的各个区块头所指向的新状态树。进一步的,可以基于确定的各个新状态树,获取指定区块头对应的状态数据,并输出获取到的状态数据。
在一种具体实现中,目标设备可以与一个或多个归档服务器进行通信。当目标设备与一个归档服务器进行通信时,则目标归档服务器即是与目标设备进行通信的归档服务器。当目标设备与多个归档服务器进行通信时,可以从多个归档服务器中确定一个目标归档服务器,以利用该目标归档服务器对归档数据进行归档。其中,可以从多个归档服务器中随机选择一个归档服务器作为目标归档服务器,或者,也可以是按目标选择规则从多个归档服务器中随机选择一个归档服务器作为目标归档服务器。例如,目标选择规则可以是指从多个归档服务器中选择一个最优的归档服务器作为目标归档服务器。其中,最优的评价标准可以是根据每个归档服务器的归档优先级来判定,而最优的归档服务器可以是指归档优先级最高的归档服务器,即指归档优先级最高的归档服务器可以作为目标归档服务器。每个归档服务器的归档优先级可以根据每个归档服务器的归档性能参数来确定。
具体实现中,目标设备可以获取每个归档服务器的归档性能参数,该归档性能参数可以包括剩余存储数据量、传输带宽、安全系数中的一种或多种。而在获取到每个归档服务器的归档性能参数之后,即可以根据归档性能参数确定每个归档服务器的归档优先级,并将最高归档优先级对应的归档服务器确定为目标归档服务器。
以归档性能参数为剩余存储数据量、传输带宽、安全系数中的任一种为例进行说明。假设归档性能参数为剩余存储数据量,则可以获取每个归档服务器的剩余存储数据量。其中,剩余存储数据量越小,其对应的归档服务器的归档优先级也就越低,对应的,剩余存储数据量越大,其对应的归档服务器的归档优先级也就越高。也就是说,最大剩余存储数据量对应的归档服务器的归档优先级最高,则可以将最大剩余存储数据量对应的归档服务器确定为目标归档服务器。在一种实现中,获取每个归档服务器的剩余存储数据量的具体实现方式可以是:目标设备可以向每个归档服务器发送一个剩余数据量获取请求,以请求每个归档服务器返回各自的剩余存储数据量。而当各个归档服务器接收该剩余数据量获取请求之后,可以确定自身的剩余存储数据量,并将该剩余存储数据量返回至目标设备,则目标设备可以接收到各个归档服务器所返回的剩余存储数据量。
假设归档性能参数为传输带宽,则可以获取每个归档服务器的传输带宽。其中,传输带宽越小,其对应的归档服务器的归档优先级也就越低,对应的,传输带宽越大,其对应的归档服务器的归档优先级也就越高。也就是说,最大传输带宽对应的归档服务器的归档优先级最高,则可以将最大传输带宽对应的归档服务器确定为目标归档服务器。在一种实现中,获取每个归档服务器的归档性能参数所包括的传输带宽的具体实现过程可以是:目标设备可以向每个归档服务器发送带宽探测请求,以请求每个归档服务器返回指定数据量的目标数据。那么,在每个归档服务器返回指定数据量的目标数据之后,目标设备可以接收每个归档服务器返回的目标数据。进一步的,目标设备可以基于每个归档服务器返回目标数据所消耗的时长,来确定每个归档服务器的传输带宽。
假设归档性能参数为安全系数,则可以获取每个归档服务器的安全系数。其中,安全系数越小,其对应的归档服务器的归档优先级也就越低,对应的,安全系数越大,其对应的归档服务器的归档优先级也就越高。也就是说,最大安全系数对应的归档服务器的归档优先级最高,则可以将最大安全系数对应的归档服务器确定为目标归档服务器。在一种实现中,获取每个归档服务器的归档性能参数所包括的安全系数的具体实现过程可以是:目标设备可以向每个归档服务器发送一个安全系数获取请求,以请求每个归档服务器返回各自的安全系数。而当各个归档服务器接收该安全系数获取请求之后,可以确定自身的安全系数,并将该安全系数返回至目标设备,则目标设备可以接收到各个归档服务器所返回的安全系数。其中,该安全系数可以用于衡量归档服务器被成功窃取数据的概率。归档服务器确定自身的安全系数的具体实施方式可以是:归档服务器可以统计数据被归档的次数和归档数据被成功窃取的次数,将归档数据被成功窃取的次数与数据被归档的次数之间的比值作为安全系数。或者也可以是:归档服务器可以统计数据被归档数据量和归档数据被成功窃取的数据量,将归档数据被成功窃取的数据量与数据被归档数据量之间的比值作为安全系数。还可以利用其他方式确定归档服务器的归档系数,在本申请不作限定。
在一种具体实现中,可以预先设置归档性能参数与归档优先级的对应关系,那么,目标设备在获取到归档性能参数之后,可以根据获取到的归档性能参数和预先设置的对应关系确定归档性能参数对应的归档优先级。其中,该对应关系可以是指归档性能参数与归档优先级呈正相关,也可以是指归档性能参数与归档优先级之间具体的数值对应关系,在本申请不作限定。例如,在归档性能参数包括剩余存储数据量、传输带宽、安全系数中的一种时,该对应关系可以是指归档性能参数与归档优先级呈正相关,如上述描述的剩余存储数据量越小,其对应的归档服务器的归档优先级也就越低。又如上述描述的传输带宽越小,其对应的归档服务器的归档优先级也就越低。又如上述描述的安全系数越小,其对应的归档服务器的归档优先级也就越低。假设归档性能参数为剩余存储数据量,与目标设备进行通信的归档服务器的数量为3,且3个归档服务器分别对应的剩余存储数据量的大小关系为:P1(归档服务器1)>P2(归档服务器2)>P3(归档服务器3)。根据剩余存储数据量的大小关系可知,3个归档服务器的归档优先级的高低关系为:归档服务器1>归档服务器2>归档服务器3,即归档服务器1的归档优先级最高。
以归档性能参数为剩余存储数据量、传输带宽、安全系数为例进行说明,针对多个归档服务器中的任一归档服务器而言,目标设备可以获取该归档服务器的剩余存储数据量、传输带宽、安全系数,其中,剩余存储数据量、传输带宽以及安全系数的获取方式可以参考上述描述,在本申请不作限定。进一步的,目标设备可以根据该归档服务器的剩余存储数据量确定第一优先级,剩余存储数据量越大,对应的第一优先级也就越高。同理,也可以根据该归档服务器的传输带宽确定第二优先级,也可以根据该归档服务器的安全系数确定第三优先级。而在确定每个归档服务器对应的第一优先级、第二优先级和第三优先级之后,可以根据该3个优先级确定每个归档服务器的归档优先级。例如,针对一个归档服务器而言,可以将第一优先级、第二优先级和第三优先级的和值作为该归档服务器的归档优先级。又如,也可以将各个优先级与其对应的参数权重分别进行加权处理之后,将各个加权处理的和值作为该归档服务器的归档优先级。其中,每个优先级对应的参数权重可以预先设置,可以根据实际的业务需求设置对应的参数权重,可以将业务需求较为看重的归档性能参数对应的参数权重设为较大,各个参数权重之间的和值为1。通过上述方式,可以确定每一个归档服务器的归档优先级,那么,在确定每一个归档服务器的归档优先级之后,则可以将最高归档优先级对应的归档服务器确定为目标归档服务器。
其中,本申请中的优先级(例如上述描述归档优先级、第一优先级、第二优先级、第三优先级)的高低可以理解为数值越大,优先级越高,上述的优先级也可以是其他数值,可以体现优先级和优先级的高低即可。
在上述描述中可知,目标设备可以预先设置归档性能参数与归档优先级的对应关系,同理,在归档性能参数包括剩余存储数据量、传输带宽、安全系数中的多种时,可以设置每一种归档性能参数与其优先级的对应关系。例如,可以设置剩余存储数据量与第一优先级之间的对应关系、传输带宽与第二优先级之间的对应关系、以及安全系数与第三优先级之间的对应关系。为了方便后续根据第一优先级、第二优先级和第三优先级确定归档优先级,此处的对应关系可以是指归档性能参数与归档优先级之间的数值对应关系。例如表5所示为剩余存储数据量与第一优先级之间的对应关系:
表5
剩余存储数据量 | 第一优先级 |
0~K1 | 1 |
K1~K2 | 2 |
K2~K3 | 3 |
… | … |
又如表6所示为传输带宽与第二优先级之间的对应关系:
表6
传输带宽 | 第二优先级 |
0~Q1 | 1 |
Q1~Q2 | 2 |
Q2~Q3 | 3 |
… | … |
又如表7所示为安全系数与第三优先级之间的对应关系:
表7
安全系数 | 第一优先级 |
R1 | 1 |
R2 | 2 |
R3 | 3 |
… | … |
举例来说,假设目标设备与归档服务器进行通信的数量为3(归档服务器1、归档服务器2、归档服务器3),归档性能参数包括剩余存储数据量、传输带宽、安全系数。目标设备在获取到每个归档服务器的归档性能参数之后,可以根据归档性能参数所包括的剩余存储数据量,和如表5所示的剩余存储数据量与第一优先级之间的对应关系确定第一优先级,同理,可以根据传输带宽和如表6所示的对应关系确定第二优先级,可以根据安全系数和如表7所示的对应关系确定第三优先级。假设,归档服务器1的第一优先级为3、第二优先级为2、第三优先级为5,则归档服务器1的归档优先级可以为10(3+2+5)。归档服务器2的第一优先级为5、第二优先级为1、第三优先级为3,则归档服务器2的归档优先级可以为9(5+1+3)。归档服务器3的第一优先级为1、第二优先级为4、第三优先级为2,则归档服务器3的归档优先级可以为7(1+4+2)。从上述可知,归档服务器1的归档优先级最高,则可以将归档服务器1确定为目标归档服务器。
在本申请实施例中,当存在归档需求时,目标设备可以在本地空间中查找目标区块头指向的当前状态树,以及位于目标区块头之前的各个第一区块头指向的当前状态树。进而可以根据查找到的各个当前状态树和查找到的各个当前状态树之间的节点复用情况,重构出目标区块头指向的新状态树,目标区块头指向的新状态树是独立存储目标区块头对应的所有状态数据的。进一步的,可以基于目标区块头指向的新状态树,和位于目标区块头之后的各个第二区块头对应的目标状态数据,重构出各个第二区块头指向的新状态树。其中,任一新状态树,与相应区块头的后一区块头所指向的状态树存在节点复用。在重构出目标区块头指向的新状态树和各个第二区块头指向的新状态树之后,可以将本地空间中存储的各个当前状态树作为归档数据,归档至目标归档服务器,并在成功归档后,删除本地空间中的各个当前状态树。通过上述实施方法,可以构建目标区块头指向的新状态树以及目标区块头之后各个第二区块头所指向的新状态树,其中目标区块头指向的新状态树是独立存储目标区块头对应的所有状态数据,该目标区块头指向的新状态树与目标区块头之前的第一区块头所指向的当前状态树不存在复用的树节点,即该目标区块头指向的新状态树与目标区块头之前的第一区块头所指向的当前状态树不存在节点复用。并且,由于目标区块头之后各个第二区块头所指向的新状态树是基于目标区块头指向的新状态树所构建的,那么同理,任一第二区块头所指向的新状态树可与该任一第二区块头的后一区块头所指向的新状态树存在节点复用,而与目标区块头之前的第一区块头所指向的当前状态树不存在节点复用。那么,后续可以在将本地空间中存储的各个当前状态树作为归档数据,并成功归档至对应的归档服务器中之后,可以删除本地空间中的各个当前状态树,从而释放了区块链节点的存储空间,减小了区块链节点中因大量历史状态数据而给存储空间带来的压力,进而可以有效保障区块链节点运行的稳定性。
本申请实施例提供了一种数据归档方法,该数据归档方法可由上述所提及的目标设备执行。请参阅图4,该数据归档方法可包括以下步骤S401-S408:
S401,当存在针对目标区块头的归档需求时,在本地空间中查找目标区块头指向的当前状态树,以及位于目标区块头之前的各个第一区块头指向的当前状态树。
S402,根据查找到的各个当前状态树之间的节点复用情况,从查找到的各个当前树中确定一个或多个复用树节点。
其中,复用树节点可以指:在目标区块头指向的当前状态树和任一第一区块头指向的当前状态树中,被复用的树节点。例如,在图1b中,区块头99指向的当前状态树中的拓展节点51、分支节点52、拓展节点53、数据节点54、拓展节点55、数据节点56是被区块头100指向的当前状态树所复用的树节点,则这些复用的树节点也就是复用树节点。
S403,复制一个或多个复用树节点,以及复制查找到的目标区块头指向的当前状态树中的各个树节点。
S404,采用复制得到的树节点,重构出目标区块头指向的新状态树。
在步骤S403和步骤S404中,可以复制一个或多个复用树节点,以及复制查找到的目标区块头指向的当前状态树中的各个树节点,并采用复制得到的树节点,重构出目标区块头指向的新状态树。该复制得到的树节点可以包括:复制得到的各个复用树节点,以及复制得到的目标区块头指向的当前状态树中的各个树节点。例如,以图1b为例,假设目标区块头为区块头100,目标区块头指向的当前状态树中的各个树节点可以如图1b中的拓展节点21、分支节点22、拓展节点23、数据节点24,且区块头100指向的当前状态树所复用的树节点是区块头99指向的当前状态树中的树节点。即上述描述的区块头99指向的当前状态树中的拓展节点15、分支节点16、拓展节点17、数据节点18、拓展节点19、数据节点20。那么,根据上述的各个树节点可以重构出目标区块头指向的新状态树,该目标区块头指向的新状态树可以如图5a所示。
S405,针对第m个第二区块头,基于第m个第二区块头对应的目标状态数据,生成新叶子节点。
其中,第二区块头的数量为M个,M为正整数,m∈[1,M]。第m个第二区块头对应的目标状态数据是指:第m个第二区块头对应的多个状态数据中,与第m个第二区块头的前一区块头对应的各个状态数据均不同的状态数据。
在一种具体实现中,第m个第二区块头对应的目标状态数据的获取方式可以是通过交易得到,也可以是从该第m个第二区块头所指向的当前状态树中得到。
在一种实现方式中,通过交易得到第二区块头对应的目标状态数据的具实施过程可以包括:目标设备可以获取位于目标区块头之后的各个第二区块头所对应的交易数据,其中,每一个第二区块头所对应的交易数据可以用于指示针对一个或多个状态数据的交易操作。例如,以第m个第二区块头为例,第m个第二区块头中的交易数据指示了对第m个第二区块头的前一区块头中的状态数据的交易操作,假设m等于1,则第m个第二区块头中的交易数据指示了对目标区块头中的状态数据的交易操作。那么,按照区块高度从低到高的顺序,可以基于目标区块头指向的新状态树存储的所有状态数据,依次重执行各个第二区块头对应的交易数据所指示的交易操作,以得到各个第二区块头的目标状态数据。可以理解的是,假设m等于1,则第m个第二区块头的目标状态数据是基于目标区块头指向的新状态树存储的所有状态数据,重执行第m个第二区块头对应的交易数据所指示的交易操作所得到。第m+1个第二区块头的目标状态数据是基于第m个第二区块头指向的新状态树存储的所有状态数据,重执行第m+1个第二区块头对应的交易数据所指示的交易操作所得到。其中,第m个第二区块头指向的新状态树的构建可以参考下述描述。
另一种具体实现中,通过第二区块头所指向的当前状态树得到该第二区块头对应的目标状态数据的具实施过程可以包括:目标设备可以遍历位于目标区块头之后的各个第二区块头,并确定当前遍历的当前第二区块头,在确定当前第二区块头之后,可以从该当前第二区块头指向的当前状态树中,复制得到当前第二区块头的目标状态数据。假设当前第二区块头为第m个第二区块头,复制得到第m个第二区块头的目标状态数据的具体实施过程可以为如下描述。可以理解的是,所述第m个第二区块头所指向的当前状态树中所包括的树节点存储有用于指向下一层树节点的哈希指针,则目标设备可以根据当前状态树所包括的树节点中的哈希指针,确定多条节点路径,而每条节点路径所包括的最后一个节点(数据节点)中存储的数据即为目标状态数据。例如,假设将当前状态树中的树节点划分为根节点(可以是状态快照)、中间节点(中间节点可以包括拓展节点和分支节点)和叶子节点(数据节点)则从当前状态树中确定多条节点路径中的任一条节点路径的实现过程可以如下:目标设备可以根据根节点对应的第一哈希指针确定该第一哈希指针所指向的目标中间节点,在确定目标中间节点之后,可以根据该目标中间节点对应的第二哈希指针确定该第二哈希指针所指向的目标叶子节点,而根节点、目标中间节点和目标叶子节点所构成的路径即可以确定为节点路径。
S406,将第m个第二区块头对应的目标状态数据,存储至新叶子节点。
S407,基于存储了目标状态数据的新叶子节点,以及第m个第二区块头的前一区块头的新状态树,重构第m个第二区块头指向的新状态树。
在步骤S406和步骤S407中,在确定第m个第二区块头对应的目标状态数据之后,既可以根据第m个第二区块头对应的目标状态数据,以及第m个第二区块头的前一区块头的新状态树,重构第m个第二区块头指向的新状态树。例如,以m等于1为例进行说明,则第m个第二区块头的前一区块头的新状态树也就是目标区块头所指向的新状态树。具体地,目标设备可以将第m个第二区块头对应的目标状态数据,存储至新叶子节点,该新叶子节点也就是针对第m个第二区块头所指向的新状态树中的数据节点。进一步的,可以基于存储了目标状态数据的新叶子节点,以及第m个第二区块头的前一区块头的新状态树,重构第m个第二区块头指向的新状态树。通过上述方法,则可以重构每一个第二区块头指向的新状态树。其中,针对第二区块头指向的新状态树而言,任一新状态树可以与相应区块头的后一区块头所指向的新状态树存在节点复用。例如,第m个第二区块头指向的新状态树与第m+1个第二区块头指向的新状态树存在节点复用。
例如,假设目标区块头为区块头100,则第m个第二区块头为区块头101,图5b所示中的数据节点51中的AAA即是区块头101对应的目标状态数据,那么可以根据该数据节点计算一个哈希值,而该哈希值可以作为该数据节点的父节点中的哈希指针,该数据节点的父节点也就是拓展节点52,则可以将该哈希值填充至拓展节点52中,同理,根据填充后的拓展节点52再次计算一个哈希值,并将该哈希值填充至分支节点53中字符“5”对应的位置。依次类推,可以计算得到区块头101中中所存储的状态快照。而区块头100中对应的未更新过的历史状态数据所在的分支中的树节点可以被区块头101指向的状态树所复用。
S408,将本地空间中存储的各个当前状态树作为归档数据,归档至目标归档服务器,并在成功归档后,删除本地空间中的各个当前状态树。
其中,步骤S401和S408的具体实施方式可以参见上述实施例步骤S201和S204的具体描述,此处不再赘述。
在本申请实施例中,所构建的目标区块头指向的新状态树是独立存储目标区块头对应的所有状态数据,该目标区块头指向的新状态树与目标区块头之前的第一区块头所指向的当前状态树不存在复用的树节点,即该目标区块头指向的新状态树与目标区块头之前的第一区块头所指向的当前状态树不存在节点复用。并且,由于目标区块头之后各个第二区块头所指向的新状态树是基于目标区块头指向的新状态树所构建的,那么同理,任一第二区块头所指向的新状态树可与该任一第二区块头的后一区块头所指向的新状态树存在节点复用,而与目标区块头之前的第一区块头所指向的当前状态树不存在节点复用。那么,后续可以在将本地空间中存储的各个当前状态树作为归档数据,并成功归档至对应的归档服务器中之后,可以删除本地空间中的各个当前状态树,释放了区块链节点的存储空间,减小了区块链节点中因大量历史状态数据而给存储空间带来的压力,从而可以提升区块链节点的运行性能,进而保证区块链节点在运行过程中的稳定性。
为更好的理解本申请实施例所提供的数据归档方法,下面结合图6a和图6b进行进一步说明,图6a中所示的数据归档方法涉及了归档管理员、目标设备(目标设备即是区块链节点,下述描述中以区块链节点为例进行描述)以及目标归档服务器,本实施例主要描述了归档管理员、目标设备以及目标归档服务器之间的交互过程。如图6a所示,数据归档的具体实现过程包括以下步骤s1-s12:
s1,当归档管理员有针对目标区块头的归档需求时,归档管理员可以向区块链节点发送归档数据请求,该归档数据请求中可以包括目标区块号,该目标区块号可以是上述描述中的目标区块头的区块头号。
s2,区块链节点可以判断目标区块号是否大于当前区块号,且小于或等于最新区块号,如果判断结果为目标区块号大于当前区块号,且小于或等于最新区块号,则继续以下操作。如果判断结果不为上述结果,则可以返回一个报错信息,以便于归档管理员可以根据该报错信息对归档数据请求进行调整。其中,该当前区块号可以是上述描述中的当前区块头的区块号,也可以是上述描述中的各个第一区块头中,区块高度最小的第一区块头的区块号,最新区块号可以是上述描述中的最新区块头的区块号。
s3,区块链节点可以把当前区块号作为开始区块号,把目标区块号减一作为结束区块号。其中,开始区块号可以是上述描述中的各个第一区块头中,区块高度最小的第一区块头的区块号,开始区块号也就是当前区块号;结束区块号可以是上述描述中的各个第一区块头中,区块高度最大的第一区块头的区块号。
s4,区块链节点可以通过在磁盘中复制目标区块的状态快照所指向的状态树(MPT)的各个树节点,得到目标区块的状态数据的集合,例如,图6b所示为本申请实施例提供的一种数据归档系统的架构示意图。图6b中区块头100可以是指目标区块对应的目标区块头,而该区块头100中的状态快照所指向的状态树可以如图6b中的MPT,目标设备可以将存储在磁盘中的目标区块的状态快照所指向的状态树加载到内存中,以在内存中根据该状态树得到目标区块的状态数据的集合,在数据归档过程中,可以将数据归档中所要利用的,且在磁盘中的数据加载到内存中进行相关的处理。具体地,区块链节点可以查找目标区块头指向的当前状态树,以及位于目标区块头之前的各个第一区块头指向的当前状态树。从而可以根据查找到的各个当前状态树和查找到的各个当前状态树之间的节点复用情况,重构出目标区块头指向的新状态树,目标区块头指向的新状态树中存储的所有状态数据即是目标区块的状态数据的集合。
s5,区块链节点可以在目标区块的状态数据的集合基础上按区块号顺序依次重执行目标区块后各个区块内的交易,以得到目标区块后各个区块内的状态数据的集合,该区块号顺序可以是指区块高度从低到高的顺序。具体地,区块链节点可以获取位于目标区块之后的各个第二区块所对应的交易数据,一个交易数据用于指示针对一个或多个状态数据的交易操作。在获取到交易数据之后,可以按照区块高度从低到高的顺序,基于目标区块指向的新状态树存储的所有状态数据,依次重执行各个第二区块头对应的交易数据所指示的交易操作,得到各个第二区块头的目标状态数据。而在得到各个第二区块头的目标状态数据之后,区块链节点还可以基于目标区块指向的新状态树,和位于目标区块头之后的各个第二区块头对应的目标状态数据,重构出各个第二区块头指向的新状态树。
s6,区块链节点可以把开始区块号、结束区块号、历史数据传送至目标归档服务器,历史数据也就是归档数据,可以将本地空间中存储的各个当前状态树作为归档数据。
s7,目标归档服务器接收到区块链节点的归档数据后,可以对归档数据作哈希处理,以得到归档数据的归档数据哈希值。
s8,目标归档服务器把归档时间戳、归档数据哈希值、归档数据的开始区块号、结束区块号、归档数据记录到目标归档服务器的归档数据列表中。
s9,目标归档服务器把归档数据哈希值返回给区块链节点。
s10,区块链节点等待目标归档服务器返回归档数据哈希值后删除本地历史数据,本地历史数据可以是指本地空间中的各个当前状态树。
s11,区块链节点把目标归档服务器返回的归档数据哈希值,以及归档时间戳、开始区块号、结束区块号、目标归档服务器的服务器标识(例如服务器的IP地址)记录到本地空间中的归档记录列表,该归档记录列表可以如图6b中的所示的归档记录列表。
s12,区块链节点把当前区块号更新为目标区块号。
通过上述方法,可以在归档数据成功归档至对应的归档服务器中之后,删除本地空间中的各个当前状态树,从而释放区块链节点的存储空间,减小区块链节点中因大量历史状态数据而给存储空间带来的压力,进而可以有效保障区块链节点运行的稳定性。
基于上述数据归档方法实施例的描述,本申请实施例还公开了一种数据归档装置,该数据归档装置可以是运行于上述所提及的目标设备中的一个计算机程序(包括程序代码)。该数据归档装置可以执行图2或图4所示的方法。请参见图7,所述数据归档装置可以运行如下单元:
查找单元701,用于当存在针对目标区块头的归档需求时,在本地空间中查找所述目标区块头指向的当前状态树,以及位于所述目标区块头之前的各个第一区块头指向的当前状态树;任一区块头指向的当前状态树是指:当存在所述归档需求时,所述任一区块头指向的状态树;
第一重构单元702,用于根据查找到的各个当前状态树和所述查找到的各个当前状态树之间的节点复用情况,重构出所述目标区块头指向的新状态树;所述目标区块头指向的新状态树独立存储所述目标区块头对应的所有状态数据;
第二重构单元703,用于基于所述目标区块头指向的新状态树,和位于所述目标区块头之后的各个第二区块头对应的目标状态数据,重构出所述各个第二区块头指向的新状态树;任一新状态树,与相应区块头的后一区块头所指向的新状态树存在节点复用;
归档单元704,用于将所述本地空间中存储的各个当前状态树作为归档数据,归档至目标归档服务器;并在成功归档后,删除所述本地空间中的各个当前状态树。
再一种实现方式中,所述第一重构单元702,在用于根据查找到的各个当前状态树和所述查找到的各个当前状态树之间的节点复用情况,重构出所述目标区块头指向的新状态树时,可具体用于:
根据查找到的各个当前状态树之间的节点复用情况,从所述查找到的各个当前树中确定一个或多个复用树节点;所述复用树节点是指:在所述目标区块头指向的当前状态树和任一第一区块头指向的当前状态树中,被复用的树节点;
复制所述一个或多个复用树节点,以及复制查找到的所述目标区块头指向的当前状态树中的各个树节点;
采用复制得到的树节点,重构出所述目标区块头指向的新状态树。
再一种实现方式中,所述第二区块头的数量为M个,M为正整数;第m个第二区块头对应的目标状态数据是指:所述第m个第二区块头对应的多个状态数据中,与所述第m个第二区块头的前一区块头对应的各个状态数据均不同的状态数据;其中,m∈[1,M];所述第二重构单元703,在用于基于所述目标区块头指向的新状态树,和位于所述目标区块头之后的各个第二区块头对应的目标状态数据,重构出所述各个第二区块头指向的新状态树时,可具体用于:
针对第m个第二区块头,基于所述第m个第二区块头对应的目标状态数据,生成新叶子节点;
将所述第m个第二区块头对应的目标状态数据,存储至所述新叶子节点;
基于存储了所述目标状态数据的新叶子节点,以及所述第m个第二区块头的前一区块头的新状态树,重构所述第m个第二区块头指向的新状态树;
其中,所述第m个第二区块头指向的新状态树和所述前一区块头指向的新状态树之间,复用至少一个叶子节点;且m等于1时,所述前一区块头为所述目标区块头。
再一种实现方式中,所述第二重构单元703,可还用于:
获取位于所述目标区块头之后的各个第二区块头所对应的交易数据,一个交易数据用于指示针对一个或多个状态数据的交易操作;
按照区块高度从低到高的顺序,基于所述目标区块头指向的新状态树存储的所有状态数据,依次重执行所述各个第二区块头对应的交易数据所指示的交易操作,得到所述各个第二区块头的目标状态数据。
再一种实现方式中,所述第二重构单元703,可还用于:
遍历位于所述目标区块头之后的各个第二区块头,并确定当前遍历的当前第二区块头;
从所述当前第二区块头指向的当前状态树中,复制得到所述当前第二区块头的目标状态数据。
再一种实现方式中,所述归档单元704,在用于将所述本地空间中存储的各个当前状态树作为归档数据,归档至目标归档服务器时,可具体用于:
将所述各个第一区块头中,区块高度最小的第一区块头的区块号作为开始区块号;以及,将所述各个第一区块头中,区块高度最大的第一区块头的区块号作为结束区块号;
将所述本地空间中存储的各个当前状态树作为归档数据,并采用所述归档数据、所述开始区块号以及所述结束区块号生成归档请求;
将所述归档请求发送至目标归档服务器,以请求所述目标归档服务器对所述归档数据进行哈希运算,得到归档数据哈希值,并在存储所述归档数据哈希值、所述归档数据、所述开始区块号以及所述结束区块号后,返回所述归档数据哈希值。
再一种实现方式中,所述归档单元704,可还用于:
若接收到所述目标归档服务器发送的所述归档数据哈希值,则确定所述归档数据被成功归档;
将所述归档数据哈希值、归档时间戳、所述开始区块号、所述结束区块号、以及所述目标归档服务器的服务器标识记录在所述本地空间的归档记录中。
再一种实现方式中,所述装置还包括查询单元705,所述查询单元705,可具体用于:
响应于针对指定区块头的数据查询请求,在所述本地空间的归档记录中读取所述结束区块号;
若所述指定区块头的区块号小于或等于所述结束区块号,则根据所述本地空间内的归档记录中的归档数据哈希值,以及所述指定区块头的区块号生成指定数据查询请求;
将所述指定数据查询请求发送至所述目标归档服务器,以使所述目标归档服务器根据所述指定数据查询请求携带的归档数据哈希值指示的归档数据中的当前状态树,和指定区块头的区块号,确定并返回所述指定区块头对应的状态数据;
接收所述目标归档服务器返回的所述指定区块头对应的状态数据,并输出接收到的状态数据。
再一种实现方式中,所述查询单元705,可还用于:
若所述指定区块头的指定区块号大于所述结束区块号,则在所述本地空间中确定所述指定区块头所指向的新状态树,以及位于所述指定区块头之前的各个区块头所指向的新状态树;
基于确定的各个新状态树,获取所述指定区块头对应的状态数据,并输出获取到的状态数据。
再一种实现方式中,所述目标设备与多个归档服务器进行通信,所述归档单元704,可还用于:
获取每个归档服务器的归档性能参数,所述归档性能参数包括剩余存储数据量、传输带宽、安全系数中的一种或多种,所述安全系数用于衡量归档服务器被成功窃取数据的概率;
根据所述归档性能参数确定所述每个归档服务器的归档优先级,并将最高归档优先级对应的归档服务器确定为目标归档服务器。
再一种实现方式中,所述归档性能参数包括传输带宽;所述归档单元704,在用于获取每个归档服务器的归档性能参数时,可具体用于:
向所述每个归档服务器发送带宽探测请求,以请求所述每个归档服务器返回指定数据量的目标数据;
接收所述每个归档服务器返回的所述目标数据,并基于所述每个归档服务器返回所述目标数据所消耗的时长,确定所述每个归档服务器的传输带宽。
再一种实现方式中,所述查找单元701,可还用于:
当存在针对所述目标区块头的归档需求时,在区块头链中确定当前区块头;所述当前区块头是指:在所述本地空间中指向有状态树,且区块高度最小的区块头;
在所述区块头链中确定最新区块头,所述最新区块头是指:在所述本地空间中指向有状态树,且区块高度最大的区块头;
若所述目标区块头的区块高度大于所述当前区块头的区块高度,且小于所述最新区块头的区块高度,则执行在本地空间中查找所述目标区块头指向的当前状态树,以及位于所述目标区块头之前的各个第一区块头指向的当前状态树的步骤;
其中,所述当前区块头以及所述当前区块头和所述目标区块头之间的各个区块头,均被作为所述第一区块头;所述最新区块头以及所述最新区块头和所述目标区块头之间的各个区块头,均被作为所述第二区块头。
根据本申请的一个实施例,图2或图4所示的方法所涉及的各个步骤均可以是由图7所示的数据归档装置中的各个单元执行的。例如,图2所示的步骤S201由图7中所示的查找单元701来执行,S202由图7中所示的第一重构单元702来执行,S203由图7中所示的第二重构单元703来执行,S204由图7中所示的归档单元704来执行。又如,图4所示的步骤S401由图7中所示的查找单元701来执行,步骤S402至步骤S404由图7中所示的第一重构单元702来执行,步骤S405至步骤S407由图7中所示的第二重构单元703来执行,S408由图7中所示的归档单元704来执行。
根据本申请的另一个实施例,图7所示的数据归档装置中的各个单元可以分别或者全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以是由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其他实施例中,基于数据归档装置也可以包括其他单元,在实际应用中,这些功能也可以由其他单元协助实现,并且可以由多个单元协作实现。
根据本申请的另一个实施例,可以通过包括中央处理单元(Central ProcessingUnit,CPU),随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件。例如计算机的通用计算设备上运行能够执行如图2或图4中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图7所示的数据归档装置,以及来实现本申请实施例的数据归档方法。所述的计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述目标设备中,并在其中运行。
在本申请实施例中,当存在归档需求时,目标设备可以在本地空间中查找目标区块头指向的当前状态树,以及位于目标区块头之前的各个第一区块头指向的当前状态树。进而可以根据查找到的各个当前状态树和查找到的各个当前状态树之间的节点复用情况,重构出目标区块头指向的新状态树,目标区块头指向的新状态树是独立存储目标区块头对应的所有状态数据的。进一步的,可以基于目标区块头指向的新状态树,和位于目标区块头之后的各个第二区块头对应的目标状态数据,重构出各个第二区块头指向的新状态树。其中,任一新状态树,与相应区块头的后一区块头所指向的状态树存在节点复用。在重构出目标区块头指向的新状态树和各个第二区块头指向的新状态树之后,可以将本地空间中存储的各个当前状态树作为归档数据,归档至目标归档服务器,并在成功归档后,删除本地空间中的各个当前状态树。通过上述实施方法,可以实现对区块链节点中所存储的过期的状态数据进行归档处理,来释放区块链节点的存储空间,减轻区块链节点的存储压力,从而提升区块链节点的运行性能,进而保证区块链节点在运行过程中的稳定性。
基于上述数据归档方法实施例的描述,本申请实施例还公开了一种数据归档设备,该数据归档设备可以是上述实施例中的目标设备,请参见图8,该数据归档设备至少可包括处理器801、输入设备802、输出设备803以及计算机存储介质804。其中,数据归档设备内的处理器801、输入设备802、输出设备803以及计算机存储介质804可通过总线或其他方式连接。
所述计算机存储介质804是数据归档设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质804既可以包括数据归档设备的内置存储介质,当然也可以包括数据归档设备支持的扩展存储介质。计算机存储介质804提供存储空间,该存储空间存储了数据归档设备的操作系统。并且,在该存储空间中还存放了适于被处理器801加载并执行的一条或多条指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速RAM存储器;可选的,还可以是至少一个远离前述处理器的计算机存储介质、所述处理器可以称为中央处理单元(CentralProcessing Unit,CPU),是数据归档设备的核心以及控制中心,适于被实现一条或多条指令,具体加载并执行一条或多条指令从而实现相应的方法流程或功能。
在一种可行的实施例中,可由处理器801加载并执行计算机存储介质中存放的一条或多条第一指令,以实现上述有关数据归档方法实施例中的方法的相应步骤;具体实现中,计算机存储介质中的一条或多条第一指令由处理器801加载并执行如下操作:
当存在针对目标区块头的归档需求时,在本地空间中查找所述目标区块头指向的当前状态树,以及位于所述目标区块头之前的各个第一区块头指向的当前状态树;任一区块头指向的当前状态树是指:当存在所述归档需求时,所述任一区块头指向的状态树;
根据查找到的各个当前状态树和所述查找到的各个当前状态树之间的节点复用情况,重构出所述目标区块头指向的新状态树;所述目标区块头指向的新状态树独立存储所述目标区块头对应的所有状态数据;
基于所述目标区块头指向的新状态树,和位于所述目标区块头之后的各个第二区块头对应的目标状态数据,重构出所述各个第二区块头指向的新状态树;任一新状态树,与相应区块头的后一区块头所指向的新状态树存在节点复用;
将所述本地空间中存储的各个当前状态树作为归档数据,归档至目标归档服务器;并在成功归档后,删除所述本地空间中的各个当前状态树。
再一种实现方式中,在根据查找到的各个当前状态树和所述查找到的各个当前状态树之间的节点复用情况,重构出所述目标区块头指向的新状态树时,所述一条或多条指令由处理器801加载并具体执行:
根据查找到的各个当前状态树之间的节点复用情况,从所述查找到的各个当前树中确定一个或多个复用树节点;所述复用树节点是指:在所述目标区块头指向的当前状态树和任一第一区块头指向的当前状态树中,被复用的树节点;
复制所述一个或多个复用树节点,以及复制查找到的所述目标区块头指向的当前状态树中的各个树节点;
采用复制得到的树节点,重构出所述目标区块头指向的新状态树。
再一种实现方式中,所述第二区块头的数量为M个,M为正整数;第m个第二区块头对应的目标状态数据是指:所述第m个第二区块头对应的多个状态数据中,与所述第m个第二区块头的前一区块头对应的各个状态数据均不同的状态数据;其中,m∈[1,M];在基于所述目标区块头指向的新状态树,和位于所述目标区块头之后的各个第二区块头对应的目标状态数据,重构出所述各个第二区块头指向的新状态树时,所述一条或多条指令由处理器801加载并具体执行:
针对第m个第二区块头,基于所述第m个第二区块头对应的目标状态数据,生成新叶子节点;
将所述第m个第二区块头对应的目标状态数据,存储至所述新叶子节点;
基于存储了所述目标状态数据的新叶子节点,以及所述第m个第二区块头的前一区块头的新状态树,重构所述第m个第二区块头指向的新状态树;
其中,所述第m个第二区块头指向的新状态树和所述前一区块头指向的新状态树之间,复用至少一个叶子节点;且m等于1时,所述前一区块头为所述目标区块头。
再一种实现方式中,所述一条或多条指令由处理器801加载并还执行:
获取位于所述目标区块头之后的各个第二区块头所对应的交易数据,一个交易数据用于指示针对一个或多个状态数据的交易操作;
按照区块高度从低到高的顺序,基于所述目标区块头指向的新状态树存储的所有状态数据,依次重执行所述各个第二区块头对应的交易数据所指示的交易操作,得到所述各个第二区块头的目标状态数据。
再一种实现方式中,所述一条或多条指令由处理器801加载并还执行:
遍历位于所述目标区块头之后的各个第二区块头,并确定当前遍历的当前第二区块头;
从所述当前第二区块头指向的当前状态树中,复制得到所述当前第二区块头的目标状态数据。
再一种实现方式中,在将所述本地空间中存储的各个当前状态树作为归档数据,归档至目标归档服务器时,所述一条或多条指令由处理器801加载并还执行:
将所述各个第一区块头中,区块高度最小的第一区块头的区块号作为开始区块号;以及,将所述各个第一区块头中,区块高度最大的第一区块头的区块号作为结束区块号;
将所述本地空间中存储的各个当前状态树作为归档数据,并采用所述归档数据、所述开始区块号以及所述结束区块号生成归档请求;
将所述归档请求发送至目标归档服务器,以请求所述目标归档服务器对所述归档数据进行哈希运算,得到归档数据哈希值,并在存储所述归档数据哈希值、所述归档数据、所述开始区块号以及所述结束区块号后,返回所述归档数据哈希值。
再一种实现方式中,所述一条或多条指令由处理器801加载并还执行:
若接收到所述目标归档服务器发送的所述归档数据哈希值,则确定所述归档数据被成功归档;
将所述归档数据哈希值、归档时间戳、所述开始区块号、所述结束区块号、以及所述目标归档服务器的服务器标识记录在所述本地空间的归档记录中。
再一种实现方式中,所述一条或多条指令由处理器801加载并还执行:
响应于针对指定区块头的数据查询请求,在所述本地空间的归档记录中读取所述结束区块号;
若所述指定区块头的区块号小于或等于所述结束区块号,则根据所述本地空间内的归档记录中的归档数据哈希值,以及所述指定区块头的区块号生成指定数据查询请求;
将所述指定数据查询请求发送至所述目标归档服务器,以使所述目标归档服务器根据所述指定数据查询请求携带的归档数据哈希值指示的归档数据中的当前状态树,和指定区块头的区块号,确定并返回所述指定区块头对应的状态数据;
接收所述目标归档服务器返回的所述指定区块头对应的状态数据,并输出接收到的状态数据。
再一种实现方式中,所述一条或多条指令由处理器801加载并还执行:
若所述指定区块头的指定区块号大于所述结束区块号,则在所述本地空间中确定所述指定区块头所指向的新状态树,以及位于所述指定区块头之前的各个区块头所指向的新状态树;
基于确定的各个新状态树,获取所述指定区块头对应的状态数据,并输出获取到的状态数据。
再一种实现方式中,所述目标设备与多个归档服务器进行通信,所述一条或多条指令由处理器801加载并还执行:
获取每个归档服务器的归档性能参数,所述归档性能参数包括剩余存储数据量、传输带宽、安全系数中的一种或多种,所述安全系数用于衡量归档服务器被成功窃取数据的概率;
根据所述归档性能参数确定所述每个归档服务器的归档优先级,并将最高归档优先级对应的归档服务器确定为目标归档服务器。
再一种实现方式中,所述归档性能参数包括传输带宽;在获取每个归档服务器的归档性能参数时,所述一条或多条指令由处理器801加载并还执行:
向所述每个归档服务器发送带宽探测请求,以请求所述每个归档服务器返回指定数据量的目标数据;
接收所述每个归档服务器返回的所述目标数据,并基于所述每个归档服务器返回所述目标数据所消耗的时长,确定所述每个归档服务器的传输带宽。
再一种实现方式中,所述一条或多条指令由处理器801加载并还执行:
当存在针对所述目标区块头的归档需求时,在区块头链中确定当前区块头;所述当前区块头是指:在所述本地空间中指向有状态树,且区块高度最小的区块头;
在所述区块头链中确定最新区块头,所述最新区块头是指:在所述本地空间中指向有状态树,且区块高度最大的区块头;
若所述目标区块头的区块高度大于所述当前区块头的区块高度,且小于所述最新区块头的区块高度,则执行在本地空间中查找所述目标区块头指向的当前状态树,以及位于所述目标区块头之前的各个第一区块头指向的当前状态树的步骤;
其中,所述当前区块头以及所述当前区块头和所述目标区块头之间的各个区块头,均被作为所述第一区块头;所述最新区块头以及所述最新区块头和所述目标区块头之间的各个区块头,均被作为所述第二区块头。
在本申请实施例中,当存在归档需求时,目标设备可以在本地空间中查找目标区块头指向的当前状态树,以及位于目标区块头之前的各个第一区块头指向的当前状态树。进而可以根据查找到的各个当前状态树和查找到的各个当前状态树之间的节点复用情况,重构出目标区块头指向的新状态树,目标区块头指向的新状态树是独立存储目标区块头对应的所有状态数据的。进一步的,可以基于目标区块头指向的新状态树,和位于目标区块头之后的各个第二区块头对应的目标状态数据,重构出各个第二区块头指向的新状态树。其中,任一新状态树,与相应区块头的后一区块头所指向的状态树存在节点复用。在重构出目标区块头指向的新状态树和各个第二区块头指向的新状态树之后,可以将本地空间中存储的各个当前状态树作为归档数据,归档至目标归档服务器,并在成功归档后,删除本地空间中的各个当前状态树。通过上述实施方法,可以实现对区块链节点中所存储的过期的状态数据进行归档处理,来释放区块链节点的存储空间,减轻区块链节点的存储压力,从而提升区块链节点的运行性能,进而保证区块链节点在运行过程中的稳定性。
需要说明的是,本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。数据归档设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该数据归档设备执行上述数据归档方法实施例图2或图4中所执行的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本申请一种较佳实施例而已,当然不能以此来限定本申请之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本申请权利要求所作的等同变化,仍属于发明所涵盖的范围。
Claims (15)
1.一种数据归档方法,其特征在于,包括:
当存在针对目标区块头的归档需求时,在本地空间中查找所述目标区块头指向的当前状态树,以及位于所述目标区块头之前的各个第一区块头指向的当前状态树;任一区块头指向的当前状态树是指:当存在所述归档需求时,所述任一区块头指向的状态树;
根据查找到的各个当前状态树和所述查找到的各个当前状态树之间的节点复用情况,重构出所述目标区块头指向的新状态树;所述目标区块头指向的新状态树独立存储所述目标区块头对应的所有状态数据;
基于所述目标区块头指向的新状态树,和位于所述目标区块头之后的各个第二区块头对应的目标状态数据,重构出所述各个第二区块头指向的新状态树;任一新状态树,与相应区块头的后一区块头所指向的新状态树存在节点复用;
将所述本地空间中存储的各个当前状态树作为归档数据,归档至目标归档服务器;并在成功归档后,删除所述本地空间中的各个当前状态树。
2.如权利要求1所述的方法,其特征在于,所述根据查找到的各个当前状态树和所述查找到的各个当前状态树之间的节点复用情况,重构出所述目标区块头指向的新状态树,包括:
根据查找到的各个当前状态树之间的节点复用情况,从所述查找到的各个当前树中确定一个或多个复用树节点;所述复用树节点是指:在所述目标区块头指向的当前状态树和任一第一区块头指向的当前状态树中,被复用的树节点;
复制所述一个或多个复用树节点,以及复制查找到的所述目标区块头指向的当前状态树中的各个树节点;
采用复制得到的树节点,重构出所述目标区块头指向的新状态树。
3.如权利要求1所述的方法,其特征在于,所述第二区块头的数量为M个,M为正整数;第m个第二区块头对应的目标状态数据是指:所述第m个第二区块头对应的多个状态数据中,与所述第m个第二区块头的前一区块头对应的各个状态数据均不同的状态数据;其中,m∈[1,M];
所述基于所述目标区块头指向的新状态树,和位于所述目标区块头之后的各个第二区块头对应的目标状态数据,重构出所述各个第二区块头指向的新状态树,包括:
针对第m个第二区块头,基于所述第m个第二区块头对应的目标状态数据,生成新叶子节点;
将所述第m个第二区块头对应的目标状态数据,存储至所述新叶子节点;
基于存储了所述目标状态数据的新叶子节点,以及所述第m个第二区块头的前一区块头的新状态树,重构所述第m个第二区块头指向的新状态树;
其中,所述第m个第二区块头指向的新状态树和所述前一区块头指向的新状态树之间,复用至少一个叶子节点;且m等于1时,所述前一区块头为所述目标区块头。
4.如权利要求1所述的方法,其特征在于,所述方法还包括:
获取位于所述目标区块头之后的各个第二区块头所对应的交易数据,一个交易数据用于指示针对一个或多个状态数据的交易操作;
按照区块高度从低到高的顺序,基于所述目标区块头指向的新状态树存储的所有状态数据,依次重执行所述各个第二区块头对应的交易数据所指示的交易操作,得到所述各个第二区块头的目标状态数据。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
遍历位于所述目标区块头之后的各个第二区块头,并确定当前遍历的当前第二区块头;
从所述当前第二区块头指向的当前状态树中,复制得到所述当前第二区块头的目标状态数据。
6.如权利要求1所述的方法,其特征在于,所述将所述本地空间中存储的各个当前状态树作为归档数据,归档至目标归档服务器,包括:
将所述各个第一区块头中,区块高度最小的第一区块头的区块号作为开始区块号;以及,将所述各个第一区块头中,区块高度最大的第一区块头的区块号作为结束区块号;
将所述本地空间中存储的各个当前状态树作为归档数据,并采用所述归档数据、所述开始区块号以及所述结束区块号生成归档请求;
将所述归档请求发送至目标归档服务器,以请求所述目标归档服务器对所述归档数据进行哈希运算,得到归档数据哈希值,并在存储所述归档数据哈希值、所述归档数据、所述开始区块号以及所述结束区块号后,返回所述归档数据哈希值。
7.如权利要求6所述的方法,其特征在于,所述方法还包括:
若接收到所述目标归档服务器发送的所述归档数据哈希值,则确定所述归档数据被成功归档;
将所述归档数据哈希值、归档时间戳、所述开始区块号、所述结束区块号、以及所述目标归档服务器的服务器标识记录在所述本地空间的归档记录中。
8.如权利要求7所述的方法,其特征在于,所述方法还包括:
响应于针对指定区块头的数据查询请求,在所述本地空间的归档记录中读取所述结束区块号;
若所述指定区块头的区块号小于或等于所述结束区块号,则根据所述本地空间内的归档记录中的归档数据哈希值,以及所述指定区块头的区块号生成指定数据查询请求;
将所述指定数据查询请求发送至所述目标归档服务器,以使所述目标归档服务器根据所述指定数据查询请求携带的归档数据哈希值指示的归档数据中的当前状态树,和指定区块头的区块号,确定并返回所述指定区块头对应的状态数据;
接收所述目标归档服务器返回的所述指定区块头对应的状态数据,并输出接收到的状态数据。
9.如权利要求8所述的方法,其特征在于,所述方法还包括:
若所述指定区块头的指定区块号大于所述结束区块号,则在所述本地空间中确定所述指定区块头所指向的新状态树,以及位于所述指定区块头之前的各个区块头所指向的新状态树;
基于确定的各个新状态树,获取所述指定区块头对应的状态数据,并输出获取到的状态数据。
10.如权利要求1-9任一项所述的方法,其特征在于,所述目标设备与多个归档服务器进行通信,所述方法还包括:
获取每个归档服务器的归档性能参数,所述归档性能参数包括剩余存储数据量、传输带宽、安全系数中的一种或多种,所述安全系数用于衡量归档服务器被成功窃取数据的概率;
根据所述归档性能参数确定所述每个归档服务器的归档优先级,并将最高归档优先级对应的归档服务器确定为目标归档服务器。
11.如权利要求10所述的方法,其特征在于,所述归档性能参数包括传输带宽;所述获取每个归档服务器的归档性能参数,包括:
向所述每个归档服务器发送带宽探测请求,以请求所述每个归档服务器返回指定数据量的目标数据;
接收所述每个归档服务器返回的所述目标数据,并基于所述每个归档服务器返回所述目标数据所消耗的时长,确定所述每个归档服务器的传输带宽。
12.如权利要求1所述的方法,其特征在于,所述方法还包括:
当存在针对所述目标区块头的归档需求时,在区块头链中确定当前区块头;所述当前区块头是指:在所述本地空间中指向有状态树,且区块高度最小的区块头;
在所述区块头链中确定最新区块头,所述最新区块头是指:在所述本地空间中指向有状态树,且区块高度最大的区块头;
若所述目标区块头的区块高度大于所述当前区块头的区块高度,且小于所述最新区块头的区块高度,则执行在本地空间中查找所述目标区块头指向的当前状态树,以及位于所述目标区块头之前的各个第一区块头指向的当前状态树的步骤;
其中,所述当前区块头以及所述当前区块头和所述目标区块头之间的各个区块头,均被作为所述第一区块头;所述最新区块头以及所述最新区块头和所述目标区块头之间的各个区块头,均被作为所述第二区块头。
13.一种数据归档装置,其特征在于,包括:
查找单元,用于当存在针对目标区块头的归档需求时,在本地空间中查找所述目标区块头指向的当前状态树,以及位于所述目标区块头之前的各个第一区块头指向的当前状态树;任一区块头指向的当前状态树是指:当存在所述归档需求时,所述任一区块头指向的状态树;
第一重构单元,用于根据查找到的各个当前状态树和所述查找到的各个当前状态树之间的节点复用情况,重构出所述目标区块头指向的新状态树;所述目标区块头指向的新状态树独立存储所述目标区块头对应的所有状态数据;
第二重构单元,用于基于所述目标区块头指向的新状态树,和位于所述目标区块头之后的各个第二区块头对应的目标状态数据,重构出所述各个第二区块头指向的新状态树;任一新状态树,与相应区块头的后一区块头所指向的新状态树存在节点复用;
归档单元,用于将所述本地空间中存储的各个当前状态树作为归档数据,归档至目标归档服务器;并在成功归档后,删除所述本地空间中的各个当前状态树。
14.一种数据归档设备,所述数据归档设备包括输入设备、输出设备,所述数据归档设备还包括处理器和存储介质,所述处理器用于获取存储介质中存储的一条或多条指令,以执行如权利要求1-12中任一项所述的方法。
15.一种计算机存储介质,所述计算机存储介质存储有一条或多条指令,所述一条或多条指令运行时执行如权利要求1-12中任一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110921637.4A CN113360456B (zh) | 2021-08-11 | 2021-08-11 | 数据归档方法、装置、设备以及存储介质 |
PCT/CN2022/100036 WO2023016091A1 (zh) | 2021-08-11 | 2022-06-21 | 数据归档方法、装置、设备、存储介质及计算机程序产品 |
EP22855076.0A EP4310689A1 (en) | 2021-08-11 | 2022-06-21 | Data archiving method and apparatus, device, storage medium, and computer program product |
US18/339,854 US20230334009A1 (en) | 2021-08-11 | 2023-06-22 | Data archiving method and apparatus, device, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110921637.4A CN113360456B (zh) | 2021-08-11 | 2021-08-11 | 数据归档方法、装置、设备以及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113360456A true CN113360456A (zh) | 2021-09-07 |
CN113360456B CN113360456B (zh) | 2021-10-29 |
Family
ID=77522987
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110921637.4A Active CN113360456B (zh) | 2021-08-11 | 2021-08-11 | 数据归档方法、装置、设备以及存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230334009A1 (zh) |
EP (1) | EP4310689A1 (zh) |
CN (1) | CN113360456B (zh) |
WO (1) | WO2023016091A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113971002A (zh) * | 2021-09-26 | 2022-01-25 | 海南火链科技有限公司 | 基于区块链的数据存储方法、装置、设备及可读存储介质 |
WO2023016091A1 (zh) * | 2021-08-11 | 2023-02-16 | 腾讯科技(深圳)有限公司 | 数据归档方法、装置、设备、存储介质及计算机程序产品 |
WO2023093041A1 (zh) * | 2021-11-26 | 2023-06-01 | 深圳前海微众银行股份有限公司 | 区块链状态数据处理方法 |
WO2024037117A1 (zh) * | 2022-08-15 | 2024-02-22 | 腾讯科技(深圳)有限公司 | 一种基于区块链的数据处理方法、设备、介质和程序产品 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109298835A (zh) * | 2018-08-16 | 2019-02-01 | 北京京东尚科信息技术有限公司 | 区块链的数据归档处理方法、装置、设备及存储介质 |
CN110413621A (zh) * | 2019-07-31 | 2019-11-05 | 中国工商银行股份有限公司 | 基于区块链的离线归档系统及方法 |
CN110457319A (zh) * | 2019-07-31 | 2019-11-15 | 阿里巴巴集团控股有限公司 | 区块链状态数据存储方法及装置、电子设备 |
CN110493325A (zh) * | 2019-07-31 | 2019-11-22 | 阿里巴巴集团控股有限公司 | 区块链状态数据同步方法及装置、电子设备 |
CN110602148A (zh) * | 2019-10-10 | 2019-12-20 | 深圳前海微众银行股份有限公司 | 一种区块的状态树的生成和链上数据验证的方法及装置 |
CN110716895A (zh) * | 2019-09-17 | 2020-01-21 | 平安科技(深圳)有限公司 | 目标数据归档方法、装置、计算机设备及介质 |
WO2020044219A1 (fr) * | 2018-08-30 | 2020-03-05 | Lapsechain Sa | Procédé et système sécurisés de partage retardé de données entre un utilisateur émetteur et plusieurs utilisateurs destinataires, avec création distante d'un conteneur et horodatage sur blockchain |
CN112291376A (zh) * | 2020-12-31 | 2021-01-29 | 腾讯科技(深圳)有限公司 | 区块链系统中的数据处理方法及相关设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111475501B (zh) * | 2020-06-24 | 2020-10-30 | 支付宝(杭州)信息技术有限公司 | 区块链网络的数据清理方法及装置 |
CN113360456B (zh) * | 2021-08-11 | 2021-10-29 | 腾讯科技(深圳)有限公司 | 数据归档方法、装置、设备以及存储介质 |
-
2021
- 2021-08-11 CN CN202110921637.4A patent/CN113360456B/zh active Active
-
2022
- 2022-06-21 WO PCT/CN2022/100036 patent/WO2023016091A1/zh active Application Filing
- 2022-06-21 EP EP22855076.0A patent/EP4310689A1/en active Pending
-
2023
- 2023-06-22 US US18/339,854 patent/US20230334009A1/en active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109298835A (zh) * | 2018-08-16 | 2019-02-01 | 北京京东尚科信息技术有限公司 | 区块链的数据归档处理方法、装置、设备及存储介质 |
WO2020044219A1 (fr) * | 2018-08-30 | 2020-03-05 | Lapsechain Sa | Procédé et système sécurisés de partage retardé de données entre un utilisateur émetteur et plusieurs utilisateurs destinataires, avec création distante d'un conteneur et horodatage sur blockchain |
CN110413621A (zh) * | 2019-07-31 | 2019-11-05 | 中国工商银行股份有限公司 | 基于区块链的离线归档系统及方法 |
CN110457319A (zh) * | 2019-07-31 | 2019-11-15 | 阿里巴巴集团控股有限公司 | 区块链状态数据存储方法及装置、电子设备 |
CN110493325A (zh) * | 2019-07-31 | 2019-11-22 | 阿里巴巴集团控股有限公司 | 区块链状态数据同步方法及装置、电子设备 |
CN112887421A (zh) * | 2019-07-31 | 2021-06-01 | 创新先进技术有限公司 | 区块链状态数据同步方法及装置、电子设备 |
CN110716895A (zh) * | 2019-09-17 | 2020-01-21 | 平安科技(深圳)有限公司 | 目标数据归档方法、装置、计算机设备及介质 |
CN110602148A (zh) * | 2019-10-10 | 2019-12-20 | 深圳前海微众银行股份有限公司 | 一种区块的状态树的生成和链上数据验证的方法及装置 |
CN112291376A (zh) * | 2020-12-31 | 2021-01-29 | 腾讯科技(深圳)有限公司 | 区块链系统中的数据处理方法及相关设备 |
Non-Patent Citations (2)
Title |
---|
陈少蔚: "区块链数据如何归档?冷热分离方案了解一下", 《巴比特 HTTPS://WWW.8BTC.COM/MEDIA/6657497》 * |
魏艳: "基于区块链的数据完整性验证技术研究", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023016091A1 (zh) * | 2021-08-11 | 2023-02-16 | 腾讯科技(深圳)有限公司 | 数据归档方法、装置、设备、存储介质及计算机程序产品 |
CN113971002A (zh) * | 2021-09-26 | 2022-01-25 | 海南火链科技有限公司 | 基于区块链的数据存储方法、装置、设备及可读存储介质 |
WO2023093041A1 (zh) * | 2021-11-26 | 2023-06-01 | 深圳前海微众银行股份有限公司 | 区块链状态数据处理方法 |
WO2024037117A1 (zh) * | 2022-08-15 | 2024-02-22 | 腾讯科技(深圳)有限公司 | 一种基于区块链的数据处理方法、设备、介质和程序产品 |
Also Published As
Publication number | Publication date |
---|---|
US20230334009A1 (en) | 2023-10-19 |
EP4310689A1 (en) | 2024-01-24 |
CN113360456B (zh) | 2021-10-29 |
WO2023016091A1 (zh) | 2023-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113360456B (zh) | 数据归档方法、装置、设备以及存储介质 | |
US11153380B2 (en) | Continuous backup of data in a distributed data store | |
CN106815218B (zh) | 数据库访问方法、装置和数据库系统 | |
US7653668B1 (en) | Fault tolerant multi-stage data replication with relaxed coherency guarantees | |
EP3791285A1 (en) | Multi-master architectures for distributed databases | |
US9547706B2 (en) | Using colocation hints to facilitate accessing a distributed data storage system | |
CN105814544B (zh) | 用于支持分布式数据网格中的持久化分区恢复的系统和方法 | |
CN112084258A (zh) | 一种数据同步方法和装置 | |
JPS63201743A (ja) | データ処理システム・ネットワークのためのキャッシング方法 | |
US11221921B2 (en) | Method, electronic device and computer readable storage medium for data backup and recovery | |
WO2011148039A1 (en) | Method and apparatus for eventually consistent delete in a distributed data store | |
CN111400334B (zh) | 数据处理方法、装置、存储介质及电子装置 | |
CN112559637B (zh) | 基于分布式存储的数据处理方法、装置、设备以及介质 | |
US11663192B2 (en) | Identifying and resolving differences between datastores | |
CN110784498B (zh) | 一种个性化数据容灾方法及装置 | |
CN103501319A (zh) | 一种低延迟的面向小文件的分布式存储系统 | |
CN112100160B (zh) | 一种基于Elastic Search的双活实时数据仓库建设方法 | |
CN108762982A (zh) | 一种数据库恢复方法、装置及系统 | |
CN109947730A (zh) | 元数据恢复方法、装置、分布式文件系统及可读存储介质 | |
CN114610680A (zh) | 分布式文件系统元数据管理方法、装置、设备及存储介质 | |
US9870402B2 (en) | Distributed storage device, storage node, data providing method, and medium | |
US20190147047A1 (en) | Object-level image query and retrieval | |
CN111404737B (zh) | 一种容灾处理方法以及相关装置 | |
Pankowski | Consistency and availability of Data in replicated NoSQL databases | |
CN110442573A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40051859 Country of ref document: HK |