CN110737668B - 数据存储方法、数据读取方法、相关设备及介质 - Google Patents
数据存储方法、数据读取方法、相关设备及介质 Download PDFInfo
- Publication number
- CN110737668B CN110737668B CN201911297561.1A CN201911297561A CN110737668B CN 110737668 B CN110737668 B CN 110737668B CN 201911297561 A CN201911297561 A CN 201911297561A CN 110737668 B CN110737668 B CN 110737668B
- Authority
- CN
- China
- Prior art keywords
- node
- hash value
- transaction data
- information
- target transaction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3827—Use of message hashing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols 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]
Abstract
本发明实施例公开了一种数据存储方法、数据读取方法、相关设备及介质,其中,数据存储方法包括:响应关于目标交易数据的存储请求,获取所述目标交易数据的交易哈希值;获取区块链网络中的第一节点的第一节点信息,所述第一节点信息包括的第一节点标识和第一节点哈希值;根据所述第一节点的第一节点哈希值确定所述第一节点的服务范围;若所述目标交易数据的交易哈希值位于所述第一节点的服务范围内,则根据所述第一节点标识将所述目标交易数据存储至所述第一节点的内存池中。本发明实施例可以有效减少节点的内存池的内存占用资源,从而提升区块链网络的性能。
Description
技术领域
本发明涉及互联网技术领域,具体涉及计算机技术领域,尤其涉及一种数据存储方法、一种数据读取方法、一种数据存储装置、一种数据读取装置、一种计算机设备及一种计算机存储介质。
背景技术
区块链是一种分布式数据存储、点对点传输(P2P传输)、共识机制、加密算法等计算机技术的新型应用模式,其本质上是一个去中心化的数据库;由区块链和点对点网络(P2P网络)所构成的网络可称为区块链网络,区块链网络中用于进行数据处理的基础设备可称为节点设备(简称节点)。每个节点都有自己的内存池(或称为交易池),此处的内存池是指用于暂时存放尚未加入到区块中的交易数据的池子。目前,当区块链网络中产生新的交易数据时,通常是将该新的交易数据广播给区块链网络中的各个节点,以使得各个节点将该新的交易数据直接存储至各自的内存池中,以便于后续将该新的交易数据打包成区块并上链至区块链网络。经实践表明,现有的数据存储方式会过度占用各个节点的内存池的内存占用资源,从而影响区块链网络的性能。
发明内容
本发明实施例提供了一种数据存储方法、数据读取方法、相关设备及介质,可有效减少节点的内存池的内存占用资源,从而提升区块链网络的性能。
一方面,本发明实施例提供了一种数据存储方法,该数据存储方法包括:
响应关于目标交易数据的存储请求,获取所述目标交易数据的交易哈希值;
获取区块链网络中的第一节点的第一节点信息,所述第一节点信息包括第一节点标识和第一节点哈希值;
根据所述第一节点的第一节点哈希值确定所述第一节点的服务范围;
若所述目标交易数据的交易哈希值位于所述第一节点的服务范围内,则根据所述第一节点标识将所述目标交易数据存储至所述第一节点的内存池中。
一方面,本发明实施例提供了一种数据读取方法,该数据读取方法包括:
响应关于目标交易数据的读取请求,获取所述目标交易数据的交易哈希值;
获取区块链网络中的第一节点的第一节点信息,所述第一节点信息包括第一节点标识和第一节点哈希值;
根据所述第一节点的第一节点哈希值确定所述第一节点的服务范围;
若所述目标交易数据的交易哈希值位于所述第一节点的服务范围内,则根据所述第一节点标识从所述第一节点的内存池中读取所述目标交易数据。
一方面,本发明实施例提供了一种数据存储装置,该数据存储装置包括:
获取单元,用于响应关于目标交易数据的存储请求,获取所述目标交易数据的交易哈希值;
所述获取单元,还用于获取区块链网络中的第一节点的第一节点信息,所述第一节点信息包括第一节点标识和第一节点哈希值;
处理单元,用于根据所述第一节点的第一节点哈希值确定所述第一节点的服务范围;
存储单元,用于若所述目标交易数据的交易哈希值位于所述第一节点的服务范围内,则根据所述第一节点标识将所述目标交易数据存储至所述第一节点的内存池中。
一方面,本发明实施例提供了一种数据读取装置,该数据读取装置包括:
获取单元,用于响应关于目标交易数据的读取请求,获取所述目标交易数据的交易哈希值;
所述获取单元,还用于获取区块链网络中的第一节点的第一节点信息,所述第一节点信息包括第一节点标识和第一节点哈希值;
处理单元,用于根据所述第一节点的第一节点哈希值确定所述第一节点的服务范围;
读取单元,用于若所述目标交易数据的交易哈希值位于所述第一节点的服务范围内,则根据所述第一节点标识从所述第一节点的内存池中读取所述目标交易数据。
一方面,本发明实施例提供了一种计算机设备,所述计算机设备包括输入接口和输出接口,所述计算机设备还包括:
处理器,适于实现一条或多条指令;以及,
计算机存储介质,所述计算机存储介质存储有一条或多条第一指令,所述一条或多条第一指令适于由所述处理器加载并执行如下步骤:
响应关于目标交易数据的存储请求,获取所述目标交易数据的交易哈希值;
获取区块链网络中的第一节点的第一节点信息,所述第一节点信息包括第一节点标识和第一节点哈希值;
根据所述第一节点的第一节点哈希值确定所述第一节点的服务范围;
若所述目标交易数据的交易哈希值位于所述第一节点的服务范围内,则根据所述第一节点标识将所述目标交易数据存储至所述第一节点的内存池中。
或者,所述计算机存储介质存储有一条或多条第二指令,所述一条或多条第二指令适于由所述处理器加载并执行如下步骤:
响应关于目标交易数据的读取请求,获取所述目标交易数据的交易哈希值;
获取区块链网络中的第一节点的第一节点信息,所述第一节点信息包括第一节点标识和第一节点哈希值;
根据所述第一节点的第一节点哈希值确定所述第一节点的服务范围;
若所述目标交易数据的交易哈希值位于所述第一节点的服务范围内,则根据所述第一节点标识从所述第一节点的内存池中读取所述目标交易数据。
一方面,本发明实施例提供了一种计算机存储介质,所述计算机存储介质存储有一条或多条第一指令,所述一条或多条第一指令适于由处理器加载并执行如下步骤:
响应关于目标交易数据的存储请求,获取所述目标交易数据的交易哈希值;
获取区块链网络中的第一节点的第一节点信息,所述第一节点信息包括第一节点标识和第一节点哈希值;
根据所述第一节点的第一节点哈希值确定所述第一节点的服务范围;
若所述目标交易数据的交易哈希值位于所述第一节点的服务范围内,则根据所述第一节点标识将所述目标交易数据存储至所述第一节点的内存池中。
或者,所述计算机存储介质存储有一条或多条第二指令,所述一条或多条第二指令适于由所述处理器加载并执行如下步骤:
响应关于目标交易数据的读取请求,获取所述目标交易数据的交易哈希值;
获取区块链网络中的第一节点的第一节点信息,所述第一节点信息包括第一节点标识和第一节点哈希值;
根据所述第一节点的第一节点哈希值确定所述第一节点的服务范围;
若所述目标交易数据的交易哈希值位于所述第一节点的服务范围内,则根据所述第一节点标识从所述第一节点的内存池中读取所述目标交易数据。
本发明实施例在存储目标交易数据时,可先获取目标交易数据的交易哈希值及区块链网络中的第一节点的第一节点信息,第一节点信息包括第一节点标识和第一节点哈希值。其次,可根据第一节点哈希值确定第一节点的服务范围。然后,可通过第一节点的服务范围对目标交易数据进行存储约束:只有当目标交易数据的交易哈希值位于第一节点的服务范围内时,才会将目标交易数据存储至第一节点的内存池中;这样可避免在第一节点的内存池中存储区块链网络中所有新的交易数据,可有效节省第一节点的内存池的内存占用资源,提升区块链网络的性能。并且,通过第一哈希值确定第一节点的服务范围,可保证第一节点的服务范围的唯一性;若目标交易数据位于第一节点的服务范围内,则表明目标交易数据不会位于其他节点的服务范围内,这样可使得其他节点不会存储目标交易数据,从而可有效减少其他节点的内存池的内存占用资源,进一步提升区块链网络的性能。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本发明实施例提供的一种数据处理系统的结构示意图;
图1b是本发明实施例提供的一种将节点标识哈希至圆环上的示意图;
图1c是本发明实施例提供的另一种数据处理系统的结构示意图;
图1d是本发明实施例提供的一种查找目标节点的方法示意图;
图2是本发明实施例提供的一种数据存储方法的流程示意图;
图3是本发明另一实施例提供的一种数据存储方法的流程示意图;
图4a是本发明实施例提供的一种删除节点信息的示意图;
图4b是本发明实施例提供的一种添加节点信息的示意图;
图5是本发明实施例提供的一种数据读取方法的流程示意图;
图6是本发明实施例提供的一种数据存储装置的结构示意图;
图7是本发明实施例提供的一种数据读取装置的结构示意图;
图8是本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
为了可以更好地对区块链网络中的各个节点的交易池进行数据处理,例如交易数据的存储、交易数据的读取等;此处的交易数据是指需上传至区块链网络中的任意数据;本发明实施例提出了一种基于区块链网络的数据处理系统。参见图1a所示,该数据处理系统可包括:至少一个客户端(application,APP)11、计算机设备(blockchian gatway(区块链连接设备,LB))12以及区块链网络13。其中,客户端11可运行于任一终端设备(如智能手机、平板电脑、台式电脑等)中。计算机设备12可以包括但不限于:应用服务器、数据处理服务器、web服务器等服务器,或者终端,等等;该计算机设备12可以是一个独立的服务设备,也可以是由多个计算机设备所构成的集群设备。区块链网络13可包括以下任一种:联盟链网络、公有链网络或者私有链网络。其中,联盟链网络又可称为共同体区块链网络,是指由若干个机构共同参与经营的一个区块链网络;公有链网络是指无用户授权机制的区块链网络;私有链网络是指由某一个机构进行经营的一个区块链网络;为便于阐述,除非特别指明,后续所提及的区块链网络均以联盟链网络为例进行说明。该区块链网络13中可包括至少两个节点131,此处的节点是指区块链网络中进行数据处理的基础设备;其可以包括但不限于:移动终端(如智能手机、平板电脑等)、台式计算机以及服务设备(如服务器),等等。需要说明的是,图1a只是示例性地表示数据处理系统的架构,其并不对数据处理系统的具体架构进行限定。例如,在图1a中,客户端11与计算机设备12进行数据交互;而在实际应用中,客户端11也可与区块链网络13中的各个节点131进行数据交互,等等。
基于上述的数据处理系统,本发明实施例还提出了一种数据处理方案。该数据处理方案可以由数据处理系统中的计算机设备12执行,该数据处理方案的主要原理如下:
①先定义一个具有较大取值范围(如0-(2^32-1))的一致性哈希函数,通过该一致性哈希函数可为各个交易数据和区块链网络中的各个节点提供相应的哈希值。需要说明的是,该一致性哈希函数的取值范围在空间上可以形成一个圆环,或者形成一条线段,等等;为便于阐述,后续均以取值范围在在空间上形成一个圆环为例进行说明。取值范围中的各个哈希值可以按照逆时针方向递增或者顺时针方向递增的分布原则,分布在圆环上的各个位置处;后续以在圆环上按照顺时针方向递增的原则分布各个哈希值为例进行说明。
②区块链网络中的节点可向计算机设备12进行注册,以使得该节点可被计算机设备分配以存储交易数据。具体的,当计算机设备12接收到区块链网络中的任一节点的注册请求时,可将该任一节点的节点标识哈希至圆环上。具体的,参见图1b所示:可采用一致性哈希算法对该任一节点的节点标识进行哈希运算,得到该任一节点的节点哈希值;其次,可将该任一节点的节点标识添加至该节点哈希值在圆环上所在的位置处。基于该步骤,计算机设备12可将区块链网络中的多个节点的节点标识均哈希至圆环上,如图1c所示。在得到各个节点的节点哈希值之后,计算机设备12还可将各个节点的节点信息(节点标识和节点哈希值)添加至区块链网络的节点集中;该节点集可以以数组或者链表的形式存储在计算机设备12的存储空间中,且各个节点的节点信息按照各个节点的节点哈希值的大小在节点集中依序排列。需要说明的是,如果区块链网络中的节点较少而导致节点标识在圆环上分布不均匀时,还可在某节点的节点标识后添加附属内容(如数字),从而生成与该节点相关联的虚拟节点的虚拟标识;然后,将该虚拟标识哈希至圆环上以均衡圆环上的节点标识的分布。需要说明的是,若需要存储交易数据至虚拟节点的内存池时,实际是将该交易数据存储至与该虚拟节点相关联的真实节点的内存池中。
③当需要存储目标交易数据时,可采用一致性哈希算法对目标交易数据的交易标识进行哈希运算,得到该目标交易数据的交易哈希值。其次,可根据目标交易数据的交易哈希值确定用于存储目标交易数据的目标节点。在一种实施方式中,可将交易哈希值映射到圆环上,然后沿着顺时针方向查找节点标识;将找到的第一个节点标识所对应的节点作为目标节点;例如参见图1d所示,将目标交易数据的交易哈希值映射到圆环上后,沿着顺时针方向查找到的第一个节点标识为节点标识b,那么可将节点标识b所对应的节点作为目标节点。再一种实施方式中,可根据节点集中各个节点标识所对应的节点哈希值确定各个节点的服务范围;最小节点哈希值所对应的特殊节点的服务范围大于零且小于最小节点哈希值,除特殊节点以外的其余节点的服务范围由该其余节点的节点哈希值和该其余节点的相邻节点的节点哈希值构成,该相邻节点是指在节点集中,节点信息的排列位置与该其余节点的节点信息的排列位置相邻的节点;相邻节点的节点哈希值小于或大于该其余节点的节点哈希值。然后,可查找到该交易哈希值所在的服务范围,并将该查找到的服务范围所对应的节点作为目标节点。在确定了目标节点之后,可在该目标节点的内存池中存储该目标交易数据。
④若需要加入一个新节点,则可将该新节点的节点标识哈希至圆环上,以得到新节点的节点哈希值;其次,可将该新节点的节点信息(新节点的节点标识和新节点的节点哈希值)添加至节点集中的相应位置处,以更新节点集。另外,还可对该新节点的下一节点中的数据执行rebalance操作。其中,新节点的下一节点是指节点标识与新节点的节点标识相邻,且节点哈希值大于该新节点的节点哈希值的节点;rebalance操作是指数据均衡操作,其具体是指:将下一节点中属于新节点的服务范围的交易数据转移至新节点的内存池中的操作。
⑤若需要删除一个节点,则可将该删除节点的节点标识从圆环上删除,并将删除节点的节点信息从节点集中删除。由于删除节点被删除后,该删除节点的内存池的缓存会自动生效;因此,可将删除节点的内存池中所存储的交易数据转移至删除节点的下一节点的内存池中,以便于后续可从删除节点的下一节点的内存池中读取这些交易数据。删除节点的下一节点是指节点标识与删除节点的节点标识相邻,且节点哈希值大于该删除节点的节点哈希值的节点。
由此可见,本发明实施例所提出的数据处理方案为了最大化区块链网络的性能,在存储交易数据时,可通过哈希的方式让不同的交易数据存储于不同节点的内存池中,这样可有效减少各个节点的内存池的内存占用资源,从而提升区块链网络的性能。并且,具有相同交易标识的交易数据可通过一致性哈希算法的方式存储于某个固定节点的内存池中(或在该固定节点失效后,存储于该固定节点的下一节点的内存池中),这样在后续读取关于某个交易标识的提交记录(即携带该交易标识的历史交易数据)时,可以稳定地从某个节点的内存池中读取,可有效提高便利性。另外,通过采用根据各个节点的节点哈希值来确定各个节点的服务范围,可使得在需要删除或新增节点时,计算机设备只需要更新该新增或删除的节点的下一节点的服务范围,而不需要更新其他节点的服务范围,可有效节省计算机设备的处理资源。
基于上述的描述,本发明实施例提出一种数据存储方法,该数据存储方法可以由上述所提及的数据处理系统的计算机设备12执行。请参见图2,该数据存储方法可包括以下步骤S201-S204:
S201,响应关于目标交易数据的存储请求,获取目标交易数据的交易哈希值。
当用户想要将目标交易数据上传至区块链网络中时,可先通过客户端向计算机设备发送关于目标交易数据的存储请求,该存储请求用于请求计算机设备从区块链网络中选取一个节点的内存池来存储该目标交易数据。在被选取的内存池中存储了目标交易数据后,后续该被选取的节点可从该内存池中读取出目标交易数据,并将目标交易数据广播给区块链网络中的其他节点进行共识,从而实现将目标交易数据上传至区块链网络中。
相应的,计算机设备若接收到关于目标交易数据的存储请求,则可响应该目标交易数据的存储请求,获取目标交易数据的交易哈希值。该存储请求可携带目标交易数据的交易标识,该交易哈希值是采用一致性哈希算法对该交易标识进行哈希运算得到的;此处的交易标识可以包括但不限于:登陆该客户端的用户账号、使用该客户端的用户的身份证号和/或姓名等身份信息,等等。相应的,步骤S201的具体实施方式可以是:响应关于目标交易数据的存储请求,解析存储请求得到目标交易数据的交易标识;然后,采用一致性哈希算法对目标交易数据的交易标识进行哈希运算,得到目标交易数据的交易哈希值。
S202,获取区块链网络中的第一节点的第一节点信息。
此处的第一节点可以是从已向计算机设备进行注册的至少一个节点中,任意选取的一个节点。由前述可知,区块链网络中的任一节点均可向计算机设备进行注册,以使得该节点可被计算机设备分配以存储交易数据;而计算机设备可响应任一节点的注册请求,将任一节点的节点信息添加至节点集中。因此,在获取第一节点的第一节点信息时,可先获取区块链网络的节点集;该节点集中可包括区块链网络中的至少一个节点的节点信息,节点信息可包括节点标识和节点哈希值;各节点的节点哈希值是采用一致性哈希算法对各节点的节点标识进行哈希运算得到的,且各节点的节点信息在节点集中按照各节点的节点哈希值的大小依序排列;需要说明的是,此处的依序排列可以是升序排列,也可以是降序排列,本发明实施例对此不作限定。然后,从至少一个节点的节点信息中,选取任一节点的节点信息作为第一节点的第一节点信息;第一节点为被选取的节点,第一节点信息包括第一节点标识和第一节点哈希值。
S203,根据第一节点的第一节点哈希值确定第一节点的服务范围。
在一种实施方式中,可预先为不同的节点哈希值设置不同的服务范围;那么在获取到第一节点的第一节点哈希值后,便可获取与该第一节点哈希值所对应的服务范围作为第一节点的服务范围。再一种实施方式中,由前述可知,节点集中可包括多个依序排列的节点信息;那么计算机设备还可根据第一节点的相邻节点的节点哈希值和第一节点哈希值来确定第一节点的服务范围。
具体的,可从节点集中获取第一节点的上一节点的节点哈希值,采用第一节点的上一节点的节点哈希值和第一节点哈希值之间所构成的范围作为第一节点的服务范围;此处的第一节点的上一节点是指:节点信息在节点集中的排列位置与第一节点信息在节点集中的排列位置相邻,且节点哈希值小于第一节点哈希值的节点。例如,第一节点哈希值为2456,第一节点的上一节点的节点哈希值为1263,那么第一节点的服务范围可为(1263,2456)。或者,可从节点集中获取第一节点的下一节点的节点哈希值,采用第一节点的下一节点的节点哈希值和第一节点哈希值之间所构成的范围作为第一节点的服务范围;此处的第一节点的下一节点是指:节点信息在节点集中的排列位置与第一节点信息在节点集中的排列位置相邻,且节点哈希值大于第一节点哈希值的节点。例如,第一节点哈希值为2456,第一节点的下一节点的节点哈希值为3663,那么第一节点的服务范围可为(2456,3663)。需要说明的是,若第一节点哈希值是节点集中的最小节点哈希值,则第一节点的服务范围大于零且小于第一节点哈希值;例如,第一节点哈希值为1000,则第一节点的服务范围可为(0,1000)。
S204,若目标交易数据的交易哈希值位于第一节点的服务范围内,则根据第一节点标识将目标交易数据存储至第一节点的内存池中。
若目标交易数的交易哈希值位于第一节点的服务范围内,则计算机设备可根据第一节点标识将目标交易数据存储至第一节点的内存池中。具体实现中,计算机设备可根据第一节点标识将目标交易数据发送至第一节点,以使第一节点在内存池中存储该目标交易数据。或者,由前述可知,存储请求是由客户端发送的;那么计算机设备也可将第一节点标识返回至客户端,由客户端根据第一节点标识将目标交易数据发送至第一节点,以使第一节点在内存池中存储该目标交易数据。若目标交易数据的交易哈希值不位于第一节点的服务范围内,则计算机设备可以重复执行步骤S202-S204以重新获取新的第一节点的服务范围,并判断目标交易数据的交易哈希值是否位于新的第一节点的服务范围内;若位于新的第一节点的服务范围内,则可将目标交易数据存储至新的第一节点的内存池中。
本发明实施例在存储目标交易数据时,可先获取目标交易数据的交易哈希值及区块链网络中的第一节点的第一节点信息,第一节点信息包括第一节点标识和第一节点哈希值。其次,可根据第一节点哈希值确定第一节点的服务范围。然后,可通过第一节点的服务范围对目标交易数据进行存储约束:只有当目标交易数据的交易哈希值位于第一节点的服务范围内时,才会将目标交易数据存储至第一节点的内存池中;这样可避免在第一节点的内存池中存储区块链网络中所有新的交易数据,可有效节省第一节点的内存池的内存占用资源,提升区块链网络的性能。并且,通过第一哈希值确定第一节点的服务范围,可保证第一节点的服务范围的唯一性;若目标交易数据位于第一节点的服务范围内,则表明目标交易数据不会位于其他节点的服务范围内,这样可使得其他节点不会存储目标交易数据,从而可有效减少其他节点的内存池的内存占用资源,进一步提升区块链网络的性能。
请参见图3,是本发明实施例提供的一种数据存储方法的流程示意图。该数据存储方法可以由上述所提及的数据处理系统的计算机设备12执行。请参见图3,该数据存储方法可包括以下步骤S301-S307:
S301,响应关于目标交易数据的存储请求,解析存储请求得到目标交易数据的交易标识。
S302,采用一致性哈希算法对目标交易数据的交易标识进行哈希运算,得到目标交易数据的交易哈希值。
S303,获取区块链网络中的第一节点的第一节点信息,第一节点信息包括第一节点标识和第一节点哈希值。
S304,检测第一节点是否存在相邻的第二节点。
S305,若存在,则从节点集中获取第二节点的第二节点哈希值,并确定第一节点的服务范围大于第二节点哈希值且小于第一节点哈希值。
S306,若不存在,则确定第一节点的服务范围大于零且小于第一节点哈希值。
在步骤S304-S306中,可先通过步骤S304检测第一节点是否存在相邻的第二节点,此处的第二节点是指:在节点集中,节点信息的排列位置与第一节点信息的排列位置相邻,且节点哈希值小于第一节点哈希值的节点;即第二节点是前述实施例所提及的第一节点的前一节点。若存在,则可执行步骤S305;即可从节点集中获取第二节点的第二节点哈希值,并确定第一节点的服务范围大于第二节点哈希值且小于第一节点哈希值;具体的,可将第一节点哈希值作为第一节点的服务范围的取值上限,并将第二节点哈希值作为第一节点的服务范围的取值下限,从而得到第一节点的服务范围。若不存在,则可执行步骤S306;即可确定第一节点的服务范围大于零且小于第一节点哈希值;具体的,可将第一节点哈希值作为第一节点的服务范围的取值上限,并将零作为第一节点的服务范围的取值下限,从而得到第一节点的服务范围。
S307,若目标交易数据的交易哈希值位于第一节点的服务范围内,则根据所述第一节点标识将所述目标交易数据存储至所述第一节点的内存池中。
由前述可知,存储请求是由客户端发送的;那么步骤S307的具体实施方式可以至少包括以下两种:根据第一节点标识向第一节点发送关于目标交易数据的存储指示;或者,将第一节点标识返回至客户端,以使得客户端根据第一节点标识向第一节点发送关于目标交易数据的存储指示。其中,存储指示携带目标交易数据和目标交易数据的交易标识,存储指示用于指示第一节点将目标交易数据和目标交易数据的交易标识关联存储至第一节点的内存池中。
经研究表明,在区块链网络的实际应用中,可能会存在需要删除某节点或新增某节点的情况;下面将分别对这两种情况进行具体阐述:
(一)删除节点的情况:
已向计算机设备注册过的各个节点可能存在由于各种因素(如出现节点故障问题、因业务需求而不再作为区块链网络中的节点等),而导致无法再执行交易数据的读取或存储。在此情况下,计算机设备需要对这些无法再执行交易数据的读取或存储的节点进行一系列的删除操作,以保证区块链网络的性能。基于此,计算机设备可实时或周期性地检测各个节点是否存在节点删除事件;对存在节点删除事件的节点进行一系列的删除操作。下面将以第一节点具有相邻的第二节点,对第二节点进行节点删除事件的检测,以及对第二节点进行一系列的删除操作为例进行说明:
在具体实施过程中,计算机设备可实时检测是否存在针对第二节点的节点删除事件。在一种实施方式中,第二节点可主动向计算机设备发送一个注销请求,以请求计算机设备对该第二节点进行一系列的删除操作;若计算机设备接收到第二节点发送的注销请求,则可确定检测到了第二节点的节点删除事件;即此实施方式下的节点删除事件可包括:接收到第二节点发送的注销请求的事件。再一种实施方式中,经实践表明,若第二节点出现了故障问题,则计算机设备和第二节点之间的通信连接将会断开;因此,计算机设备可通过检测与第二节点之间的通信连接是否断开,来确定是否存在针对第二节点的节点删除事件。具体的,若计算机设备检测到与第二节点之间的通信连接断开,或者检测到与第二节点之间的通信连接断开且在预设时长内无法重新建立该通信连接,则可确定第二节点出现了故障问题,需要删除第二节点;在此情况下,计算机设备可确定检测到了针对第二节点的节点删除事件。也就是说,此实施方式下的节点删除事件可包括:计算机设备和第二节点之间的通信连接断开的事件、或者计算机设备和第二节点之间的通信连接断开,且在预设时长内无法重新建立与第二节点之间的通信连接的事件。
若检测到针对第二节点的节点删除事件,则可从节点集中删除第二节点的第二节点信息,以更新节点集。另外,还可将第二节点的内存池中的交易数据存储至其他节点中,以便于后续可从其他节点中读取到该交易数据。具体的,由前述可知,当第一节点具有相邻的第二节点时,第一节点的服务范围是根据第二节点的第二节点哈希值和第一节点的第一节点哈希值确定的,即第一节点的服务范围大于第二节点哈希值且小于第一节点哈希值。例如,参见图4a所示,在未删除第二节点信息之前,第二节点哈希值为2000,第一节点哈希值为3000,则第一节点的服务范围为(2000,3000)。若从节点集删除了第二节点信息,则第二节点的上一节点的节点信息在节点集中的排列位置将会与第一节点信息在节点集中的排列位置相邻,这样会触发计算机设备根据第二节点的上一节点的节点哈希值对第一节点的服务范围进行更新;第一节点的更新后的服务范围大于第二节点的上一节点的节点哈希值,且小于第一节点哈希值。仍如图4a所示,第二节点的上一节点的节点哈希值为1000;那么在删除第二节点信息之后,第一节点的服务范围从将(2000,3000)更新为(1000,3000)。而由于第二节点的内存池中的交易数据的交易哈希值均是位于第二节点的服务范围内的(即大于第二节点的上一节点的节点哈希值且小于第二节点哈希值的范围),那么若删除了第二节点,则第二节点的内存池中的交易数据的交易哈希值必然会位于第一节点的更新后的服务范围内。因此,可将第二节点的内存池中所存储的交易数据,存储至第一节点的内存池中。需要说明的是,若不存在第二节点的上一节点,则第一节点的服务范围将由大于第二节点哈希值且小于第一节点哈希值的范围,更新为大于零且小于第一节点哈希值的范围。
(二)新增节点的情况:
由前述可知,区块链网络中的第三节点若想要被计算机设备分配以存储交易数据,则需要向计算机设备发送注册请求以向计算机设备进行注册;此处的第三节点是指区块链网络中未向计算机设备注册的任一节点,其可以是区块链网络中当前新加入的一个节点,也可以是已存在于区块链网络中的节点,对此不作限定。相应的,若计算机设备接收到第三节点的注册请求,则可对第三节点进行一系列的添加操作。
在具体实现中,若接收到区块链网络中的第三节点的注册请求,则可先获取第三节点的第三节点信息,第三节点信息包括第三节点标识和第三节点哈希值。具体的,注册请求可携带第三节点的第三节点标识;计算机设备可先解析注册请求得到第三节点标识,并采用一致性哈希算法对第三节点标识进行哈希运算,得到第三节点哈希值。其次,可根据第三节点哈希值和节点集中的各节点的节点哈希值,确定第三节点信息在节点集中的排列位置;然后,可在第三节点信息所对应的排列位置处,添加第三节点信息以更新节点集。
其中,在确定第三节点信息的排列位置时,由于节点集中的各节点的节点信息是按照各节点的节点哈希值依序排列的,因此可以采用线性查找法或二分查找(或称为折半查找)法确定第三节点信息在节点集中的排列位置。其中,线性查找法是指:按照排列顺序,将第三节点哈希值依次和节点集中的各节点的节点哈希值进行比较,从而查找到第三节点信息的排列位置的方法;二分查找法是指:将节点集分为前后两个初始子集,这两个初始子集所包括的节点信息的数量相同或数量差小于阈值(如小于1),并从两个初始子集中确定包含第三节点哈希值的目标初始子集;将目标初始子集进一步分为前后两个中间子集,并从两个中间子集中确定包括第三节点哈希值的目标中间子集…重复上述步骤,直至找到第三节点信息的排列位置的方法。以排列顺序为升序排列为例,第三节点信息的排列位置需满足以下条件:若第三节点信息的排列位置为非首位或非末位,则位于第三节点信息的排列位置之前且相邻的节点哈希值小于第三节点哈希值,位于第三节点信息的排列位置之后且相邻的节点哈希值大于第三节点哈希值;若第三节点信息的排列位置为首位,则位于第三节点信息的排列位置之后且相邻的节点哈希值大于第三节点哈希值;若第三节点信息的排列位置为末位,则位于第三节点信息的排列位置之前且相邻的节点哈希值小于第三节点哈希值。
另外,若新增第三节点的第三节点信息,则会导致更新后的节点集中,存在某节点的服务范围发生更新。例如,参见图4b所示,在未新增第三节点信息前,节点a的节点信息在节点集中的排列位置与节点b的节点信息在节点集中的排列位置相邻;且节点a的节点哈希值为1000,节点b的节点哈希值为3000;那么,在未新增第三节点信息前,节点b的服务范围为(1000,3000)。若将第三节点信息(第三节点哈希值为1575)添加至节点a的节点信息的排列位置和节点b的节点信息的排列位置之间,则第三节点将成为节点b的上一节点,即节点b成为了第三节点的下一节点;这样会导致节点b的服务范围从将(1000,3000)更新为(1575,3000),第三节点的服务范围为(1000,1575)。在此情况下,计算机设备需要将节点b的内存池中所存储的交易哈希值不属于节点b更新后的服务范围的交易数据(例如交易哈希值为1100的交易数据)转移至第三节点中。基于此,计算机设备在添加第三节点信息以更新节点集之后,计算机设备还可根据更新后的节点集中的各个节点的节点信息,确定与第三节点相关联的关联节点,关联节点是指:在节点集中,节点信息的排列位置与第三节点信息的排列位置相邻,且节点哈希值大于第三节点哈希值的节点;即关联节点是指第三节点的下一节点。然后,从关联节点的内存池中确定交易哈希值小于第三节点哈希值的待转移交易数据,并将待转移交易数据从关联节点的内存池中转移至第三节点的内存池中进行存储。
本发明实施例在存储目标交易数据时,可先获取目标交易数据的交易哈希值及区块链网络中的第一节点的第一节点信息,第一节点信息包括第一节点标识和第一节点哈希值。其次,可根据第一节点哈希值确定第一节点的服务范围。然后,可通过第一节点的服务范围对目标交易数据进行存储约束:只有当目标交易数据的交易哈希值位于第一节点的服务范围内时,才会将目标交易数据存储至第一节点的内存池中;这样可避免在第一节点的内存池中存储区块链网络中所有新的交易数据,可有效节省第一节点的内存池的内存占用资源,提升区块链网络的性能。并且,通过第一哈希值确定第一节点的服务范围,可保证第一节点的服务范围的唯一性;若目标交易数据位于第一节点的服务范围内,则表明目标交易数据不会位于其他节点的服务范围内,这样可使得其他节点不会存储目标交易数据,从而可有效减少其他节点的内存池的内存占用资源,进一步提升区块链网络的性能。
基于上述关于数据存储方法实施例的相关描述,本发明实施例还提出了一种数据读取方法;该数据读取方法可以由上述所提及的数据处理系统的计算机设备12执行。请参见图5,该数据读取方法可包括以下步骤S501-S504:
S501,响应关于目标交易数据的读取请求,获取目标交易数据的交易哈希值。
当用户想要读取目标交易数据时,可通过客户端向计算机设备发送关于目标交易数据的读取请求,以请求计算机设备从区块链网络中确定出用于存储有目标交易数据的节点,从而可从该节点的内存池中读取目标交易数据。相应的,计算机设备若接收到关于目标交易数据的读取请求,则可响应该目标交易数据的读取请求,获取目标交易数据的交易哈希值。该读取请求可携带目标交易数据的交易标识,该交易哈希值是采用一致性哈希算法对该交易标识进行哈希运算得到的;此处的交易标识可以包括但不限于:登陆该客户端的用户账号、使用该客户端的用户的身份证号和/或姓名等身份信息,等等。相应的,步骤S501的具体实施方式可以是:响应关于目标交易数据的读取请求,解析读取请求得到目标交易数据的交易标识;然后,采用一致性哈希算法对目标交易数据的交易标识进行哈希运算,得到目标交易数据的交易哈希值。
S502,获取区块链网络中的第一节点的第一节点信息,所述第一节点信息包括第一节点标识和第一节点哈希值。
S503,根据第一节点的第一节点哈希值确定第一节点的服务范围。
步骤S502-S503的具体实施方式可以参见上述发明实施例中所提及的步骤S202-S203的相关描述,在此不再赘述。
S504,若目标交易数据的交易哈希值位于第一节点的服务范围内,则根据第一节点标识从第一节点的内存池中读取目标交易数据。
由前述可知,读取请求是由客户端发送的;在一种实施方式中,计算机设备可直接根据第一节点标识向第一节点发送关于目标交易数据的第一读取指示,第一读取指示用于指示第一节点从内存池中读取并返回目标交易数据至计算机设备;然后,计算机设备可将目标交易数据发送至客户端。再一种实施方式中,计算机设备可将第一节点标识返回至客户端,由客户端根据第一节点标识向第一节点发送关于目标交易数据的第二读取指示,第二读取指示用于指示第一节点从内存池中读取并返回目标交易数据至客户端。
本发明实施例在存储目标交易数据时,可先获取目标交易数据的交易哈希值以及第一节点的第一节点信息,第一节点信息包括第一节点标识和第一节点哈希值。其次,可根据第一节点哈希值确定第一节点的服务范围。若目标交易数据的交易哈希值位于第一节点的服务范围内,则可从第一节点的内存池中读取目标交易数据。由此可见,只有在目标交易数据的交易哈希值位于第一节点的服务范围内时,才从第一节点的内存池中读取目标交易数据;否则,将不会对第一节点进行数据的读操作,可有效节省处理资源。并且,通过根据目标交易数据的交易哈希值,稳定地去固定节点(如第一节点)的内存池中读取目标交易数据,可有效提高便利性。
基于上述数据存储方法实施例的描述,本发明实施例还公开了一种数据存储装置,该数据存储装置可以是运行于计算机设备中的一个计算机程序(包括程序代码)。该数据存储装置可以执行图2至图3所示的方法。请参见图6,数据存储装置可以运行如下单元:
获取单元601,用于响应关于目标交易数据的存储请求,获取目标交易数据的交易哈希值;
获取单元601,还用于获取区块链网络中的第一节点的第一节点信息,第一节点信息包括第一节点标识和第一节点哈希值;
处理单元602,用于根据第一节点的第一节点哈希值确定第一节点的服务范围;
存储单元603,用于若目标交易数据的交易哈希值位于第一节点的服务范围内,则根据第一节点标识将目标交易数据存储至第一节点的内存池中。
一种实施方式中,获取单元601在用于获取区块链网络中的第一节点的第一节点信息时,可具体用于:
获取区块链网络的节点集,该节点集包括区块链网络中的至少一个节点的节点信息,节点信息包括节点标识和节点哈希值;各节点的节点哈希值是采用一致性哈希算法对各节点的节点标识进行哈希运算得到的,且各节点的节点信息在节点集中按照各节点的节点哈希值的大小依序排列;
从至少一个节点的节点信息中,选取任一节点的节点信息作为第一节点的第一节点信息。
一种实施方式中,处理单元602在用于根据第一节点的第一节点哈希值确定第一节点的服务范围时,具体用于:
检测第一节点是否存在相邻的第二节点,第二节点是指:在节点集中,节点信息的排列位置与第一节点信息的排列位置相邻,且节点哈希值小于第一节点哈希值的节点;
若存在,则从节点集中获取第二节点的第二节点哈希值,并确定第一节点的服务范围大于第二节点哈希值且小于第一节点哈希值;
若不存在,则确定第一节点的服务范围大于零且小于第一节点哈希值。
一种实施方式中,第一节点具有相邻的第二节点;处理单元602还可用于:
若检测到针对第二节点的节点删除事件,则从节点集中删除第二节点的第二节点信息,以更新节点集;
将第二节点的内存池中所存储的交易数据,存储至第一节点的内存池中。
再一种实施方式中,处理单元602还可用于:
若接收到区块链网络中的第三节点的注册请求,则获取第三节点的第三节点信息,第三节点信息包括第三节点标识和第三节点哈希值;
根据第三节点哈希值和节点集中的各节点的节点哈希值,确定第三节点信息在节点集中的排列位置;
在第三节点信息所对应的排列位置处,添加第三节点信息以更新节点集。
一种实施方式中,存储单元603还可用于:
根据更新后的节点集中的各个节点的节点信息,确定与第三节点相关联的关联节点,关联节点是指:在节点集中,节点信息的排列位置与第三节点信息的排列位置相邻,且节点哈希值大于第三节点哈希值的节点;
从关联节点的内存池中确定交易哈希值小于第三节点哈希值的待转移交易数据,并将待转移交易数据从关联节点的内存池中转移至第三节点的内存池中进行存储。
一种实施方式中,存储请求携带目标交易数据的交易标识;相应的,获取单元601在用于响应关于目标交易数据的存储请求,获取目标交易数据的交易哈希值时,可具体用于:
响应关于目标交易数据的存储请求,解析存储请求得到目标交易数据的交易标识;
采用一致性哈希算法对目标交易数据的交易标识进行哈希运算,得到目标交易数据的交易哈希值。
一种实施方式中,存储请求是由客户端发送的;相应的,存储单元603在用于根据第一节点标识将目标交易数据存储至第一节点的内存池中时,可具体用于:
根据第一节点标识向第一节点发送关于目标交易数据的存储指示;或者,
将第一节点标识返回至客户端,以使得客户端根据第一节点标识向第一节点发送关于目标交易数据的存储指示;
其中,存储指示携带目标交易数据和目标交易数据的交易标识,存储指示用于指示第一节点将目标交易数据和目标交易数据的交易标识关联存储至第一节点的内存池中。
根据本发明的一个实施例,图2至图3所示的方法所涉及的各个步骤均可以是由图6所示的数据存储装置中的各个单元来执行的。例如,图2中所示的步骤S201和S202可由图6中所示的获取单元601来执行,步骤S203和S204可分别由图6中所示的处理单元602和存储单元603来执行;又如,图3中所示的步骤S301-S303可由图6中所示的获取单元601来执行,步骤S304-S306可由图6中所示的处理单元602来执行,步骤S307可由图6中所示的存储单元603来执行。
根据本发明的另一个实施例,图6所示的数据存储装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本发明的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本发明的其它实施例中,基于数据存储装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本发明的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图2至图3中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图6中所示的数据存储装置设备,以及来实现本发明实施例的数据存储方法。计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
本发明实施例在存储目标交易数据时,可先获取目标交易数据的交易哈希值及区块链网络中的第一节点的第一节点信息,第一节点信息包括第一节点标识和第一节点哈希值。其次,可根据第一节点哈希值确定第一节点的服务范围。然后,可通过第一节点的服务范围对目标交易数据进行存储约束:只有当目标交易数据的交易哈希值位于第一节点的服务范围内时,才会将目标交易数据存储至第一节点的内存池中;这样可避免在第一节点的内存池中存储区块链网络中所有新的交易数据,可有效节省第一节点的内存池的内存占用资源,提升区块链网络的性能。并且,通过第一哈希值确定第一节点的服务范围,可保证第一节点的服务范围的唯一性;若目标交易数据位于第一节点的服务范围内,则表明目标交易数据不会位于其他节点的服务范围内,这样可使得其他节点不会存储目标交易数据,从而可有效减少其他节点的内存池的内存占用资源,进一步提升区块链网络的性能。
基于上述数据读取方法实施例的描述,本发明实施例还公开了一种数据读取装置,该数据读取装置可以是运行于计算机设备中的一个计算机程序(包括程序代码)。该数据读取装置可以执行图5所示的方法。请参见图7,数据读取装置可以运行如下单元:
获取单元701,用于响应关于目标交易数据的读取请求,获取目标交易数据的交易哈希值;
获取单元701,还用于获取区块链网络中的第一节点的第一节点信息,第一节点信息包括第一节点标识和第一节点哈希值;
处理单元702,用于根据第一节点的第一节点哈希值确定第一节点的服务范围;
读取单元703,用于若目标交易数据的交易哈希值位于第一节点的服务范围内,则根据第一节点标识从第一节点的内存池中读取目标交易数据。
根据本发明的一个实施例,图5所示的方法所涉及的各个步骤均可以是由图7所示的数据读取装置中的各个单元来执行的。例如,图5中所示的步骤S501和S502可由图7中所示的获取单元701来执行,步骤S503和S504可分别由图7中所示的处理单元702和读取单元703来执行。根据本发明的另一个实施例,图7所示的数据读取装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本发明的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本发明的其它实施例中,基于数据读取装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本发明的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图5中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图7中所示的数据读取装置设备,以及来实现本发明实施例的数据读取方法。计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
本发明实施例在存储目标交易数据时,可先获取目标交易数据的交易哈希值以及第一节点的第一节点信息,第一节点信息包括第一节点标识和第一节点哈希值。其次,可根据第一节点哈希值确定第一节点的服务范围。若目标交易数据的交易哈希值位于第一节点的服务范围内,则可从第一节点的内存池中读取目标交易数据。由此可见,只有在目标交易数据的交易哈希值位于第一节点的服务范围内时,才从第一节点的内存池中读取目标交易数据;否则,将不会对第一节点进行数据的读操作,可有效节省处理资源。并且,通过根据目标交易数据的交易哈希值,稳定地去固定节点(如第一节点)的内存池中读取目标交易数据,可有效提高便利性。
基于上述方法实施例以及装置实施例的描述,本发明实施例还提供一种计算机设备,计算机设备可以是终端或者服务器。请参见图8,该计算机设备至少包括处理器801、输入接口802、输出接口803以及计算机存储介质804。其中,计算机设备内的处理器801、输入接口802、输出接口803以及计算机存储介质804可通过总线或其他方式连接。计算机存储介质804可以存储在计算机设备的存储器中,计算机存储介质804用于存储计算机程序,计算机程序包括程序指令,处理器801 用于执行计算机存储介质804存储的程序指令。处理器801(或称CPU(Central Processing Unit,中央处理器))是计算机设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能。
在一个实施例中,本发明实施例中的处理器801可以用于对目标交易数据进行一系列的数据存储处理,包括:响应关于目标交易数据的存储请求,获取目标交易数据的交易哈希值;获取区块链网络中的第一节点的第一节点信息,第一节点信息包括第一节点标识和第一节点哈希值; 根据第一节点的第一节点哈希值确定第一节点的服务范围;若目标交易数据的交易哈希值位于第一节点的服务范围内,则根据第一节点标识将目标交易数据存储至第一节点的内存池中,等等。
再一个实施例中,本发明实施例中的处理器801可以用于对目标交易数据进行一系列的数据读取处理,包括:响应关于目标交易数据的读取请求,获取目标交易数据的交易哈希值;获取区块链网络中的第一节点的第一节点信息,第一节点信息包括第一节点标识和第一节点哈希值;根据第一节点的第一节点哈希值确定第一节点的服务范围;若目标交易数据的交易哈希值位于第一节点的服务范围内,则根据第一节点标识从第一节点的内存池中读取目标交易数据,等等。
本发明实施例还提供了一种计算机存储介质(Memory),计算机存储介质是计算机设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括计算机设备中的内置存储介质,当然也可以包括计算机设备所支持的扩展存储介质。计算机存储介质提供存储空间,该存储空间存储了计算机设备的操作系统。并且,在该存储空间中还存放了适于被处理器801加载并执行的一条或多条的指令,这些指令可以是一个或一个以上的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器的计算机存储介质。
在一个实施例中,可由处理器801加载并执行计算机存储介质中存放的一条或多条第一指令,以实现上述有关数据存储实施例中的方法的相应步骤;具体实现中,计算机存储介质中的一条或多条第一指令由处理器801加载并执行如下步骤:
响应关于目标交易数据的存储请求,获取目标交易数据的交易哈希值;
获取区块链网络中的第一节点的第一节点信息,第一节点信息包括第一节点标识和第一节点哈希值;
根据第一节点的第一节点哈希值确定第一节点的服务范围;
若目标交易数据的交易哈希值位于第一节点的服务范围内,则根据第一节点标识将目标交易数据存储至第一节点的内存池中。
一种实施方式中,在获取区块链网络中的第一节点的第一节点信息时,一条或多条第一指令可由处理器801加载并具体执行:
获取区块链网络的节点集,节点集包括区块链网络中的至少一个节点的节点信息,节点信息包括节点标识和节点哈希值;各节点的节点哈希值是采用一致性哈希算法对各节点的节点标识进行哈希运算得到的,且各节点的节点信息在节点集中按照各节点的节点哈希值的大小依序排列;
从至少一个节点的节点信息中,选取任一节点的节点信息作为第一节点的第一节点信息。
一种实施方式中,在根据第一节点的第一节点哈希值确定第一节点的服务范围时,一条或多条第一指令可由处理器801加载并具体执行:
检测第一节点是否存在相邻的第二节点,第二节点是指:在节点集中,节点信息的排列位置与第一节点信息的排列位置相邻,且节点哈希值小于第一节点哈希值的节点;
若存在,则从节点集中获取第二节点的第二节点哈希值,并确定第一节点的服务范围大于第二节点哈希值且小于第一节点哈希值;
若不存在,则确定第一节点的服务范围大于零且小于第一节点哈希值。
一种实施方式中,第一节点具有相邻的第二节点;相应的,一条或多条第一指令还可由处理器801加载并具体执行:
若检测到针对第二节点的节点删除事件,则从节点集中删除第二节点的第二节点信息,以更新节点集;
将第二节点的内存池中所存储的交易数据,存储至第一节点的内存池中。
一种实施方式中,一条或多条第一指令还可由处理器801加载并具体执行:
若接收到区块链网络中的第三节点的注册请求,则获取第三节点的第三节点信息,第三节点信息包括第三节点标识和第三节点哈希值;
根据第三节点哈希值和节点集中的各节点的节点哈希值,确定第三节点信息在节点集中的排列位置;
在第三节点信息所对应的排列位置处,添加第三节点信息以更新节点集。
一种实施方式中,一条或多条第一指令还可由处理器801加载并具体执行:
根据更新后的节点集中的各个节点的节点信息,确定与第三节点相关联的关联节点,关联节点是指:在节点集中,节点信息的排列位置与第三节点信息的排列位置相邻,且节点哈希值大于第三节点哈希值的节点;
从关联节点的内存池中确定交易哈希值小于第三节点哈希值的待转移交易数据,并将待转移交易数据从关联节点的内存池中转移至第三节点的内存池中进行存储。
一种实施方式中,存储请求携带目标交易数据的交易标识;相应的,在响应关于目标交易数据的存储请求,获取目标交易数据的交易哈希值时,一条或多条第一指令可由处理器801加载并具体执行:
响应关于目标交易数据的存储请求,解析存储请求得到目标交易数据的交易标识;
采用一致性哈希算法对目标交易数据的交易标识进行哈希运算,得到目标交易数据的交易哈希值。
一种实施方式中,存储请求是由客户端发送的;相应的,在根据第一节点标识将目标交易数据存储至第一节点的内存池中时,一条或多条第一指令可由处理器801加载并具体执行:
根据第一节点标识向第一节点发送关于目标交易数据的存储指示;或者,
将第一节点标识返回至客户端,以使得客户端根据第一节点标识向第一节点发送关于目标交易数据的存储指示;
其中,存储指示携带目标交易数据和目标交易数据的交易标识,存储指示用于指示第一节点将目标交易数据和目标交易数据的交易标识关联存储至第一节点的内存池中。
再一个实施例中,可由处理器801加载并执行计算机存储介质中存放的一条或多条第二指令,以实现上述有关数据读取实施例中的方法的相应步骤;具体实现中,计算机存储介质中的一条或多条第二指令由处理器801加载并执行如下步骤:
响应关于目标交易数据的读取请求,获取目标交易数据的交易哈希值;
获取区块链网络中的第一节点的第一节点信息,第一节点信息包括第一节点标识和第一节点哈希值;
根据第一节点的第一节点哈希值确定第一节点的服务范围;
若目标交易数据的交易哈希值位于第一节点的服务范围内,则根据第一节点标识从第一节点的内存池中读取目标交易数据。
本发明实施例在存储目标交易数据时,可先获取目标交易数据的交易哈希值及区块链网络中的第一节点的第一节点信息,第一节点信息包括第一节点标识和第一节点哈希值。其次,可根据第一节点哈希值确定第一节点的服务范围。然后,可通过第一节点的服务范围对目标交易数据进行存储约束:只有当目标交易数据的交易哈希值位于第一节点的服务范围内时,才会将目标交易数据存储至第一节点的内存池中;这样可避免在第一节点的内存池中存储区块链网络中所有新的交易数据,可有效节省第一节点的内存池的内存占用资源,提升区块链网络的性能。并且,通过第一哈希值确定第一节点的服务范围,可保证第一节点的服务范围的唯一性;若目标交易数据位于第一节点的服务范围内,则表明目标交易数据不会位于其他节点的服务范围内,这样可使得其他节点不会存储目标交易数据,从而可有效减少其他节点的内存池的内存占用资源,进一步提升区块链网络的性能。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (10)
1.一种数据存储方法,其特征在于,所述数据存储方法由计算机设备执行,所述方法包括:
响应关于目标交易数据的存储请求,获取所述目标交易数据的交易哈希值;
获取区块链网络中的第一节点的第一节点信息,所述第一节点信息包括第一节点标识和第一节点哈希值;所述第一节点是已在所述计算机设备中进行注册的至少一个节点中的任意一个节点;所述第一节点信息是从节点集中获取到的,所述节点集中包括所述区块链网络中的至少一个节点的节点信息,所述节点信息包括节点标识和节点哈希值;各节点的节点信息在所述节点集中按照所述各节点的节点哈希值的大小依序排列;所述节点集中还包括所述第一节点相关联的虚拟节点的虚拟节点信息,所述虚拟节点信息包括虚拟标识和虚拟节点哈希值;所述虚拟标识是在所述第一节点标识后添加附属内容后生成的,所述虚拟节点哈希值是对所述虚拟标识进行哈希运算得到的,且所述虚拟节点哈希值用于确定所述虚拟节点的服务范围;所述节点集中还包括与所述第一节点相邻的第二节点的第二节点信息,所述第二节点是指:在所述节点集中,节点信息的排列位置与所述第一节点信息的排列位置相邻,且节点哈希值小于所述第一节点哈希值的节点;
根据所述第一节点的第一节点哈希值确定所述第一节点的服务范围;
若所述目标交易数据的交易哈希值位于所述第一节点的服务范围内,则根据所述第一节点标识将所述目标交易数据存储至所述第一节点的内存池中;
若接收到新的交易数据,且所述新的交易数据的交易哈希值位于所述虚拟节点的服务范围内,则将所述新的交易数据存储至所述第一节点的内存池中;
若所述节点集因新增了第三节点的第三节点信息而产生更新,则根据更新后的节点集中的各个节点的节点信息,确定与所述第三节点相关联的关联节点,所述关联节点是指:在所述节点集中,节点信息的排列位置与所述第三节点信息的排列位置相邻,且节点哈希值大于所述第三节点哈希值的节点;所述第三节点信息包括第三节点标识和第三节点哈希值;
根据第三节点哈希值更新所述关联节点的服务范围,更新后的服务范围的最小值等于所述第三节点哈希值;
将所述关联节点的内存池中所存储的交易哈希值不属于所述更新后的服务范围的交易数据转移至所述第三节点;
若检测到针对所述第二节点的节点删除事件,则从所述节点集中删除所述第二节点的第二节点信息,以更新所述节点集;所述节点删除事件包括以下任一项:接收到第二节点发送的注销请求的事件、所述计算机设备和所述第二节点之间的通信连接断开的事件、或者所述计算机设备和所述第二节点之间的通信连接断开,且在预设时长内无法重新建立与所述第二节点之间的通信连接的事件;
将所述第二节点的内存池中所存储的交易数据,存储至所述第一节点的内存池中。
2.如权利要求1所述的方法,其特征在于,所述获取区块链网络中的第一节点的第一节点信息,包括:
获取区块链网络的节点集,所述节点集包括所述区块链网络中的至少一个节点的节点信息;所述各节点的节点哈希值是采用一致性哈希算法对所述各节点的节点标识进行哈希运算得到的;
从所述至少一个节点的节点信息中,选取任一节点的节点信息作为第一节点的第一节点信息。
3.如权利要求2所述的方法,其特征在于,所述根据所述第一节点的第一节点哈希值确定所述第一节点的服务范围,包括:
检测所述第一节点是否存在相邻的第二节点;
若存在,则从所述节点集中获取第二节点的第二节点哈希值,并确定所述第一节点的服务范围大于所述第二节点哈希值且小于所述第一节点哈希值;
若不存在,则确定所述第一节点的服务范围大于零且小于所述第一节点哈希值。
4.如权利要求2所述的方法,其特征在于,所述方法还包括:
若接收到所述区块链网络中的第三节点的注册请求,则获取所述第三节点的第三节点信息;
根据所述第三节点哈希值和所述节点集中的各节点的节点哈希值,确定所述第三节点信息在所述节点集中的排列位置;
在所述第三节点信息所对应的排列位置处,添加所述第三节点信息以更新所述节点集。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
从所述关联节点的内存池中确定交易哈希值小于所述第三节点哈希值的待转移交易数据,并将所述待转移交易数据从所述关联节点的内存池中转移至所述第三节点的内存池中进行存储。
6.如权利要求1所述的方法,其特征在于,所述存储请求携带所述目标交易数据的交易标识,所述响应关于目标交易数据的存储请求,获取所述目标交易数据的交易哈希值,包括:
响应关于目标交易数据的存储请求,解析所述存储请求得到所述目标交易数据的交易标识;
采用一致性哈希算法对所述目标交易数据的交易标识进行哈希运算,得到所述目标交易数据的交易哈希值。
7.如权利要求1所述的方法,其特征在于,所述存储请求是由客户端发送的;所述根据所述第一节点标识将所述目标交易数据存储至所述第一节点的内存池中,包括:
根据所述第一节点标识向所述第一节点发送关于所述目标交易数据的存储指示;或者,
将所述第一节点标识返回至所述客户端,以使得所述客户端根据所述第一节点标识向所述第一节点发送关于所述目标交易数据的存储指示;
其中,所述存储指示携带所述目标交易数据和所述目标交易数据的交易标识,所述存储指示用于指示所述第一节点将所述目标交易数据和所述目标交易数据的交易标识关联存储至所述第一节点的内存池中。
8.一种数据存储装置,其特征在于,所述数据存储装置运行于计算机设备中,所述装置包括:
获取单元,用于响应关于目标交易数据的存储请求,获取所述目标交易数据的交易哈希值;
所述获取单元,还用于获取区块链网络中的第一节点的第一节点信息,所述第一节点信息包括第一节点标识和第一节点哈希值;所述第一节点是已在所述计算机设备中进行注册的至少一个节点中的任意一个节点;所述第一节点信息是从节点集中获取到的,所述节点集中包括所述区块链网络中的至少一个节点的节点信息,所述节点信息包括节点标识和节点哈希值;各节点的节点信息在所述节点集中按照所述各节点的节点哈希值的大小依序排列;所述节点集中还包括所述第一节点相关联的虚拟节点的虚拟节点信息,所述虚拟节点信息包括虚拟标识和虚拟节点哈希值;所述虚拟标识是在所述第一节点标识后添加附属内容后生成的,所述虚拟节点哈希值是对所述虚拟标识进行哈希运算得到的,且所述虚拟节点哈希值用于确定所述虚拟节点的服务范围;所述节点集中还包括与所述第一节点相邻的第二节点的第二节点信息,所述第二节点是指:在所述节点集中,节点信息的排列位置与所述第一节点信息的排列位置相邻,且节点哈希值小于所述第一节点哈希值的节点;
处理单元,用于根据所述第一节点的第一节点哈希值确定所述第一节点的服务范围;
存储单元,用于若所述目标交易数据的交易哈希值位于所述第一节点的服务范围内,则根据所述第一节点标识将所述目标交易数据存储至所述第一节点的内存池中;
所述存储单元,还用于若接收到新的交易数据,且所述新的交易数据的交易哈希值位于所述虚拟节点的服务范围内,则将所述新的交易数据存储至所述第一节点的内存池中;
所述处理单元,还用于若所述节点集因新增了第三节点的第三节点信息而产生更新,则根据更新后的节点集中的各个节点的节点信息,确定与所述第三节点相关联的关联节点,所述关联节点是指:在所述节点集中,节点信息的排列位置与所述第三节点信息的排列位置相邻,且节点哈希值大于所述第三节点哈希值的节点;所述第三节点信息包括第三节点标识和第三节点哈希值;
所述处理单元,还用于根据第三节点哈希值更新所述关联节点的服务范围,更新后的服务范围的最小值等于所述第三节点哈希值;
所述存储单元,还用于将所述关联节点的内存池中所存储的交易哈希值不属于所述更新后的服务范围的交易数据转移至所述第三节点;
所述处理单元,还用于若检测到针对所述第二节点的节点删除事件,则从所述节点集中删除所述第二节点的第二节点信息,以更新所述节点集;所述节点删除事件包括以下任一项:接收到第二节点发送的注销请求的事件、所述计算机设备和所述第二节点之间的通信连接断开的事件、或者所述计算机设备和所述第二节点之间的通信连接断开,且在预设时长内无法重新建立与所述第二节点之间的通信连接的事件;
将所述第二节点的内存池中所存储的交易数据,存储至所述第一节点的内存池中。
9.一种计算机设备,包括输入接口和输出接口,其特征在于,还包括:
处理器,适于实现一条或多条指令;以及,
计算机存储介质,所述计算机存储介质存储有一条或多条第一指令,所述一条或多条第一指令适于由所述处理器加载并执行如权利要求1-7任一项所述的数据存储方法。
10.一种计算机存储介质,其特征在于,所述计算机存储介质存储有一条或多条第一指令,所述一条或多条第一指令适于由处理器加载并执行如权利要求1-7任一项所述的数据存储方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911297561.1A CN110737668B (zh) | 2019-12-17 | 2019-12-17 | 数据存储方法、数据读取方法、相关设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911297561.1A CN110737668B (zh) | 2019-12-17 | 2019-12-17 | 数据存储方法、数据读取方法、相关设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110737668A CN110737668A (zh) | 2020-01-31 |
CN110737668B true CN110737668B (zh) | 2020-12-22 |
Family
ID=69274583
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911297561.1A Active CN110737668B (zh) | 2019-12-17 | 2019-12-17 | 数据存储方法、数据读取方法、相关设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110737668B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11461203B2 (en) * | 2018-07-10 | 2022-10-04 | Here Data Technology | Systems and methods of handling node failure in a distributed data storage using multi-layer consistent hashing |
CN111507695B (zh) * | 2020-04-17 | 2022-09-27 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、节点设备及存储介质 |
CN111506658B (zh) * | 2020-04-17 | 2021-09-28 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、第一设备及存储介质 |
CN111383031B (zh) * | 2020-05-29 | 2020-09-22 | 支付宝(杭州)信息技术有限公司 | 一种区块链中的智能合约执行方法、系统和电子设备 |
CN111866166B (zh) * | 2020-07-30 | 2023-04-18 | 杭州复杂美科技有限公司 | 聊天方法、设备和存储介质 |
CN112883038B (zh) * | 2021-04-29 | 2021-07-23 | 腾讯科技(深圳)有限公司 | 一种基于区块链的数据管理方法、计算机及可读存储介质 |
CN113672524A (zh) * | 2021-08-20 | 2021-11-19 | 上海哔哩哔哩科技有限公司 | 基于多级缓存的数据处理方法及系统 |
CN113708937B (zh) * | 2021-10-28 | 2022-03-01 | 湖南天河国云科技有限公司 | 区块链交易的处理方法和系统 |
CN113778692B (zh) * | 2021-11-10 | 2022-03-08 | 腾讯科技(深圳)有限公司 | 一种数据处理的方法及装置、计算机设备和存储介质 |
CN114417085B (zh) * | 2022-03-30 | 2022-07-15 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110169040A (zh) * | 2018-07-10 | 2019-08-23 | 深圳花儿数据技术有限公司 | 基于多层一致性哈希的分布式数据存储方法与系统 |
CN110474774A (zh) * | 2018-05-09 | 2019-11-19 | 三星Sds株式会社 | 基于区块链的系统中的区块创建方法及区块链节点 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105187547A (zh) * | 2015-09-25 | 2015-12-23 | 浪潮(北京)电子信息产业有限公司 | 一种负载均衡方法与系统 |
CN106503139A (zh) * | 2016-10-20 | 2017-03-15 | 上海携程商务有限公司 | 动态数据存取方法及系统 |
CN106650494B (zh) * | 2016-12-16 | 2019-07-16 | 杭州嘉楠耘智信息科技有限公司 | 一种数据处理方法及装置 |
EP3808051B1 (en) * | 2018-06-12 | 2024-01-10 | The Vanguard Group, Inc. | Device, method, and computer readable medium for large scale electronic processing |
CN109271391B (zh) * | 2018-09-29 | 2021-05-28 | 武汉极意网络科技有限公司 | 数据存储方法、服务器、存储介质及装置 |
CN109784918A (zh) * | 2018-12-15 | 2019-05-21 | 深圳壹账通智能科技有限公司 | 基于区块链的信息监督方法、装置、设备和存储介质 |
CN110061838B (zh) * | 2019-04-28 | 2022-07-19 | 广州大学 | 一种dns资源记录的去中心化存储系统及其实现方法 |
-
2019
- 2019-12-17 CN CN201911297561.1A patent/CN110737668B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110474774A (zh) * | 2018-05-09 | 2019-11-19 | 三星Sds株式会社 | 基于区块链的系统中的区块创建方法及区块链节点 |
CN110169040A (zh) * | 2018-07-10 | 2019-08-23 | 深圳花儿数据技术有限公司 | 基于多层一致性哈希的分布式数据存储方法与系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110737668A (zh) | 2020-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110737668B (zh) | 数据存储方法、数据读取方法、相关设备及介质 | |
CN107819828B (zh) | 数据传输方法、装置、计算机设备和存储介质 | |
US20170364572A1 (en) | Method and system for providing a synchronization service | |
US10908834B2 (en) | Load balancing for scalable storage system | |
CN108683668B (zh) | 内容分发网络中的资源校验方法、装置、存储介质及设备 | |
CN108696581B (zh) | 分布式信息的缓存方法、装置、计算机设备以及存储介质 | |
CN112153133B (zh) | 一种数据共享方法、设备以及介质 | |
JP6582445B2 (ja) | シンクライアントシステム、接続管理装置、仮想マシン稼働装置、方法、および、プログラム | |
US10754843B2 (en) | Method and apparatus for information management | |
KR20200037850A (ko) | 분산 데이터 저장 시스템 | |
CN103259869A (zh) | 一种基于分布式数据存储的集中信息管理方法 | |
CN110909030A (zh) | 一种信息处理方法及服务器集群 | |
US9684668B1 (en) | Systems and methods for performing lookups on distributed deduplicated data systems | |
CN112866406B (zh) | 一种数据存储方法、系统、装置、设备及存储介质 | |
CN108509296B (zh) | 一种处理设备故障的方法和系统 | |
CN107908713B (zh) | 一种基于Redis集群的分布式动态杜鹃过滤系统及其过滤方法 | |
CN117176796A (zh) | 消息推送方法、装置、计算机设备和存储介质 | |
US11625358B1 (en) | Automatic object archiving based on user selections | |
CN116542668A (zh) | 一种基于区块链的数据处理方法、设备及可读存储介质 | |
US20210216507A1 (en) | Method, device and computer program product for storage management | |
US10749957B2 (en) | Method and apparatus for information management | |
CN109981697B (zh) | 一种文件转存方法、系统、服务器及存储介质 | |
US10122789B1 (en) | Log information transmission integrity | |
CN105245569A (zh) | 断点上传方法及系统 | |
JP2020057240A (ja) | 所属地分析用データ構築システム、所属地分析用データ構築プログラム、及び所属地分析システム |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40021538 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |