CN114428763A - 一种数据处理方法、设备及介质 - Google Patents

一种数据处理方法、设备及介质 Download PDF

Info

Publication number
CN114428763A
CN114428763A CN202011183070.7A CN202011183070A CN114428763A CN 114428763 A CN114428763 A CN 114428763A CN 202011183070 A CN202011183070 A CN 202011183070A CN 114428763 A CN114428763 A CN 114428763A
Authority
CN
China
Prior art keywords
key
data
value pair
pair data
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011183070.7A
Other languages
English (en)
Inventor
郝利鹏
王磊
李阳东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Priority to CN202011183070.7A priority Critical patent/CN114428763A/zh
Publication of CN114428763A publication Critical patent/CN114428763A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • 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/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2151Time stamp

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Computer Security & Cryptography (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Development Economics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种数据处理方法、设备及介质,用于提升数据存储速度,避免发生卡顿的情况。方法包括:确定可读写文件中任一键值对数据的键的类别;根据所述键值对数据的键的类别,将所述键值对数据写入至少一个中间文件中,所述至少一个中间文件中的每个中间文件用于存储一个类别的键值对数据;若第一中间文件满足预设条件,将所述第一中间文件转化为磁盘中第0层的排序字符串表,所述第一中间文件为所述至少一个中间文件中的任一中间文件。

Description

一种数据处理方法、设备及介质
技术领域
本申请涉及到数据存储领域,尤其涉及到一种数据处理方法、设备及介质。
背景技术
levelDB是一种持久化键值(key value,KV)单机数据库(database,DB)。大部分区块链系统使用levelDB作为索引数据库或者状态数据库。例如,现有的Fabric区块链系统框架中的索引数据库和状态数据库均使用levelDB。索引数据库用于存储关于交易的存放区块的位置、交易的偏移值、交易是否有效等信息。状态数据库中存储了交易中所有键的最新值。
在levelDB进行写操作的过程中,如图1所示,首先将键值对数据写入内存中的可读写文件(memtable)中。当memtable写满时,转化为只读文件(immutable memtable),并生成新的memtable。而immutable memtable落盘为磁盘第0层中的排序字符串表(sortedstring table,SST)。由于memtable中存在键值重叠,因而immutable memtable中也存在键值重叠,以及其落盘后的SST中也存在键值重叠。并且与磁盘第0层中的其它SST之间也存在键值重叠。由于磁盘第0层中的SST之间存在键值重叠,造成磁盘第0层向第1层进行归并的速度较慢。
在数据库高吞吐率的场景中,第0层向第1层归并的速度较慢,immutablememtable需要等待第0层向第1层归并结束后,才能落盘到磁盘中第0层的SST。若磁盘中第0层向第1层归并花费大量的时间,会导致内存中immutable memtable因未能落盘,出现memtable写满后,无法转化为immutable memtable,也无法继续向memtable写入数据的情况。
针对该情况,现有技术会在通过先降低向levelDB写入操作的速度,来平衡数据写入memtable速度和第0层向第1层归并速度,若第0层向第1层归并速度小于levelDB写入速度,则会阻止向levelDB中的写入操作。这样的处置策略会使客户端在写入数据时出现周期性的卡顿,造成超时。
发明内容
本申请的目的在于提供一种数据处理方法、设备及介质,用于提升数据存储速度,避免发生写入数据时出现卡顿以及超时的情况。
第一方面,本申请提供一种数据处理方法,该方法包括:确定可读写文件中任一键值对数据的键的类别。然后,根据所述键值对数据的键的类别,将所述键值对数据写入至少一个中间文件中。其中,所述至少一个中间文件中的每个中间文件用于存储一个类别的键值对数据。若第一中间文件满足预设条件,将所述第一中间文件转化为磁盘中第0层的排序字符串表,所述第一中间文件为所述至少一个中间文件中任一中间文件。
在上述技术方案中,将可读写文件中的键值对数据根据键的类型进行分类,将确定出类别的键值对数据写入存储相同类别键值对数据的中间文件中。中间文件的数量可以为一个或多个。若所述至少一个中间文件中的第一中间文件满足预设条件,可以将第一中间文件转化为磁盘中第0层的排序字符串表。磁盘中第0层由第一中间文件转化的排序字符串表与其它的排序字符串表中的键值对数据的键的类别不同,因而磁盘中第0层的排序字符串表之间不在键值重叠,提升了磁盘中的第0层向第1层归并速度,不需要降低向数据库写入操作的速度。
一种可能的设计中,所述键的类别与所述键值对数据所在数据库中键的字典相同。
在上述技术方案中,所述键值对所在数据库中键的字典可以包括多个字段。根据数据库中键的字典,对键值对数据进行分类。中间文件中存储字典中的一个字段的键值对数据,并在中间文件满足预设条件后转化为磁盘中的第0层的排序字符串表,并且磁盘中的第0层的一个排序字符串表中也包含一个字段的键值对数据,不同排序字符串表中的键值对数据的字段不同,无键重叠,从而提升了磁盘中第0层向第1层归并速度。
一种可能的设计中,所述字典包括如下至少一项:元数据、区块索引、交易有效性数据、区块有效性数据、对象所在文件偏移、对象有效状态、对象所在区块。
在上述技术方案中,数据库的字典可以根据应用数据库的场景进行设置。如存储文件场景中,数据库的字典可以包括元数据、区块索引、交易、区块有效性数据中的至少一个字段。再如区块链交易场景中,数据库的字典可以包括对象所在文件偏移、对象有效状态、对象所在区块等一个或多个字段。
一种可能的设计中,所述预设条件包括:所述第一中间文件的文件大小大于或等于文件大小阈值。
在上述技术方案中,若第一中间文件的文件大小大于或等于文件大小阈值,触发第一中间文件转化为磁盘中第0层的排序字符串表。通过调整文件大小阈值,改变磁盘中第0层的排序字符串表向第1层归并的起始时间。
一种可能的设计中,在所述确定可读写文件中任一数据的类别之前,所述方法还包括:接收至少一个键值对数据,所述至少一个键值对数据携带有数据标识,所述数据标识包括生成所述键值对数据的时间戳。然后,根据所述至少一个键值对数据的各数据标识中的时间戳,将所述至少一个键值对数据写入所述可读写文件中,每个键值对数据中包括数据标识。
在上述技术方案中,接收的键值对数据可携带数据标识,数据标识中包括生成键值对数据的时间戳,依据接收的键值对数据携带的时间戳,向可读写文件中写入键值对数据,实现顺序写入。数据库处理大数据量场景中,将键值对数据顺序写入数据库,可以较好的提升数据库性能。键值对数据中包括数据标识,数据标识中携带的时间戳可以减少降低可读写文件中的数据出现键值重叠的可能性,从而使得中间文件中的键值对数据以及磁盘中第0层的排序字符串表中的键值对数据存在键值重叠的可能性较低,实现进一步提升磁盘中第0层的排序字符串表向第1层归并的速度。
一种可能的设计中,每个所述中间文件中的键值对数据是根据各键值对数据的数据标识中的时间戳排序的。
在上述技术方案中,中间文件中的键值对数据是根据生成键值对数据的时间戳排序的,数据库可以按照时间戳建立索引,用户在向数据库查询键值对数据时,数据库能够快速的对用户的查询操作进行响应。
一种可能的设计中,所述数据标识还包括如下至少一项:用户身份信息、随机数、哈希值,其中,所述哈希值是基于所述用户身份信息和所述随机数确定的。
在上述技术方案中,为进一步降低可读写文件中的键值对数据键值重叠的可能性或者几率,数据标识还可以包括用户身份信息、随机数、基于用户身份信息和随机数确定的哈希值等信息。从而使得中间文件中的键值对数据以及磁盘中第0层的排序字符串表中的键值对数据存在键值重叠的可能性较低,实现进一步提升磁盘中第0层的排序字符串表向第1层归并的速度。第二方面,本申请提供一种数据处理方法,该方法包括:生成键值对数据,所述键值对数据中包括对应的数据标识,所述数据标识中携带生成所述键值对数据的时间戳。然后将发送所述键值对数据。
在上述技术方案中,发送的键值对数据中包括该键值对数据的数据标识。其中,数据标识中携带生成键值对数据的时间戳。将带有时间戳的键值对数据发送给服务器,便于服务器根据数据标识中的时间戳进行读写操作,降低可读写文件中发生键值重叠的可能性。
一种可能的设计中,所述数据标识还包括如下至少一项:用户身份信息、随机数、哈希值,其中,所述哈希值是基于所述用户身份信息和所述随机数确定的。
在上述技术方案中,进一步降服务器的可读写文件中的键值对数据键值重叠的可能性或者几率,数据标识还可以包括用户身份信息、随机数、基于用户身份信息和随机数确定的哈希值等信息。
第三方面,本申请提供一种数据查询方法,所述方法包括:接收查询请求,所述查询请求中携带数据标识,查询请求可以用于获取数据标识对应的键值对数据。然后在第一中间文件中,根据所述数据标识查找所述键值对数据,所述第一中间文件用于存储第一类别的键值对数据,所述第一类别与所述键值对数据的键的类别相同,第一中间文件为多个中间文件中的任一个。
在上述技术方案中,服务器执行数据查询方法的过程中,可以根据接收查询请求中携带的数据标识,在各中间文件中查询是否具有数据标识对应的键值对数据。其中,每个中间文件中包括同一类别的键值对数据。查询请求可以是终端用于获取数据标识对应的键值对数据。
一种可能的设计中,所述数据标识包括时间戳,所述查找所述键值对数据,包括:依据所述时间戳,查找所述键值对数据。
在上述技术方案中,将数据标识的时间戳作为索引,在第一中间文件中查询键值对数据,提升查询速度。
一种可能的设计中,所述方法还包括:在磁盘中的第0层与所述键值对数据的键的类别相同的排序字符串表中,查询数据标识对应的所述键值对数据。
第四方面,本申请还提供一种电子设备,包括处理器、存储器和一个或多个计算机程序,一个或多个计算机程序存储于所述存储器中,当所述一个或多个计算机程序被所述处理器调用时,使得所述电子设备执行上述第一方面中任一可能的设计的技术方案。
第五方面,本申请还提供一种电子设备,包括处理器、存储器和一个或多个计算机程序,一个或多个计算机程序存储于所述存储器中,当所述一个或多个计算机程序被所述处理器调用时,使得所述电子设备执行上述第二方面中任一可能的设计的技术方案。
第六方面,本申请还提供一种电子设备,包括处理器、存储器和一个或多个计算机程序,一个或多个计算机程序存储于所述存储器中,当所述一个或多个计算机程序被所述处理器调用时,使得所述电子设备执行上述第三方面中任一可能的设计的技术方案。
第七方面,本申请实施例提供一种数据处理系统,包括如第五方面,以及第六方面提供的电子设备。
第八方面,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质包括计算机程序,当计算机程序在设备上运行时,使得所述设备执行本申请实施例第一方面及其第一方面任一可能设计的技术方案,第二方面及其第二方面任一可能的设计的技术方案,或者,第三方面及其第三方面任一可能的设计的技术方案。
第九方面,本申请还提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行本申请实施例第一方面及其第一方面任一可能设计的技术方案,第二方面及其第二方面任一可能的设计的技术方案,或者,第三方面及其第三方面任一可能的设计的技术方案。
第十方面,本申请实施例还提供了一种芯片,所述芯片用于读取存储器中存储的计算机程序,执行上述第一方面或第二方面中提供的方法。
第十一方面,本申请实施例还提供了一种芯片系统,该芯片系统包括处理器,用于支持计算机装置实现上述第一方面或第二方面中提供的方法。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器用于保存该计算机装置必要的程序和数据。该芯片系统可以由芯片构成,也可以包含芯片和其他分立器件。
上述第四方面可以达到的技术效果请参照上述第一方面中相应设计可以达到的技术效果描述,第五方面可以达到的技术效果请参照上述第二方面中相应设计可以达到的技术效果描述,第六方面可以达到的技术效果请参照上述第三方面中相应设计可以达到的技术效果,第七方面至第十方面可以达到的技术效果参照上述第一方面、第二方面、第三方面中相应设计可以达到的技术效果,这里不再重复赘述。
附图说明
图1为现有技术中levelDB的数据处理过程示意图;
图2为一种区块链系统中交易处理流程示意图;
图3为DB内存化方案的交易处理过程示意图;
图4为DB分片化方案中的交易处理流程示意图;
图5为DB分片化方案中的交易处理流程示意图;
图6为本申请实施例提供的数据处理方法的流程示意图;
图7为本申请实施例提供的数据处理过程示意图;
图8为本申请实施例提供的数据处理过程示意图;
图9为本申请实施例提供的数据处理过程示意图;
图10为本申请实施例提供的数据处理过程示意图;
图11为本申请实施例提供的区块链系统结构示意图;
图12为本申请实施例提供的区块链系提案处理过程示意图;
图13为本申请实施例提供的数据查询方法的流程示意图;
图14为本申请实施例提供的服务器的结构示意图;
图15为本申请实施例提供的服务器的结构示意图;
图16为本申请实施例提供的终端的硬件结构示意图;
图17为本申请实施例提供的应用界面示意图;
图18为本申请实施例提供的终端的软件结构示意图。
具体实施方式
区块链是一个由分布式网络中的节点维护的不可篡改的账本,账本包括多个交易。这些节点通过执行由共识协议验证过的交易transaction来各自维护一个账本的副本,账本以区块的形式存在,每个区块通过哈希与之前的区块相连。通常在区块链中,DB可以存储区块链中的账本中的交易。
区块链可分为非许可(permissionless)区块链技术和许可(permissioned)区块链。例如,比特币和以太坊属于非许可区块链,允许任何人在区块链中匿名互动。再例如,Hyperedger Fabric是一种典型的许可区块链,允许在一组已知、已通过审查的参与者中操作区块链,这些参与者在产生一定程度信任的治理模型下运作。
区块链从本质上讲,它是一个共享DB,存储于其中的数据或信息,具有“不可伪造”、“全程留痕”、“可以追溯”、“公开透明”、“集体维护”等特征。基于这些特征,人们普遍认为区块链将对金融、房地产、公共管理、能源和交通行业产生重大影响。
然而,存储区块链中交易的DB的读写性能,会影响区块链发展。尤其DB的读写性能会严重影响区块链交易吞吐量。以性能领先的许可区块链Fabric为例,在标准测试模型下,区块链的交易吞吐量仅有2000tps左右。在DB中存储的历史数据超过10亿级别后,区块链的交易吞吐量会衰减到100tps以下。
首先,简单介绍在区块链中进行交易的过程,以及现有的提升区块链交易吞吐量的两种可能的解决方案。
如图2中示出了区块链中的进行一般交易的处理流程。在区块链场景中交易也可以称为提案。客户端(Client)创建的交易(tx)可以表示为<ClientID,chaincodeID,txPayload,timestamp,clientSig>。其中,ClientID是提交tx的Client的标识(identity,ID),chaincodeID是引用交易所属的链码,txPayload是提交的交易本身的有效负载,timestamp是由Client维护的单调递增(对于每个新交易)整数,clientSig是tx在其它字段上的客户端的签名。
步骤S101-S103,客户端Client发送交易。
Client分别将交易tx发送给其选择的背书节点(Endorsing Peer)1~3。
步骤S104-S106,Endorsing Peer1~3模拟/执行交易,对交易背书签名。
Endorsing Peer1~3分别在验证Client的签名clientSig后,对该tx进行模拟交易,并在认可该交易后,对该交易进行背书。
步骤S107-S109,Endorsing Peer1~3发送背书签名信息。
Endorsing Peer1~3分别向Client发送背书签名,如TRANSACTION-ENDORSEDMsg,可以表示为<TRANSACTION-ENDORSED,tid,tran-proposal,epSig>。其中,交易提案tran-proposal包括(epID,tid,chaincodeID,txContentBlob,readset,writeset)。epSig是背书节点对tran-proposal的签名。
步骤S110,Client收集满足背书策略的,且有效的背书的背书签名。
步骤S111,Client广播背书。
Client将背书节点Endorsing Peer1~3的背书签名通过排序服务广播给排序节点(Orderers)。
步骤S112,Orderers执行排序服务。
Orderers进行排序服务时,将对一段时长内接收的交易进行排序。
步骤S113-S116,Orderers发送排序后的交易。
Orders将排序后的交易发送到各背书节点Endorsing Peer1~3以及提交节点(Committing Peer)(也可称记账节点),根据共识机制,对排序后的交易逐一验证。
步骤S117~S120,Endorsing Peer1~3、Committing Peer分别验证每个交易并生成区块。
然后各Endorsing Peer验证Orderers分发的排序后的交易中的每一个交易,例如验证每个交易的背书签名,以及tran-proposal中的readset。若验证通过,将tran-proposal中writeset应用于区块链状态。在各节点处,对排序后的交易验证通过后,生成新的区块,并提交到本地的账本中。
步骤S121~S123,Endorsing Peer1~3发送交易结果。
各Endorsing Peer在将Client的交易落块后,通知Client交易结果,如交易状态等。
上述介绍的区块链系统采用基于多版本并发控制机制(multi-versionconcurrency control,MVCC)的背书和提交的两阶段事务模式。目前,对区块链提交阶段可能的优化方案,可分DB内存化和DB分片化两大方面。
其中,DB内存化的方案主要基于这样一个假设,在常见区块链系统场景中,例如,跟踪分类帐上的钱包或资产,世界状态可能相对较小。大多数服务器也可以容易地将数十亿个密钥保存在内存中。
图3示出了一种DB内存化方案,Orderers可以包括多个节点,由多个Orderer节点为区块链系统提供排序服务。Orderers将交易转发给对等体节点(Peer),其中,对等体节点可以是背书节点和记账节点。Peer对Orderer分发的交易进行一些处理,例如,成员服务提供者验证、MVCC验证、区块提交等过程,向缓存中进行区块提交可以在内存中的区块缓存(Block cache)和哈希表(Hash table)中进行。
Peer使用内存中的哈希表而不由levelDB/CouchDB来存储世界状态。如此,Peer可以在更新世界状态时不需要访问磁盘(或者硬盘)。DB内存化的方案还避免了由于区块链本身的冗余保证,而不必要的昂贵的DB系统保证(即,事务管理属性)。
DB内存化的方案中,根据区块链中区块是不可变的特点。为了实现区块链系统的最大扩展,Peer使用外置分布式集群cluster存储区块,分布式集群可以包括多个存储节点node。Peer将内存中的区块定时同步到cluster中。
DB内存化方案并不适用于商用区块链系统。原因是大部分的商用系统大多具有T量级的数据量,这么庞大的数据量完全放在内存中是几乎不可能的。另外,DB内存化方案在区块链系统重启后,需要根据整条链建立内存DB,这个过程非常耗时。
另外,DB分片化的方案,主要借鉴传统DB的水平切片思想,将同一个表中的数据按照一定的规则拆分到不同的切片(shard)中。例如,将同一个表中的数据按照字典顺序拆分到不同的shard中,每个shard存储一个字典属性的键(key),也即也是每个shard存储不同类别的key。每个shard可以作为一个子链,背书、共识等机制可以在并行的在shard上运行。通常shard可以实施为DB或表(table),在通过相应的DB路由或者table路由规则找到需要查询的具体的DB或者table。
DB分片化的方案需要对现有的区块链系统架构进行调整,例如,调整Client发起背书提案的过程。在区块链系统中应用DB分片化的方案,Client进行背书提案的过程,如图4所示。
步骤S201,Client向Peer0中的一个shard发送背书提案。
Client可以向多个Peer发送背书提案,为便于描述,多个Peer可以用不同的标号进行区分,例如Peer0,Peer1等。一个Peer中包括多个切片shard,多个shard可以通不同的标号进行区分,例如shard0,shard1等。在Client向多个Peer发送背书提案时,实际Client向一个Peer中的一个shard发送背书提案。图4中示出了Client向Peer0的shard0发送背书提案。Client通过调用Fabric软件工具包(software development kit,SDK)将背书提案发送给Peer0中的一个shard。
步骤S202,Peer0的shard0根据固定的哈希策略,为读写集中的key分配shard。
由接收Client发送的背书提案的shard0,根据一定的策略,例如哈希(hash)策略,为经常进行读写的key分配shard。读写集中的key可以理解为客户端经常访问的key。
步骤S203,Peer0的shard0获取其它shard中存储的key值。
由接收Client发送的背书提案的shard0,从其它shard中获取该背书提案key的值。
步骤S204,Peer0的shard0发送背书结果,背书结果中包含每个key的shard信息。
由接收Client发送的背书提案的shard0,确定背书提案的背书结果,背书结果中包含每个key的shard信息,或者说背书结果中包含每个key所在shard的信息。然后将背书结果发送给Client。
在区块链系统中应用DB分片化的方案,Client进行交易的过程,如图5所示。
步骤S301,Client发送交易。
在DB分片化的方案中,多个Orderers中的每个节点也进行分片化。Client将交易发送给Orderers中的一个Orderer多个shard中的一个shard。其中,被选择的shard与交易具有关联关系,例如,交易的key与shard存储的key的类型相同。图5中示出了Client将交易发送给Orderers中Orderer0的shard0。
步骤S302,Orderer0 shard0从Peer0 shard0中拉取区块。
步骤S303,Orderer0 shard0从Peer0 shard1中拉取区块。
由于每个分片由一个子链实现,因而Peer0的不同shard中存有交易的背书提案,背书结果等交易数据。Orderer0通过拉取区块,将交易结果通知Peer0的shard0和shard1,分别对交易进行校验后,将交易数据写入区块。
步骤S304,Peer0 shard0对交易进行校验。
Peer0 shard0将交易的背书结果与Orderer0 shard0通过拉取区块方式下发的交易结果进行校验。
步骤S305,Peer0 shard0向Coordinator interchannel发送校验结果。
Peer0 shard0将对交易的背书结果与Orderer0 shard0通过拉取区块方式下发的交易结果进行校验后的校验结果发送给Coordinator interchannel,供其对不同shard的校验结果进行联合校验。
步骤S306,Peer0 shard1对交易进行校验。
步骤S307,Peer0 shard1向Coordinator interchannel发送校验结果。
步骤S308,Coordinator interchannel对校验结果0和校验结果1进行联合校验。
通道协调器Coordinator interchannel接收到不同shard对交易进行校验的校验结果,若校验结果0与校验结果1一致,可以通知Peer0的shard0或者shard1中的任一shard将交易结果发送给Client。若不一致,表明交易结果与之前背书提案或者背书结果不一致失败。
由于DB分片化方案中,为了确保数据一致性,需要由Coordinator interchannel进行协调,对多个shard的校验结果进行联合校验,降低了交易的校验速度,使区块链系统性能严重衰减。并且,DB分片化方案在现有的区块链系统中应用时,还需对系统构架进行大量的改造,增加通道协调器等,系统维护成本较高。
综上,DB内存化方案中,巨大的数据量使得构造分布式存储集群的成本过大。DB分片化方案中,需要对系统构架进行大量的改造,并且需要对多个shard进行联合校验,降低了交易的校验速度。
有鉴于此,本申请提供另一种提升区块链系统性能的解决方案,通过提升区块链系统中的DB的读写性能,实现提升区块链系统性能。
本申请实施例提供的数据处理方法可以应用于服务器侧的设备和多个客户端侧的设备之间的交互场景,其中,服务器侧的设备可以实施为具有服务器功能的任一电子设备,客户端侧的设备可以实施为具有通信功能的电子设备。为便于描述,将服务器侧的设备描述为服务器,客户端侧的设备描述为客户端。
一个示例中,服务器侧的设备可以实施为区块链场景中的背书节点侧、排序节点侧、提交节点侧的电子设备,客户端侧的设备可以实施为区块链中发起交易的任一电子设备,例如,手机、平板电脑、笔记本电脑、服务器等电子设备。
另一个示例中,服务器侧的设备也可以实施为非区块链场景中的用于存储数据的电子设备,客户端侧的设备可以实施为发起数据存储或者查询操作的任一电子设备。示例的,非区块链场景可以为云存储场景。
如图6所示,本申请实施例提供的数据处理方法,可以包括如下步骤:
步骤S501,客户端发送键值对数据。
客户端可以通过服务器提供的接口发送键值对数据,例如,levelDB中的put接口、delete接口、batch接口。客户端发送的键值对数据可以实施为携带键值对数据的写入请求。其中,通过put接口生成的写入请求用于使服务器生成键值对数据或者更新服务器已存储的键值对数据。delete接口生成的写入请求用于使服务器删除已存储的键值对数据。batch接口生成的写入请求用于使服务器生成键值、更新或者删除已存储的多个键值对数据,也可以理解为客户端通过batch接口生成的写入请求,可使服务器对多个键值对数据进行操作。客户端发送的写入请求中携带的键值对数据包括键key和值value。
一个示例中,用户触发调用put接口,如通过输入put(key,value),客户端响应于用户的触发操作,将键值对数据(key,value)发送给服务器。服务器可以根据客户端发送键值对数据使用的接口,确定客户端对键值对数据的操作为写入、更新或者删除等类型的操作。
在步骤S501之前,客户端还可以生成键值对数据,并且键值对数据中包括对应的数据标识。
具体实施时,客户端可以响应于用户触发的生成键值对数据的操作,生成键值对数据。例如,客户端可以获取用户输入的键和值数据,并根据获取的键和值数据,可以生成键值对数据。如,获取的键为key1,值为value1,可以生成键值对数据(key1,value1)。
一种可能的实施方式中,键值对数据携带有数据标识,数据标识用于表征该键值对数据。例如,键为key1,值为value1,其数据标识为ID1,客户端可以生成键值对数据表示为(key1&ID1,value1),或者表示为(ID1&key1,value1)。其中,键值对数据携带数据标识,通过分隔符“&”,在实际应用场景中还可以使用其它符号、字符串、数字串等作为标记,便于服务器或客户端根据该标记区分数据标识和键值对数据。
客户端生成的键值对数据也可以表示为(key1ID1,value1)。键值对数据携带数据标识,不通过分隔符,直接将数据标识与键相连。
客户端确定出的数据标识可以用于向服务器发起写入请求,使服务器生成数据标识对应的键值对数据,或者使服务器更新数据标识对应的键值对数据,再或者使服务器删除数据标识对应的键值对数据。
一种可能的实施方式中,数据标识中可包括键值对数据的相关信息。例如,数据标识中携带生成键值对数据的时间戳。步骤S501中,客户端发送的键值对数据包括数据标识,数据标识中携带生成键值对数据的时间戳。
客户端生成键值对数据时,可以记录生成键值对数据的时间戳等时间信息。客户端确定该键值对数据的数据标识中可以携带生成键值对数据的时间戳,使得键值对数据的数据标识中包括该数据标识的时间信息。服务器可以根据接收的键值对数据的数据标识中的时间戳,确定写入顺序。
若服务器为区块链场景中Peer,键值对数据可实施为交易。Peer可以根据键值对数据的数据标识中的时间戳,确定对交易进行判重的顺序。在历史数据库较大时,也即levelDB中已存储的数据量较大时,服务器若通过随机读写对交易进行判重,会造成levelDB读写性能严重衰减。服务器利用交易的数据标识中的时间戳,对多个交易的时间戳排序。并依次对交易进行处理(例如,对交易进行判重、写入、查询等),实现顺序读写,可以避免levelBD读写性能的衰减,提升区块链的性能。
一个示例中,数据标识还可以包括如下至少一项:用户身份信息、随机数、哈希值,其中,哈希值是基于用户身份信息和随机数确定的。
客户端可以利用数据标识携带用户身份信息。客户端还可以利用数据标识携带用于验证键值对数据是否被篡改的验证数据。验证数据可以是随机数,也可以是基于用户身份信息和随机数确定的哈希值。
本申请实施例还提供一种生成数据标识的插件,可以集成在客户端的区块链应用程序的SDK中。客户端生成交易时,触发调用生成数据标识的插件,生成交易的数据标识。其中,交易的数据标识包含了时间信息或者时序信息。
一个示例中,数据标识可以包括32位字符,数据标识具体的编码形式可以采用如下表所示:
表1
0-22位 23-31位
时间戳 哈希值
表1中的0-22位的时间戳可以是基于协调世界时UTC的时间戳,时间粒度可以精确到纳秒级。例如20200323104010146231300,前0-7位为年月日,8-13位为时分秒,14-22位为纳秒。数据标识中的时间戳也可以是基于全球定位系统(global positioning system,GPS)的时间戳GPST,或者基于北斗定位系统(beidou,BD)的时间戳BDT。
客户端的区块链应用程序在初始化后,可以向服务器请求生成数据标识的时间戳类型,如UTC、GPST、BDT,使得客户端与服务器能够统一时间。
表1中的23-31位记录的哈希值,可以是根据发起交易用户身份信息确定,身份信息可以是证书公钥,或者其它身份标识,作为身份信息的一种形式。客户端还可以为每一个交易生成一个随机数,在确定交易的数据标识(Tx ID)时,通过哈希算法得到随机数和发起交易用户身份信息的哈希值作为数据标识中23-31位的哈希值,能够避免Tx ID发生冲突。
其中,客户端可以采用现有的随机数生成方法,为每一个交易生成随机数,本申请实施例对此不作过多限定。
示例的,交易的数据标识Tx ID为20200323104010146231300b4715ea。0-22位为生成交易的时间戳,23-31位为哈希值。
步骤S502,服务器将接收的键值对数据写入可读写文件。
服务器将客户端发送的键值对数据写入可读写文件。服务器可以根据客户端发送键值对数据的接口,确定客户端发起对键值对数据的操作,或者确定客户端对键值对数据的操作记录。
一种可能的实施方式中,服务器接收至少一个键值对数据,各键值对数据携带有数据标识,并且数据标识包括生成键值对数据的时间戳。服务器可以根据各键值对数据的数据标识中的时间戳,确定将各键值对数据写入可读写文件的顺序。服务器采用根据时间顺序将键值对数据写入。
可读写文件中的键值对数据的顺序也可以根据时间戳进行排序,便于服务器在可读写文件中查询键值对数据。如以时间戳为索引,确定出至少一个查询数据标识中时间戳对应的键值对数据。若确定多个键值对数据的数据标识中的时间戳为该时间戳,可以数据标识中的其它信息(如哈希值)确定所查询的键值对数据。
一个示例中,服务器中用于存储键值对数据的数据库可以为levelDB。可读写文件可以为levelDB架构中的memtable,memtable可以采用跳表(skiplist)结构。服务器可以将接收的键值对数据写入memtable中。
步骤S503,服务器确定可读写文件中任一键值对数据的键的类别。
具体实施时,服务器可以对可读写文件中的键值对数据进行分类。服务器也可以对由可读写文件转化的只读文件中的键值对数据进行分类。
一种可能的实施方式中,服务器若确定可读写文件的文件大小大于或等于第一文件阈值,可以触发对可读写文件中的键值对数据进行分类,也即触发确定可读写文件中任一键值对数据的键的类别。例如,服务器可以确定memtable中任一键值对数据的键的类别。
另一种可能的实施方式中,服务器若确定可读写文件的文件大小大于或等于第一文件阈值,可以触发将可读写文件转化为只读文件。只读文件用于从只读文件中查询键值对数据,无法向只读文件中写入键值对数据。其中,只读文件中的键值对数据与可读写文件中的键值对数据相同。服务器确定只读文件中任一键值对数据的键的类别。
键的类别还可以的根据键值对数据所在数据库(也是可读写文件所在数据库)的键的字典进行设置。通常数据库的字典包括主体的至少一个属性。根据数据库的字典配置,可以确定键的字典。
例如,数据库存储学生的体测信息的场景中,学生为主体,学生的学号、年龄、姓名、体测成绩为主体的属性。1201、10、小明、85分别为学号、年龄、姓名、体测成绩属性的属性值。键可以作为主体的属性,一个属性可为一个类别。主体属性可以作为键的类别。主体对应的键值对数据以key=vakue的形式进行表示,如number=1201,age=10,name=小明,sorcer=85。若键值对数据携带数据标识,主体对应的键值对数据还可以表示为number&001=1201,age&001=10,name&001=小明,sorcer&001=85。
一个键值对数据对应一个键的类别。若数据库中存储多个类别的键值对数据,还需从多个类别中确定出该键值对数据对应的键的类别。
一个示例中,键的类别与类别标识具有对应关系,例如类别标识v对应键的类别为数据有效状态,t对应的键的类别为数据所在文件偏移等。服务器若确定键值对数据中包括一个类别标识,则可以确定该键值对数据的键的类别为该类别标识对应的类别。
又一个示例中,数据库的键的字典包括的至少一个属性均配置有属性标识。服务器若确定键值对数据中包括字典中的一个属性的属性标识,可以确定该键值对数据的键的类别为该属性标识对应的属性。
一种可能的实施方式中,在区块链场景中数据库可以实施为区块链,键值对数据可以实施为交易。数据库记录存储交易的至少一个区块。区块是记录交易的容器数据结构。区块由一个包含元数据的区块头和构成区块的交易组成。交易可以作为一个主体,交易所在文件偏移、交易有效状态、交易所在区块、交易验证信息等属性为交易的属性。数据库的键的字典可以包括交易所在文件偏移、交易有效状态、交易所在区块、交易验证信息。键的类别可以为数据库的键的字典中的任一项或多项,也即键的类别可以为交易所在文件偏移、交易有效状态、交易所在区块中的任一项或多项。
通常,区块的区块头为80个字节,一个交易至少为250字节,一个区块可以包括超过500个交易。区块头可以由至少一个元数据组成。元数据可以用于将该区块与区块链中前一区块相连的父区块哈希值的数据。元数据还可以为用于描述区块中交易的默克尔(merkle)根的哈希值。元数据还可以是该区块产生的近似时间的时间戳、用于工作量证明算法的计数器(nonce)等数据、用于描述该区块工作量证明算法的难度目标。
其中,交易所在文件偏移表征交易在一个区块中的具体位置。交易有效状态表征交易是有效的状态,或者交易是无效的状态。交易所在区块表征存放交易的区块的信息或者位置。交易验证信息表征验证交易所在区块时的信息,通常为交易所在区块的区块高度的哈希值。
又一种可能的实施方式中,数据库的字典可以根据区块链场景中的业务进行配置,例如元数据查询业务、区块索引查询业务、交易有效性查询业务、区块有效性查询业务等。数据库的字典可以包括元数据、区块索引、交易有效性数据、区块有效性数据等,则键的类别可以包括元数据、区块索引、交易有效性数据、区块有效性数据中的任一项或多项。
区块链场景中,数据库的字典还可以为元数据、区块索引、交易有效性数据、区块有效性数据、对象所在文件偏移、对象有效状态、对象所在区块等至少一项。
另一种可能的实施方式中,在文件存储场景中键值对数据可以实施为文件。数据库的键的字典可以根据文件存储场景中的业务进行配置,例如文件索引查询业务、文件有效状态查询业务等。数据库的字典可以包括文件索引、文件有效状态等。
步骤S504,服务器根据键值对数据的键的类别,将键值对数据写入至少一个中间文件中,所述至少一个中间文件中的每个中间文件用于存储一个类别的键值对数据。
可选的,服务器可以包括至少一个中间文件,并且每个中间文件中存储一个类别的键值对数据。服务器确定出可读写文件中的任一键值对数据的键的类别后,可以将该键值对数据写入一个中间文件中,该中间文件中的键值对数据的键的类别与该键值对数据的键的类别是相同的。其中,中间文件可以为只读文件,也可以为可读写文件。
一种示例性说明中,如图7所示,服务器可以确定memtable中的键值对数据的键的类别,确定memtable中的键值对数据n的类别为类别1,将键值对数据n写入类别1对应的中间文件1(sub memtable1)中,其中sub memtable1中的键值对数据的键的类别均为类别1。图7中示出了多个中间文件,如sub memtable1、sub memtable2、sub memtable3、submemtable4,sub memtable2中的键值对数据的键的类别为类别2,sub memtable3中的键值对数据的键的类别为类别3,sub memtable4中的键值对数据的键的类别为类别4。
另一种示例性说明中,如图8所示,服务器也可以确定由memtable转化后的immutable memtable中的键值对数据的键的类别,immutable memtable中的键值对数据与memtable中的键值对数据相同。服务器若无法向转化后的immutable memtable写入数据,可以从immutable memtable中读取数据。服务器确定immutable memtable中的键值对数据n的类别为类别1,将键值对数据n写入类别1对应的中间文件1(sub memtable1)中,其中submemtable1中的键值对数据的键的类别均为类别1。
一个示例中,数据库的键的字典中包括多个属性,服务器的中间文件的数量可以与字典中属性的数量相同。一个中间文件中存储的键值对数据的键的类别是相同的,中间文件中存储的键值对数据的键的类别与字典中的属性一一对应。
另一个示例中,服务器的中间文件的数量可以少于字典中属性的数量。一个中间文件中存储的键值对数据的键的类别是相同的,并且不同中间文件中存储的键值对数据的键的类别不同。
例如,以区块链场景为例,数据库的键的字典可以为交易所在文件偏移、交易有效状态、交易所在区块信息、交易验证信息。如图9所示,服务器包括4个中间文件,其中,中间文件1中的键值对数据的键的类别为交易验证信息(channel&checkpoint),中间文件2中的键值对数据的键的类别为交易所在区块(channel&b),中间文件3中的键值对数据的键的类别为交易所在文件偏移(channel&t),中间文件4的键值对数据的键的类别为交易有效状态(channel&v)。
服务器将接收的键值对数据写入memtable中,memtable的文件大小大于或等于第一文件阈值后,将memtable转化为immutable memtable。服务器将对immutable memtable中的键值对数据进行分类,可以将immutable memtable拆分为多个中间文件,或者将immutable memtable中的键值对数据写入多个中间文件中。
图9中的键值对数据用“键的类型+数据标识”的形式进行表示。需要说明的是,图9中的键值对数据的形式仅用于举例说明本申请实施例提供的数据处理过程,在实际应用场景中,键值对数据还包括除了键的类型、数据标识之外的其它信息,如值等。
服务器吞吐数据量较大时,可以根据接收的键值对数据的数据标识中的时间戳,确定写入顺序。例如,写入顺序可以为时间戳从小到大的排列顺序。服务器按照写入顺序依次将键值对数据以键值对的形式写入memtable中,使得memtable中的键值对数据也是顺序排序,有助于建立根据时间信息的索引,可以提升数据查询速度。
服务器确定memtable文件大小大于或等于第一文件阈值后,将memtable转化为immutable memtable。然后服务器对immutable memtable中的键值对数据进行分类,将键值对数据写入对应的中间文件中。其中,每个中间文件的键值对数据的类型相同,不同中间文件中的键值对数据的类型不同。每个中间文件中的键值对数据的排序也可以是顺序排序。如将确定键值对数据“channel&checkpoint2020006~99”的键的类型为“channel&checkpoint”,将该键值对数据写入sub memtable1中。
应理解的是,因不同中间文件中的键值对数据的类型不同,不同中间文件之间不会出现没有键值重叠的情况。若服务器接收的键值对数据的标识中包含生成键值对数据的时间戳,那么一个中间文件中的键值对数据发送键值重叠的可能性较小。
步骤S505,若第一中间文件满足预设条件,服务器将第一中间文件转化为磁盘中第0层的排序字符串表,第一中间文件为所述至少一个中间文件中任一中间文件。
服务器可以检测所述至少一个中间文件中的每一个中间文件是否满足预设条件,例如,中间文件的文件大小大于或等于第二文件大小阈值。服务器若确定第一中间文件满足预设条件,那么将第一中间文件进行落盘,即服务器将第一中间文件转化为磁盘中第0层的排序字符串表。如图10所示,服务器的memtable、immutable memtable和中间文件可以存储在内存中。服务器将中间文件转化为磁盘中的第0层的SST,实现将内存中的数据进行落盘至磁盘中。
服务器将满足预设条件的第一中间文件,例如sub memtable1,转化为磁盘中level0层的SST1。示例的,将第一中间文件中的数据写入level0层的新建的SST中。例如,采用现有的将immutable memtable转化为磁盘中level0层的SST的minor compaction的归并方式。
应理解的是,本申请实施例提供的数据处理方法中,不同中间文件中的键值对数据的键的类别是不同的,每个中间文件中的键值对数据的键的类别是相同的。因而,内存中的中间文件转化为level0层的SST后,level0层的不同SST中的键值对数据的键的类别也是不同的,level0层的各SST之间不存在键值重叠。
服务器若确定磁盘中level0层的SST数量等于预设文件数量阈值,服务器将触发level0层的SST通过major compaction的方式归并为level1层的SST。
目前,服务器对level0层中的SST向level1进行major compaction时,从level0层的多个SST中选择1个SST与level1层的SST进行合并(假设选择的1个SST为图10中level0层的SST1)。然后服务器查找出level0层的其它SST中与SST1中重叠的键值对数据,并与level1层中的SST进行合并。因服务器的level0层向level1层归并时,需要从level0层的多个SST中查找重叠的键值对数据,导致了level0层向level1层归并速度慢,处理时间较长。
而本申请实施例提供的数据处理方法中,服务器中的不同中间文件中的键值对数据的键的类别不同。然后服务器将中间文件转化为level0层的SST,使level0层的不同SST中的键值对数据的键的类别不同,因此不同SST之间的键值对数据不会发生重叠的情况。使得服务器对level0层中的SST向level1进行major compaction时,从level0层的多个SST中选择1个SST与level1层的SST进行合并,不需要查找level0层的其它SST中与SST1中重叠键值对数据的过程,从而可以提升level0层向level1层归并速度,缩短归并处理时长,进而可以提升服务器数据库的存储性能。
又一种可能的实施方式中,服务器对level0层中的SST向level1进行归并时,选择level0层中的第一SST,其中,第一SST中的键值对数据的键的类别为第一类别。服务器将第一SST中的键值对数据归并至level1层的第二SST中,其中,第二SST中的键值对数据的键的类别为第一类别。
另外,客户端向服务器查询数据时,服务器可以根据查询数据对应的键值对数据的键的类别进行索引,或者根据查询数据对应的键值对数据的数据标识中的时间戳进行索引,提升服务器数据库的读取性能。
本申请实施例提供的数据处理方法,能够提升服务器数据库的读写性能,进而提升区块链系统性能。并且本申请实施例提供的数据处理方法主要对底层数据模型优化,容易与区块链系统结合实施,也不需要对区块链系统构架进行大量的改造,系统维护成本较低。
本申请实施例还提供一种区块链系统,包括至少一个客户端,至少一个第一服务器以及一个第二服务器。其中,第一服务器具有Peer的功能,如对客户端发起的交易提案进行背书、验证交易提案、存储交易结果等功能。第二服务器具有Orderer的功能,如配置区块、将交易放入区块等功能。如图11中示出的一种区块链系统,包括多个客户端的设备(分别记为终端1、终端2),两个第一服务器(分别记为服务器P1、服务器P2),一个第二服务器(记为服务器O1)。客户端的设备可以与任一第一服务器进行通信,也可以与第二服务器进行通信。任一第一服务器与第二服务器之间也可以进行通信。
本申请实施例提供的数据处理方法可以应用于如图11示出的区块链系统构架中,由客户端的设备以及各服务器设备配合实施,以终端1、服务器P1、服务器O1之间的交互为例,对本申请实施例提供的数据处理方法进行说明,如图12所示,方法可以包括如下步骤:
步骤S1101,终端1创建携带数据标识的提案,数据标识中包含生成提案的时间戳。
具体实施时,本申请实施例提供的上述数据处理方法中客户端执行的步骤或者过程,可以通过实例化相应的计算机程序代码或者指令实现。例如,客户端生成数据标识对应的计算机程序代码或者指令可以称为TX增强器,以SDK插件集成到终端1上的区块链系统Fabric SDK中。
终端1调用区块链系统SDK,并通过实例化TX增强器向区块链系统中的服务器发送携带数据标识的提案。提案的数据标识Tx ID中不仅可以包括时间戳,还可以包括哈希值。哈希值可以是基于终端1生成的随机数以及提案人身份信息确定的,提案人身份信息可以为提案人的证书公钥或者提案人的其它身份标识。
在实际应用场景中,提案可以是键值对数据读取请求,也可以是键值对数据的写入请求,其中键值对数据可以表征链码。
步骤S1102,终端1发送携带数据标识的提案。
具体实施时,终端1向区块链系统中的多个Peer节点发送提案。图12中仅示出了向服务器P1发送提案的过程。在实际应用场景中,终端1按照规定的策略向多个Peer节点发送提案,使多个Peer节点执行该提案,并返回背书提案。
一种可能的实施方式中,终端1可以通过现有的Fabric区块链系统中的谷歌远程过程调用(google remote procedure call,grpc)技术发送携带数据标识的提案。
步骤S1103,服务器P1接收提案后,执行提案,确定提案执行后提案结果。
具体实施时,服务器P1中的键值对数据库(如K-V数据库)和状态数据库中可以记录区块链系统中的账本的副本。服务器P2的数据库中可以记录区块链系统中的账本。服务器P1在接收到终端1的提案后,可以调用智能合约执行提案,从而服务器P1能够得到提案结果(包括提案执行后的账本状态信息、提案预提交状态)。虽然服务器P1执行提案,但是不将提案的结果记录在本地存储的账本的副本。服务器P1执行提案的过程,可以理解为是模拟执行,提案在执行后可以处于挂起状态。
服务器P1在接收提案后,可以采用本申请上述实施例中提供的任一种数据处理方法,按照提案的数据标识中的时间戳进行顺序处理。服务器P1调用智能合约执行提案后,将提案的结果写入不存储账本的数据库中。例如服务器P1将提案的结果顺序写入该数据库的可读写文件中、对可读写文件中的键值对数据进行分类,并将键值对数据写入相应类别的中间文件中等。
步骤S1104,服务器P1对提案结果进行背书签名。
具体实施时,服务器P1可以对终端1发起的提案和提案执行后的提案结果进行背书签名。
步骤S1105,服务器P1将提案结果以及背书签名发送给发起提案的终端。
具体实施时,服务器P1在对提案进行背书签名后,可以将背书签名和提案结果发送给终端1。
一种可能的实施方式中,服务器P1对终端发起的提案进行背书后,可以将提案结果、背书签名发送给服务器O1,使服务器O1接收多个Peer节点提供的提案结果,背书签名进行验证。
步骤S1106,终端1根据接收的提案的结果以及背书签名,确定向服务器O1发送携带数据标识的提案。
具体实施时,终端1可以接收到多个Peer节点返回的提案结果以及背书签名。终端1根据预先配置的背书策略,将携带数据标识的提案发送给Orderer节点(如服务器O1),或者终端1将携带数据标识的提案和接收的背书签名、提案结果一同发送给Orderer节点。终端1也可以将自身对接收的提案结果进行签名,并发送给服务器O1。
步骤S1107,服务器O1对接收的提案进行验证和生成区块。
具体实施时,服务器O1可以对多个Peer节点确定出的该提案的提案结果和背书签名进行验证。服务器O1对该提案验证通过后,会将预设时间内收到的所有提案按照预设规则打包成块。
步骤S1108,服务器O1发送生成的区块。
具体实施时,服务器O1可以将生成的区块分发给多个Peer节点,如服务器P1、服务器P2,使Peer节点可以对区块进行验证和最终提交到各Peer节点本地的账本中。
步骤S1109,服务器P1将接收的区块提交至本地账本中。
具体实施时,服务器P1可以将接收的区块中的数据提交到本地账本中,也即将区块中的数据存储到本地的数据库中。服务器P1将区块中的数据存储到本地的数据库时,可以采用本申请上述实施例中提供的任一种数据处理方法。服务器P1将接收的区块提交至本地账本之前,可以先对接收的区块进行验证,例如验证区块中的提案的背书签名是否为指定的Peer节点的背书签名等信息。并将通过验证的区块提交至本地账本。
系统中的多个Peer节点可以接收到由Orderer节点生成的区块,如服务器O1发送的区块。多个Peer节点中在接收到生成区块后,均可以执行服务器P1将区块提交到本地数据库的步骤。多个Peer节点还可以执行服务器P1对区块进行验证的步骤,如验证区块中的提案是否由指定的Peer节点进行背书等。
本申请实施例提供的上述数据处理方法中服务器端侧执行的步骤或者过程,可以通过实例化相应的计算机程序代码或指令实现。例如,客户端生成数据标识对应的计算机程序代码或指令可以称为DB适配器,可以作为SDK插件集成到Peer节点上的区块链系统Fabric SDK中。
一种可能的实施方式中,服务器P1调用本地的区块链系统SDK,并通过实例化DB适配器将接收的区块中的提案以键值对数据的形式写入可读写文件中。服务器P1确定可读写文件中的任一键值对数据的键的类别。然后服务器P1根据键值对数据的键的类别,将键值对数据写入至少一个中间文件中。其中,每个中间文件分别存储一个类别的键值对数据。
服务器P1若确定所述至少一个中间文件中的第一中间文件满足预设条件,将第一中间文件转化为磁盘中第0层的SST。服务器P1的磁盘中,因第0层的一个SST的键值对数据为同一类别,第0层的多个SST中的键值对数据的键的类别也不同,使得第0层多个SST之间无键值重叠。从而可以提升磁盘第0层向第1层进行归并的速度,以及数据存储速度,进而可以避免发生写入数据时出现卡顿以及超时的情况。
又一种可能的实施方式中,服务器P1可以调用本地的区块链系统SDK。然后服务器P1可以通过实例化DB适配器的方式来实现如下过程:根据接收的区块中的提案的数据标识中的时间戳,确定将提案写入可读写文件的写入顺序。其中,服务器P1将提案写入可读写文件时,可以将提案以键值对数据的形式写入可读写文件。
因服务器P1根据数据标识的时间戳确定写入顺序,使得可读写文件中的键值对数据次序是依次排列的。服务器P1可以在进行数据查询时,以时间戳为索引从可读写文件中查找数据,能够提升数据查询效率,缩短查询时间。
服务器P1可以确定可读写文件中的任一键值对数据的键的类别,然后根据键值对数据的键的类别,将键值对数据写入至少一个中间文件中。其中,每个中间文件分别存储一个类别的键值对数据。
服务器P1若确定所述至少一个中间文件中的第一中间文件满足预设条件,则将第一中间文件转化为磁盘中第0层的SST。服务器P1的磁盘中,因第0层的一个SST的键值对数据为同一类别,使得第0层的多个SST中的键值对数据的键的类别也不同,使得第0层多个SST之间无键值重叠。从而提升服务器P1的磁盘第0层向第1层进行归并时的速度。
服务器P1进行数据存储过程中,由于两个键值对数据的数据标识中的时间戳相同的概率较低,磁盘中第0层的一个SST中的键值对数据出现键值重叠的情况的概率也较低。所以终端1通过数据标识携带生成键值对数据的时序信息(如时间戳),能够进一步提升服务器P1的磁盘第0层向第1层进行归并的速度。
服务器P1在完成磁盘第0层向第1层进行归并的过程后,可以继续将第1层中的SST向第2层中的SST中归并。类似的,服务器P1可以进行逐层归并。
步骤S1110,服务器P1通知终端提案完成提交。
具体实施时,服务器P1将接收的区块中的数据提交到本地的账本中(如将区块中的数据写入可读写文件中)后,可以通过事件服务(event service)通知终端1,该通知消息可以使终端1获知其发起的提案已经完成提交,存储到区块中或者账本中。
服务器P1对接收的区块进行验证时,若确定该区块未通过验证,可以通过eventservice通知终端1。该通知可使终端1获知其发起的提案未能记录在区块中或者账本中。
终端1可以根据服务器P1的通知,确定其发起的提案是否完成提交。终端1确定其发起的提案已经完成提交,并成功记录在区块中或者账本中后,还可以向多个Peer节点发起查询请求,用于查询提案信息或者状态。
终端1可以向多个Peer节点请求提案的信息或者状态。下面以终端1向服务器P1发起提案查询为例介绍本申请实施例提供的数据查询方法,如图13所示,数据查询方法可以包括如下步骤:
步骤S1201,终端1发送查询请求,查询请求中携带数据标识。
具体实施时,终端1可以确定需要查询提案的数据标识,数据标识为生成该提案时确定的数据标识,并与提案具有一一对应的关系。数据标识中包括时序信息,例如,数据标识中可以包括时间戳,时间戳为生成该提案的时间。
终端1确定的数据标识中还可以包括哈希值。其中,哈希值是基于提案人身份信息和终端1生成的随机数确定的。终端1还可以利用上述本申请实施例提供任一种数据处理方法中生成数据标识或者确定数据标识的全部或部分过程。
一种可能的实施方式中,查询请求中还携带有提案属性的标识。提案属性的标识可以为元数据的标识、区块索引的标识、交易有效性数据的标识、区块有效性数据的标识中的至少一种。提案属性的标识还可以为提案所在文件偏移标识、提案有效状态标识、提案所在区块标识中的至少一种。
终端1确定的携带提案属性的标识的查询请求,可以用于查询提案的提案属性标识对应的信息。例如,查询请求中携带有区块有效性数据的标识,该查询请求用于获取数据标识对应的提案的区块有效性数据。服务器P1在查询到该提案后,仅将提案的区块有效性数据反馈给终端1。
步骤S1202,服务器P1接收查询请求后,从可读写文件中查找查询请求中携带的数据标识对应的提案。
具体实施时,服务器P1中的数据库可以采用levelDB构架。服务器P1可从可读写文件中进行数据查询,如从memtable中查询数据标识对应的提案。
服务器P1可以根据数据标识中的时间信息或时序信息,如时间戳,在服务器P1的数据库中进行查询(或检索)。服务器P1根据时序信息进行查询。通过将现有技术中的随机读查询转换为顺序查询,可以提升查询效率。
示例的,服务器P1首先可以根据查询请求携带的数据标识Tx IDn中的时间戳tn,确定内存中的可读写文件中是否存在数据标识中的时间戳与时间戳tn相同。
服务器P1若确定可读写文件中数据标识Tx IDx中的时间戳tx与时间戳tn相同,则继续确定数据标识Tx IDx中的哈希值是否与数据标识Tx IDn中的哈希值相同。
服务器P1若确定数据标识Tx IDx中的哈希值与数据标识Tx IDn中的哈希值相同,则确定可读写文件中的数据标识Tx IDx对应的提案为终端1请求的数据标识Tx IDn对应的提案。然后,服务器P1可将Tx IDx对应的提案发送给终端1。
服务器P1若确定数据标识Tx IDx中的哈希值与数据标识Tx IDn中的哈希值不同,则确定可读写文件中没有查询到终端1请求的数据标识对应的提案。
步骤S1203,服务器P1确定未从可读写文件中查找到数据标识对应的提案,从第一中间文件中查找查询请求中携带的数据标识对应的提案。
具体实施时,服务器P1的内存中还包括至少一个中间文件。其中,中间文件可以为只读文件,可以为非只读文件(可写/可读文件)服务器P1从至少一个中间文件中的任一中间文件,以第一中间文件为例。
示例的,服务器P1可以从第一中间文件中确定是否存在数据标识中的时间戳与时间戳tn相同。
服务器P1若确定第一中间文件中数据标识Tx IDy中的时间戳ty与时间戳tn相同,则继续确定数据标识Tx IDy中的哈希值是否与数据标识Tx IDn中的哈希值相同。
服务器P1若确定数据标识Tx IDy中的哈希值与数据标识Tx IDn中的哈希值相同,则确定第一中间文件中的数据标识Tx IDy对应的提案为终端1请求的数据标识Tx IDn对应的提案。服务器P1然后可将Tx IDx对应的提案发送给终端1。
服务器P1若确定数据标识Tx IDy中的哈希值与数据标识Tx IDn中的哈希值不同,则可以确定第一中间文件中没有查询到终端1请求的数据标识对应的提案。服务器P1可以继续确定所述至少一个中间文件中的其它中间文件中进行查找。服务器P1若在所述至少一个中间文件中的每个中间文件中都没有找到终端1发送的查询请求中携带的数据标识TxIDx中的时间戳tx对应的提案,则确定未从所述至少一个中间文件中查找到数据标识对应的提案。
一种可能的实施方式中,服务器P1接收的查询请求中还携带提案属性的标识。服务器P1内存中每个中间文件分别记录提案的不同属性的键值对数据。
例如,中间文件1中的键值对数据的键的类别均为提案的元数据,中间文件2中的键值对数据的键的类别均为提案的区块索引,中间文件3中的键值对数据的键的类别均为交易有效性数据。
又例如,中间文件1中的键值对数据的键的类别均为提案所在文件偏移,中间文件2中的键值对数据的键的类别均为提案有效状态,中间文件3中的键值对数据的键的类别均为提案所在区块。
服务器P1还可以根据查询请求中携带的提案属性的标识,从至少一个中间文件中的第一中间文件的查询请求中携带的数据标识对应的提案。其中,第一中间文件中的键值对数据的键的类别与查询请求中携带的提案属性的标识具有一一对应关系。
步骤S1204,服务器P1确定未从第一中间文件中查找到数据标识对应的提案,从磁盘中查找查询请求中携带的数据标识对应的提案。
具体实施时,服务器P1的磁盘中,各level层的SST的索引范围可以根据SST中的提案的数据标识的时间戳确定。服务器P1根据查询请求携带的数据标识Tx IDn中的时间戳tn,以及各level层的SST的索引范围,确定时间戳tn所对应的SST。然后服务器P1在时间戳tn对应的SST中查找数据标识Tx IDn对应的提案。
步骤S1205,服务器P1发送从磁盘中查找查询请求中携带的数据标识对应的提案。
具体实施时,服务器P1将在磁盘中查询到的数据标识对应的提案发送给终端1。
将本申请实施例提供的数据处理方法在区块链场景中实施时,在持续高压情形下,区块链系统能够获得稳定的高性能。并且使用本申请提供的数据处理方法的区块链系统相比与未使用本申请提供的数据处理方法的区块链系统,系统性能可以提升5倍,区块链系统数据吞吐量可达10ktps。
将本申请实施例提供的数据处理方法在区块链场景中实施时,在大数据量(大于10T)的情形下,也可以获得高吞吐率。并且使用本申请提供的数据处理方法的区块链系统相比与未使用本申请提供的数据处理方法的区块链系统,性能可以提升50倍,区块链系统数据吞吐量可达10ktps。
区块链系统包括多通道channel的场景中,本申请实施例提供的数据处理方法在实施时,可以使区块链系统的性能提升5倍,区块链系统数据吞吐量可达50ktps。
前文介绍了本申请实施例的方法,下文中将介绍本申请实施例中的设备。方法、设备是基于同一技术构思的,由于方法、设备解决问题的原理相似,因此设备与方法的实施可以相互参见,重复之处不再赘述。
基于与上述数据处理方法的同一技术构思,如图14所示,提供了一种服务器P1300。服务器P1300能够执行上述方法中由服务器设备执行的各个步骤,为了避免重复,此处不再详述。服务器P1300包括:通信单元1310、处理单元1320以及存储单元1330。处理单元1320可以分别与存储单元1330和通信单元1310相连,存储单元1330也可以与通信单元1310相连。其中,处理单元1320可以与存储单元1330集成。
存储单元1330用于存储计算机程序以及键值对数据。
一种可能的实施方式中,服务器P1300的存储单元1330可以包括存储器和磁盘。
又一种可能的实施方式中,服务器P1300可以连接存储装置,如磁盘。其中服务器P1300中的存储单元1330与存储装置连接,处理单元1320也可以与存储装置连接。
示例的,处理单元1320用于确定可读写文件中任一键值对数据的键的类别;
根据所述键值对数据的键的类别,将所述键值对数据写入至少一个中间文件中,所述至少一个中间文件中的每个中间文件用于存储一个类别的键值对数据;若第一中间文件满足预设条件,将所述第一中间文件转化为磁盘中第0层的排序字符串表,所述第一中间文件为所述至少一个中间文件中的任一中间文件。
在一种设计中,预设条件可以是所述第一中间文件的文件大小大于或等于文件大小阈值。
在一种设计中,键的类别与数据库中键的字典相同。例如,所述字典包括如下至少一项:元数据、区块索引、交易有效性数据、区块有效性数据、对象所在文件偏移、对象有效状态、对象所在区块。
在一种设计中,处理单元1320还用于通过通信单元1310接收至少一个键值对数据,所述至少一个键值对数据携带有数据标识,所述数据标识包括生成所述键值对数据的时间戳;根据所述至少一个键值对数据的各数据标识中的时间戳,将所述至少一个键值对数据写入所述可读写文件中,每个键值对数据中包括数据标识。
一个示例中,数据标识还包括如下至少一项:用户身份信息、随机数、哈希值,其中,所述哈希值是基于所述用户身份信息和所述随机数确定的。
在一种设计中,存储单元1330中的每个所述中间文件中的键值对数据是根据键值对数据的数据标识中的时间戳排序的。
如图15所示为本申请实施例提供的又一种服务器1400,用于实现上述方法中服务器功能。该服务器1400可以是服务器的设备,也可以是用于服务器的芯片。
服务器1400包括至少一个处理器1420,用于实现本申请实施例提供的方法服务器的功能。服务器1400还可以包括通信接口1410。在本申请实施例中,通信接口可以是收发器、电路、总线、模块或其它类型的通信接口,用于通过传输介质和其它设备进行通信。例如,通信接口1410用于服务器1400中的单元可以和其它设备进行通信。
服务器1400还可以包括至少一个存储器1430、磁盘1440,存储器1430用于存储程序指令和/或数据,存储器1430还用于存储键值对数据,磁盘1440用于存储键值对数据。存储器1430和处理器1420耦合。本申请实施例中的耦合是服务器、单元或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于服务器、单元或模块之间的信息交互。处理器1420可能和存储器1430协同操作。处理器1420可能执行存储器1430中存储的程序指令。所述至少一个存储器中的至少一个可以包括于处理器中。
本申请实施例中不限定上述通信接口1410、处理器1420以及存储器1430之间的具体连接介质。本申请实施例在图15中以存储器1430、处理器1420以及通信接口1410之间通过总线1450连接,总线在图15中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图15中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
示例性的,本申请实施例中的处理器1420可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1420可以是通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integratedcircuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
示例性的,本申请实施例中的存储器1430可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double datarate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
示例性的,本申请实施例中的磁盘1440可以是硬盘(hard disk drive,HDD)或固态硬盘(solid state drive,SSD)。HDD可以是光纤附挂技术(fibre attached technologyadapted,FATA)硬盘、串行高级技术附件(serial advanced technology attachment,SATA)硬盘、小型计算机系统接口(small computer system interface,SCSI)硬盘、串行连接小型计算机系统接口(serial attached SCSI,SAS)硬盘。SDD可以是基于闪存的SDD、基于DRAM的SDD、基于3D XPoint的SDDdeng。磁盘1440还可以是未来硬盘技术发展中任一形态或类型的硬盘。
如图16所示,提供了一种终端1500,终端可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,显示屏194等。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。其中,控制器可以是终端的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。处理器110中还可以设置存储器,用于存储指令和数据。
在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行终端的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,以及至少一个应用程序(例如XXX区块链应用程序等)的软件代码等。存储数据区可存储终端使用过程中所产生的数据(例如图像、视频、提案、交易等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展终端的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将图片,视频等文件保存在外部存储卡中。
USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为终端充电,也可以用于终端与外围设备之间传输数据。充电管理模块140用于从充电器接收充电输入。电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。
终端的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。天线1和天线2用于发射和接收电磁波信号。终端中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
移动通信模块150可以提供应用在终端上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(lownoise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
无线通信模块160可以提供应用在终端上的包括无线局域网(wireless localarea networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,终端的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得终端可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code divisionmultiple access,CDMA),宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(globalnavigation satellite system,GLONASS),北斗卫星导航系统(beidou navigationsatellite system,BDS),准天顶卫星系统(quasi-zenith satellite system,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
需要说明的是,处理器110中的存储器或者内部存储器121中可以保存本申请实施例提供的数据处理方法的计算机程序指令,处理器110可以调用该计算机程序指令,从而执行上述数据处理方法中的全部或部分步骤,例如生成键值对数据的数据标识,或者生成提案的数据标识,生成查询请求等功能。处理器110执行生成键值对数据以及键值对数据的数据标识的功能后,控制移动通信模块150或者无线通信模块160将携带数据标识的键值对数据通过天线1和/或天线2进行发送。或者处理器110执行生成查询请求后,控制移动通信模块150或者无线通信模块160将查询请求通过天线1和/或天线2进行发送。
显示屏194用于显示应用的显示界面等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode的,AMOLED),柔性发光二极管(flex light-emitting diode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dotlight emitting diodes,QLED)等。在一些实施例中,终端可以包括1个或N个显示屏194,N为大于1的正整数。
在本申请实施例中,显示屏194可以用于显示应用界面。如图17所示,应用界面中可以包括选择区块系统性能增强选项(按钮)。用户可以在显示屏194提供的应用界面中选择是否进行性能增强的选项。处理器110确定性能增强选项的按钮被滑动至右侧,则调用存储器或者内部存储器121中保存的本申请实施例提供的数据处理方法的计算机程序指令,实施数据处理方法中的全部或部分步骤。处理器110确定性能增强选项的按钮被滑动至左侧,则不调用本申请实施例提供的数据处理方法的计算机程序指令。另外,系统配置的应用界面中,除了展示性能增强选项及按钮之外,还可以展示其它配置,如配置1、配置2,本申请实施例对此不作过多限定。
可以理解的是,图16所示的部件并不构成对终端的具体限定,终端还可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。
图18示出了本申请一实施例提供的终端的软件结构框图。如图18所示,终端的软件结构可以是分层架构,例如可以将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层(framework,FWK),安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。如图17所示,应用程序层可以包括相机、设置、皮肤模块、用户界面(user interface,UI)、三方应用程序等。其中,三方应用程序可以包括微信、QQ、图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层可以包括一些预先定义的函数。如图17所示,应用程序框架层可以包括区块链管理器,Tx增强器。
区块链管理器用于生成提案,查询提案状态,根据提案结果、提案的背书签名判断提案是否通过Peer节点验证,其中,在区块链应用场景中,提案也称为交易。
Tx增强器用于生成提案的数据标识,数据标识中包括生成提案时的时间戳(可以精确到纳秒级),数据标识中还可以包括提案人身份信息、随机数、哈希值(可以基于提案人身份信息和随机数确定的)等信息。
Android runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(media libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。内核层还可以包括数据处理程序,用于生成键值对数据的数据标识。
硬件层可以包括各类传感器,例如本申请实施例中涉及的加速度传感器、陀螺仪传感器、触摸传感器等。
需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。本发明实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。例如,上述实施例中,处理单元和通信单元可以是同一个单元,也可以是不同的单元。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述实施例中所用,根据上下文,术语“当…时”可以被解释为意思是“如果…”或“在…后”或“响应于确定…”或“响应于检测到…”。类似地,根据上下文,短语“在确定…时”或“如果检测到(所陈述的条件或事件)”可以被解释为意思是“如果确定…”或“响应于确定…”或“在检测到(所陈述的条件或事件)时”或“响应于检测到(所陈述的条件或事件)”。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。
所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如DVD)、或者半导体介质(例如固态硬盘)等。
为了解释的目的,前面的描述是通过参考具体实施例来进行描述的。然而,上面的示例性的讨论并非意图是详尽的,也并非意图要将本申请限制到所公开的精确形式。根据以上教导内容,很多修改形式和变型形式都是可能的。选择和描述实施例是为了充分阐明本申请的原理及其实际应用,以由此使得本领域的其他技术人员能够充分利用具有适合于所构想的特定用途的各种修改的本申请以及各种实施例。

Claims (13)

1.一种数据处理方法,其特征在于,所述方法包括:
确定可读写文件中任一键值对数据的键的类别;
根据所述键值对数据的键的类别,将所述键值对数据写入至少一个中间文件中,所述至少一个中间文件中的每个中间文件用于存储一个类别的键值对数据;
若第一中间文件满足预设条件,将所述第一中间文件转化为磁盘中第0层的排序字符串表,所述第一中间文件为所述至少一个中间文件中的任一中间文件。
2.根据权利要求1所述的方法,其特征在于,所述键的类别与所述键值对数据所在数据库中键的字典相同。
3.根据权利要求2所述的方法,其特征在于,所述字典包括如下至少一项:元数据、区块索引、交易有效性数据、区块有效性数据、对象所在文件偏移、对象有效状态、对象所在区块。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述预设条件包括:
所述第一中间文件的文件大小大于或等于文件大小阈值。
5.根据权利要求1-4任一项所述的方法,其特征在于,在所述确定可读写文件中任一键值对数据的键的类别之前,所述方法还包括:
接收至少一个键值对数据,所述至少一个键值对数据携带有数据标识,所述数据标识包括生成所述键值对数据的时间戳;
根据所述至少一个键值对数据的各数据标识中的时间戳,将所述至少一个键值对数据写入所述可读写文件中,每个键值对数据中包括数据标识。
6.根据权利要求5所述的方法,其特征在于,每个所述中间文件中的键值对数据是根据键值对数据的数据标识中的时间戳排序的。
7.根据权利要求5或6项所述的方法,其特征在于,所述数据标识还包括如下至少一项:用户身份信息、随机数、哈希值,其中,所述哈希值是基于所述用户身份信息和所述随机数确定的。
8.一种数据处理方法,其特征在于,所述方法包括:
生成键值对数据,所述键值对数据中包括对应的数据标识,所述数据标识携带生成所述键值对数据的时间戳;
发送所述键值对数据。
9.根据权利要求8所述的方法,其特征在于,所述数据标识还包括如下至少一项:用户身份信息、随机数、哈希值,其中,所述哈希值是基于所述用户身份信息和所述随机数确定的。
10.一种电子设备,其特征在于,包括处理器、存储器和一个或多个计算机程序,一个或多个计算机程序存储于所述存储器中,当所述一个或多个计算机程序被所述处理器调用时,使得所述电子设备执行如权利要求1~7任一项所述的方法。
11.一种电子设备,其特征在于,包括处理器、存储器和一个或多个计算机程序,一个或多个计算机程序存储于所述存储器中,当所述一个或多个计算机程序被所述处理器调用时,使得所述电子设备执行如权利要求8或9任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括程序指令,当所述程序指令在设备上运行时,使得所述设备执行如权利要求1~9任一项所述的方法。
13.一种计算机程序产品,其特征在于,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如权利要求1~9中任一项所述的数据处理方法。
CN202011183070.7A 2020-10-29 2020-10-29 一种数据处理方法、设备及介质 Pending CN114428763A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011183070.7A CN114428763A (zh) 2020-10-29 2020-10-29 一种数据处理方法、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011183070.7A CN114428763A (zh) 2020-10-29 2020-10-29 一种数据处理方法、设备及介质

Publications (1)

Publication Number Publication Date
CN114428763A true CN114428763A (zh) 2022-05-03

Family

ID=81309906

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011183070.7A Pending CN114428763A (zh) 2020-10-29 2020-10-29 一种数据处理方法、设备及介质

Country Status (1)

Country Link
CN (1) CN114428763A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114757315A (zh) * 2022-06-15 2022-07-15 深圳市成为信息股份有限公司 读写器快速输出标签数据的方法、读写器、接收终端
CN116483886A (zh) * 2023-04-10 2023-07-25 上海沄熹科技有限公司 结合kv存储引擎和时序存储引擎查询olap的方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114757315A (zh) * 2022-06-15 2022-07-15 深圳市成为信息股份有限公司 读写器快速输出标签数据的方法、读写器、接收终端
CN114757315B (zh) * 2022-06-15 2022-08-26 深圳市成为信息股份有限公司 读写器快速输出标签数据的方法、读写器、接收终端
CN116483886A (zh) * 2023-04-10 2023-07-25 上海沄熹科技有限公司 结合kv存储引擎和时序存储引擎查询olap的方法
CN116483886B (zh) * 2023-04-10 2024-04-02 上海沄熹科技有限公司 结合kv存储引擎和时序存储引擎查询olap的方法

Similar Documents

Publication Publication Date Title
US11106655B2 (en) Asset management system, method, apparatus, and electronic device
US11023456B2 (en) Executing transactions based on blockchain
US20210263914A1 (en) Blockchain-based smart contract invocation method and apparatus, and electronic device
US11328093B1 (en) Protecting sensitive data
CN110827008A (zh) 一种区块链节点和交易方法
US11886423B2 (en) Blockchain-based recording and querying operations
CN114428763A (zh) 一种数据处理方法、设备及介质
CA2802458C (en) Synchronizing endpoint data stores having disparate schemas
US11023465B2 (en) Cross-asset data modeling in multi-asset databases
CN114095511B (zh) 一种移动分布式系统数据同步的方法和设备
WO2019095824A1 (zh) 一种数据配置管理方法、设备及计算机可读存储介质
US10019295B2 (en) Method and system for managing and linking software applications
CN115113989B (zh) 事务执行方法、装置、计算设备及存储介质
KR102274656B1 (ko) 블록체인 네트워크에서 데이터를 관리하기 위한 기법
CN112052234B (zh) 业务数据的处理方法和装置、存储介质、电子装置
CN114443573A (zh) 一种元数据检索方法、装置、电子设备和介质
US11860753B1 (en) Monitoring a distributed ledger network using hierarchical validation workflows
US20230409733A1 (en) Security data processing method and device
KR102689948B1 (ko) 개발 데이터를 전달하는 시스템
WO2022105761A1 (zh) 文件操作方法及相关设备
US12038948B2 (en) Identification and classification of sensitive information in data catalog objects
CN116701299B (zh) 一种目录管理方法及相关装置
US20230362659A1 (en) Microwave design tool
US10579606B2 (en) Apparatus and method of data analytics in key-value solid state device (KVSSD) including data and analytics containers
CN116069865A (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