CN113326165A - 基于区块链的数据处理方法、设备及计算机可读存储介质 - Google Patents

基于区块链的数据处理方法、设备及计算机可读存储介质 Download PDF

Info

Publication number
CN113326165A
CN113326165A CN202110890413.1A CN202110890413A CN113326165A CN 113326165 A CN113326165 A CN 113326165A CN 202110890413 A CN202110890413 A CN 202110890413A CN 113326165 A CN113326165 A CN 113326165A
Authority
CN
China
Prior art keywords
data
component
data storage
block
state
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
Application number
CN202110890413.1A
Other languages
English (en)
Other versions
CN113326165B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202110890413.1A priority Critical patent/CN113326165B/zh
Publication of CN113326165A publication Critical patent/CN113326165A/zh
Application granted granted Critical
Publication of CN113326165B publication Critical patent/CN113326165B/zh
Priority to PCT/CN2022/099782 priority patent/WO2023011022A1/zh
Priority to EP22851738.9A priority patent/EP4379556A1/en
Priority to US18/300,191 priority patent/US20230259526A1/en
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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种基于区块链的数据处理方法、设备及计算机可读存储介质,该方法包括:获取区块文件,从区块文件中获取针对区块的m个数据类别互不相同的待记账数据集合;根据m个待记账数据集合,对m个数据存储组件并行执行数据写操作,获取m个数据存储组件分别对应的数据存储结果;若m个数据存储结果中存在数据存储失败结果,则获取区块文件对应的区块检查点,以及m个数据存储组件分别对应的组件检查点;根据区块检查点以及m个组件检查点,在m个数据存储组件中确定属于组件异常状态的数据存储组件,根据区块文件对属于组件异常状态的数据存储组件执行数据写操作。采用本申请,可以提升区块链的网络性能以及降低对外业务的响应时间。

Description

基于区块链的数据处理方法、设备及计算机可读存储介质
技术领域
本申请涉及互联网技术领域,尤其涉及一种基于区块链的数据处理方法、设备以及计算机可读存储介质。
背景技术
区块链网络在对区块达成共识之后,区块链节点需要将区块以及与区块相关联的信息写入账本中,现有的节点记账方法是将区块以及与区块相关联的信息串行写入账本(可以包括磁盘以及分布式存储),例如先将共识通过的区块中的区块头写入磁盘或者分布式存储,等该步骤完成后,继续将交易列表以及交易执行结果集分别写入磁盘或者分布式存储,等交易列表和交易执行结果集写完后,再将写集合写入磁盘或者分布式存储,当写集合写完后节点记账完成开始下一轮共识出块。
明显地,采用串行方式进行区块落账不仅具有性能较差的缺陷,还会导致每一轮区块落账延迟较大。
发明内容
本申请实施例提供一种基于区块链的数据处理方法、设备以及计算机可读存储介质,可以提升区块链的网络性能以及降低对外业务的响应时间。
本申请实施例一方面提供了一种基于区块链的数据处理方法,包括:
获取区块文件,从区块文件中获取针对区块的m个数据类别互不相同的待记账数据集合;m为大于1的正整数;
根据m个待记账数据集合,对m个数据存储组件并行执行数据写操作,获取m个数据存储组件分别对应的数据存储结果;其中,一个数据存储组件用于存储一种数据类别的待记账数据集合;
若m个数据存储结果中存在数据存储失败结果,则获取区块文件对应的区块检查点,以及m个数据存储组件分别对应的组件检查点;区块检查点为区块文件中的最大区块高度,m个组件检查点包括m个数据存储组件中分别对应的最大区块高度;
根据区块检查点以及m个组件检查点,在m个数据存储组件中确定属于组件异常状态的数据存储组件,根据区块文件对属于组件异常状态的数据存储组件执行数据写操作。
本申请实施例一方面提供了一种基于区块链的数据处理装置,包括:
第一获取模块,用于获取区块文件,从区块文件中获取针对区块的m个数据类别互不相同的待记账数据集合;m为大于1的正整数;
第二获取模块,用于根据m个待记账数据集合,对m个数据存储组件并行执行数据写操作,获取m个数据存储组件分别对应的数据存储结果;其中,一个数据存储组件用于存储一种数据类别的待记账数据集合;
第二获取模块,还用于若m个数据存储结果中存在数据存储失败结果,则获取区块文件对应的区块检查点,以及m个数据存储组件分别对应的组件检查点;区块检查点为区块文件中的最大区块高度,m个组件检查点包括m个数据存储组件中分别对应的最大区块高度;
第一确定模块,用于根据区块检查点以及m个组件检查点,在m个数据存储组件中确定属于组件异常状态的数据存储组件,根据区块文件对属于组件异常状态的数据存储组件执行数据写操作。
其中,基于区块链的数据处理装置,还包括:
第二确定模块,用于将数据存储结果为数据存储失败结果的数据存储组件,确定为目标数据存储组件;
第二确定模块,还用于从m个待记账数据集合中,获取与目标数据存储组件相关联的目标待记账数据集合;
第三获取模块,用于根据目标待记账数据集合,对目标数据存储组件执行数据写操作,获取目标数据存储组件的数据重写存储结果;
第三获取模块,还用于若数据重写存储结果为数据存储失败结果,则统计目标数据存储组件被执行数据写操作的操作次数;
第三获取模块,还用于当操作次数小于操作次数阈值时,根据目标待记账数据集合,重新对目标数据存储组件执行数据写操作;
第三获取模块,还用于当操作次数等于操作次数阈值时,通知第二获取模块获取区块文件对应的区块检查点,以及m个数据存储组件分别对应的组件检查点。
其中,第一确定模块,包括:
第一确定单元,用于在m个组件检查点中,将小于区块检查点的组件检查点确定为待更新组件检查点;
第一确定单元,还用于在m个数据存储组件中,将与待更新组件检查点对应的数据存储组件确定为待恢复数据存储组件;待恢复数据存储组件的组件状态为组件异常状态;
第二确定单元,用于根据待更新组件检查点以及区块检查点,确定待恢复数据存储组件的待恢复区块高度区间;
第一获取单元,用于从区块文件中,获取属于待恢复区块高度区间的待恢复数据集合;待恢复数据集合对应的数据类别与待恢复数据存储组件对应的数据类别相同;
第一执行单元,用于根据待恢复数据集合,对待恢复数据存储组件执行数据写操作。
其中,m个数据存储组件包括数据存储组件De,m个组件检查点包括数据存储组件De对应的组件检查点Fe,e为正整数且e小于或等于m;
基于区块链的数据处理装置,还包括:
第四获取模快,用于当系统时间达到数据对账周期时,基于组件检查点Fe从缓存区块文件中获取已记账数据集合;已记账数据集合对应的最大区块高度等于组件检查点Fe,已记账数据集合对应的数据类别与数据存储组件De的数据类别相同;缓存区块文件是指存储于缓存层中的区块文件;
第三确定模块,用于将数据存储组件De中的数据,与已记账数据集合中的数据进行对比,得到第一对比结果,根据第一对比结果确定数据存储组件De的组件状态;
第三确定模块,还用于当数据存储组件De的组件状态为组件异常状态时,根据区块文件对属于组件异常状态的数据存储组件De执行数据写操作。
其中,m个数据类别包括状态类别;
第三确定模块,包括:
第二获取单元,用于当数据存储组件De对应的数据类别为状态类别时,获取数据存储组件De中针对第一状态数据的第一版本标识,获取已记账数据集合中针对第一状态数据的第二版本标识;
第一对比单元,用于将第一版本标识与第二版本标识进行对比,得到第一对比结果;
第一对比单元,还用于若第一对比结果为第一版本标识与第二版本标识不同,则确定数据存储组件De的组件状态为组件异常状态。
其中,m个数据类别包括区块类别;
第三确定模块,包括:
第三获取单元,用于当数据存储组件De对应的数据类别为区块类别时,获取数据存储组件De中针对第一区块高度的第一区块标识,获取已记账数据集合中针对第一区块高度的第二区块标识;
第二对比单元,用于将第一区块标识与第二区块标识进行对比,得到第一对比结果;
第二对比单元,还用于若第一对比结果为第一区块标识与第二区块标识不同,则确定数据存储组件De的组件状态为组件异常状态。
其中,m个数据类别包括读写类别;
第三确定模块,包括:
第四获取单元,用于当数据存储组件De对应的数据类别为读写类别时,获取数据存储组件De中针对第二区块高度的第一写数据标识,获取已记账数据集合中针对第二区块高度的第二写数据标识;
第三对比单元,用于将第一写数据标识与第二写数据标识进行对比,得到第一对比结果;
第三对比单元,还用于若第一对比结果为第一写数据标识与第二写数据标识不同,则确定数据存储组件De的组件状态为组件异常状态。
其中,基于区块链的数据处理装置,还包括:
第五获取模块,用于当系统时间达到数据对账周期时,发送用于请求账本数据对账的数据对账请求至共识网络;数据对账请求携带m个组件检查点;
第五获取模块,还用于获取处于共识网络中的共识节点返回的m个待对账数据集合;一个组件检查点对应的数据类别与一个待对账数据集合对应的数据类别相同;m个数据存储组件包括数据存储组件Hi,m个待对账数据集合包括待对账数据集合Ji,数据存储组件Hi对应的数据类别与待对账数据集合Ji对应的数据类别相同,i为正整数,且i小于或等于m;
第四确定模块,用于将待对账数据集合Ji中的数据,与数据存储组件Hi中的数据进行对比,得到第二对比结果,根据第二对比结果确定数据存储组件Hi的组件状态;
第四确定模块,还用于当数据存储组件Hi的组件状态为组件异常状态时,根据区块文件对属于组件异常状态的数据存储组件Hi执行数据写操作。
其中,第四确定模块,具体用于当数据存储组件Hi的组件状态为组件异常状态,且区块文件中存在数据存储组件Hi的待恢复数据时,根据区块文件中的数据存储组件Hi的待恢复数据,对属于组件异常状态的数据存储组件Hi执行数据写操作;
其中,第四确定模块,还具体用于当数据存储组件Hi的组件状态为组件异常状态,且区块文件中不存在数据存储组件Hi的待恢复数据时,发送用于请求恢复账本数据的数据恢复请求至共识网络;数据恢复请求携带数据存储组件Hi的待恢复数据的数据标识;
第四确定模块,还具体用于获取处于共识网络中的共识节点返回的数据存储组件Hi的待恢复数据,根据数据存储组件Hi的待恢复数据,对属于组件异常状态的数据存储组件Hi执行数据写操作。
其中,m个数据类别包括状态类别;
第四确定模块,包括:
第五获取单元,用于当数据存储组件Hi对应的数据类别为状态类别时,获取数据存储组件Hi中针对第二状态数据的第三版本标识,获取待对账数据集合Ji中针对第二状态数据的第四版本标识;
第四对比单元,用于将第三版本标识与第四版本标识进行对比,得到第二对比结果;
第四对比单元,还用于若第二对比结果为第三版本标识小于第四版本标识,则确定数据存储组件Hi的组件状态为组件异常状态。
其中,m个数据类别包括区块类别;
第四确定模块,包括:
第六获取单元,用于当数据存储组件Hi对应的数据类别为区块类别时,获取数据存储组件Hi中针对第三区块数据的第三区块标识,获取待对账数据集合Ji中针对第三区块数据的第四区块标识;
第五对比单元,用于将第三区块标识与第四区块标识进行对比,得到第二对比结果;
第五对比单元,还用于若第二对比结果为第三区块标识小于第四区块标识,则确定数据存储组件Hi的组件状态为组件异常状态。
其中,m个数据类别包括读写类别;
第四确定模块,包括:
第七获取单元,用于当数据存储组件Hi对应的数据类别为读写类别时,获取数据存储组件Hi中针对第四区块高度的第三写数据标识,获取待对账数据集合Ji中针对第四区块高度的第四写数据标识;
第六对比单元,用于将第三写数据标识与第四写数据标识进行对比,得到第二对比结果;
第六对比单元,还用于若第二对比结果为第三写数据标识小于第四写数据标识,则确定数据存储组件Hi的组件状态为组件异常状态。
其中,m个数据类别包括区块类别、状态类别以及读写类别;
第一获取模块,包括:
第一生成单元,用于从区块文件中获取与区块类别相关联的区块数据,根据区块数据生成区块数据集合;
第二生成单元,用于从区块文件中获取与状态类别相关联的状态数据,根据状态数据生成状态数据集合;
第三生成单元,用于从区块文件中获取与读写类别相关联的读写数据,根据读写数据生成读写数据集合;
第四生成单元,用于根据区块数据集合、状态数据集合以及读写数据集合,生成m个待记账数据集合。
其中,区块数据包括交易信息以及区块信息,区块信息包括交易信息的交易标识;
第一生成单元,包括:
第一确定子单元,用于将交易标识作为第一索引键,将交易信息作为第一索引值,将第一索引键以及第一索引值确定为第一索引对;
第一确定子单元,还用于将区块信息对应的区块高度作为第二索引键,将区块信息作为第二索引值,将第二索引键以及第二索引值确定为第二索引对;
第一确定子单元,还用于将区块信息对应的区块标识作为第三索引键,将区块信息对应的区块高度作为第三索引值,将第三索引键以及第三索引值确定为第三索引对;
第一生成子单元,用于将第一索引对、第二索引对以及第三索引对生成区块数据集合。
其中,第二生成单元,包括:
第二确定子单元,用于将合约标识以及对象标识组合为第四索引键,将状态数据作为第四索引值,将第四索引键以及第四索引值确定为第四索引对;
第二确定子单元,还用于获取对象标识的历史状态数据对应的版本标识,根据历史状态数据对应的版本标识生成状态数据对应的版本标识;
第二确定子单元,还用于将状态数据以及状态数据对应的版本标识作为第五索引键,将状态数据对应的区块高度作为第五索引值,将第五索引键以及第五索引值确定为第五索引对;
第二生成子单元,用于将第四索引对以及第五索引对生成状态数据集合。
其中,读写数据包括读数据以及写数据;
第三生成单元,包括:
第三确定子单元,用于将读数据的读数据标识作为第六索引键,将读数据作为第六索引值,将第六索引键以及第六索引值确定为第六索引对;
第三确定子单元,还用于将写数据的写数据标识作为第七索引键,将写数据作为第七索引值,将第七索引键以及第七索引值确定为第七索引对;
第三确定子单元,还用于将读数据对应的区块高度作为第八索引键,将读数据标识作为第八索引值,将第八索引键以及第八索引值确定为第八索引对;
第三确定子单元,还用于将写数据对应的区块高度作为第九索引键,将写数据标识作为第九索引值,将第九索引键以及第九索引值确定为第九索引对;
第三生成子单元,用于将第六索引对、第七索引对、第八索引对以及第九索引对生成读写数据集合。
其中,m个待记账数据集合包括待记账数据集合Ab,m个数据存储组件包括用于存储待记账数据集合Ab的数据存储组件Cb,b为正整数,且b小于或等于m;
第一获取模块,包括:
第八获取单元,用于获取针对待记账数据集合Ab的批处理数据写入指令;
第二执行单元,用于根据批处理数据写入指令对数据存储组件Cb执行数据写操作,将待记账数据集合Ab写入至数据存储组件Cb
第二执行单元,还用于在对数据存储组件Cb执行数据写操作的同时,根据(m-1)个待记账数据集合,对(m-1)个数据存储组件并行执行数据写操作;(m-1)个待记账数据集合包括m个待记账数据集合中除了待记账数据集合Ab之外的待记账数据集合,(m-1)个数据存储组件包括m个数据存储组件中除了数据存储组件Cb之外的数据存储组件。
本申请一方面提供了一种计算机设备,包括:处理器、存储器、网络接口;
上述处理器与上述存储器、上述网络接口相连,其中,上述网络接口用于提供数据通信功能,上述存储器用于存储计算机程序,上述处理器用于调用上述计算机程序,以使得计算机设备执行本申请实施例中的方法。
本申请实施例一方面提供了一种计算机可读存储介质,上述计算机可读存储介质中存储有计算机程序,上述计算机程序适于由处理器加载并执行本申请实施例中的方法。
本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中;计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例中的方法。
在本申请实施例中,当获取到新共识通过的区块时,可以将其添加至区块文件中,在该区块文件中获取针对该区块的m个数据类别互不相同的待记账数据集合;进一步地,根据m个待记账数据集合,对m个数据存储组件并行执行数据写操作,获取m个数据存储组件分别对应的数据存储结果,可以理解的是,m个数据存储组件分别存储数据类别互不相同的数据,即一个数据存储组件用于存储一种数据类别的待记账数据集合;若m个数据存储结果中存在数据存储失败结果,则表明存在待记账数据集合没有成功写入至数据存储组件,此时,获取区块文件对应的区块检查点,以及m个数据存储组件分别对应的组件检查点;通过区块检查点以及m个组件检查点,可以在m个数据存储组件中确定属于组件异常状态的数据存储组件,即没有将对应的数据类别的待记账数据集合成功写入的数据存储组件,此时,可以根据区块文件对属于组件异常状态的数据存储组件执行数据写操作。上述可知,在本申请实施例中,通过对m个数据存储组件并行执行数据写操作,可以实现并行写入m个待记账数据集合,故可以提升区块链的网络性能以及降低对外业务的响应时间;此外,在m个数据存储结果中存在数据存储失败结果时,本申请实施例通过区块检查点以及m个组件检查点,可以确定属于组件异常状态的数据存储组件,并根据区块文件对属于组件异常状态的数据存储组件重新执行数据写操作,故可以保证缓存(可以等同于m个待记账数据集合)和分布式存储(等同于m个数据存储组件)之间的数据一致,避免数据丢失。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种系统架构示意图;
图2是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图;
图3a是本申请实施例提供的一种基于区块链的数据处理的场景示意图;
图3b是本申请实施例提供的一种基于区块链的数据处理的场景示意图;
图4是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图;
图5是本申请实施例提供的一种基于区块链的数据处理的场景示意图;
图6是本申请实施例提供的一种基于区块链的数据处理装置的结构示意图;
图7是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了便于理解,首先对部分名词进行以下简单解释:
1、区块链(Block chain):狭义上,区块链是一种以区块为基本单位的链式数据结构,区块中利用数字摘要对之前获取的交易历史进行校验,适合分布式记账场景下防篡改和可扩展性的需求;广义上,区块链还指代区块链结构实现的分布式记账技术,包括分布式共识、隐私与安全保护、点对点通信技术、网络协议、智能合约等。
区块链的目标是实现一个分布的数据记录账本,此账本只允许添加,不允许删除。账本底层的基本结构是一个线性的链表。链表由一个个“区块”串联组成,后继区块中记录前继区块的哈希(Hash)值,每个区块(以及区块中的交易)是否合法,可通过计算哈希值的方式进行快速检验。若网络中的节点提议添加一个新的区块,必须经过共识机制对区块达成共识确认。
2、区块(block):是在区块链网络上承载交易数据的数据包,是一种被标记上时间戳和前继区块对应的哈希值的数据结构,区块经过网络的共识机制验证并确认区块中的交易。区块包括区块头(Block Header)以及区块体(Block Body),区块头可以记录当前区块的元信息,包含当前版本号、前继区块对应的哈希值、时间戳、随机数、默克尔树根(MerkleRoot)的哈希值等数据。区块体可以记录一段时间内所生成的详细数据,包括当前区块经过验证的、区块创建过程中生成的所有交易记录或是其他信息,可以理解为账本的一种表现形式。此外,区块体的详细数据可以包括通过默克尔树(Merkle Tree)的哈希过程,生成唯一的Merkle Root记录于区块头。
前继区块,也称父区块(Parent Block),区块链通过在区块头记录区块对应的哈希值以及父区块对应的哈希值实现时间上的排序。
3、哈希值(hash):也称作信息特征值或特征值,哈希值是通过哈希算法将任意长度的输入数据转换为密码并进行固定输出而生成的,不能通过解密哈希值来检索原始输入数据,它是一个单向的加密函数。在区块链中,每个区块(除了初始区块)都包含前继区块的哈希值,哈希值是区块链技术中的潜力核心基础和最重要的方面,它保留了记录和查看数据的真实性,以及区块链作为一个整体的完整性。
4、智能合约(Smart Contract):是一种旨在以信息化方式传播、验证或执行合同的计算机协议。在区块链系统当中,智能合约(简称合约)是一种区块链各节点可以理解并执行的代码,可以执行任意逻辑并得到结果。在实际应用中,智能合约通过区块链上的交易来管理与试用。每条交易相当于对区块链系统的一个远程过程调用(Remote ProcedureCall ,RPC)请求。如果说智能合约相当于可执行程序,区块链就相当于提供运行环境的操作系统。区块链可以包含多个合约,以合约账号(Identity ,ID)、标识号或名称来区分。
5、合约执行:通过发起一笔交易的方式,用户可以调用区块链上已经部署的合约。区块链系统中的各个节点分别运行同一个合约。对于需要读取数据的合约,会访问节点自己的账本。最终各节点会互相验证执行结果是否一致(共识),若执行结果一致各节点将必要结果存入各自账本中,并返回结果给用户。
6、读写集:合约在执行过程中对节点账本数据的操作记录。分为读集合与写集合,分别指智能合约在执行时,从账本读取的数据,和将要写入账本的数据。
7、区块链节点:区块链网络将节点区分为共识节点(也可以称作核心节点)以及同步节点(可以包括数据节点以及轻节点)。其中,共识节点负责区块链全网的共识业务;同步节点负责同步共识节点的账本信息,即同步最新的区块数据。无论是共识节点还是同步节点,其内部构造都包括网络通信组件,因为区块链网络本质是一个点对点(Peer to Peer,P2P)网络,需通过P2P组件与区块链网络中的其他节点进行通信。区块链网络中的资源和服务都分散在各个节点上,信息的传输和服务的实现都直接在节点之间进行,无需中间环节或中心化的服务器(第三方)介入。
请参见图1,图1是本申请实施例提供的一种系统架构示意图。如图1所示,该系统架构可以为区块链网络,其中,区块链网络可以包括共识网络101以及同步网络102;同步网络102中的节点可以称为同步节点,同步节点主要进行业务执行,不参与记账共识,通过身份认证的方式从共识网络101中获得区块数据等。共识网络101也可以称作核心网络,共识网络101中的节点可以称为共识节点,共识节点拥有全量数据。其中,共识网络101和同步网络102可以处在不同网络环境下,通常来说,共识网络101处于私有网络中,而同步网络102处于共有网络中,二者通过路由边界进行交互。
请再参见图1,共识网络101可以包括共识节点1011、共识节点1012、...、共识节点1013。可以理解的是,上述共识网络101可以包括一个或者多个共识节点,这里将不对共识节点的数量进行限制。
请再参见图1,同步网络102可以包括同步节点1021、同步节点1022、同步节点1023、...、同步节点1024以及同步节点1025。可以理解的是,上述同步网络102可以包括一个或者多个同步节点,这里将不对同步节点的数量进行限制。
每个节点(包括共识网络101中的共识节点以及同步网络102中的同步节点)在进行正常工作时,可以接收到客户端发送的交易数据(等同于交易信息),并基于接收到的交易数据生成区块,然后进行区块上链处理。为了保证各个节点之间的数据互通,每个节点之间可以存在数据连接,例如共识节点1011与共识节点1012之间存在数据连接,共识节点1011与共识节点1013之间存在数据连接,同步节点1021与同步节点1023之间存在数据连接等等。
进一步地,共识网络101与同步网络102之间存在数据连接,例如共识节点1011与同步节点1022之间存在数据连接,共识节点1012与同步节点1023之间存在数据连接等等。
可以理解的是,节点之间可以通过上述数据连接进行数据或者区块传输。上述节点之间的数据连接可以基于节点标识,对于区块链网络中的每个节点,均具有与其对应的节点标识,而且上述每个节点均可以存储与自身有相连关系的其他节点的节点标识,以便后续根据其他节点的节点标识,将获取到的数据或生成的区块广播至其他节点,例如共识节点1011可以维护一个节点标识列表,该节点标识列表保存着其他节点的节点名称和节点标识。如表1所示:
表1
节点名称 节点标识
共识节点1012 117.114.151.174
共识节点1013 117.116.189.145
同步节点1021 117.114.151.183
同步节点1022 117.116.189.125
同步节点1023 119.250.485.362
其中,节点标识可为网络之间互联的协议(Internet Protocol,IP)地址以及其他任意一种能够用于标识区块链网络中节点的信息,表1中仅以IP地址为例进行说明。
假设共识节点1011的节点标识为117.116.156.425,则共识节点1011可以通过节点标识117.114.151.183,向同步节点1021发送数据同步请求,且同步节点1021通过节点标识117.116.156.425,可以知道该数据同步请求是共识节点1011所发送的;同理,同步节点1023可以通过节点标识117.116.156.425,向共识节点1011发送交易数据A,且共识节点1011通过节点标识119.250.485.362,可以知道该交易数据A是同步节点1023所发送的,其他节点之间的数据传输亦如此,故不再一一进行赘述。
可以理解的是,上述的数据连接不限定连接方式,可以通过有线通信方式进行直接或间接地连接,也可以通过无线通信方式进行直接或间接地连接,还可以通过其他连接方式,本申请在此不做限制。
其中,图1中的共识节点1011、共识节点1012、...、共识节点1013、同步节点1021、同步节点1022、同步节点1023、...、同步节点1024以及同步节点1025可以包括手机、平板电脑、笔记本电脑、掌上电脑、智能音响、移动互联网设备(MID,mobile internet device)、POS(Point Of Sales,销售点)机、可穿戴设备(例如智能手表、智能手环等)等。
可以理解的是,本申请实施例所提供的基于区块链的数据处理方法可以由计算机设备执行,计算机设备包括但不限于终端或服务器。上述服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。上述终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、车载终端以及智能电视等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
进一步地,请参见图2,图2是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图。该基于区块链的数据处理方法可以由计算机设备执行,该计算机设备可以包括图1中的共识网络101中的任意一个共识节点。如图2所示,该数据处理过程可以包括如下步骤。
步骤S101,获取区块文件,从区块文件中获取针对区块的m个数据类别互不相同的待记账数据集合;m为大于1的正整数。
具体的,m个数据类别包括区块类别、状态类别以及读写类别;从区块文件中获取与区块类别相关联的区块数据,根据区块数据生成区块数据集合;从区块文件中获取与状态类别相关联的状态数据,根据状态数据生成状态数据集合;从区块文件中获取与读写类别相关联的读写数据,根据读写数据生成读写数据集合;根据区块数据集合、状态数据集合以及读写数据集合,生成m个待记账数据集合。
其中,区块数据包括交易信息以及区块信息,区块信息包括交易信息的交易标识;根据区块数据生成区块数据集合的具体过程可以包括:将交易标识作为第一索引键,将交易信息作为第一索引值,将第一索引键以及第一索引值确定为第一索引对;将区块信息对应的区块高度作为第二索引键,将区块信息作为第二索引值,将第二索引键以及第二索引值确定为第二索引对;将区块信息对应的区块标识作为第三索引键,将区块信息对应的区块高度作为第三索引值,将第三索引键以及第三索引值确定为第三索引对;将第一索引对、第二索引对以及第三索引对生成区块数据集合。
其中,根据状态数据生成状态数据集合的具体过程可以包括:将合约标识以及对象标识组合为第四索引键,将状态数据作为第四索引值,将第四索引键以及第四索引值确定为第四索引对;获取对象标识的历史状态数据对应的版本标识,根据历史状态数据对应的版本标识生成状态数据对应的版本标识;将状态数据以及状态数据对应的版本标识作为第五索引键,将状态数据对应的区块高度作为第五索引值,将第五索引键以及第五索引值确定为第五索引对;将第四索引对以及第五索引对生成状态数据集合。
其中,读写数据包括读数据以及写数据;根据读写数据生成读写数据集合的具体过程可以包括:将读数据的读数据标识作为第六索引键,将读数据作为第六索引值,将第六索引键以及第六索引值确定为第六索引对;将写数据的写数据标识作为第七索引键,将写数据作为第七索引值,将第七索引键以及第七索引值确定为第七索引对;将读数据对应的区块高度作为第八索引键,将读数据标识作为第八索引值,将第八索引键以及第八索引值确定为第八索引对;将写数据对应的区块高度作为第九索引键,将写数据标识作为第九索引值,将第九索引键以及第九索引值确定为第九索引对;将第六索引对、第七索引对、第八索引对以及第九索引对生成读写数据集合。
区块链网络中的每一个区块达成共识后,区块链网络中的共识节点需要将共识通过的区块(此时的区块可以理解为缓存区块,因为未写入账本)以及与区块相关联的数据(例如执行交易结果集以及读写数据集)写入账本。请一并参见图3a,图3a是本申请实施例提供的一种基于区块链的数据处理的场景示意图。如图3a所示,区块20a在区块链网络20b中的共识结果为共识通过结果,故共识节点20c可以将区块20a写入至区块文件20d。
其中,区块20a可以包括一个或者多个区块,本申请实施例不对区块20a的数量进行限制,可以根据实际应用中区块链网络的区块共识方式进行设定。
其中,区块文件20d可以理解为共识节点20c的一个数据库,用于存储区块20a、区块20a的读写数据以及状态数据等,可以用于待记账数据集合写入过程中,异常中断后的恢复。此外,区块文件20a将最大区块高度记录为区块检查点,可以理解的是,最大区块高度一般为区块20a中的最大区块高度。若在将区块20a写入账本的同时,共识网络共识通过新的区块(该区块的区块高度大于区块20a的区块高度),共识节点20c可以先不将新的区块添加至区块文件20d中,在将区块20a写入磁盘或分布式存储后,再将新的区块添加至区块文件20d中,此时,区块文件20d可以记录新添加的区块中的最大区块高度为新的区块检查点。可选的,若在将区块20a写入账本的同时,共识网络共识通过新的区块(该区块的区块高度大于区块20a的区块高度),共识节点20c可以将新的区块添加至区块文件20d中,但暂不更新区块检查点,即区块检查点为区块20a中的最大区块高度,在将区块20a成功写入账本后,再更新区块检查点。
本申请实施例针对账本里的每个状态增加版本标识,每当执行交易的合约业务改变某个状态后,该状态的版本标识可以加1,并同时映射到发生变化的区块高度,旨在标志该修改是在某个区块发生的。其中,状态可以理解为账本中的对象,例如用户账号等;版本标识可以自定义,本申请实施例不对版本标识进行限定,可以为任意一种能够用于标识状态的信息。
可以理解的是,共识节点20c是以数据索引的关系将区块20a写入区块文件20d中,即根据数据类别将待记账数据集合分别写入至区块文件20d中;共识节点20a也可以直接将区块20a写入至区块文件20d中,在将区块20a写入账本时,根据数据类别对区块20a中的数据分类,生成m个待记账数据集合,本申请实施例不限定m个待记账数据集合的生成时间点,可以根据实际应用场景进行设定。
其中,本申请实施例不对数据类别进行限定,可以根据实际应用场景进行设定,本申请以区块类别、状态类别以及读写类别为例进行叙述。其中,区块类别是指区块数据对应的类别,区块数据可以包括交易信息(即交易详情数据)以及区块信息,区块信息包括交易信息的交易标识,交易标识可以为交易信息对应的哈希值。状态类别是指状态数据对应的类别,状态数据可以包括一个对象的当前记录或特征,例如对象a在时间戳b基于合约c进行了交易d,本申请实施例不对状态数据的形式进行限定,可以根据实际应用场景进行设定。读写类别是指交易信息对应的读写数据对应的类别。
请再参见图3a,本申请实施例以m=3为例进行叙述,共识节点20c从区块文件20d中获取针对区块20a的3个数据类别互不相同的待记账数据集合,即图3a中示例的待记账数据集合201e、待记账数据集合202e以及待记账数据集合203e。
其中,待记账数据集合201e可以是数据类别为区块类别的区块数据集合,该区块数据集合为一个数据映射表,具体可以为将交易标识作为第一索引键,将交易信息作为第一索引值,将第一索引键以及第一索引值确定为第一索引对;进一步地,将区块信息对应的区块高度作为第二索引键,将区块信息作为第二索引值,将第二索引键以及第二索引值确定为第二索引对;进一步地,将区块信息对应的区块标识(可以为区块哈希)作为第三索引键,将区块信息对应的区块高度作为第三索引值,将第三索引键以及第三索引值确定为第三索引对;共识节点20c将第一索引对、第二索引对以及第三索引对生成区块数据集合。
其中,待记账数据集合202e可以是数据类别为状态类别的状态数据集合,该状态数据集合为一个数据映射表,具体可以为将合约标识以及对象标识组合为第四索引键,将状态数据作为第四索引值,将第四索引键以及第四索引值确定为第四索引对,其中,合约标识可以为任意一种能够标识合约的信息,例如合约存储地址、合约名称等,同理,对象标识可以为任意一种能够标识对象的信息,例如对象账号等,本申请实施例对合约标识以及对象标识不做限定;获取对象标识的历史状态数据对应的版本标识,根据历史状态数据对应的版本标识生成状态数据对应的版本标识;将状态数据以及状态数据对应的版本标识作为第五索引键,将状态数据对应的区块高度作为第五索引值,将第五索引键以及第五索引值确定为第五索引对;共识节点20c将第四索引对以及第五索引对生成状态数据集合。
其中,待记账数据集合203e可以是数据类别为读写类别的读写数据集合,该读写数据集合为一个数据映射表,具体可以为将读数据的读数据标识(可以为读数据的哈希值)作为第六索引键,将读数据作为第六索引值,将第六索引键以及第六索引值确定为第六索引对;将写数据的写数据标识(可以为写数据的哈希值)作为第七索引键,将写数据作为第七索引值,将第七索引键以及第七索引值确定为第七索引对;将读数据对应的区块高度作为第八索引键,将读数据标识作为第八索引值,将第八索引键以及第八索引值确定为第八索引对;将写数据对应的区块高度作为第九索引键,将写数据标识作为第九索引值,将第九索引键以及第九索引值确定为第九索引对;将第六索引对、第七索引对、第八索引对以及第九索引对生成读写数据集合。
步骤S102,根据m个待记账数据集合,对m个数据存储组件并行执行数据写操作,获取m个数据存储组件分别对应的数据存储结果;其中,一个数据存储组件用于存储一种数据类别的待记账数据集合。
具体的,m个待记账数据集合包括待记账数据集合Ab,m个数据存储组件包括用于存储待记账数据集合Ab的数据存储组件Cb,b为正整数,且b小于或等于m;获取针对待记账数据集合Ab的批处理数据写入指令;根据批处理数据写入指令对数据存储组件Cb执行数据写操作,将待记账数据集合Ab写入至数据存储组件Cb;在对数据存储组件Cb执行数据写操作的同时,根据(m-1)个待记账数据集合,对(m-1)个数据存储组件并行执行数据写操作;(m-1)个待记账数据集合包括m个待记账数据集合中除了待记账数据集合Ab之外的待记账数据集合,(m-1)个数据存储组件包括m个数据存储组件中除了数据存储组件Cb之外的数据存储组件。
在本申请实施例中,将账本存储分为三大数据存储组件,请一并参见图3a,该三大数据存储组件可以包括用于存储区块数据的数据存储组件201f、用于存储状态数据的数据存储组件202f,以及用于存储读写数据的数据存储组件203f。
本申请实施例采用异步落账方法对3个待记账数据集合进行存储,以避开对读写资源的依赖以及提升区块链网络整体的性能,具体为在将待记账数据集合201e写入数据存储组件201f的同时,并行执行数据存储组件202f,以及数据存储组件203f的数据写操作,以将待记账数据集合202e写入数据存储组件202f中,将待记账数据集合203e写入数据存储组件203f中。
其中,待记账数据集合201e是通过一条批处理数据写入指令,写入至数据存储组件201f中,待记账数据集合202e是通过一条批处理数据写入指令,写入至数据存储组件202f中,待记账数据集合203e是通过一条批处理数据写入指令,写入至数据存储组件203f中。
可以理解的是,当待记账数据集合成功写入至数据存储组件时,数据存储组件返回的数据存储结果为数据存储成功结果,当待记账数据集合没有成功写入至数据存储组件时,数据存储组件返回的数据存储结果为数据存储失败结果。如图3a所示,共识节点20c获取3个数据存储组件分别返回的数据存储结果,其中,数据存储组件201f返回数据存储失败结果201g,数据存储组件202f返回数据存储成功结果202g,数据存储组件203f返回数据存储成功结果203g。
步骤S103,若m个数据存储结果中存在数据存储失败结果,则获取区块文件对应的区块检查点,以及m个数据存储组件分别对应的组件检查点;区块检查点为区块文件中的最大区块高度,m个组件检查点包括m个数据存储组件中分别对应的最大区块高度。
具体的,若m个数据存储结果中存在数据存储失败结果,则将数据存储结果为数据存储失败结果的数据存储组件,确定为目标数据存储组件;从m个待记账数据集合中,获取与目标数据存储组件相关联的目标待记账数据集合;根据目标待记账数据集合,对目标数据存储组件执行数据写操作,获取目标数据存储组件的数据重写存储结果;若数据重写存储结果为数据存储失败结果,则统计目标数据存储组件被执行数据写操作的操作次数;当操作次数小于操作次数阈值时,根据目标待记账数据集合,重新对目标数据存储组件执行数据写操作;当操作次数等于操作次数阈值时,获取区块文件对应的区块检查点,以及m个数据存储组件分别对应的组件检查点。
为了保证账本数据的一致性和完整性,在上述数据写入过程中,当发生任何一个数据存储组件写入失败时,本申请实施例将采用有限重试机制直至写成功或者重试超出范围。请再参见图3a,在图3a中示例数据存储组件201f写入待记账数据集合201e失败,故数据存储组件201f返回数据存储失败结果201g,其中,数据存储成功结果202g可以表征待记账数据集合202e成功写入至数据存储组件202f中,数据存储成功结果203g可以表征待记账数据集合203e成功写入至数据存储组件203f中。
由于待记账数据集合201e没有成功写入至数据存储组件201f中,故共识节点20c可以将数据存储组件201f确定为目标数据存储组件,同时,将待记账数据集合201e确定为目标待记账数据集合。如图3a所示,共识节点20c根据待记账数据集合201e,重新对数据存储组件201f执行数据写操作,获取数据存储组件201f的数据重写存储结果;可以理解的是,若数据重写存储结果为数据存储失败结果,则统计数据存储组件201f被执行数据写操作的操作次数;当操作次数小于操作次数阈值时,根据待记账数据集合201e,重新对数据存储组件201f执行数据写操作;当操作次数等于操作次数阈值时,共识节点20c获取区块文件20d对应的区块检查点,以及3个数据存储组件分别对应的组件检查点。其中,组件检查点为数据存储组件中所记录的最大区块高度。可以理解的是,操作次数阈值可以根据实际应用场景进行设定。
步骤S104,根据区块检查点以及m个组件检查点,在m个数据存储组件中确定属于组件异常状态的数据存储组件,根据区块文件对属于组件异常状态的数据存储组件执行数据写操作。
具体的,在m个组件检查点中,将小于区块检查点的组件检查点确定为待更新组件检查点;在m个数据存储组件中,将与待更新组件检查点对应的数据存储组件确定为待恢复数据存储组件;待恢复数据存储组件的组件状态为组件异常状态;根据待更新组件检查点以及区块检查点,确定待恢复数据存储组件的待恢复区块高度区间;从区块文件中,获取属于待恢复区块高度区间的待恢复数据集合;待恢复数据集合对应的数据类别与待恢复数据存储组件对应的数据类别相同;根据待恢复数据集合,对待恢复数据存储组件执行数据写操作。
当存在没有成功写入数据存储组件的待记账数据集合时,共识节点还可以通过区块文件恢复待记账数据集合中的待恢复数据,请一并参见图3b,图3b是本申请实施例提供的一种基于区块链的数据处理的场景示意图。其中,图3b中的区块文件20d与图3a中的区块文件20d的含义一致,同理,图3b中的数据存储组件201f、数据存储组件202f、数据存储组件203f以及待记账数据集合201e亦如此。
如图3b所示,当操作次数等于操作次数阈值时,共识节点获取区块文件20d对应的区块检查点201d(等于图3a中区块20a的最大区块高度),以及3个数据存储组件分别对应的组件检查点,如图3b示例的组件检查点2011f、组件检查点2021f以及组件检查点2031f。共识节点将上述3个组件检查点分别与区块检查点201d进行对比,将小于区块检查点201d的组件检查点确定为待更新组件检查点,如图3b所示例的组件检查点2011f,此时,可以确定区块文件20d中的区块数据没有被完整写入至数据存储组件201f中。其中,区块文件20d中的区块数据可以包括区块20a对应的区块数据,即待记账数据集合201e。
进一步地,共识节点将与待更新组件检查点对应的数据存储组件确定为待恢复数据存储组件,如图3b所示例的数据存储组件201f为待恢复数据存储组件,由于数据存储组件201f存在没有写入的区块数据,故可以将数据存储组件201f的组件状态确定为组件异常状态;可以理解的是,数据存储组件202f成功写完区块文件20d中的状态数据(如图3a示例的待记账数据集合202e),故可以确定数据存储组件202f的组件状态为组件正常状态,同理,数据存储组件203f成功写完待记账数据集合203e,故共识节点可以确定数据存储组件203f的组件状态为组件正常状态。
共识节点根据待更新组件检查点以及区块检查点,可以确定待恢复数据存储组件的待恢复区块高度区间;假设区块20a包括区块8、区块9以及区块10,则区块检查点201d为区块高度10,假设组件检查点2011f为区块高度8,则可以确定待恢复区块高度区间包括区块高度9至区块高度10,故共识节点可以从区块文件20d中,获取属于待恢复区块高度区间的待恢复数据集合20h,即获取区块9至区块10中的区块数据,然后根据待恢复数据集合20h,对待恢复数据存储组件执行数据写操作。可选的,共识节点可以将区块20a对应的区块数据(即区块8至区块10分别对应的区块数据)作为待恢复数据集合,再次写入数据存储组件201f中,此时,数据存储组件201f将区块8对应的区块数据进行删除,然后对待恢复数据集合执行写入操作。
可选的,若在没有成功写入完整的待记账数据集合时,数据存储组件可以将部分已写入的数据进行删除,例如数据存储组件201f在写入待记账数据集合201e的过程中,出现异常,只写入待记账数据集合201e的部分数据,此时,数据存储组件201f可以将已写入的部分数据进行删除。
可以理解的是,当成功写入待记账数据集合时,数据存储组件可以根据新写入的数据集合更新组件检查点。
在本申请实施例中,当获取到新共识通过的区块时,可以将其添加至区块文件中,在该区块文件中获取针对该区块的m个数据类别互不相同的待记账数据集合;进一步地,根据m个待记账数据集合,对m个数据存储组件并行执行数据写操作,获取m个数据存储组件分别对应的数据存储结果,可以理解的是,m个数据存储组件分别存储数据类别互不相同的数据,即一个数据存储组件用于存储一种数据类别的待记账数据集合;若m个数据存储结果中存在数据存储失败结果,则表明存在待记账数据集合没有成功写入至数据存储组件,此时,获取区块文件对应的区块检查点,以及m个数据存储组件分别对应的组件检查点;通过区块检查点以及m个组件检查点,可以在m个数据存储组件中确定属于组件异常状态的数据存储组件,即没有将对应的数据类别的待记账数据集合成功写入的数据存储组件,此时,可以根据区块文件对属于组件异常状态的数据存储组件执行数据写操作。上述可知,在本申请实施例中,通过对m个数据存储组件并行执行数据写操作,可以实现并行写入m个待记账数据集合,故可以提升区块链的网络性能以及降低对外业务的响应时间;此外,在m个数据存储结果中存在数据存储失败结果时,本申请实施例通过区块检查点以及m个组件检查点,可以确定属于组件异常状态的数据存储组件,并根据区块文件对属于组件异常状态的数据存储组件重新执行数据写操作,故可以保证缓存(可以等同于m个待记账数据集合)和分布式存储(等同于m个数据存储组件)之间的数据一致,避免数据丢失。
进一步地,请参见图4,图4是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图。该基于区块链的数据处理方法可以由计算机设备执行,该计算机设备可以包括图1中的共识网络101中的任意一个共识节点。如图4所示,该数据处理过程可以包括如下步骤。
步骤S201,获取区块文件,从区块文件中获取针对区块的m个数据类别互不相同的待记账数据集合;m为大于1的正整数。
步骤S202,根据m个待记账数据集合,对m个数据存储组件并行执行数据写操作,获取m个数据存储组件分别对应的数据存储结果;其中,一个数据存储组件用于存储一种数据类别的待记账数据集合。
步骤S203,若m个数据存储结果中存在数据存储失败结果,则获取区块文件对应的区块检查点,以及m个数据存储组件分别对应的组件检查点;区块检查点为区块文件中的最大区块高度,m个组件检查点包括m个数据存储组件中分别对应的最大区块高度。
步骤S204,根据区块检查点以及m个组件检查点,在m个数据存储组件中确定属于组件异常状态的数据存储组件,根据区块文件对属于组件异常状态的数据存储组件执行数据写操作。
步骤S201-步骤S204的分别对应的具体过程,可以参见上文图2所对应的实施例中的描述,此处不再进行赘述。
步骤S205,当系统时间达到数据对账周期时,基于组件检查点Fe从缓存区块文件中获取已记账数据集合;已记账数据集合对应的最大区块高度等于组件检查点Fe,已记账数据集合对应的数据类别与数据存储组件De的数据类别相同;缓存区块文件是指存储于缓存层中的区块文件。
具体的,m个数据存储组件包括数据存储组件De,m个组件检查点包括数据存储组件De对应的组件检查点Fe,e为正整数且e小于或等于m。
本申请实施例提出一种在区块链异步落账的过程中保证账本数据一致性的方法,该方法旨在共识节点采用异步落账的时候,通过如下三个保证达到共识节点在缓存和分布式存储之间的数据一致性,以及和其他共识节点的账本分布式存储的数据一致性,三个保证可以归纳为:1、数据写入失败时,有限重试写入操作,该保证可以请参见上文图2所对应的实施例中步骤S103中的描述,此处不再进行赘述;2、区块文件作为重做(redo)日志,重做待恢复数据集合,该待恢复数据集合的生成以及作用,请参见上述图2所对应的实施例中步骤S104中的描述,此处不再进行赘述,此外,区块文件还可以在分布式存储发生主备切换丢掉数据的情况下,用于生成待恢复数据,生成待恢复数据的过程请参见下文的描述;3、定时全量数据校验,即定时账本校验,请参见下文的描述。
为了提高区块链的网络性能,如便于读取数据,共识节点20c可以在缓存层生成缓存区块文件40a,其存储的数据与上文描述的区块文件中的数据一致。
针对分布式存储发生主备切换丢掉数据的情况,本申请实施例采用定时全量对账方式。请一并参见图5,图5是本申请实施例提供的一种基于区块链的数据处理的场景示意图。如图5所示,共识节点20c(等同于图2中的共识节点20c)可以设置数据对账周期,其中数据对账周期用于周期性地对共识节点20c的账本(全量数据)进行核实,即检验账本数据的完整性。该数据对账周期可以根据实际应用场景进行设定,本申请实施例对此不做限定。
假设数据存储组件201f用于存储属于区块类别的数据,数据存储组件202f用于存储属于状态类别的数据,数据存储组件203f用于存储属于读写类别的数据,则数据存储组件201f可以包括共识节点20c对应的账本中的区块数据2012f,数据存储组件202f可以包括共识节点20c对应的账本中的状态数据2022f,数据存储组件203f可以包括共识节点20c对应的账本中的读写数据2032f。
根据上文图2所对应的实施例可知,在本申请实施例中,将账本存储分为三大数据存储组件,即图5所示例的数据存储组件201f、数据存储组件202f以及数据存储组件203f,其中,数据存储组件201f可以记录有组件检查点2011f,数据存储组件202f可以记录有组件检查点2021f,数据存储组件203f可以记录有组件检查点2031f,上述3个组件检查点在正常情况下,应该是相同的,若存在某个数据存储组件的组件状态为组件异常状态,则上述3个组件检查点会存在不相同的情况。
共识节点20c根据数据存储组件201f中所记录的组件检查点2011f,从缓存数据库40a中获取已记账数据集合401b,假设组件检查点2011f为区块高度10,则已记账数据集合401b可以包括缓存区块文件40a中最小区块高度对应的区块数据至区块10中的区块数据。
共识节点20c根据数据存储组件202f中所记录的组件检查点2021f,从缓存数据库40a中获取已记账数据集合402b,假设组件检查点2021f为区块高度10,则已记账数据集合402b可以包括缓存区块文件40a中最小区块高度对应的状态数据至区块10中的状态数据。
共识节点20c根据数据存储组件203f中所记录的组件检查点2031f,从缓存数据库40a中获取已记账数据集合403b,假设组件检查点2031f为区块高度10,则已记账数据集合403b可以包括缓存区块文件40a中最小区块高度对应的读写数据至区块10中的读写数据。
可以理解的是,缓存区块文件40a中可能没有存储全量数据,例如在将图3a所示例的区块20a进行数据存储时,缓存区块文件40a可能将前期已入账的数据进行删除,该删除方式可以是定时删除,也可以是缓存区块文件40a定量删除,例如缓存区块文件仅保存最新的10个区块分别对应的数据,还可以是其他方式等。
步骤S206,将数据存储组件De中的数据,与已记账数据集合中的数据进行对比,得到第一对比结果,根据第一对比结果确定数据存储组件De的组件状态。
具体的,m个数据类别包括状态类别;当数据存储组件De对应的数据类别为状态类别时,获取数据存储组件De中针对第一状态数据的第一版本标识,获取已记账数据集合中针对第一状态数据的第二版本标识;将第一版本标识与第二版本标识进行对比,得到第一对比结果;若第一对比结果为第一版本标识与第二版本标识不同,则确定数据存储组件De的组件状态为组件异常状态。
具体的,m个数据类别包括区块类别;当数据存储组件De对应的数据类别为区块类别时,获取数据存储组件De中针对第一区块高度的第一区块标识,获取已记账数据集合中针对第一区块高度的第二区块标识;将第一区块标识与第二区块标识进行对比,得到第一对比结果;若第一对比结果为第一区块标识与第二区块标识不同,则确定数据存储组件De的组件状态为组件异常状态。
具体的,m个数据类别包括读写类别;当数据存储组件De对应的数据类别为读写类别时,获取数据存储组件De中针对第二区块高度的第一写数据标识,获取已记账数据集合中针对第二区块高度的第二写数据标识;将第一写数据标识与第二写数据标识进行对比,得到第一对比结果;若第一对比结果为第一写数据标识与第二写数据标识不同,则确定数据存储组件De的组件状态为组件异常状态。
结合步骤S205以及图5,共识节点20c对账本中的全量数据(包括全量区块数据、全量状态数据以及全量读写数据)进行对账处理。在将已记账数据集合403b以及数据存储组件203f中的数据(等同于图5所示例的读写数据2032f)进行对账时,共识节点20c可以将数据存储组件203f中每个第二区块高度分别对应的第一写数据标识,与已记账数据集合403b中对应的第二区块高度的第二写数据标识进行对比,如图5所示,将区块高度1对应的写数据标识A1(假设为数据存储组件203f中的第一写数据标识)与写数据标识A2(假设为已记账数据集合403b中的第二写数据标识)进行对比,若对比结果表明写数据标识A1与写数据标识A2不同,则可以确定数据存储组件203中针对区块1的写数据标识A1是错误(异常)的数据,若两者相同,则可以确定数据存储组件203中针对区块1的写数据标识A1是准确(正常)的数据;同理,将区块高度2对应的写数据标识B1与写数据标识B2进行对比,若对比结果表明写数据标识B1与写数据标识B2不同,则可以确定数据存储组件203中针对区块2的写数据标识B1是错误(异常)的数据,若两者相同,则可以确定数据存储组件203中针对区块2的写数据标识B1是准确(正常)的数据;同理,将区块高度n对应的写数据标识N1与写数据标识N2进行对比,若对比结果表明写数据标识N1与写数据标识N2不同,则可以确定数据存储组件203中针对区块n的写数据标识N1是错误(异常)的数据,若两者相同,则可以确定数据存储组件203中针对区块n的写数据标识N1是准确(正常)的数据。
上述是以数据存储组件203中的写数据标识以及已记账数据集合403b中的写数据标识进行对比为例叙述,可以理解的是,数据存储组件203中的读数据标识以及已记账数据集合403b中的读数据标识进行对比的过程与上述描述的过程一致,故此处不再进行赘述。
针对区块高度1、区块高度2、…、区块高度n,当数据存储组件203中的写数据标识以及已记账数据集合403b中的写数据标识均相同,且数据存储组件203中的读数据标识以及已记账数据集合403b中的读数据标识均相同时,可以确定数据存储组件203f的组件状态为组件正常状态,当存在一个对比结果为不相同时,共识节点20c可以确定数据存储组件203f的组件状态为组件异常状态。
可以理解的是,共识节点20c确定数据存储组件201f的组件状态的过程,与确定数据存储组件203f的组件状态的过程一致,仅仅是对比的数据不同,在确定数据存储组件201f的组件状态的过程中,是将数据存储组件201f中针对每个区块高度的第一区块标识,与已记账数据集合401b中的每个区块高度的第二区块标识进行对比,故此处不再进行赘述。同理,共识节点20c确定数据存储组件202f的组件状态的过程,与确定数据存储组件203f的组件状态的过程一致,仅仅是对比的数据不同,此处是将数据存储组件201f中的每个第一状态数据分别对应的第一版本标识,与已记账数据集合402b中对应的状态数据的第二版本标识进行对比,如果对比结果表示两个版本标识不一致,则表示数据存储组件202f存在异常情况,需要进行恢复。
可以理解的是,当数据类别为其他类别时,可以根据实际的数据类别选择合适的数据进行对账,本申请实施例仅以区块类别、状态类别以及读写类别示例。
步骤S207,当数据存储组件De的组件状态为组件异常状态时,根据区块文件对属于组件异常状态的数据存储组件De执行数据写操作。
具体的,请再参见图5,若写数据标识A1与写数据标识A2不相同,则共识节点20c可以确定数据存储组件203f中针对区块1的写数据标识A1是错误(异常)的数据,进而可以确定数据存储组件203f的组件状态为组件异常状态。共识节点20c可以从区块文件中获取针对目标区块高度(如上述的区块高度1)的写数据标识,以目标区块高度为新的索引键,目标区块高度对应的写数据标识为新的索引值,生成新的索引对,然后将该新的索引对写入至数据存储组件203f中,以替换写数据标识A1。其中,目标区块高度表示数据存储组件203f中为异常写数据标识对应的区块高度。
可选的,共识节点20c在确定数据存储组件203f中针对区块1的写数据标识A1是错误(异常)的数据后,可以进一步确定区块1中各个交易信息分别对应的写数据标识是否准确,即与已记账数据集合403b中的区块1中对应的交易信息的写数据标识进行对比,其确定过程与步骤S206中确定各区块高度对应的写数据标识的确定过程一致,故此处不再进行赘述。若共识节点20c确定数据存储组件203f中区块1中的交易信息1对应的写数据标识,与已记账数据集合403b中的区块1中的交易信息1对应的写数据标识不一致,此时,可以从区块文件中获取区块1中交易信息1对应的写数据标识,将获取到的区块1中交易信息1对应的写数据标识作为新的索引值,将交易信息1的交易序号作为新的索引键,根据新的索引值以及新的索引键生成新的索引对,将新的索引对写入数据存储组件203f中,以替换数据存储组件203f中区块1中的交易信息1对应的写数据标识(即错误的数据)。
上述是以数据存储组件对应的数据类别为读写类别为例进行叙述,可以理解的是,当数据存储组件对应的数据类别为状态类别或区块类别时,根据区块文件,共识节点对属于组件异常状态的数据存储组件的重新执行写操作的过程,与上文描述的一致,故此处不再进行赘述。
可选的,当系统时间达到数据对账周期时,发送用于请求账本数据对账的数据对账请求至共识网络;数据对账请求携带m个组件检查点;获取处于共识网络中的共识节点返回的m个待对账数据集合;一个组件检查点对应的数据类别与一个待对账数据集合对应的数据类别相同;m个数据存储组件包括数据存储组件Hi,m个待对账数据集合包括待对账数据集合Ji,数据存储组件Hi对应的数据类别与待对账数据集合Ji对应的数据类别相同,i为正整数,且i小于或等于m;将待对账数据集合Ji中的数据,与数据存储组件Hi中的数据进行对比,得到第二对比结果,根据第二对比结果确定数据存储组件Hi的组件状态;当数据存储组件Hi的组件状态为组件异常状态时,根据区块文件对属于组件异常状态的数据存储组件Hi执行数据写操作。
其中,当数据存储组件Hi的组件状态为组件异常状态时,根据区块文件对属于组件异常状态的数据存储组件Hi执行数据写操作的具体过程可以包括:当数据存储组件Hi的组件状态为组件异常状态,且区块文件中存在数据存储组件Hi的待恢复数据时,根据区块文件中的数据存储组件Hi的待恢复数据,对属于组件异常状态的数据存储组件Hi执行数据写操作;还可以包括:当数据存储组件Hi的组件状态为组件异常状态,且区块文件中不存在数据存储组件Hi的待恢复数据时,发送用于请求恢复账本数据的数据恢复请求至共识网络;数据恢复请求携带数据存储组件Hi的待恢复数据的数据标识;获取处于共识网络中的共识节点返回的数据存储组件Hi的待恢复数据,根据数据存储组件Hi的待恢复数据,对属于组件异常状态的数据存储组件Hi执行数据写操作。
其中,m个数据类别包括状态类别;根据第二对比结果确定数据存储组件Hi的组件状态的具体过程可以包括:当数据存储组件Hi对应的数据类别为状态类别时,获取数据存储组件Hi中针对第二状态数据的第三版本标识,获取待对账数据集合Ji中针对第二状态数据的第四版本标识;将第三版本标识与第四版本标识进行对比,得到第二对比结果;若第二对比结果为第三版本标识小于第四版本标识,则确定数据存储组件Hi的组件状态为组件异常状态。
其中,m个数据类别包括区块类别;根据第二对比结果确定数据存储组件Hi的组件状态的具体过程可以包括:当数据存储组件Hi对应的数据类别为区块类别时,获取数据存储组件Hi中针对第三区块数据的第三区块标识,获取待对账数据集合Ji中针对第三区块数据的第四区块标识;将第三区块标识与第四区块标识进行对比,得到第二对比结果;若第二对比结果为第三区块标识小于第四区块标识,则确定数据存储组件Hi的组件状态为组件异常状态。
其中,m个数据类别包括读写类别;根据第二对比结果确定数据存储组件Hi的组件状态的具体过程可以包括:当数据存储组件Hi对应的数据类别为读写类别时,获取数据存储组件Hi中针对第四区块高度的第三写数据标识,获取待对账数据集合Ji中针对第四区块高度的第四写数据标识;将第三写数据标识与第四写数据标识进行对比,得到第二对比结果;若第二对比结果为第三写数据标识小于第四写数据标识,则确定数据存储组件Hi的组件状态为组件异常状态。
上文已描述缓存区块文件可能不会存储全量的数据,故为了对账本中的全量数据进行对账处理,本申请实施例还可以在共识网络中获取另一个共识节点的账本数据。可以理解的是,两个共识节点分别对应的账本进行对账处理的过程,与一个共识节点利用缓存区块文件对自己的账本进行对账处理的过程是一致的,故此处不再进行赘述,请参见上文的描述。
在本申请实施例中,当获取到新共识通过的区块时,可以将其添加至区块文件中,在该区块文件中获取针对该区块的m个数据类别互不相同的待记账数据集合;进一步地,根据m个待记账数据集合,对m个数据存储组件并行执行数据写操作,获取m个数据存储组件分别对应的数据存储结果,可以理解的是,m个数据存储组件分别存储数据类别互不相同的数据,即一个数据存储组件用于存储一种数据类别的待记账数据集合;若m个数据存储结果中存在数据存储失败结果,则表明存在待记账数据集合没有成功写入至数据存储组件,此时,获取区块文件对应的区块检查点,以及m个数据存储组件分别对应的组件检查点;通过区块检查点以及m个组件检查点,可以在m个数据存储组件中确定属于组件异常状态的数据存储组件,即没有将对应的数据类别的待记账数据集合成功写入的数据存储组件,此时,可以根据区块文件对属于组件异常状态的数据存储组件执行数据写操作。上述可知,在本申请实施例中,通过对m个数据存储组件并行执行数据写操作,可以实现并行写入m个待记账数据集合,故可以提升区块链的网络性能以及降低对外业务的响应时间;此外,在m个数据存储结果中存在数据存储失败结果时,本申请实施例通过区块检查点以及m个组件检查点,可以确定属于组件异常状态的数据存储组件,并根据区块文件对属于组件异常状态的数据存储组件重新执行数据写操作,故可以保证缓存(可以等同于m个待记账数据集合)和分布式存储(等同于m个数据存储组件)之间的数据一致,避免数据丢失。
进一步地,请参见图6,图6是本申请实施例提供的一种基于区块链的数据处理装置的结构示意图。上述基于区块链的数据处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该数据处理装置为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。如图6所示,该数据处理装置1可以包括:第一获取模块11、第二获取模块12以及第一确定模块13。
第一获取模块11,用于获取区块文件,从区块文件中获取针对区块的m个数据类别互不相同的待记账数据集合;m为大于1的正整数;
第二获取模块12,用于根据m个待记账数据集合,对m个数据存储组件并行执行数据写操作,获取m个数据存储组件分别对应的数据存储结果;其中,一个数据存储组件用于存储一种数据类别的待记账数据集合;
第二获取模块12,还用于若m个数据存储结果中存在数据存储失败结果,则获取区块文件对应的区块检查点,以及m个数据存储组件分别对应的组件检查点;区块检查点为区块文件中的最大区块高度,m个组件检查点包括m个数据存储组件中分别对应的最大区块高度;
第一确定模块13,用于根据区块检查点以及m个组件检查点,在m个数据存储组件中确定属于组件异常状态的数据存储组件,根据区块文件对属于组件异常状态的数据存储组件执行数据写操作。
其中,第一获取模块11、第二获取模块12以及第一确定模块13的具体功能实现方式可以参见上述图2对应实施例中的步骤S101-步骤S104,这里不再进行赘述。
再请参见图6,基于区块链的数据处理装置1还可以包括:第二确定模块14以及第三获取模块15。
第二确定模块14,用于将数据存储结果为数据存储失败结果的数据存储组件,确定为目标数据存储组件;
第二确定模块14,还用于从m个待记账数据集合中,获取与目标数据存储组件相关联的目标待记账数据集合;
第三获取模块15,用于根据目标待记账数据集合,对目标数据存储组件执行数据写操作,获取目标数据存储组件的数据重写存储结果;
第三获取模块15,还用于若数据重写存储结果为数据存储失败结果,则统计目标数据存储组件被执行数据写操作的操作次数;
第三获取模块15,还用于当操作次数小于操作次数阈值时,根据目标待记账数据集合,重新对目标数据存储组件执行数据写操作;
第三获取模块15,还用于当操作次数等于操作次数阈值时,通知第二获取模块12获取区块文件对应的区块检查点,以及m个数据存储组件分别对应的组件检查点。
其中,第二确定模块14以及第三获取模块15的具体功能实现方式可以参见上述图2对应实施例中的步骤S102,这里不再进行赘述。
再请参见图6,第一确定模块13可以包括:第一确定单元131、第二确定单元132、第一获取单元133以及第一执行单元134。
第一确定单元131,用于在m个组件检查点中,将小于区块检查点的组件检查点确定为待更新组件检查点;
第一确定单元131,还用于在m个数据存储组件中,将与待更新组件检查点对应的数据存储组件确定为待恢复数据存储组件;待恢复数据存储组件的组件状态为组件异常状态;
第二确定单元132,用于根据待更新组件检查点以及区块检查点,确定待恢复数据存储组件的待恢复区块高度区间;
第一获取单元133,用于从区块文件中,获取属于待恢复区块高度区间的待恢复数据集合;待恢复数据集合对应的数据类别与待恢复数据存储组件对应的数据类别相同;
第一执行单元134,用于根据待恢复数据集合,对待恢复数据存储组件执行数据写操作。
其中,第一确定单元131、第二确定单元132、第一获取单元133以及第一执行单元134的具体功能实现方式可以参见上述图2对应实施例中的步骤S104,这里不再进行赘述。
再请参见图6,m个数据存储组件包括数据存储组件De,m个组件检查点包括数据存储组件De对应的组件检查点Fe,e为正整数且e小于或等于m;
基于区块链的数据处理装置1还可以包括:第四获取模快16以及第三确定模块17。
第四获取模快16,用于当系统时间达到数据对账周期时,基于组件检查点Fe从缓存区块文件中获取已记账数据集合;已记账数据集合对应的最大区块高度等于组件检查点Fe,已记账数据集合对应的数据类别与数据存储组件De的数据类别相同;缓存区块文件是指存储于缓存层中的区块文件;
第三确定模块17,用于将数据存储组件De中的数据,与已记账数据集合中的数据进行对比,得到第一对比结果,根据第一对比结果确定数据存储组件De的组件状态;
第三确定模块17,还用于当数据存储组件De的组件状态为组件异常状态时,根据区块文件对属于组件异常状态的数据存储组件De执行数据写操作。
其中,第四获取模快16以及第三确定模块17的具体功能实现方式可以参见上述图4对应实施例中的步骤S205-步骤S206,这里不再进行赘述。
再请参见图6,m个数据类别包括状态类别;
第三确定模块17可以包括:第二获取单元171以及第一对比单元172。
第二获取单元171,用于当数据存储组件De对应的数据类别为状态类别时,获取数据存储组件De中针对第一状态数据的第一版本标识,获取已记账数据集合中针对第一状态数据的第二版本标识;
第一对比单元172,用于将第一版本标识与第二版本标识进行对比,得到第一对比结果;
第一对比单元172,还用于若第一对比结果为第一版本标识与第二版本标识不同,则确定数据存储组件De的组件状态为组件异常状态。
其中,第二获取单元171以及第一对比单元172的具体功能实现方式可以参见上述图4对应实施例中的步骤S206,这里不再进行赘述。
再请参见图6,m个数据类别包括区块类别;
第三确定模块17可以包括:第三获取单元173以及第二对比单元174。
第三获取单元173,用于当数据存储组件De对应的数据类别为区块类别时,获取数据存储组件De中针对第一区块高度的第一区块标识,获取已记账数据集合中针对第一区块高度的第二区块标识;
第二对比单元174,用于将第一区块标识与第二区块标识进行对比,得到第一对比结果;
第二对比单元174,还用于若第一对比结果为第一区块标识与第二区块标识不同,则确定数据存储组件De的组件状态为组件异常状态。
其中,第三获取单元173以及第二对比单元174的具体功能实现方式可以参见上述图4对应实施例中的步骤S206,这里不再进行赘述。
再请参见图6,m个数据类别包括读写类别;
第三确定模块17可以包括:第四获取单元175以及第三对比单元176。
第四获取单元175,用于当数据存储组件De对应的数据类别为读写类别时,获取数据存储组件De中针对第二区块高度的第一写数据标识,获取已记账数据集合中针对第二区块高度的第二写数据标识;
第三对比单元176,用于将第一写数据标识与第二写数据标识进行对比,得到第一对比结果;
第三对比单元176,还用于若第一对比结果为第一写数据标识与第二写数据标识不同,则确定数据存储组件De的组件状态为组件异常状态。
其中,第四获取单元175以及第三对比单元176的具体功能实现方式可以参见上述图4对应实施例中的步骤S206,这里不再进行赘述。
再请参见图6,基于区块链的数据处理装置1还可以包括:第五获取模块18以及第四确定模块19。
第五获取模块18,用于当系统时间达到数据对账周期时,发送用于请求账本数据对账的数据对账请求至共识网络;数据对账请求携带m个组件检查点;
第五获取模块18,还用于获取处于共识网络中的共识节点返回的m个待对账数据集合;一个组件检查点对应的数据类别与一个待对账数据集合对应的数据类别相同;m个数据存储组件包括数据存储组件Hi,m个待对账数据集合包括待对账数据集合Ji,数据存储组件Hi对应的数据类别与待对账数据集合Ji对应的数据类别相同,i为正整数,且i小于或等于m;
第四确定模块19,用于将待对账数据集合Ji中的数据,与数据存储组件Hi中的数据进行对比,得到第二对比结果,根据第二对比结果确定数据存储组件Hi的组件状态;
第四确定模块19,还用于当数据存储组件Hi的组件状态为组件异常状态时,根据区块文件对属于组件异常状态的数据存储组件Hi执行数据写操作。
其中,第五获取模块18以及第四确定模块19的具体功能实现方式可以参见上述图4对应实施例中的步骤S207,这里不再进行赘述。
再请参见图6,第四确定模块19,具体用于当数据存储组件Hi的组件状态为组件异常状态,且区块文件中存在数据存储组件Hi的待恢复数据时,根据区块文件中的数据存储组件Hi的待恢复数据,对属于组件异常状态的数据存储组件Hi执行数据写操作;
第四确定模块19,还具体用于当数据存储组件Hi的组件状态为组件异常状态,且区块文件中不存在数据存储组件Hi的待恢复数据时,发送用于请求恢复账本数据的数据恢复请求至共识网络;数据恢复请求携带数据存储组件Hi的待恢复数据的数据标识;
第四确定模块19,还具体用于获取处于共识网络中的共识节点返回的数据存储组件Hi的待恢复数据,根据数据存储组件Hi的待恢复数据,对属于组件异常状态的数据存储组件Hi执行数据写操作。
其中,第四确定模块19的具体功能实现方式可以参见上述图4对应实施例中的步骤S207,这里不再进行赘述。
再请参见图6,m个数据类别包括状态类别;
第四确定模块19可以包括:第五获取单元191以及第四对比单元192。
第五获取单元191,用于当数据存储组件Hi对应的数据类别为状态类别时,获取数据存储组件Hi中针对第二状态数据的第三版本标识,获取待对账数据集合Ji中针对第二状态数据的第四版本标识;
第四对比单元192,用于将第三版本标识与第四版本标识进行对比,得到第二对比结果;
第四对比单元192,还用于若第二对比结果为第三版本标识小于第四版本标识,则确定数据存储组件Hi的组件状态为组件异常状态。
其中,第五获取单元191以及第四对比单元192的具体功能实现方式可以参见上述图7对应实施例中的步骤S207,这里不再进行赘述。
再请参见图6,m个数据类别包括区块类别;
第四确定模块19可以包括:第六获取单元193以及第五对比单元194。
第六获取单元193,用于当数据存储组件Hi对应的数据类别为区块类别时,获取数据存储组件Hi中针对第三区块数据的第三区块标识,获取待对账数据集合Ji中针对第三区块数据的第四区块标识;
第五对比单元194,用于将第三区块标识与第四区块标识进行对比,得到第二对比结果;
第五对比单元194,还用于若第二对比结果为第三区块标识小于第四区块标识,则确定数据存储组件Hi的组件状态为组件异常状态。
其中,第六获取单元193以及第五对比单元194的具体功能实现方式可以参见上述图4对应实施例中的步骤S207,这里不再进行赘述。
再请参见图6,m个数据类别包括读写类别;
第四确定模块19可以包括:第七获取单元195以及第六对比单元196。
第七获取单元195,用于当数据存储组件Hi对应的数据类别为读写类别时,获取数据存储组件Hi中针对第四区块高度的第三写数据标识,获取待对账数据集合Ji中针对第四区块高度的第四写数据标识;
第六对比单元196,用于将第三写数据标识与第四写数据标识进行对比,得到第二对比结果;
第六对比单元196,还用于若第二对比结果为第三写数据标识小于第四写数据标识,则确定数据存储组件Hi的组件状态为组件异常状态。
其中,第七获取单元195以及第六对比单元196的具体功能实现方式可以参见上述图4对应实施例中的步骤S207,这里不再进行赘述。
再请参见图6,m个数据类别包括区块类别、状态类别以及读写类别;
第一获取模块11可以包括:第一生成单元111、第二生成单元112、第三生成单元113以及第四生成单元114。
第一生成单元111,用于从区块文件中获取与区块类别相关联的区块数据,根据区块数据生成区块数据集合;
第二生成单元112,用于从区块文件中获取与状态类别相关联的状态数据,根据状态数据生成状态数据集合;
第三生成单元113,用于从区块文件中获取与读写类别相关联的读写数据,根据读写数据生成读写数据集合;
第四生成单元114,用于根据区块数据集合、状态数据集合以及读写数据集合,生成m个待记账数据集合。
其中,第一生成单元111、第二生成单元112、第三生成单元113以及第四生成单元114的具体功能实现方式可以参见上述图2对应实施例中的步骤S101,这里不再进行赘述。
再请参见图6,区块数据包括交易信息以及区块信息,区块信息包括交易信息的交易标识;
第一生成单元111可以包括:第一确定子单元1111以及第一生成子单元1112。
第一确定子单元1111,用于将交易标识作为第一索引键,将交易信息作为第一索引值,将第一索引键以及第一索引值确定为第一索引对;
第一确定子单元1111,还用于将区块信息对应的区块高度作为第二索引键,将区块信息作为第二索引值,将第二索引键以及第二索引值确定为第二索引对;
第一确定子单元1111,还用于将区块信息对应的区块标识作为第三索引键,将区块信息对应的区块高度作为第三索引值,将第三索引键以及第三索引值确定为第三索引对;
第一生成子单元1112,用于将第一索引对、第二索引对以及第三索引对生成区块数据集合。
其中,第一确定子单元1111以及第一生成子单元1112的具体功能实现方式可以参见上述图2对应实施例中的步骤S101,这里不再进行赘述。
再请参见图6,第二生成单元112可以包括:第二确定子单元1121以及第二生成子单元1122。
第二确定子单元1121,用于将合约标识以及对象标识组合为第四索引键,将状态数据作为第四索引值,将第四索引键以及第四索引值确定为第四索引对;
第二确定子单元1121,还用于获取对象标识的历史状态数据对应的版本标识,根据历史状态数据对应的版本标识生成状态数据对应的版本标识;
第二确定子单元1121,还用于将状态数据以及状态数据对应的版本标识作为第五索引键,将状态数据对应的区块高度作为第五索引值,将第五索引键以及第五索引值确定为第五索引对;
第二生成子单元1122,用于将第四索引对以及第五索引对生成状态数据集合。
其中,第二确定子单元1121以及第二生成子单元1122的具体功能实现方式可以参见上述图2对应实施例中的步骤S101,这里不再进行赘述。
再请参见图6,读写数据包括读数据以及写数据;
第三生成单元113可以包括:第三确定子单元1131以及第三生成子单元1132。
第三确定子单元1131,用于将读数据的读数据标识作为第六索引键,将读数据作为第六索引值,将第六索引键以及第六索引值确定为第六索引对;
第三确定子单元1131,还用于将写数据的写数据标识作为第七索引键,将写数据作为第七索引值,将第七索引键以及第七索引值确定为第七索引对;
第三确定子单元1131,还用于将读数据对应的区块高度作为第八索引键,将读数据标识作为第八索引值,将第八索引键以及第八索引值确定为第八索引对;
第三确定子单元1131,还用于将写数据对应的区块高度作为第九索引键,将写数据标识作为第九索引值,将第九索引键以及第九索引值确定为第九索引对;
第三生成子单元1132,用于将第六索引对、第七索引对、第八索引对以及第九索引对生成读写数据集合。
其中,第三确定子单元1131以及第三生成子单元1132的具体功能实现方式可以参见上述图2对应实施例中的步骤S101,这里不再进行赘述。
再请参见图6,m个待记账数据集合包括待记账数据集合Ab,m个数据存储组件包括用于存储待记账数据集合Ab的数据存储组件Cb,b为正整数,且b小于或等于m;
第一获取模块11可以包括:第八获取单元115以及第二执行单元116。
第八获取单元115,用于获取针对待记账数据集合Ab的批处理数据写入指令;
第二执行单元116,用于根据批处理数据写入指令对数据存储组件Cb执行数据写操作,将待记账数据集合Ab写入至数据存储组件Cb
第二执行单元116,还用于在对数据存储组件Cb执行数据写操作的同时,根据(m-1)个待记账数据集合,对(m-1)个数据存储组件并行执行数据写操作;(m-1)个待记账数据集合包括m个待记账数据集合中除了待记账数据集合Ab之外的待记账数据集合,(m-1)个数据存储组件包括m个数据存储组件中除了数据存储组件Cb之外的数据存储组件。
其中,第八获取单元115以及第二执行单元116的具体功能实现方式可以参见上述图2对应实施例中的步骤S102,这里不再进行赘述。
在本申请实施例中,当获取到新共识通过的区块时,可以将其添加至区块文件中,在该区块文件中获取针对该区块的m个数据类别互不相同的待记账数据集合;进一步地,根据m个待记账数据集合,对m个数据存储组件并行执行数据写操作,获取m个数据存储组件分别对应的数据存储结果,可以理解的是,m个数据存储组件分别存储数据类别互不相同的数据,即一个数据存储组件用于存储一种数据类别的待记账数据集合;若m个数据存储结果中存在数据存储失败结果,则表明存在待记账数据集合没有成功写入至数据存储组件,此时,获取区块文件对应的区块检查点,以及m个数据存储组件分别对应的组件检查点;通过区块检查点以及m个组件检查点,可以在m个数据存储组件中确定属于组件异常状态的数据存储组件,即没有将对应的数据类别的待记账数据集合成功写入的数据存储组件,此时,可以根据区块文件对属于组件异常状态的数据存储组件执行数据写操作。上述可知,在本申请实施例中,通过对m个数据存储组件并行执行数据写操作,可以实现并行写入m个待记账数据集合,故可以提升区块链的网络性能以及降低对外业务的响应时间;此外,在m个数据存储结果中存在数据存储失败结果时,本申请实施例通过区块检查点以及m个组件检查点,可以确定属于组件异常状态的数据存储组件,并根据区块文件对属于组件异常状态的数据存储组件重新执行数据写操作,故可以保证缓存(可以等同于m个待记账数据集合)和分布式存储(等同于m个数据存储组件)之间的数据一致,避免数据丢失。
进一步地,请参见图7,图7是本申请实施例提供的一种计算机设备的结构示意图。如图7所示,该计算机设备1000可以为上述图2对应实施例中的共识节点,该计算机设备1000可以包括:至少一个处理器1001,例如CPU,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),网络接口1004可选地可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选地还可以是至少一个位于远离前述处理器1001的存储装置。如图7所示,作为一种计算机存储介质的存储器1005可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图7所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取区块文件,从区块文件中获取针对区块的m个数据类别互不相同的待记账数据集合;m为大于1的正整数;
根据m个待记账数据集合,对m个数据存储组件并行执行数据写操作,获取m个数据存储组件分别对应的数据存储结果;其中,一个数据存储组件用于存储一种数据类别的待记账数据集合;
若m个数据存储结果中存在数据存储失败结果,则获取区块文件对应的区块检查点,以及m个数据存储组件分别对应的组件检查点;区块检查点为区块文件中的最大区块高度,m个组件检查点包括m个数据存储组件中分别对应的最大区块高度;
根据区块检查点以及m个组件检查点,在m个数据存储组件中确定属于组件异常状态的数据存储组件,根据区块文件对属于组件异常状态的数据存储组件执行数据写操作。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图2以及图4所对应实施例中对基于区块链的数据处理方法的描述,也可执行前文图6所对应实施例中对数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被处理器执行时实现图2以及图4中各个步骤所提供的基于区块链的数据处理方法,具体可参见上述图2以及图4各个步骤所提供的实现方式,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
上述计算机可读存储介质可以是前述任一实施例提供的基于区块链的数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备可执行前文图2以及图4所对应实施例中对基于区块链的数据处理方法的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (15)

