CN111708835A - 区块链数据存储方法及装置 - Google Patents
区块链数据存储方法及装置 Download PDFInfo
- Publication number
- CN111708835A CN111708835A CN202010470488.XA CN202010470488A CN111708835A CN 111708835 A CN111708835 A CN 111708835A CN 202010470488 A CN202010470488 A CN 202010470488A CN 111708835 A CN111708835 A CN 111708835A
- Authority
- CN
- China
- Prior art keywords
- data
- node
- peer
- query
- local system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种区块链数据存储方法及装置,所述方法包括:通过获取区块链中所有peer节点信息,若区块链中只存在一个peer节点,以其作为第一节点并将其本地系统中的第一历史数据归档到分布式存储系统,若区块链中至少包括两个peer节点,将任一peer节点本地系统中的第二历史数据归档到分布式存储系统,并发送广播消息至其它peer节点,其它peer节点删除对应本地系统中存储的历史数据,然后根据查询数据请求中的查询条件,在peer节点本地系统和分布式存储系统中进行查询。本发明实施例能够通过本地系统查询提高近期数据的查询效率,同时利用分布式存储系统长时间保存历史数据,降低存储成本。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种区块链数据存储方法及装置。
背景技术
在大型、集中式的数据中心中存储数据,往往存在性能、可用性和可扩展性等方面问题,同时也会带来较高的资本或运营支出,并且集中存储数据也极易受到复杂网络攻击。区块链存储作为一种新兴的共享账本技术,可以帮助提高数据存储的安全性和可靠性。
目前,Hyperledger Fabric超级账本中的Blockchain部分使用本地文件系统进行存储,并且Hyperledger Fabric的Block数据结构嵌套很深,单个Block Size值也比较大。随着系统的运行,数据量会越来越大,本地文件系统只能垂直扩展,无法水平扩展,从而无法支持长时间甚至永久存储Blockchain数据。现有技术中采用将Blockchain的历史数据归档到冷存储,或者采用分布式存储方式对Blockchain的数据进行存储,但归档到冷存储中无法进行数据查询,而采用分布式存储则会降低近期数据的查询性能,且成本较高。
因此,如何提出一种方法,能够提高区块链数据查询效率,降低数据存储成本,成为亟待解决的问题。
发明内容
针对现有技术中的缺陷,本发明实施例提供一种区块链数据存储方法及装置。
第一方面,本发明实施例提供一种区块链数据存储方法,包括:
获取区块链中所有peer节点信息;其中,所述节点信息包含有peer节点数量,以及每个peer节点本地系统中的历史数据和近期数据;所述历史数据是指早于或等于预设时间点的数据,所述近期数据是指晚于预设时间点的数据;
根据所述peer节点信息,进行数据归档,具体包括:
若所述区块链中只存在一个peer节点,以其作为第一节点,将第一节点本地系统中的第一历史数据归档到分布式存储系统;
若所述区块链中至少包括两个peer节点,以任一peer节点作为第二节点,将所述第二节点本地系统中的第二历史数据归档到分布式存储系统;第二节点发送广播消息至其它peer节点,其它peer节点根据所述广播消息删除对应本地系统中存储的第二历史数据;其中,所述广播消息包括第二历史数据信息;
接收查询数据请求,根据查询数据请求中的查询条件,在peer节点本地系统或分布式存储系统中进行查询;其中,所述查询条件中携带有被查询数据对应的时间信息。
优选地,所述若所述区块链中只存在一个peer节点,以其作为第一节点,将第一节点本地系统中的第一历史数据归档到分布式存储系统,具体包括:
若所述区块链中只存在一个peer节点,以其作为第一节点,将第一节点本地系统中的第一历史数据按照归档规则,归档到分布式存储系统,同时将第一历史数据的第一hash文件存储至分布式存储系统。
优选地,所述若所述区块链中至少包括两个peer节点,以任一peer节点作为第二节点,将所述第二节点本地系统中的第二历史数据归档到分布式存储系统;第二节点发送广播消息至其它peer节点,其它peer节点根据所述广播消息删除对应本地系统中存储的第二历史数据,具体包括:
若所述区块链中至少包括两个peer节点,以任一peer节点作为第二节点,将所述第二节点本地系统中的第二历史数据按照归档规则,归档到分布式存储系统,同时将第二历史数据的第二hash文件存储至分布式系统;
第二节点发送广播消息至其它peer节点,其它peer节点根据所述广播消息删除对应本地系统中存储的第二历史数据。
优选地,所述接收查询数据请求,根据查询数据请求中的查询条件,在peer节点本地系统或分布式存储系统中进行查询,具体包括:
接收查询数据请求,当查询条件中携带的时间信息为早于或等于所述预设时间点的时间信息时,在第一节点分布式存储系统中进行查询,并检查第一历史数据文件与第一hash文件是否一致;当查询条件中携带的时间信息为晚于所述预设时间点的时间信息时,在第一节点本地系统中进行查询。
优选地,所述接收查询数据请求,根据查询数据请求中的查询条件,在peer节点本地系统或分布式存储系统中进行查询,具体包括:
接收查询数据请求,当查询条件中携带的时间信息为早于或等于所述预设时间点的时间信息时,在第二节点分布式存储系统中进行查询,并检查第二历史数据文件与第二hash文件是否一致;当查询条件中携带的时间信息为晚于所述预设时间点的时间信息时,在第二节点本地系统中进行查询。
优选地,所述归档规则通过静态配置文件进行设置,以及通过提交交易的方式进行修改。
第二方面,本发明实施例提供一种区块链数据存储装置,包括:
信息获取单元,用于获取区块链中所有peer节点信息;其中,所述节点信息包含有peer节点数量,以及每个peer节点本地系统中的历史数据和近期数据;所述历史数据是指早于或等于预设时间点的数据,所述近期数据是指晚于预设时间点的数据;
数据归档单元,用于根据所述peer节点信息,进行数据归档,具体包括:
若所述区块链中只存在一个peer节点,以其作为第一节点,将第一节点本地系统中的第一历史数据归档到分布式存储系统;
若所述区块链中至少包括两个peer节点,以任一peer节点作为第二节点,将所述第二节点本地系统中的第二历史数据归档到分布式存储系统;第二节点发送广播消息至其它peer节点,其它peer节点根据所述广播消息删除对应本地系统中存储的第二历史数据;其中,所述广播消息包括第二历史数据信息;
数据查询单元,用于接收查询数据请求,根据查询数据请求中的查询条件,在peer节点本地系统或分布式存储系统中进行查询;其中,所述查询条件中携带有被查询数据对应的时间信息。
优选地,所述数据归档单元,用于若所述区块链中只存在一个peer节点,以其作为第一节点,将第一节点本地系统中的第一历史数据归档到分布式存储系统,具体包括:
若所述区块链中只存在一个peer节点,以其作为第一节点,将第一节点本地系统中的第一历史数据按照归档规则,归档到分布式存储系统,同时将第一历史数据的第一hash文件存储至分布式存储系统。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述第一方面区块链数据存储方法的各个步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上所述第一方面区块链数据存储方法的各个步骤。
本发明实施例提供的区块链数据存储方法及装置,通过获取区块链中所有peer节点信息,若区块链中只存在一个peer节点,以其作为第一节点,将第一节点本地系统中的第一历史数据归档到分布式存储系统,若区块链中至少包括两个peer节点,以任一peer节点作为第二节点,将第二节点本地系统中的第二历史数据归档到分布式存储系统,并发送广播消息至其它peer节点,其它peer节点删除对应本地系统中存储的第二历史数据,然后根据查询数据请求中的查询条件,在peer节点本地系统和分布式存储系统中进行查询。本发明实施例通过将历史数据和近期数据分别存储于分布式存储系统和本地系统,从而能够通过本地系统查询提高近期数据的查询效率,同时利用分布式存储系统长时间保存历史数据,降低存储成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中区块链数据存储方法的流程示意图;
图2为本发明实施例中单一节点数据存储流程图;
图3为本发明实施例中多节点数据归档流程图;
图4为本发明实施例中区块链数据存储装置的结构示意图;
图5为本发明实施例中电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例中区块链数据存储方法的流程示意图,如图1所示,本发明实施例提供的一种区块链数据存储方法,包括:
步骤110、获取区块链中所有peer节点信息;其中,所述节点信息包含有peer节点数量,以及每个peer节点本地系统中的历史数据和近期数据;所述历史数据是指早于或等于预设时间点的数据,所述近期数据是指晚于预设时间点的数据。
具体地,区块链网络主要由一系列的peer节点组成。peer是整个网络的基础,因为它是账本和智能合约的载体,一个区块链网络下可以有一个或多个peer节点。区块链数据是由区块链节点(即peer节点)使用和储存的,也就是区块链中的近期数据和历史数据均会存储至每个peer节点本地系统,例如Hyperledger Fabric中的Blockchain会使用本地文件系统进行存储,通过所述每个peer节点本地系统可以查询到相应的历史数据和近期数据。因此,通过获取区块链中所有peer节点信息,就可以获知该区块链中所有的peer节点信息,以及每个peer节点本地系统中的历史数据和近期数据。其中,所述历史数据是指早于或等于预设时间点的数据,所述近期数据是指晚于预设时间点的数据,例如本地系统存储的早于或等于2019年12月31日的数据为历史数据,晚于2019年12月31日的数据为近期数据。
步骤120、根据所述peer节点信息,进行数据归档,具体包括:
若所述区块链中只存在一个peer节点,以其作为第一节点,将第一节点本地系统中的第一历史数据归档到分布式存储系统;
若所述区块链中至少包括两个peer节点,以任一peer节点作为第二节点,将所述第二节点本地系统中的第二历史数据归档到分布式存储系统;第二节点发送广播消息至其它peer节点,其它peer节点根据所述广播消息删除对应本地系统中存储的第二历史数据;其中,所述广播消息包括第二历史数据信息。
具体地,由于区块链网络下可以有一个或多个peer节点,而针对只有一个peer节点(即单一节点)的数据归档和多个peer节点(即多节点)的数据归档方法不同,具体如下:
当区块链中只存在一个peer节点(即单一节点)时,将所述单一节点作为第一节点,将第一节点本地系统中的第一历史数据按照归档规则归档到分布式存储系统,其中第一历史数据是指存储在第一节点本地系统中的历史数据。由于历史数据需要长期保存,但历史数据量随着系统的运行会增加,而本地系统只能垂直扩展,无法水平扩展,因此,本发明实施例采用将本地系统中的历史数据迁移归档至分布式存储系统,分布式存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
另外,由于第一节点本地系统中的近期数据需要频繁查询,若将其存储至分布式存储系统,会提高数据存储成本,同时数据查询速率会比存储于本地系统中的查询速率低,也就是会降低数据查询速率,因此,为了满足近期数据频繁查询的要求,本发明实施例将第一节点中的近期数据仍存储于其本地系统。
同样地,当区块链中至少包括两个peer节点(即多节点),以任一peer节点作为第二节点,将第二节点本地系统中的第二历史数据按照归档规则归档到分布式存储系统,其中第二历史数据是指存储在第二节点本地系统中的历史数据。
需要说明的是,本发明实施例中单一节点只使用一套分布式存储作为归档存储,而多节点只由任一节点即第二节点来负责分布式存储归档。若多节点采用单一节点中的归档方式即每个节点都分别进行归档,那么节点中会存在相同数据被多个节点重复归档,会造成成本浪费。因此,本发明实施例提出的数据归档方法可以避免重复归档和降低成本。
在本实施例中,用于负责分布式存储归档的第二节点一般称为牵头提交节点(Leader Commmit Peer),该牵头提交节点将文件迁移至分布式归档存储之中,然后通过gossip广播归档元数据至其他节点,其他节点转发广播,并在本地完成对已归档文件的删档服务,从而可以避免重复归档和降低成本。
步骤130、接收查询数据请求,根据查询数据请求中的查询条件,在peer节点本地系统或分布式存储系统中进行查询;其中,所述查询条件中携带有被查询数据对应的时间信息。
具体地,根据用户发送的查询数据请求中的查询条件,判断需要从本地系统还是分布式存储系统中进行查询,例如由于历史数据存储于分布式系统中,则查询条件中若是只携带查询历史数据的信息,则在分布式系统中查询;而近期数据存储于本地系统中,若查询条件中只携带查询近期数据的信息,则需要在本地系统中查询;若查询条件中包含查询近期数据和历史数据,则需要分别在本地系统和分布式存储系统中查询。可以理解的是,所述查询条件中会携带由被查询数据对应的时间信息,用来区分所要查询的数据是近期数据还是历史数据,便于查询分类。
由此可见,本实施例根据用户发起的历史查询条件,判断需要从哪些存储来查询数据,对于较新的数据,只需要查询本地存储;对于较老的数据,只需查询历史数据存储,由于近期数据存储在本地,因此可以保证查询速度;而将历史数据归档于分布式存储中,在满足归档需求的同时还可以兼顾成本。因此,本实施例提供的这种混合存储方式可以达到成本低,近期数据查询快,历史数据也可以查询的优势。
图2为本发明实施例中单一节点数据存储流程图,如图2所示,通过静态配置文件在Peer或者Orderer启动时设置归档策略,或者通过提交交易(Transaction)的方式在后期来修改归档策略。归档策略模块使用系统链码(System Chaincode)来实现,归档策略写入存储。按照归档策略将区块链本地存储中文件迁移到归档分布式存储服务中。在这个过程中,为了保证数据完整性,将迁移的文件的hash写入存储中。当用户(Actor)通过调用历史查询接口查询数据时,请求被转发到历史查询合并服务。历史查询合并服务会分析,需要从哪里查询数据来满足查询请求;如果从归档分布式存储查询的数据,会先在存储中检查文件是否和之前的hash一致。
图3为本发明实施例中多节点数据归档流程图,如图3所示,迁移归档文件的服务只由牵头提交节点(Leader Commmit Peer)来启用,同时使用gossip消息将目前的迁移情况元数据同步到其他Peer节点,其他Peer节点在本地完成已归档本地账本文件的删除。流程图中包含归档与查询两个过程。牵头提交节点(Leader Commmit Peer)完成归档服务,将文件迁移归档至分布式归档存储之中,然后通过gossip广播归档元数据至其他节点,其他节点转发广播,并在本地完成对已归档文件的删档服务。当用户(Actor)通过调用历史查询接口查询数据时,如果从归档分布式存储查询的数据,会向归档存储发起历史查询请求。
由图2和图3可知,本发明实施例中单一节点只使用一套分布式存储作为归档存储,而多节点只由牵头提交节点(Leader Commmit Peer)来负责分布式存储归档。若多节点采用单一节点中的归档方式即每个节点都分别进行归档,那么节点中会存在相同数据被多个节点重复归档,会造成成本浪费。因此,本发明实施例提出的数据归档方法可以避免重复归档和降低成本。
本发明实施例提供的区块链数据存储方法,通过获取区块链中所有peer节点信息,若区块链中只存在一个peer节点,以其作为第一节点,将第一节点本地系统中的第一历史数据归档到分布式存储系统,若区块链中至少包括两个peer节点,以任一peer节点作为第二节点,将第二节点本地系统中的第二历史数据归档到分布式存储系统,并发送广播消息至其它peer节点,其它peer节点删除对应本地系统中存储的第二历史数据,然后根据查询数据请求中的查询条件,在peer节点本地系统和分布式存储系统中进行查询。本发明实施例通过将历史数据和近期数据分别存储于分布式存储系统和本地系统,从而能够通过本地系统查询提高近期数据的查询效率,同时利用分布式存储系统长时间保存历史数据,降低存储成本。
基于上述实施例的内容,作为一种可选实施例,所述若所述区块链中只存在一个peer节点,以其作为第一节点,将第一节点本地系统中的第一历史数据归档到分布式存储系统,具体包括:
若所述区块链中只存在一个peer节点,以其作为第一节点,将第一节点本地系统中的第一历史数据按照归档规则,归档到分布式存储系统,同时将第一历史数据的第一hash文件存储至分布式存储系统。
具体地,若区块链中只存在一个peer节点,以其作为第一节点,将第一节点本地系统中的第一历史数据按照归档规则,例如按照区块、时间或存储大小等规则,归档到分布式存储系统。另外,第一历史数据在迁移归档的过程中可能会存在丢失不完整的情况,因此,为了保证数据的完整性,会同时将第一历史数据的第一hash文件也存储至分布式存储系统。
本发明实施例根据归档规则,实现将第一历史数据文件本地系统迁移归档到历史数据存储服务,例如将历史账本数据文件从Peer或者Orderer的本地存储迁移到历史数据存储服务,并且该服务前期可以在Peer/Orderer内部采用goroutine来实现,后期可以开发独立的服务同时提供高可用方式的迁移服务。同时,归档规则可以通过静态配置文件进行设置,根据需求配置不同的归档规则,例如按区块,按时间,按存储大小等等生成不同的归档规则。
本发明实施例提供的区块链数据存储方法,通过按照归档规则将第一节点本地系统中的第一历史数据归档到分布式存储系统,并将第一历史数据的第一hash文件存储至分布式存储系统,从而可以保证归档数据的完整性,便于后续查询。
基于上述实施例的内容,作为一种可选实施例,所述若所述区块链中至少包括两个peer节点,以任一peer节点作为第二节点,将所述第二节点本地系统中的第二历史数据归档到分布式存储系统;第二节点发送广播消息至其它peer节点,其它peer节点根据所述广播消息删除对应本地系统中存储的第二历史数据,具体包括:
若所述区块链中至少包括两个peer节点,以任一peer节点作为第二节点,将所述第二节点本地系统中的第二历史数据按照归档规则,归档到分布式存储系统,同时将第二历史数据的第二hash文件存储至分布式系统;
第二节点发送广播消息至其它peer节点,其它peer节点根据所述广播消息删除对应本地系统中存储的第二历史数据。
具体地,若区块链中只至少包括两个peer节点,以任一peer节点作为第二节点,将所述第二节点本地系统中的第二历史数据按照归档规则,例如按照区块、时间或存储大小等规则,归档到分布式存储系统。另外,第二历史数据在迁移归档的过程中可能会存在丢失不完整的情况,因此,为了保证数据的完整性,会同时将第二历史数据的第二hash文件也存储至分布式存储系统。
为了避免多节点中的重复归档而造成浪费,因此,第二节点完成数据归档后,会向区块链中的其它peer节点发送广播消息,广播消息中携带由第二历史数据的信息,其它peer节点会根据广播消息删除其本地系统中存储的第二历史数据,从而可以避免第二历史数据被重复存储归档,节约了数据存储成本。
本发明实施例提供的区块链数据存储方法,通过按照归档规则将第二节点本地系统中的第二历史数据归档到分布式存储系统,并将第二历史数据的第二hash文件存储至分布式存储系统,从而可以保证归档数据的完整性,并且其它节点根据第二节点发送的广播消息删除其本地系统中的对应数据,避免的重复归档,节约了数据存储成本。
基于上述实施例的内容,作为一种可选实施例,所述接收查询数据请求,根据查询数据请求中的查询条件,在peer节点本地系统或分布式存储系统中进行查询,具体包括:
接收查询数据请求,当查询条件中携带的时间信息为早于或等于所述预设时间点的时间信息时,在第一节点分布式存储系统中进行查询,并检查第一历史数据文件与第一hash文件是否一致;当查询条件中携带的时间信息为晚于所述预设时间点的时间信息时,在第一节点本地系统中进行查询。
具体地,根据用户发送的查询数据请求中的查询条件,判断需要从本地系统还是分布式存储系统中进行查询,例如由于历史数据存储于分布式系统中,则查询条件中若是只携带查询历史数据的信息,则在分布式系统中查询;而近期数据存储于本地系统中,若查询条件中只携带查询近期数据的信息,则需要在本地系统中查询;若查询条件中包含查询近期数据和历史数据,则需要分别在本地系统和分布式存储系统中查询。另外,当查询数据为历史数据时,同时还需要检查第一历史数据文件与第一hash文件是否一致。
可以理解的是,所述查询条件中会携带由被查询数据对应的时间信息,用来区分所要查询的数据是近期数据还是历史数据,便于查询分类。例如当查询条件中携带的时间信息为早于或等于2019年12月31日的数据则为历史数据,晚于2019年12月31日的数据则为近期数据
本发明实施例提供的区块链数据存储方法,通过根据查询数据请求中的查询条件,在peer节点本地系统或分布式存储系统中进行查询,从而可以根据近期数据和历史数据的查询需求进行查询,提高了查询效率。
基于上述实施例的内容,作为一种可选实施例,所述接收查询数据请求,根据查询数据请求中的查询条件,在peer节点本地系统或分布式存储系统中进行查询,具体包括:
接收查询数据请求,当查询条件中携带的时间信息为早于或等于所述预设时间点的时间信息时,在第二节点分布式存储系统中进行查询,并检查第二历史数据文件与第二hash文件是否一致;当查询条件中携带的时间信息为晚于所述预设时间点的时间信息时,在第二节点本地系统中进行查询。
具体地,根据用户发送的查询数据请求中的查询条件,判断需要从本地系统还是分布式存储系统中进行查询,例如由于历史数据存储于分布式系统中,则查询条件中若是只携带查询历史数据的信息,则在分布式系统中查询;而近期数据存储于本地系统中,若查询条件中只携带查询近期数据的信息,则需要在本地系统中查询;若查询条件中包含查询近期数据和历史数据,则需要分别在本地系统和分布式存储系统中查询。另外,当查询数据为历史数据时,同时还需要检查第一历史数据文件与第一hash文件是否一致。
可以理解的是,所述查询条件中会携带由被查询数据对应的时间信息,用来区分所要查询的数据是近期数据还是历史数据,便于查询分类。例如当查询条件中携带的时间信息为早于或等于2019年12月31日的数据则为历史数据,晚于2019年12月31日的数据则为近期数据
本发明实施例提供的区块链数据存储方法,通过根据查询数据请求中的查询条件,在peer节点本地系统或分布式存储系统中进行查询,从而可以根据近期数据和历史数据的查询需求进行查询,提高了查询效率。
基于上述实施例的内容,作为一种可选实施例,所述归档规则通过静态配置文件进行设置,以及通过提交交易的方式进行修改。
具体地,归档规则可以通过静态配置文件进行设置,例如在Peer或者Orderer启动时设置归档规则,或者通过提交交易的方式在后期来修改归档规则,例如图2中通过Transaction提交交易的方式修改。
本发明实施例提供的区块链数据存储方法,通过静态配置文件进行归档规则设置,以及通过提交交易的方式进行修改,从而可以根据实际情况设置归档规则,灵活归档。
图4为本发明实施例中区块链数据存储装置的结构示意图,如图4所示,本发明实施例提供的一种区块链数据存储装置,包括:
信息获取单元410,用于获取区块链中所有peer节点信息;其中,所述节点信息包含有peer节点数量,以及每个peer节点本地系统中的历史数据和近期数据;所述历史数据是指早于或等于预设时间点的数据,所述近期数据是指晚于预设时间点的数据。
具体地,区块链网络主要由一系列的peer节点组成。peer是整个网络的基础,因为它是账本和智能合约的载体,一个区块链网络下可以有一个或多个peer节点。区块链数据是由区块链节点(即peer节点)使用和储存的,也就是区块链中的近期数据和历史数据均会存储至每个peer节点本地系统,例如Hyperledger Fabric中的Blockchain会使用本地文件系统进行存储,通过所述每个peer节点本地系统可以查询到相应的历史数据和近期数据。因此,信息获取单元410通过获取区块链中所有peer节点信息,就可以获知该区块链中所有的peer节点信息,以及每个peer节点本地系统中的历史数据和近期数据。其中,所述历史数据是指早于或等于预设时间点的数据,所述近期数据是指晚于预设时间点的数据,例如本地系统存储的早于或等于2019年12月31日的数据为历史数据,晚于2019年12月31日的数据为近期数据。
数据归档单元420,用于根据所述peer节点信息,进行数据归档,具体包括:
若所述区块链中只存在一个peer节点,以其作为第一节点,将第一节点本地系统中的第一历史数据归档到分布式存储系统;
若所述区块链中至少包括两个peer节点,以任一peer节点作为第二节点,将所述第二节点本地系统中的第二历史数据归档到分布式存储系统;第二节点发送广播消息至其它peer节点,其它peer节点根据所述广播消息删除对应本地系统中存储的第二历史数据;其中,所述广播消息包括第二历史数据信息。
具体地,由于区块链网络下可以有一个或多个peer节点,而针对只有一个peer节点(即单一节点)的数据归档和多个peer节点(即多节点)的数据归档方法不同,具体如下:
当区块链中只存在一个peer节点(即单一节点)时,数据归档单元420将所述单一节点作为第一节点,将第一节点本地系统中的第一历史数据按照归档规则归档到分布式存储系统,其中第一历史数据是指存储在第一节点本地系统中的历史数据。由于历史数据需要长期保存,但历史数据量随着系统的运行会增加,而本地系统只能垂直扩展,无法水平扩展,因此,本发明实施例采用将本地系统中的历史数据迁移归档至分布式存储系统,分布式存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
另外,由于第一节点本地系统中的近期数据需要频繁查询,若将其存储至分布式存储系统,会提高数据存储成本,同时数据查询速率会比存储于本地系统中的查询速率低,也就是会降低数据查询速率,因此,为了满足近期数据频繁查询的要求,本发明实施例将第一节点中的近期数据仍存储于其本地系统。
同样地,当区块链中至少包括两个peer节点(即多节点),数据归档单元420以任一peer节点作为第二节点,将第二节点本地系统中的第二历史数据按照归档规则归档到分布式存储系统,其中第二历史数据是指存储在第二节点本地系统中的历史数据。
需要说明的是,本发明实施例中单一节点只使用一套分布式存储作为归档存储,而多节点只由任一节点即第二节点来负责分布式存储归档。若多节点采用单一节点中的归档方式即每个节点都分别进行归档,那么节点中会存在相同数据被多个节点重复归档,会造成成本浪费。因此,本发明实施例提出的数据归档方法可以避免重复归档和降低成本。
数据查询单元430,用于接收查询数据请求,根据查询数据请求中的查询条件,在peer节点本地系统或分布式存储系统中进行查询;其中,所述查询条件中携带有被查询数据对应的时间信息。
具体地,数据查询单元430根据用户发送的查询数据请求中的查询条件,判断需要从本地系统还是分布式存储系统中进行查询,例如由于历史数据存储于分布式系统中,则查询条件中若是只携带查询历史数据的信息,则在分布式系统中查询;而近期数据存储于本地系统中,若查询条件中只携带查询近期数据的信息,则需要在本地系统中查询;若查询条件中包含查询近期数据和历史数据,则需要分别在本地系统和分布式存储系统中查询。可以理解的是,所述查询条件中会携带由被查询数据对应的时间信息,用来区分所要查询的数据是近期数据还是历史数据,便于查询分类。
本发明实施例提供的区块链数据存储装置用于执行上述区块链数据存储方法,其具体的实施方式与方法实施方式一致,此处不再赘述。
本发明实施例提供的区块链数据存储装置,通过获取区块链中所有peer节点信息,若区块链中只存在一个peer节点,以其作为第一节点,将第一节点本地系统中的第一历史数据归档到分布式存储系统,若区块链中至少包括两个peer节点,以任一peer节点作为第二节点,将第二节点本地系统中的第二历史数据归档到分布式存储系统,并发送广播消息至其它peer节点,其它peer节点删除对应本地系统中存储的第二历史数据,然后根据查询数据请求中的查询条件,在peer节点本地系统和分布式存储系统中进行查询。本发明实施例通过将历史数据和近期数据分别存储于分布式存储系统和本地系统,从而能够通过本地系统查询提高近期数据的查询效率,同时利用分布式存储系统长时间保存历史数据,降低存储成本。
基于上述实施例的内容,作为一种可选实施例,所述数据归档单元420,用于若所述区块链中只存在一个peer节点,以其作为第一节点,将第一节点本地系统中的第一历史数据归档到分布式存储系统,具体包括:
若所述区块链中只存在一个peer节点,以其作为第一节点,将第一节点本地系统中的第一历史数据按照归档规则,归档到分布式存储系统,同时将第一历史数据的第一hash文件存储至分布式存储系统。
具体地,若区块链中只存在一个peer节点,数据归档单元420以其作为第一节点,将第一节点本地系统中的第一历史数据按照归档规则,例如按照区块、时间或存储大小等规则,归档到分布式存储系统。另外,第一历史数据在迁移归档的过程中可能会存在丢失不完整的情况,因此,为了保证数据的完整性,会同时将第一历史数据的第一hash文件也存储至分布式存储系统。
本发明实施例提供的区块链数据存储装置用于执行上述区块链数据存储方法,其具体的实施方式与方法实施方式一致,此处不再赘述。
本发明实施例提供的区块链数据存储装置,通过按照归档规则将第一节点本地系统中的第一历史数据归档到分布式存储系统,并将第一历史数据的第一hash文件存储至分布式存储系统,从而可以保证归档数据的完整性,便于后续查询。
图5为本发明实施例中电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(Communications Interface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,以执行如上所述区块链数据存储方法的各个步骤。
此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的区块链数据存储方法。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种区块链数据存储方法,其特征在于,包括:
获取区块链中所有peer节点信息;其中,所述节点信息包含有peer节点数量,以及每个peer节点本地系统中的历史数据和近期数据;所述历史数据是指早于或等于预设时间点的数据,所述近期数据是指晚于预设时间点的数据;
根据所述peer节点信息,进行数据归档,具体包括:
若所述区块链中只存在一个peer节点,以其作为第一节点,将第一节点本地系统中的第一历史数据归档到分布式存储系统;
若所述区块链中至少包括两个peer节点,以任一peer节点作为第二节点,将所述第二节点本地系统中的第二历史数据归档到分布式存储系统;第二节点发送广播消息至其它peer节点,其它peer节点根据所述广播消息删除对应本地系统中存储的第二历史数据;其中,所述广播消息包括第二历史数据信息;
接收查询数据请求,根据查询数据请求中的查询条件,在peer节点本地系统或分布式存储系统中进行查询;其中,所述查询条件中携带有被查询数据对应的时间信息。
2.根据权利要求1所述的区块链数据存储方法,其特征在于,所述若所述区块链中只存在一个peer节点,以其作为第一节点,将第一节点本地系统中的第一历史数据归档到分布式存储系统,具体包括:
若所述区块链中只存在一个peer节点,以其作为第一节点,将第一节点本地系统中的第一历史数据按照归档规则,归档到分布式存储系统,同时将第一历史数据的第一hash文件存储至分布式存储系统。
3.根据权利要求1所述的区块链数据存储方法,其特征在于,所述若所述区块链中至少包括两个peer节点,以任一peer节点作为第二节点,将所述第二节点本地系统中的第二历史数据归档到分布式存储系统;第二节点发送广播消息至其它peer节点,其它peer节点根据所述广播消息删除对应本地系统中存储的第二历史数据,具体包括:
若所述区块链中至少包括两个peer节点,以任一peer节点作为第二节点,将所述第二节点本地系统中的第二历史数据按照归档规则,归档到分布式存储系统,同时将第二历史数据的第二hash文件存储至分布式系统;
第二节点发送广播消息至其它peer节点,其它peer节点根据所述广播消息删除对应本地系统中存储的第二历史数据。
4.根据权利要求2所述的区块链数据存储方法,其特征在于,所述接收查询数据请求,根据查询数据请求中的查询条件,在peer节点本地系统或分布式存储系统中进行查询,具体包括:
接收查询数据请求,当查询条件中携带的时间信息为早于或等于所述预设时间点的时间信息时,在第一节点分布式存储系统中进行查询,并检查第一历史数据文件与第一hash文件是否一致;当查询条件中携带的时间信息为晚于所述预设时间点的时间信息时,在第一节点本地系统中进行查询。
5.根据权利要求3所述的区块链数据存储方法,其特征在于,所述接收查询数据请求,根据查询数据请求中的查询条件,在peer节点本地系统或分布式存储系统中进行查询,具体包括:
接收查询数据请求,当查询条件中携带的时间信息为早于或等于所述预设时间点的时间信息时,在第二节点分布式存储系统中进行查询,并检查第二历史数据文件与第二hash文件是否一致;当查询条件中携带的时间信息为晚于所述预设时间点的时间信息时,在第二节点本地系统中进行查询。
6.根据权利要求2或3所述的区块链数据存储方法,其特征在于,所述归档规则通过静态配置文件进行设置,以及通过提交交易的方式进行修改。
7.一种区块链数据存储装置,其特征在于,包括:
信息获取单元,用于获取区块链中所有peer节点信息;其中,所述节点信息包含有peer节点数量,以及每个peer节点本地系统中的历史数据和近期数据;所述历史数据是指早于或等于预设时间点的数据,所述近期数据是指晚于预设时间点的数据;
数据归档单元,用于根据所述peer节点信息,进行数据归档,具体包括:
若所述区块链中只存在一个peer节点,以其作为第一节点,将第一节点本地系统中的第一历史数据归档到分布式存储系统;
若所述区块链中至少包括两个peer节点,以任一peer节点作为第二节点,将所述第二节点本地系统中的第二历史数据归档到分布式存储系统;第二节点发送广播消息至其它peer节点,其它peer节点根据所述广播消息删除对应本地系统中存储的第二历史数据;其中,所述广播消息包括第二历史数据信息;
数据查询单元,用于接收查询数据请求,根据查询数据请求中的查询条件,在peer节点本地系统或分布式存储系统中进行查询;其中,所述查询条件中携带有被查询数据对应的时间信息。
8.根据权利要求7所述的区块链数据存储装置,其特征在于,所述数据归档单元,用于若所述区块链中只存在一个peer节点,以其作为第一节点,将第一节点本地系统中的第一历史数据归档到分布式存储系统,具体包括:
若所述区块链中只存在一个peer节点,以其作为第一节点,将第一节点本地系统中的第一历史数据按照归档规则,归档到分布式存储系统,同时将第一历史数据的第一hash文件存储至分布式存储系统。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述区块链数据存储方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至6任一项所述区块链数据存储方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010470488.XA CN111708835B (zh) | 2020-05-28 | 2020-05-28 | 区块链数据存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010470488.XA CN111708835B (zh) | 2020-05-28 | 2020-05-28 | 区块链数据存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111708835A true CN111708835A (zh) | 2020-09-25 |
CN111708835B CN111708835B (zh) | 2023-04-25 |
Family
ID=72538265
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010470488.XA Active CN111708835B (zh) | 2020-05-28 | 2020-05-28 | 区块链数据存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111708835B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112925479A (zh) * | 2021-02-20 | 2021-06-08 | 京东数字科技控股股份有限公司 | 区块链数据管理方法及装置、电子设备及介质 |
WO2022121345A1 (zh) * | 2020-12-09 | 2022-06-16 | 杭州复杂美科技有限公司 | 分布式数据存储方法、数据查询方法、设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107423426A (zh) * | 2017-08-02 | 2017-12-01 | 众安信息技术服务有限公司 | 一种区块链块数据的数据归档方法及电子设备 |
CN110288307A (zh) * | 2019-05-13 | 2019-09-27 | 西安电子科技大学 | 基于Fabric区块链的智能合约协同开发系统及数据处理方法 |
WO2019231954A1 (en) * | 2018-05-31 | 2019-12-05 | Alibaba Group Holding Limited | Blockchain-based data migration method and apparatus |
-
2020
- 2020-05-28 CN CN202010470488.XA patent/CN111708835B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107423426A (zh) * | 2017-08-02 | 2017-12-01 | 众安信息技术服务有限公司 | 一种区块链块数据的数据归档方法及电子设备 |
WO2019231954A1 (en) * | 2018-05-31 | 2019-12-05 | Alibaba Group Holding Limited | Blockchain-based data migration method and apparatus |
CN110288307A (zh) * | 2019-05-13 | 2019-09-27 | 西安电子科技大学 | 基于Fabric区块链的智能合约协同开发系统及数据处理方法 |
Non-Patent Citations (1)
Title |
---|
王千阁;何蒲;聂铁铮;申德荣;于戈;: "区块链系统的数据存储与查询技术综述" * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022121345A1 (zh) * | 2020-12-09 | 2022-06-16 | 杭州复杂美科技有限公司 | 分布式数据存储方法、数据查询方法、设备和存储介质 |
CN112925479A (zh) * | 2021-02-20 | 2021-06-08 | 京东数字科技控股股份有限公司 | 区块链数据管理方法及装置、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111708835B (zh) | 2023-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11573938B2 (en) | Systems and methods for indexing source code in a search engine | |
KR101752928B1 (ko) | 객체 저장부들의 네트워크상의 스웜-기반의 동기화 | |
JP2019519025A (ja) | 分散システムにおける範囲の分割および移動 | |
US11385830B2 (en) | Data storage method, apparatus and system, and server, control node and medium | |
US10585759B2 (en) | Network folder resynchronization | |
CN105512266A (zh) | 一种实现分布式数据库操作一致性的方法及装置 | |
CN107919977B (zh) | 一种基于Paxos协议的在线扩容、在线缩容的方法和装置 | |
WO2011148039A1 (en) | Method and apparatus for eventually consistent delete in a distributed data store | |
US11900083B2 (en) | Systems and methods for indexing source code in a search engine | |
CN111447069B (zh) | 一种基于区块链的低频访问数据处理方法 | |
CN111708835A (zh) | 区块链数据存储方法及装置 | |
CN112650812A (zh) | 一种数据分片存储方法、装置、计算机设备和存储介质 | |
CN111240892A (zh) | 数据备份方法及装置 | |
WO2024021861A1 (zh) | 数据恢复方法及电子设备 | |
CN110830580A (zh) | 一种存储数据同步方法及装置 | |
CN102932476A (zh) | 网络存储同步系统 | |
US11409700B2 (en) | Method, electronic device and computer program product for snapshot replication | |
CN112764897B (zh) | 任务请求的处理方法、装置、系统及计算机可读存储介质 | |
CN109033134A (zh) | 一种消息处理方法、装置、存储介质及计算机设备 | |
CN113032477B (zh) | 基于gtid的长距离数据同步方法、装置及计算设备 | |
CN110677497B (zh) | 一种网络介质分发方法及装置 | |
CN106407320B (zh) | 文件处理方法、装置及系统 | |
WO2022156099A1 (zh) | 主机升级方法、装置、电子设备和存储介质 | |
CN113946287B (zh) | 分布式存储系统及其数据处理方法、相关装置 | |
CN116319623A (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 |