1.一种基于区块链的数据处理方法,其特征在于,包括:
获取区块文件,从所述区块文件中获取针对区块的m个数据类别互不相同的待记账数据集合;m为大于1的正整数;
根据m个待记账数据集合,对m个数据存储组件并行执行数据写操作,获取所述m个数据存储组件分别对应的数据存储结果;其中,一个数据存储组件用于存储一种数据类别的待记账数据集合;
若m个数据存储结果中存在数据存储失败结果,则获取所述区块文件对应的区块检查点,以及所述m个数据存储组件分别对应的组件检查点;所述区块检查点为所述区块文件中的最大区块高度,m个组件检查点包括所述m个数据存储组件中分别对应的最大区块高度;
根据所述区块检查点以及所述m个组件检查点,在所述m个数据存储组件中确定属于组件异常状态的数据存储组件,根据所述区块文件对属于所述组件异常状态的数据存储组件执行数据写操作。
2.根据权利要求1所述的方法,其特征在于,在所述获取所述区块文件对应的区块检查点,以及所述m个数据存储组件分别对应的组件检查点的步骤之前,还包括:
将数据存储结果为所述数据存储失败结果的数据存储组件,确定为目标数据存储组件;
从所述m个待记账数据集合中,获取与所述目标数据存储组件相关联的目标待记账数据集合;
根据所述目标待记账数据集合,对所述目标数据存储组件执行数据写操作,获取所述目标数据存储组件的数据重写存储结果;
若所述数据重写存储结果为所述数据存储失败结果,则统计所述目标数据存储组件被执行数据写操作的操作次数;
当所述操作次数小于操作次数阈值时,根据所述目标待记账数据集合,重新对所述目标数据存储组件执行数据写操作;
当所述操作次数等于操作次数阈值时,执行所述获取所述区块文件对应的区块检查点,以及所述m个数据存储组件分别对应的组件检查点的步骤。
3.根据权利要求1所述的方法,其特征在于,所述根据所述区块检查点以及所述m个组件检查点,在所述m个数据存储组件中确定属于组件异常状态的数据存储组件,根据所述区块文件对属于所述组件异常状态的数据存储组件执行数据写操作,包括:
在所述m个组件检查点中,将小于所述区块检查点的组件检查点确定为待更新组件检查点;
在所述m个数据存储组件中,将与所述待更新组件检查点对应的数据存储组件确定为待恢复数据存储组件;所述待恢复数据存储组件的组件状态为所述组件异常状态;
根据所述待更新组件检查点以及所述区块检查点,确定所述待恢复数据存储组件的待恢复区块高度区间;
从所述区块文件中,获取属于所述待恢复区块高度区间的待恢复数据集合;所述待恢复数据集合对应的数据类别与所述待恢复数据存储组件对应的数据类别相同;
根据所述待恢复数据集合,对所述待恢复数据存储组件执行数据写操作。
4.根据权利要求1所述的方法,其特征在于,所述m个数据存储组件包括数据存储组件De,所述m个组件检查点包括所述数据存储组件De对应的组件检查点Fe,e为正整数且e小于或等于m;
所述方法还包括:
当系统时间达到数据对账周期时,基于所述组件检查点Fe从缓存区块文件中获取已记账数据集合;所述已记账数据集合对应的最大区块高度等于所述组件检查点Fe,所述已记账数据集合对应的数据类别与所述数据存储组件De的数据类别相同;所述缓存区块文件是指存储于缓存层中的所述区块文件;
将所述数据存储组件De中的数据,与所述已记账数据集合中的数据进行对比,得到第一对比结果,根据所述第一对比结果确定所述数据存储组件De的组件状态;
当所述数据存储组件De的组件状态为所述组件异常状态时,根据所述区块文件对属于所述组件异常状态的数据存储组件De执行数据写操作。
5.根据权利要求4所述的方法,其特征在于,所述m个数据类别包括状态类别;
所述将所述数据存储组件De中的数据,与所述已记账数据集合中的数据进行对比,得到第一对比结果,根据所述第一对比结果确定所述数据存储组件De的组件状态,包括:
当所述数据存储组件De对应的数据类别为所述状态类别时,获取所述数据存储组件De中针对第一状态数据的第一版本标识,获取所述已记账数据集合中针对所述第一状态数据的第二版本标识;
将所述第一版本标识与所述第二版本标识进行对比,得到所述第一对比结果;
若所述第一对比结果为所述第一版本标识与所述第二版本标识不同,则确定所述数据存储组件De的组件状态为所述组件异常状态。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当系统时间达到数据对账周期时,发送用于请求账本数据对账的数据对账请求至共识网络;所述数据对账请求携带所述m个组件检查点;
获取处于所述共识网络中的共识节点返回的m个待对账数据集合;一个组件检查点对应的数据类别与一个待对账数据集合对应的数据类别相同;所述m个数据存储组件包括数据存储组件Hi,所述m个待对账数据集合包括待对账数据集合Ji,所述数据存储组件Hi对应的数据类别与所述待对账数据集合Ji对应的数据类别相同,i为正整数,且i小于或等于m;
将所述待对账数据集合Ji中的数据,与所述数据存储组件Hi中的数据进行对比,得到第二对比结果,根据所述第二对比结果确定所述数据存储组件Hi的组件状态;
当所述数据存储组件Hi的组件状态为所述组件异常状态时,根据所述区块文件对属于所述组件异常状态的数据存储组件Hi执行数据写操作。
7.根据权利要求6所述的方法,其特征在于,所述当所述数据存储组件Hi的组件状态为所述组件异常状态时,根据所述区块文件对属于所述组件异常状态的数据存储组件Hi执行数据写操作,包括:
当所述数据存储组件Hi的组件状态为所述组件异常状态,且所述区块文件中存在所述数据存储组件Hi的待恢复数据时,根据所述区块文件中的所述数据存储组件Hi的待恢复数据,对属于所述组件异常状态的数据存储组件Hi执行数据写操作;
所述方法还包括:
当所述数据存储组件Hi的组件状态为所述组件异常状态,且所述区块文件中不存在所述数据存储组件Hi的待恢复数据时,发送用于请求恢复账本数据的数据恢复请求至所述共识网络;所述数据恢复请求携带所述数据存储组件Hi的待恢复数据的数据标识;
获取处于所述共识网络中的共识节点返回的所述数据存储组件Hi的待恢复数据,根据所述数据存储组件Hi的待恢复数据,对属于所述组件异常状态的数据存储组件Hi执行数据写操作。
8.根据权利要求6所述的方法,其特征在于,所述m个数据类别包括状态类别;
所述将所述待对账数据集合Ji中的数据,与所述数据存储组件Hi中的数据进行对比,得到第二对比结果,根据所述第二对比结果确定所述数据存储组件Hi的组件状态,包括:
当所述数据存储组件Hi对应的数据类别为所述状态类别时,获取所述数据存储组件Hi中针对第二状态数据的第三版本标识,获取所述待对账数据集合Ji中针对所述第二状态数据的第四版本标识;
将所述第三版本标识与所述第四版本标识进行对比,得到所述第二对比结果;
若所述第二对比结果为所述第三版本标识小于所述第四版本标识,则确定所述数据存储组件Hi的组件状态为所述组件异常状态。
9.根据权利要求1所述的方法,其特征在于,所述m个数据类别包括区块类别、状态类别以及读写类别;
所述从所述区块文件中获取m个数据类别互不相同的待记账数据集合,包括:
从所述区块文件中获取与所述区块类别相关联的区块数据,根据所述区块数据生成区块数据集合;
从所述区块文件中获取与所述状态类别相关联的状态数据,根据所述状态数据生成状态数据集合;
从所述区块文件中获取与所述读写类别相关联的读写数据,根据所述读写数据生成读写数据集合;
根据所述区块数据集合、所述状态数据集合以及所述读写数据集合,生成所述m个待记账数据集合。
10.根据权利要求9所述的方法,其特征在于,所述区块数据包括交易信息以及区块信息,所述区块信息包括所述交易信息的交易标识;
所述根据所述区块数据生成区块数据集合,包括:
将所述交易标识作为第一索引键,将所述交易信息作为第一索引值,将所述第一索引键以及所述第一索引值确定为第一索引对;
将所述区块信息对应的区块高度作为第二索引键,将所述区块信息作为第二索引值,将所述第二索引键以及所述第二索引值确定为第二索引对;
将所述区块信息对应的区块标识作为第三索引键,将所述区块信息对应的区块高度作为第三索引值,将所述第三索引键以及所述第三索引值确定为第三索引对;
将所述第一索引对、所述第二索引对以及所述第三索引对生成所述区块数据集合。
11.根据权利要求9所述的方法,其特征在于,所述根据所述状态数据生成状态数据集合,包括:
将合约标识以及对象标识组合为第四索引键,将所述状态数据作为第四索引值,将所述第四索引键以及所述第四索引值确定为第四索引对;
获取所述对象标识的历史状态数据对应的版本标识,根据所述历史状态数据对应的版本标识生成所述状态数据对应的版本标识;
将所述状态数据以及所述状态数据对应的版本标识作为第五索引键,将所述状态数据对应的区块高度作为第五索引值,将所述第五索引键以及所述第五索引值确定为第五索引对;
将所述第四索引对以及所述第五索引对生成所述状态数据集合。
12.根据权利要求9所述的方法,其特征在于,所述读写数据包括读数据以及写数据;
所述根据所述读写数据生成读写数据集合,包括:
将所述读数据的读数据标识作为第六索引键,将所述读数据作为第六索引值,将所述第六索引键以及所述第六索引值确定为第六索引对;
将所述写数据的写数据标识作为第七索引键,将所述写数据作为第七索引值,将所述第七索引键以及所述第七索引值确定为第七索引对;
将所述读数据对应的区块高度作为第八索引键,将所述读数据标识作为第八索引值,将所述第八索引键以及所述第八索引值确定为第八索引对;
将所述写数据对应的区块高度作为第九索引键,将所述写数据标识作为第九索引值,将所述第九索引键以及所述第九索引值确定为第九索引对;
将所述第六索引对、所述第七索引对、所述第八索引对以及所述第九索引对生成所述读写数据集合。
13.根据权利要求1所述的方法,其特征在于,所述m个待记账数据集合包括待记账数据集合Ab,所述m个数据存储组件包括用于存储所述待记账数据集合Ab的数据存储组件Cb,b为正整数,且b小于或等于m;
所述根据所述m个待记账数据集合,对m个数据存储组件并行执行数据写操作,包括:
获取针对所述待记账数据集合Ab的批处理数据写入指令;
根据所述批处理数据写入指令对所述数据存储组件Cb执行数据写操作,将所述待记账数据集合Ab写入至所述数据存储组件Cb
在对所述数据存储组件Cb执行数据写操作的同时,根据(m-1)个待记账数据集合,对(m-1)个数据存储组件并行执行数据写操作;所述(m-1)个待记账数据集合包括所述m个待记账数据集合中除了所述待记账数据集合Ab之外的待记账数据集合,所述(m-1)个数据存储组件包括所述m个数据存储组件中除了所述数据存储组件Cb之外的数据存储组件。
14.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;
所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供数据通信功能,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1至13任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1-13任一项所述的方法。
CN202110890413.1A 2021-08-04 2021-08-04 基于区块链的数据处理方法、设备及计算机可读存储介质 Active CN113326165B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202110890413.1A CN113326165B (zh) 2021-08-04 2021-08-04 基于区块链的数据处理方法、设备及计算机可读存储介质
PCT/CN2022/099782 WO2023011022A1 (zh) 2021-08-04 2022-06-20 基于区块链的数据处理方法、设备及计算机可读存储介质
EP22851738.9A EP4379556A1 (en) 2021-08-04 2022-06-20 Blockchain-based data processing method, and device and computer-readable storage medium
US18/300,191 US20230259526A1 (en) 2021-08-04 2023-04-13 Block-chain-based data processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110890413.1A CN113326165B (zh) 2021-08-04 2021-08-04 基于区块链的数据处理方法、设备及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN113326165A true CN113326165A (zh) 2021-08-31
CN113326165B CN113326165B (zh) 2021-11-16

Family

ID=77427060

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110890413.1A Active CN113326165B (zh) 2021-08-04 2021-08-04 基于区块链的数据处理方法、设备及计算机可读存储介质

Country Status (4)

Country Link
US (1) US20230259526A1 (zh)
EP (1) EP4379556A1 (zh)
CN (1) CN113326165B (zh)
WO (1) WO2023011022A1 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113626260A (zh) * 2021-10-11 2021-11-09 腾讯科技(深圳)有限公司 区块链网络的数据处理方法、装置、设备及存储介质
CN114782182A (zh) * 2022-04-10 2022-07-22 杭州复杂美科技有限公司 一种指定高度交易的区块共识方法、设备及存储介质
WO2023011022A1 (zh) * 2021-08-04 2023-02-09 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、设备及计算机可读存储介质
CN115811526A (zh) * 2023-02-09 2023-03-17 北京奥星贝斯科技有限公司 分布式存储系统中的共识方法、计算节点和系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107315786A (zh) * 2017-06-12 2017-11-03 腾讯科技(深圳)有限公司 业务数据存储方法及装置
CN109165229A (zh) * 2018-08-23 2019-01-08 北京京东金融科技控股有限公司 本地区块同步的检验方法、装置、设备及存储介质
CN109447635A (zh) * 2018-10-15 2019-03-08 北京京东尚科信息技术有限公司 用于区块链的信息存储方法和装置
CN110599321A (zh) * 2019-09-20 2019-12-20 腾讯科技(深圳)有限公司 税务数据处理方法、装置、服务器及存储介质
CN111352579A (zh) * 2018-12-24 2020-06-30 深圳市茁壮网络股份有限公司 数据存储方法及装置
CN112100282A (zh) * 2020-11-17 2020-12-18 腾讯科技(深圳)有限公司 联盟链的数据同步方法、装置、可读介质及电子设备
CN112422341A (zh) * 2020-11-18 2021-02-26 腾讯科技(深圳)有限公司 区块链网络的故障检测方法及相关设备
CN112632080A (zh) * 2020-12-29 2021-04-09 杭州趣链科技有限公司 基于区块链的数据存储方法、装置及设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107291862A (zh) * 2017-06-12 2017-10-24 腾讯科技(深圳)有限公司 业务数据存储方法、装置、存储介质及电子设备
CN109636388B (zh) * 2018-12-07 2024-02-23 深圳市智税链科技有限公司 区块链网络中的数据处理方法、装置、介质及电子设备
CN112597153B (zh) * 2020-12-09 2023-07-25 杭州趣链科技有限公司 一种基于区块链的数据存储方法、装置及存储介质
CN112291372B (zh) * 2020-12-28 2021-04-13 腾讯科技(深圳)有限公司 区块链的异步落账方法、装置、介质及电子设备
CN112395300B (zh) * 2021-01-20 2021-05-25 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、装置、设备及可读存储介质
CN113326165B (zh) * 2021-08-04 2021-11-16 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、设备及计算机可读存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107315786A (zh) * 2017-06-12 2017-11-03 腾讯科技(深圳)有限公司 业务数据存储方法及装置
CN109165229A (zh) * 2018-08-23 2019-01-08 北京京东金融科技控股有限公司 本地区块同步的检验方法、装置、设备及存储介质
CN109447635A (zh) * 2018-10-15 2019-03-08 北京京东尚科信息技术有限公司 用于区块链的信息存储方法和装置
CN111352579A (zh) * 2018-12-24 2020-06-30 深圳市茁壮网络股份有限公司 数据存储方法及装置
CN110599321A (zh) * 2019-09-20 2019-12-20 腾讯科技(深圳)有限公司 税务数据处理方法、装置、服务器及存储介质
CN112100282A (zh) * 2020-11-17 2020-12-18 腾讯科技(深圳)有限公司 联盟链的数据同步方法、装置、可读介质及电子设备
CN112422341A (zh) * 2020-11-18 2021-02-26 腾讯科技(深圳)有限公司 区块链网络的故障检测方法及相关设备
CN112632080A (zh) * 2020-12-29 2021-04-09 杭州趣链科技有限公司 基于区块链的数据存储方法、装置及设备

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023011022A1 (zh) * 2021-08-04 2023-02-09 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、设备及计算机可读存储介质
CN113626260A (zh) * 2021-10-11 2021-11-09 腾讯科技(深圳)有限公司 区块链网络的数据处理方法、装置、设备及存储介质
CN113626260B (zh) * 2021-10-11 2022-02-22 腾讯科技(深圳)有限公司 区块链网络的数据处理方法、装置、设备及存储介质
CN114782182A (zh) * 2022-04-10 2022-07-22 杭州复杂美科技有限公司 一种指定高度交易的区块共识方法、设备及存储介质
CN114782182B (zh) * 2022-04-10 2024-05-24 杭州复杂美科技有限公司 一种指定高度交易的区块共识方法、设备及存储介质
CN115811526A (zh) * 2023-02-09 2023-03-17 北京奥星贝斯科技有限公司 分布式存储系统中的共识方法、计算节点和系统

Also Published As

Publication number Publication date
CN113326165B (zh) 2021-11-16
WO2023011022A1 (zh) 2023-02-09
US20230259526A1 (en) 2023-08-17
EP4379556A1 (en) 2024-06-05

Similar Documents

Publication Publication Date Title
CN113326165B (zh) 基于区块链的数据处理方法、设备及计算机可读存储介质
CN110383279B (zh) 用于检测重放攻击的系统和方法
CN108389129B (zh) 基于区块链的交易执行方法及装置、电子设备
US11501533B2 (en) Media authentication using distributed ledger
CN110431577B (zh) 用于检测重放攻击的系统和方法
CN111600720B (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
EP3709568A1 (en) Deleting user data from a blockchain
CN112287034A (zh) 一种数据同步方法、设备以及计算机可读存储介质
CN112750037A (zh) 基于区块链的数据压缩、查询方法及装置和电子设备
CN111209339B (zh) 区块同步方法、装置、计算机以及存储介质
CN114971827A (zh) 一种基于区块链的对账方法、装置、电子设备及存储介质
CN111260475A (zh) 一种数据处理方法、区块链节点设备及存储介质
CN111343212B (zh) 消息处理方法、装置、设备以及存储介质
CN115730935A (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
CN115988001A (zh) 区块链系统的共识投票处理方法、装置、设备以及介质
CN106875184B (zh) 异常场景模拟方法、装置及设备
CN110858211B (zh) 数据存储方法、装置及系统、存储介质
CN108882230B (zh) 通话记录管理方法、装置及系统
CN116977067A (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
CN111797590B (zh) 数据核对方法、装置和设备
CN117010889A (zh) 数据处理方法、装置及设备、介质、产品
CN115730933A (zh) 基于区块链的数据处理方法、装置、设备及存储介质
CN112883038B (zh) 一种基于区块链的数据管理方法、计算机及可读存储介质
CN117390117A (zh) 基于区块链的数据处理方法、装置、设备及可读存储介质
CN117633099A (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: 40050029

Country of ref document: HK