CN111488115A - 基于区块链的数据缓存方法、装置、电子设备以及介质 - Google Patents
基于区块链的数据缓存方法、装置、电子设备以及介质 Download PDFInfo
- Publication number
- CN111488115A CN111488115A CN201910079732.7A CN201910079732A CN111488115A CN 111488115 A CN111488115 A CN 111488115A CN 201910079732 A CN201910079732 A CN 201910079732A CN 111488115 A CN111488115 A CN 111488115A
- Authority
- CN
- China
- Prior art keywords
- data
- global cache
- account data
- block
- disk
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的实施方式提供了一种基于区块链的数据缓存方法、基于区块链的数据缓存装置、电子设备以及计算机可读存储介质。该数据缓存方法包括:建立全局缓存;其中,全局缓存用于存储从磁盘中读取的数据;从全局缓存中读取与待处理区块相对应的账户数据;根据账户数据执行待处理区块中的交易;基于交易执行结果更新全局缓存中的账户数据。本发明实施例的技术方案一方面能够通过上述方法减少数据读取时长,进而提高数据读取效率,另一方面能够通过从全局缓存中读取数据,减少I/O交互次数,进而提高区块的交易执行效率。
Description
技术领域
本发明的实施方式涉及区块链技术领域,更具体地,本发明的实施方式涉及基于区块链的数据缓存方法、基于区块链的数据缓存装置、电子设备以及计算机可读存储介质。
背景技术
随着区块链技术的迅速升温,其技术和应用场景受到了越来越多的关注。以太坊作为区块链2.0的代表,提供了一个可以运行智能合约的分布式平台。其中,应用于以太坊的以太坊虚拟机(Ethereum Virtual Machine,EVM)是一个图灵完备的256位虚拟机,它为智能合约提供了更好的确定性、可终止性以及隔离性。
目前,在以太坊的运行过程中,是需要从磁盘中读取当前区块的相关交易数据的,但是,如果每次产生新的区块时都需要从磁盘中读取与当前区块相关的交易数据,就会造成频繁从磁盘中进行数据读取,进而导致中央处理器(Central Processing Unit,CPU)与磁盘的输入/输出(Input/Output,I/O)交互次数较高的问题,使得区块的交易执行效率不高。
发明内容
由于以太坊公链存在链分叉的可能,因此,通过以太坊的原生实现,即每次交易时重建缓存,结束时删除缓存是适用以太坊公链的,而以太坊联盟连使用的是PBFT等强一致性的协议,这样可以保证缓存中的数据和磁盘中的数据保持一致,在使用联盟链的情况下,交易时重建缓存结束时删除缓存则是不适用的,因为这样就会需要在每次执行交易时重建缓存,而重建缓存则需要从磁盘中读取数据,进而,这样就会耗费较多的I/O资源。
为此,非常需要一种改进的基于区块链的数据缓存方法,减少对I/O资源的消耗,进而提高区块的交易执行效率。
在本上下文中,本发明的实施方式提供了基于区块链的数据缓存方法、基于区块链的数据缓存装置、电子设备以及计算机可读存储介质。
根据本发明实施例的第一方面,公开了一种基于区块链的数据缓存方法,包括:建立全局缓存;其中,全局缓存用于存储从磁盘中读取的数据;从全局缓存中读取与待处理区块相对应的账户数据;根据账户数据执行待处理区块中的交易;基于交易执行结果更新全局缓存中的账户数据。
在一个实施例中,基于前述方案,建立全局缓存之后,数据缓存方法还包括:判断全局缓存中的数据与磁盘中的数据是否一致;如果一致,则执行从全局缓存中读取与待处理区块相对应的账户数据。
在一个实施例中,数据缓存方法还包括:如果全局缓存中的数据与磁盘中的数据不一致,删除全局缓存。
在一个实施例中,基于前述方案,从全局缓存中读取与待处理区块相对应的账户数据之后,数据缓存方法还包括:对全局缓存中与待处理区块相对应的账户数据进行备份。
在一个实施例中,基于前述方案,从全局缓存中读取与待处理区块相对应的账户数据之前,数据缓存方法还包括:检测全局缓存中是否存在与待处理区块相对应的账户数据;在检测到全局缓存中不存在账户数据之后,从磁盘中读取与待处理区块相对应的账户数据至全局缓存中。
在一个实施例中,基于前述方案,基于交易执行结果更新全局缓存中的账户数据之后,数据缓存方法还包括:对账户数据的更新情况进行记录;根据记录结果将全局缓存中更新后的账户数据同步至磁盘中。
在一个实施例中,基于前述方案,数据缓存方法还包括:如果将已更新的数据同步至磁盘中失败,根据已备份的账户数据对全局缓存进行数据回滚。
根据本发明实施例的第二方面,公开了一种基于区块链的数据缓存装置,包括:全局缓存建立单元,用于建立全局缓存;其中,全局缓存用于存储从磁盘中读取的数据;第一账户数据读取单元,用于从全局缓存中读取与待处理区块相对应的账户数据;交易执行单元,用于根据账户数据执行待处理区块中的交易;全局缓存更新单元,用于基于交易执行结果更新全局缓存中的账户数据。
在一个实施例中,基于前述方案,数据缓存装置还包括:数据判断单元,用于在全局缓存建立单元建立全局缓存之后,判断全局缓存中的数据与磁盘中的数据是否一致;第一账户数据读取单元,具体用于在数据判断单元判断出全局缓存中的数据与磁盘中的数据一致之后,从全局缓存中读取与待处理区块相对应的账户数据。
在一个实施例中,基于前述方案,数据缓存装置还包括:数据删除单元,用于在数据判断单元判断出全局缓存中的数据与磁盘中的数据不一致之后,删除全局缓存。
在一个实施例中,基于前述方案,数据缓存装置还包括:数据备份单元,用于在第一账户数据读取单元从全局缓存中读取与待处理区块相对应的账户数据之后,对全局缓存中与待处理区块相对应的账户数据进行备份。
在一个实施例中,基于前述方案,数据缓存装置还包括:数据检测单元,用于在第一账户数据读取单元从全局缓存中读取与待处理区块相对应的账户数据之前,检测全局缓存中是否存在与待处理区块相对应的账户数据;第二账户数据读取单元,用于在数据检测单元检测到全局缓存中不存在与待处理区块相对应的账户数据之后,从磁盘中读取与待处理区块相对应的账户数据至全局缓存中。
在一个实施例中,基于前述方案,数据缓存装置还包括:数据更新记录单元,用于在全局缓存更新单元基于交易执行结果更新全局缓存中的账户数据之后,对账户数据的更新情况进行记录;数据同步单元,用于根据记录结果将全局缓存中更新后的账户数据同步至磁盘中。
在一个实施例中,基于前述方案,数据缓存装置还包括:数据回滚单元,用于在数据同步单元将已更新的数据同步至磁盘中失败之后,根据已备份的账户数据对全局缓存进行数据回滚。
根据本发明实施例的第三方面,公开了一种电子设备,包括:处理器;以及存储器,存储器上存储有计算机可读指令,计算机可读指令被处理器执行时实现如第一方面公开的基于区块链的数据缓存方法。
根据本发明实施例的第四方面,公开了一种计算机程序介质,其上存储有计算机可读指令,当计算机可读指令被计算机的处理器执行时,使计算机执行根据本发明第一方面公开的基于区块链的数据缓存方法。
区别于现有技术中从磁盘中读取当前区块的相关交易数据,并将其加载至缓存中,以便执行当前区块中的交易以及对缓存中的数据进行变更。本发明实施例从建立的全局缓存中读取与待处理区块相对应的账户数据,以根据账户数据执行待处理区块中的交易。由于从磁盘的读写速度较慢,因此,本发明一方面能够通过上述方法减少数据读取时长,进而提高数据读取效率,另一方面能够通过从全局缓存中读取数据,减少I/O交互次数,进而提高区块的交易执行效率。
本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示出的是根据本发明一示例实施方式的基于区块链的数据缓存方法的流程示意图;
图2示出的是根据本发明一可选示例实施方式的基于区块链的数据缓存方法的流程示意图;
图3示出的是根据本发明另一可选示例实施方式的基于区块链的数据缓存方法的流程示意图;
图4示出的是根据本发明一示例实施方式的数据存储方法的流程示意图;
图5示出的是根据本发明又一可选示例实施方式的基于区块链的数据缓存方法的流程示意图;
图6示出的是根据本发明一示例实施方式的基于区块链的数据缓存装置的结构示意图;
图7示出的是根据本发明另一可选示例实施方式的基于区块链的数据缓存装置的结构示意图;
图8示出的是根据本发明又一可选示例实施方式的基于区块链的数据缓存装置的结构示意图;
图9示出的是根据本发明又一可选示例实施方式的基于区块链的数据缓存装置的结构图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种基于区块链的数据缓存方法、基于区块链的数据缓存装置、电子设备以及计算机可读存储介质。
在本文中,需要理解的是,所涉及的术语“专题”是指针对某个特定对象而特别收集制作而成的一种集中作品,这个对象可以是具体的某个人物或者某个事物,也可以是某个抽象的范围或者领域。“文章专题”即为包含多篇文章的集合。
术语“信息流列表”表示应用内信息自上而下的排序方式,是图形用户界面中显示的信息列表,可为用户提供资讯内容,用户可以通过下拉刷新、上拉加载来获取新内容,满足阅读需求。
此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,由于以太坊公链存在链分叉的可能,因此,通过以太坊的原生实现,即每次交易时重建缓存,结束时删除缓存是适用以太坊公链的,而以太坊联盟连使用的是PBFT等强一致性的协议,这样可以保证缓存中的数据和磁盘中的数据保持一致,在使用联盟链的情况下,交易时重建缓存结束时删除缓存则是不适用的,因为这样就会需要在每次执行交易时重建缓存,而重建缓存则需要从磁盘中读取数据,进而,这样就会耗费较多的I/O资源。
因此,本发明的实施例提供了一种基于区块链的数据缓存方法,包括:建立全局缓存,并从全局缓存中读取与待处理区块相对应的账户数据,以及根据账户数据执行区块交易,进而,基于交易执行结果对全局缓存中的账户数据进行更新,以降低I/O交互次数,进而提升区块的交易执行效率。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
需要注意的是,下述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
服务器或终端设备可以从建立的全局缓存中读取与待处理区块相对应的账户数据,以根据账户数据执行待处理区块中的交易,这样能够通过上述方法减少数据读取时长,进而提高数据读取效率;以及,能够通过从全局缓存中读取数据,减少I/O交互次数,进而提高区块的交易执行效率。
此外,本发明所公开的数据缓存方法还可以基于以太坊得以实现;其中,以太坊是一种可编程的区块链,可以运行在以太坊虚拟机(Ethereum Virtual Machine,EVM)上,也可以理解为,EVM是建立在以太坊区块链上的代码运行环境,用于处理以太坊内的智能合约。EVM是一个独立的沙盒,智能合约代码可以对外完全隔离并在EVM内部运行;与此同时,以太坊虚拟机又能与主网的其余部分隔离,运行时不影响服务器或终端设备对主区块链的操作。此外,以太坊虚拟机使用的是轻量级的虚拟机构架,能够减少资源耗费及一定程度上保证系统性能稳定。
示例性方法
下面结合上述的应用场景,参考图1-图5来描述根据本发明示例性实施方式的基于区块链的数据缓存方法。
请参阅图1,图1示出的是根据本发明一示例实施方式的基于区块链的数据缓存方法的流程示意图,该数据缓存方法可以由服务器或终端设备来实现。
区别于现有技术中从磁盘中读取当前区块的相关交易数据,并将其加载至缓存中,以便执行当前区块中的交易以及对缓存中的数据进行变更。本发明实施例从建立的全局缓存中读取与待处理区块相对应的账户数据,以根据账户数据执行待处理区块中的交易。具体地,由于以太坊公链存在链分叉的可能,因此,通过现有技术中以太坊的原生实现,即每次交易时重建缓存,结束时删除缓存是适用以太坊公链的,而以太坊联盟连使用的是PBFT等强一致性的协议,这样可以保证缓存中的数据和磁盘中的数据保持一致,在使用联盟链的情况下,交易时重建缓存结束时删除缓存则是不适用的,因为这样就会需要在每次执行交易时重建缓存,而重建缓存则需要从磁盘中读取数据,进而,这样就会耗费较多的I/O资源。但是,通过实施本发明实施例,能够通过建立全局缓存,减少对I/O资源的消耗,进而提高区块的交易执行效率;以及,本发明实施例在交易执行完毕之后不删除全局缓存,而是通过LRU(Least recently used)算法保持全局缓存中的数据为热点数据,以将全局缓存应用于下一次交易,这样能够提高数据读取效率。
LRU算法,是根据数据的历史访问记录来进行数据淘汰的,其核心思想是:如果数据最近被访问过,那么将来被访问的几率也更高。LRU算法的执行方式为:将新数据插入到链表头部;每当缓存命中(即缓存数据被访问),则将数据移到链表头部;当链表满的时候,将链表尾部的数据丢弃。
如图1所示,根据本发明的一个实施例的基于区块链的数据缓存方法包括:
步骤S110、建立全局缓存;其中,全局缓存用于存储从磁盘中读取的数据。
步骤S120、从全局缓存中读取与待处理区块相对应的账户数据。
步骤S130、根据账户数据执行待处理区块中的交易。
步骤S140、基于交易执行结果更新全局缓存中的账户数据。
下面对这些步骤进行详细描述。
在步骤S110中,建立全局缓存;其中,全局缓存用于存储从磁盘中读取的数据。
在本发明实施例中,全局缓存也可以称为全局程序集缓存(Global AssemblyCache,GAC),用于存储程序集,这些程序集由计算机上的许多应用程序共享。
在本发明实施例中,终端设备/服务器可以建立用于存储从磁盘中读取的数据的全局缓存。其中,全局缓存的创建方式可以为终端设备/服务器创建一个键(key)为sysConfig,值(value)为strSysConfig的全局缓存对象;也可以为终端设备/服务器创建一个键(key)为ProductClass,值(value)为pci的全局缓存对象,本发明实施例示出上述两种创建方式,但不限于上述两种创建方式。此外,在建立全局缓存的过程中,可以将全局缓存的级别设为高,也可以将全局缓存的级别设为普通,本发明实施例不作限定。当全局缓存的级别为高时,如果内存不足,全局缓存不会先被清除;当全局缓存的级别为普通时,如果内存不足,全局缓存会先被清除。可见,实施本发明实施例,终端设备/服务器能够根据研发人员的需求,创建一个适用于本发明的全局缓存,进而提高减少I/O交互次数,进而提高区块的交易执行效率。
在步骤S120中,从全局缓存中读取与待处理区块相对应的账户数据。
在本发明实施例中,账户数据中包括待处理区块中的交易的合约地址和key。另外,终端设备/服务器可以利用账户数据执行待处理区块中的交易。
在步骤S130中,根据账户数据执行待处理区块中的交易。
在本发明实施例中,待处理区块中打包有至少一个交易;其中,交易分为两种,一种为外部账户之间的转账操作,一种为创建或调用智能合约的操作。不论交易为上述两种中任一种,EVM都会根据用户的调用操作创建智能合约。此外,在调用智能合约执行交易时,接收方为合约账户,而当发送方将一定数额的以太币转移到接收方的账户时,在该转账交易中接收方为外部账户。可见,实施该可选的实施方式,能够通过账户(Account)模式减少占用的存储空间,由于每笔交易仅有一个输入、一个输出以及一个签名,编码简单,不需要复杂的脚本,进而能够提高区块交易效率。
在步骤S140中,基于交易执行结果更新全局缓存中的账户数据。
在本发明实施例中,交易执行结果中包括key对应的最新value,并根据该交易执行结果将账户数据中的key对应的原始value更新为最新value。
作为一种可选的实施方式,在基于交易执行结果更新全局缓存中的账户数据之后,还可以执行以下步骤:基于LRU(Least Recently Used)算法将已更新的账户数据在全局缓存中的存储顺序由当前调用顺序调整为第一调用顺序,以表示该账户数据为最近一次被调用的数据。
可见,实施该可选的实施方式,能够在全局缓存有限的存储空间内存储调用较为频繁的数据,如果全局缓存的存储空间已满,则将多余的数据清除,多余的数据为调用顺序排名较后的数据(也可以理解为最近未经调用的数据),这样能够提高数据的读取速率,进而提高区块的交易执行效率。
作为一种可选的实施方式,请参阅图2,图2示出的是根据本发明一可选示例实施方式的基于区块链的数据缓存方法的流程示意图。基于图1所示的一种基于区块链的数据缓存方法,在步骤S110之后,还可以包括以下步骤:
步骤S150、判断全局缓存中的数据与磁盘中的数据是否一致,如果一致,则执行步骤S120,如果不一致,则执行步骤S160。
步骤S160、删除全局缓存。
下面对这些步骤进行详细描述。
在步骤S150中,判断全局缓存中的数据与磁盘中的数据是否一致。
在本发明实施例中,判断全局缓存中的数据与磁盘中的数据是否一致的方式具体可以为:确定全局缓存的当前缓存状态(即,_cachestate),如果当前缓存状态为一致状态(即,_cachestate!=1)则确定全局缓存中的数据与磁盘中的数据一致,如果当前缓存状态为不一致状态(即,_cachestate!=0)则认为全局缓存中的数据与磁盘中的数据不一致。
在步骤S160中,删除全局缓存。
在本发明实施例中,删除全局缓存也可以理解为删除全局缓存中的数据。
可见,实施本发明实施例,能够根据当前缓存状态确定全局缓存中的数据与磁盘中的数据是否一致,相较将全局缓存中的数据与磁盘中的数据进行一一比对,减少了确认数据一致的确认时长,并且降低了服务器资源占用率,进而提高了区块的交易执行效率。
作为一种可选的实施方式,该一种基于区块链的数据缓存方法,在步骤S120之后,还可以包括以下步骤:
对全局缓存中与待处理区块相对应的账户数据进行备份。
可见,实施该可选的实施方式,能够在读取与待处理区块相对应的账户数据之前,对账户数据进行备份,以便在数据出现异常时进行数据回滚,进而保证数据的一致性。
作为一种可选的实施方式,请参阅图3,图3示出的是根据本发明另一可选示例实施方式的基于区块链的数据缓存方法的流程示意图。基于图2所示的一种基于区块链的数据缓存方法,还可以包括以下步骤:
步骤S170、检测全局缓存中是否存在与待处理区块相对应的账户数据,如果是,则执行步骤S120,如果否,则执行步骤S180。
步骤S180、从磁盘中读取与待处理区块相对应的账户数据至全局缓存中。
在本发明实施例中,在步骤S140之后,触发步骤S190执行相应的操作。
步骤S190、对账户数据的更新情况进行记录。
步骤S200、根据记录结果将全局缓存中更新后的账户数据同步至磁盘中。
下面进行详细描述。
在步骤S190中,对账户数据的更新情况进行记录。
在本发明实施例中,在基于交易执行结果更新全局缓存中的账户数据之后,终端设备/服务器还可以对全局缓存中的账户数据的更新情况进行记录,即将交易中存在变更的key记录在一个集合中,该集合可以用changeset表示;其中,账户数据包括key,存在变更的key可以理解为key对应的value发生了变更。
可见,实施本发明实施例,能够将账户数据中的变更情况进行记录,以便后续将账户数据同步至磁盘,进而提高数据同步效率。
在步骤S200中,根据记录结果将全局缓存中更新后的账户数据同步至磁盘中。
在本发明实施例中,更新后的账户数据中包含key对应的已经发生变更的value。故,根据记录结果将全局缓存中更新后的账户数据同步至磁盘中的方式具体可以为:根据记录结果将全局缓存中已经发生变更的value同步至磁盘中。也可以理解为将磁盘中key对应的原value替换为已经发生变更的value。
可见,实施该可选的实施方式,能够使全局缓存中的数据与磁盘中的数据保持一致,以在一定程度上减少因为数据不一致而出现的异常情况。
进一步地,在步骤S200之后,还可以包括以下步骤:
如果将已更新的数据同步至磁盘中失败,根据已备份的账户数据对全局缓存进行数据回滚。
在本发明实施例中,将已更新的数据同步至磁盘中失败,也可以理解为写入DB失败,其中,DB表示数据。
在本发明实施例中,可选的,还可以包括:在检测到_cachestate!=0时,则停止程序运行并进行数据回滚。
在本发明实施例中,在根据已备份的账户数据对全局缓存进行数据回滚之前,还可以包括:将全局缓存的当前缓存状态变更为不一致状态。
在本发明实施例中,如果在执行上述方法的任一步骤之前或之后发生异常情况(如,宕机),移动终端或服务器可以重新从磁盘读取数据至全局缓存中,以保证磁盘中的数据与全局缓存中的数据保持一致。
可见,实施该可选的实施方式,能够在同步失败时,根据已备份的数据进行数据回滚,以确保全局缓存中的数据和磁盘中的数据的一致性。
可见,实施图3所示的基于区块链的数据缓存方法,能够提高数据同步效率,并且确保全局缓存中的数据和磁盘中的数据的一致性,以在一定程度上减少因为数据不一致而出现的异常情况。
请参阅图4,图4示出的是根据本发明一示例实施方式的数据存储方法的流程示意图。图4所示的数据存储方法具体示出了以太坊虚拟机执行完交易之后,存在变更的数据的存储方式,因此,图4示出的数据存储方法可应用于图1-图3任一流程示意图。
其中,以太坊虚拟机可以执行多个事务,图4中示出的是以太坊虚拟机执行三个事务,即以太坊虚拟机执行事务1、以太坊虚拟机执行事务2以及以太坊虚拟机执行事务3。在以太坊虚拟机执行完事务1、事务2以及事务3之后,服务器或终端设备可以执行sstore指令;其中,sstore指令用于指示服务器或终端设备将交易执行结果中已变更的数据以键值对(key value pair,kv pair)的形式缓存至全局缓存中。进一步地,服务器或终端设备可以将全局缓存中的数据提交至数据库层缓存中。再进一步地,服务器或终端设备可以在区块共识成功之后,将数据库层缓存中的数据提交至磁盘中,也可以理解为将数据持久化至磁盘中。此外,全局缓存的存储为第一级存储,数据库层缓存的存储为第二级存储,磁盘的存储为第三级存储。
具体地,第三级存储是全局缓存的存储,主要用于封装磁盘的kv持久化功能,并利用磁盘的原生功能向第二级存储提供原子变更能力,其中,原子变更能力也可以理解为数据变更能力,可以应用于将更新后的所述账户数据同步至磁盘中。第二级存储是数据库层缓存的存储,其中,数据库层也可以理解为以太坊的核心存储模型层;另外,由于以太坊的存储模型需要依赖mpt数据结构,因此,该第二级存储中封装有mpt的接口功能,以向上层业务提供抽象接口。第一级存储是全局缓存的存储,以太坊节点打包交易出块以及EVM执行完区块中所有的交易之后,会将变更后的数据同步至第一级存储中。
上述的mpt(Merkle Patricia Tree,又称为Merkle Patricia Trie)是一种经过改良的、融合了默克尔树和前缀树两种树结构优点的数据结构,是以太坊中用来组织管理账户数据、生成交易集合哈希的重要数据结构,mpt还可以成为mpt树以及mpt数据结构。mpt能够存储任意长度的key-value键值对;还能够提供一种快速计算所维护数据集哈希标识的机制;还能够提供快速状态回滚的机制;还能够提供一种称为默克尔证明的证明方法,进行轻节点的扩展,实现简单支付验证。可见,基于上述效果,利用mpt存储账户数据能够提高区块链的交易效率。
需要说明的是,本发明实施例应用的全局缓存(cache_globalcache)的数据结构为链表+map的形式,采用上述结构能够提高LRU算法的实现效率;其中,map的key是合约地址address;map为嵌套结构<合约地址address,<属性的key,属性的value>>;value也可以理解为一个map;key可以理解为智能合约中属性的名称,value为属性对应的值。
可见,实施图4所示的数据存储方法,能够减少数据读取时长,进而提高数据读取效率,还能够通过从全局缓存中读取数据,减少I/O交互次数,进而提高区块的交易执行效率。
举例来说,若在以太坊部署一个智能合约,对于以太坊来说就是创建了一个新的账户数据(Account),当向智能合约发起一笔交易时,如果合约代码执行了具体的状态变更逻辑(即,账户数据中存在某些key对应的value发生了变更),则会在全局缓存中变更Account中的key对应的value。在EVM执行完交易后,通过交易结果提交入库指令将全局缓存中的kv pair插入到当前Account对应的mpt中。
如果存在如下智能合约代码:
当该智能合约中存在交易时,终端设备或服务器需要将[0x4546,0x42]存放于map1中;其中,[0x4546,0x42]是一个kv pair;map1是一个kv pair存储的接口。
进而,终端设备或服务器根据下述公式计算mpt中的key:
key=keccak256(bytes32(key’)+bytes32(position)
其中,key’=0x4546,由于map1为第一个属性,因此,position=0。需要说明的是,position指的是类属性的位置,如果存在第二个属性map2,则map2对应的position=1。
终端设备或服务器将上述公式中的字符串对应的值代入,可以求出key,如下:
keccak256(bytes32(0x45646)+bytes32(0x0))
=keccak256
(00000000000000000000000000000000000000000000000000000000000456460000000000000000000000000000000000000000000000000000000000000000)=0xd3adce0e4e3bdd938c65fd45e82a1edc66ac28dc9a3393d2c950eee46192a89c=key
进而,终端设备或服务器可以基于EVM的堆栈机制,执行sstore指令,示意代码如下:
其中,void State::setStorage(Address const&_contract,u256const&_key,u256const&_value)用于在异常情况下的数据回滚,例如,在数据同步失败的情况下进行数据回滚。
当EVM执行完当前区块中的所有交易时,会通过交易结果提交入库指令,执行mpt变更;其中,db为数据,db缓存可以理解为数据库缓存层,示意代码如下:
最终,在数据提交阶段,将存在变更的账户数据同步至磁盘中。
请参阅图5,图5示出的是根据本发明又一可选示例实施方式的基于区块链的数据缓存方法的流程示意图,具体包括如下步骤:
步骤S501、打包出块完成,进入EVM执行交易阶段。
步骤S502、检查全局缓存中的数据是否与磁盘中的数据一致,如果是,则执行步骤S504,如果否,则执行步骤S503。
步骤S503、删除全局缓存。
步骤S504、将当前缓存状态变更为正在修改状态。
步骤S505、判断全局缓存中是否存在账户数据,如果是,则执行步骤S506,如果否,则执行步骤S507。
步骤S506、备份缓存。
步骤S507、从磁盘中读取账户数据,并将账户数据写入全局缓存。
步骤S508、执行交易并更新全局缓存。
步骤S509、区块中的交易全部执行完毕,更新全局缓存中的数据。
步骤S510、记录区块中所有交易的存在变更的数据。
步骤S511、数据更新完成之后,将当前缓存状态变更为一致状态,删除对存在变更的数据的记录。
步骤S512、执行下一个区块的交易。
基于上述步骤所构成的方法流程,在打包出块完成后会进入EVM执行交易阶段,终端设备或服务器可以利用EVM对全局缓存(_globalcache)进行检查,以确定_globalcache与磁盘中的数据是否一致,如果不一致则将全局缓存删除;进而,从全局缓存中查找当前交易对应的账户数据(如,合约地址、key)是否存在,如果不存在(即,未命中缓存),则从磁盘中读取账户数据,并将其加载至全局缓存中,如果存在(即,命中缓存),则对账户数据进行备份,以在数据异常时进行数据回滚;进而,使用全局缓存中的数据执行交易,并将全局缓存中的数据进行相应修改变更,以使全局缓存中的数据更新为最新数据。此外,在循环执行区块中所有的交易期间,终端设备或服务器可以将区块交易中有变更的key记录在一个集合changeset中,标识这是变更的记录,以便后续将变更后的数据同步到磁盘。
在交易全部执行完成后,全局缓存中已经更新为最新的结果,此时根据changeset中的内容,读取_globalcache并变更mpt树,以及将最新的结果写入磁盘中。如果写入成功,则更新当前缓存状态为一致状态(_cachestate=1),并且将changeset删除。
此外,需要说明的是,正在修改状态对应的代码可以为_cachestate=2。
可见,实施图5所示的基于区块链的数据缓存方法,一方面能够通过上述方法减少数据读取时长,进而提高数据读取效率,另一方面能够通过从全局缓存中读取数据,减少I/O交互次数,进而提高区块的交易执行效率。
示例性介质
在介绍了本发明示例性实施方式的方法之后,接下来,对本发明示例性实施方式的介质进行说明。
在一些可能的实施方式中,本发明的各个方面还可以实现为一种介质,其上存储有程序代码,当所述程序代码被设备的处理器执行时用于实现本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的文章投放方法中的步骤。
具体地,所述设备的处理器执行所述程序代码时用于实现如下步骤:提取待推荐的各个文章中的关键词;基于从所述各个文章中提取出的关键词,确定所述各个文章之间的关联关系;根据具有关联关系的多篇文章生成文章专题;投放所述文章专题。
在本发明的一些实施方式中,所述设备的处理器执行所述程序代码时还用于实现如下步骤:在根据具有关联关系的多篇文章生成文章专题之后,根据生成的多个文章专题的内容重叠度和/或专题名称,对所述多个文章专题进行合并处理。
在本发明的一些实施方式中,所述设备的处理器执行所述程序代码时还用于实现如下步骤:建立全局缓存;其中,全局缓存用于存储从磁盘中读取的数据;从全局缓存中读取与待处理区块相对应的账户数据;根据账户数据执行待处理区块中的交易;基于交易执行结果更新全局缓存中的账户数据。
在本发明的一些实施方式中,所述设备的处理器执行所述程序代码时还用于实现如下步骤:判断全局缓存中的数据与磁盘中的数据是否一致;如果一致,则执行从全局缓存中读取与待处理区块相对应的账户数据。
在本发明的一些实施方式中,所述设备的处理器执行所述程序代码时用于实现如下步骤:如果全局缓存中的数据与磁盘中的数据不一致,删除全局缓存。
在本发明的一些实施方式中,所述设备的处理器执行所述程序代码时还用于实现如下步骤:对全局缓存中与待处理区块相对应的账户数据进行备份。
在本发明的一些实施例中,所述设备的处理器执行所述程序代码时还用于实现如下步骤:检测全局缓存中是否存在与待处理区块相对应的账户数据;在检测到全局缓存中不存在账户数据之后,从磁盘中读取与待处理区块相对应的账户数据至全局缓存中。
在本发明的一些实施方式中,所述设备的处理器执行所述程序代码时还用于实现如下步骤:对账户数据的更新情况进行记录;根据记录结果将全局缓存中更新后的账户数据同步至磁盘中。
在本发明的一些实施方式中,所述设备的处理器执行所述程序代码时还用于实现如下步骤:如果将已更新的数据同步至磁盘中失败,根据已备份的账户数据对全局缓存进行数据回滚。
需要说明的是:上述的介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于:电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线、光缆、RF等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
示例性装置
在介绍了本发明示例性实施方式的介质之后,接下来,参考图6-图9对本发明示例性实施方式的基于区块链的数据缓存装置进行说明。
请参阅图6,图6示出的是根据本发明一示例实施方式的基于区块链的数据缓存装置的结构示意图。如图6所示,本发明一示例实施方式的基于区块链的数据缓存装置1包括:全局缓存建立单元601、第一账户数据读取单元602、交易执行单元603以及全局缓存更新单元604,具体地:
全局缓存建立单元601,用于建立全局缓存;其中,全局缓存用于存储从磁盘中读取的数据。
第一账户数据读取单元602,用于从全局缓存中读取与待处理区块相对应的账户数据。
交易执行单元603,用于根据账户数据执行待处理区块中的交易。
全局缓存更新单元604,用于基于交易执行结果更新全局缓存中的账户数据。
可见,实施图6示出的基于区块链的数据缓存装置1,能够减少数据读取时长,进而提高数据读取效率;还能够通过从全局缓存中读取数据,减少I/O交互次数,进而提高区块的交易执行效率。
请参阅图7,图7示出的是根据本发明另一可选示例实施方式的基于区块链的数据缓存装置的结构示意图。如图7所示,该另一可选示例实施方式示出了基于区块链的数据缓存装置2还包括:数据判断单元605、数据删除单元606以及数据备份单元607,具体地:
数据判断单元605,用于在全局缓存建立单元601建立全局缓存之后,判断全局缓存中的数据与磁盘中的数据是否一致。
第一账户数据读取单元602,具体用于在数据判断单元605判断出全局缓存中的数据与磁盘中的数据一致之后,从全局缓存中读取与待处理区块相对应的账户数据。
数据删除单元606,用于在数据判断单元605判断出全局缓存中的数据与磁盘中的数据不一致之后,删除全局缓存。
数据备份单元607,用于在第一账户数据读取单元602从全局缓存中读取与待处理区块相对应的账户数据之后,对全局缓存中与待处理区块相对应的账户数据进行备份。
可见,实施图7示出的基于区块链的数据缓存装置2,能够减少数据读取时长,进而提高数据读取效率;还能够通过从全局缓存中读取数据,减少I/O交互次数,进而提高区块的交易执行效率;还能够在读取与待处理区块相对应的账户数据之前,对账户数据进行备份,以便在数据出现异常时进行数据回滚,进而保证数据的一致性。
请参阅图8,图8示出的是根据本发明又一可选示例实施方式的基于区块链的数据缓存装置的结构示意图。如图8所示,该又一可选示例实施方式示出了基于区块链的数据缓存装置3还包括:数据检测单元608、第二账户数据读取单元609、数据更新记录单元610、数据同步单元611以及数据回滚单元612,具体地:
数据检测单元608,用于在第一账户数据读取单元602从全局缓存中读取与待处理区块相对应的账户数据之前,检测全局缓存中是否存在与待处理区块相对应的账户数据。
第二账户数据读取单元609,用于在数据检测单元608检测到全局缓存中不存在与待处理区块相对应的账户数据之后,从磁盘中读取与待处理区块相对应的账户数据至全局缓存中。
本发明实施例中,在第二账户数据读取单元609从磁盘中读取与待处理区块相对应的账户数据至全局缓存中之后,触发交易执行单元603执行根据账户数据执行待处理区块中的交易的操作。
数据更新记录单元610,用于在全局缓存更新单元601基于交易执行结果更新全局缓存中的账户数据之后,对账户数据的更新情况进行记录;
数据同步单元611,用于根据记录结果将全局缓存中更新后的账户数据同步至磁盘中。
数据回滚单元612,用于在数据同步单元611将已更新的数据同步至磁盘中失败之后,根据已备份的账户数据对全局缓存进行数据回滚。
可见,实施图8示出的基于区块链的数据缓存装置3,能够减少数据读取时长,进而提高数据读取效率;还能够通过从全局缓存中读取数据,减少I/O交互次数,进而提高区块的交易执行效率;还能够提高数据同步效率,并且确保全局缓存中的数据和磁盘中的数据的一致性,以在一定程度上减少因为数据不一致而出现的异常情况。
由于本发明的示例实施例的数据缓存装置的各个功能模块与上述基于数据缓存方法的示例实施例的步骤对应,因此对于本发明装置实施例中未披露的细节,请参照本发明上述的数据缓存方法的实施例。
下面参照图9来描述根据本发明的又一可选示例实施方式的基于区块链的数据缓存装置900。图9显示的基于区块链的数据缓存装置900仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图9所示,基于区块链的数据缓存装置900以通用计算设备的形式表现。基于区块链的数据缓存装置900的组件可以包括但不限于:上述至少一个处理单元910、上述至少一个存储单元920、连接不同系统组件(包括存储单元920和处理单元910)的总线930。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元910执行,使得所述处理单元910执行本说明书上述示例性方法的描述部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元910可以执行如图1中所示的各个步骤。
存储单元920可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)9201和/或高速缓存存储单元9202,还可以进一步包括只读存储单元(ROM)9203。
存储单元920还可以包括具有一组(至少一个)程序模块9205的程序/实用工具9204,这样的程序模块9205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线930可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
基于区块链的数据缓存装置900也可以与一个或多个外部设备1000(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与基于区块链的数据缓存装置900交互的设备通信,和/或与使得该基于区块链的数据缓存装置900能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,基于区块链的数据缓存装置900还可以通过网络适配器960与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器960通过总线930与基于区块链的数据缓存装置900的其它模块通信。应当明白,尽管图中未示出,可以结合基于区块链的数据缓存装置900使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本发明实施方式的方法。
在本发明的示例性实施例中,还提供了一种计算机程序介质,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行上述方法实施例部分描述的方法。
根据本发明的一个实施例,还提供了一种用于实现上述方法实施例中的方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,尽管在附图中以特定顺序描述了本发明中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、移动终端、或者网络设备等)执行根据本发明实施方式的方法。
示例性电子设备
在介绍了本发明示例性实施方式的方法、介质和装置之后,接下来,介绍根据本发明的另一示例性实施方式的电子设备。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
在一些可能的实施方式中,根据本发明实施方式的计算设备可以至少包括至少一个处理器、以及至少一个存储器。其中,所述存储器存储有程序代码,当所述程序代码被所述处理器执行时,使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的文章投放方法中的步骤。例如,所述处理器可以执行如图1中所示的步骤SS110,建立全局缓存;步骤SS120,从全局缓存中读取与待处理区块相对应的账户数据;步骤SS130,根据账户数据执行待处理区块中的交易;步骤SS140,基于交易执行结果更新全局缓存中的账户数据。
又如,所述处理器也可以执行如图2中所示的步骤。
应当注意,尽管在上文详细描述中提及了文章投放装置的若干单元或子单元,但是这种划分仅仅是示例性的,并非是强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或单元的特征和功能可以在一个模块或单元中具体化。反之,上文描述的一个模块或单元的特征和功能可以进一步划分为由多个模块或单元来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所发明的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (10)
1.一种基于区块链的数据缓存方法,其特征在于,所述方法包括:
建立全局缓存;其中,所述全局缓存用于存储从磁盘中读取的数据;
从所述全局缓存中读取与待处理区块相对应的账户数据;
根据所述账户数据执行所述待处理区块中的交易;
基于交易执行结果更新所述全局缓存中的所述账户数据。
2.根据权利要求1所述的方法,其特征在于,所述建立全局缓存之后,所述方法还包括:
判断所述全局缓存中的数据与所述磁盘中的数据是否一致;
如果一致,则执行所述从所述全局缓存中读取与待处理区块相对应的账户数据。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
如果所述全局缓存中的数据与所述磁盘中的数据不一致,删除所述全局缓存。
4.根据权利要求1所述的方法,其特征在于,所述从所述全局缓存中读取与待处理区块相对应的账户数据之后,所述方法还包括:
对所述全局缓存中与待处理区块相对应的账户数据进行备份。
5.根据权利要求1所述的方法,其特征在于,所述从所述全局缓存中读取与待处理区块相对应的账户数据之前,所述方法还包括:
检测所述全局缓存中是否存在与待处理区块相对应的账户数据;
在检测到所述全局缓存中不存在所述账户数据之后,从所述磁盘中读取与所述待处理区块相对应的账户数据至所述全局缓存中。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述基于交易执行结果更新所述全局缓存中的所述账户数据之后,所述方法还包括:
对所述账户数据的更新情况进行记录;
根据记录结果将所述全局缓存中更新后的所述账户数据同步至所述磁盘中。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
如果将所述已更新的数据同步至所述磁盘中失败,根据已备份的所述账户数据对所述全局缓存进行数据回滚。
8.一种基于区块链的数据缓存装置,其特征在于,所述数据缓存装置包括:
全局缓存建立单元,用于建立全局缓存;其中,所述全局缓存用于存储从磁盘中读取的数据;
第一账户数据读取单元,用于从所述全局缓存中读取与待处理区块相对应的账户数据;
交易执行单元,用于根据所述账户数据执行所述待处理区块中的交易;
全局缓存更新单元,用于基于交易执行结果更新所述全局缓存中的所述账户数据。
9.一种电子设备,其特征在于,包括:
处理器;以及
存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现如权利要求1至7中任一项所述的基于区块链的数据缓存方法。
10.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的基于区块链的数据缓存方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910079732.7A CN111488115A (zh) | 2019-01-28 | 2019-01-28 | 基于区块链的数据缓存方法、装置、电子设备以及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910079732.7A CN111488115A (zh) | 2019-01-28 | 2019-01-28 | 基于区块链的数据缓存方法、装置、电子设备以及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111488115A true CN111488115A (zh) | 2020-08-04 |
Family
ID=71812216
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910079732.7A Pending CN111488115A (zh) | 2019-01-28 | 2019-01-28 | 基于区块链的数据缓存方法、装置、电子设备以及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111488115A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112613049A (zh) * | 2020-12-18 | 2021-04-06 | 杭州前云数据技术有限公司 | 基于区块链的统一云存储系统及实现数据保全的方法 |
CN112667652A (zh) * | 2020-12-31 | 2021-04-16 | 杭州趣链科技有限公司 | 基于区块链的模拟交易方法、装置、设备和可读存储介质 |
CN112883067A (zh) * | 2021-04-30 | 2021-06-01 | 支付宝(杭州)信息技术有限公司 | 区块链交易执行方法、区块链节点及控制装置 |
CN112988818A (zh) * | 2021-04-30 | 2021-06-18 | 支付宝(杭州)信息技术有限公司 | 区块链交易执行方法、区块链节点及控制装置 |
CN112988819A (zh) * | 2021-04-30 | 2021-06-18 | 支付宝(杭州)信息技术有限公司 | 区块链交易执行方法、区块链节点及控制装置 |
CN113064730A (zh) * | 2021-04-30 | 2021-07-02 | 支付宝(杭州)信息技术有限公司 | 区块链交易执行方法、区块链节点及控制装置 |
CN117056342A (zh) * | 2023-10-10 | 2023-11-14 | 腾讯科技(深圳)有限公司 | 一种基于区块链的数据处理方法及相关设备 |
EP4202694A4 (en) * | 2021-01-18 | 2024-05-15 | Tencent Tech Shenzhen Co Ltd | NODE MEMORY-BASED DATA PROCESSING METHOD AND APPARATUS, DEVICE AND MEDIUM |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391649A (zh) * | 2017-07-14 | 2017-11-24 | 浙商银行股份有限公司 | 一种提升区块链查询效率的系统及方法 |
CN108763443A (zh) * | 2018-05-25 | 2018-11-06 | 众安信息技术服务有限公司 | 区块链账户处理方法与装置 |
CN109213791A (zh) * | 2018-08-22 | 2019-01-15 | 北京京东尚科信息技术有限公司 | 数据处理方法、区块链节点、系统和计算机可读存储介质 |
-
2019
- 2019-01-28 CN CN201910079732.7A patent/CN111488115A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391649A (zh) * | 2017-07-14 | 2017-11-24 | 浙商银行股份有限公司 | 一种提升区块链查询效率的系统及方法 |
CN108763443A (zh) * | 2018-05-25 | 2018-11-06 | 众安信息技术服务有限公司 | 区块链账户处理方法与装置 |
CN109213791A (zh) * | 2018-08-22 | 2019-01-15 | 北京京东尚科信息技术有限公司 | 数据处理方法、区块链节点、系统和计算机可读存储介质 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112613049A (zh) * | 2020-12-18 | 2021-04-06 | 杭州前云数据技术有限公司 | 基于区块链的统一云存储系统及实现数据保全的方法 |
CN112613049B (zh) * | 2020-12-18 | 2024-04-26 | 杭州前云数据技术有限公司 | 基于区块链的统一云存储系统及实现数据保全的方法 |
CN112667652B (zh) * | 2020-12-31 | 2022-05-24 | 杭州趣链科技有限公司 | 基于区块链的模拟交易方法、装置、设备和可读存储介质 |
CN112667652A (zh) * | 2020-12-31 | 2021-04-16 | 杭州趣链科技有限公司 | 基于区块链的模拟交易方法、装置、设备和可读存储介质 |
EP4202694A4 (en) * | 2021-01-18 | 2024-05-15 | Tencent Tech Shenzhen Co Ltd | NODE MEMORY-BASED DATA PROCESSING METHOD AND APPARATUS, DEVICE AND MEDIUM |
CN112988818A (zh) * | 2021-04-30 | 2021-06-18 | 支付宝(杭州)信息技术有限公司 | 区块链交易执行方法、区块链节点及控制装置 |
CN112988819B (zh) * | 2021-04-30 | 2021-08-20 | 支付宝(杭州)信息技术有限公司 | 区块链交易执行方法、区块链节点及控制装置 |
CN112988818B (zh) * | 2021-04-30 | 2021-09-03 | 支付宝(杭州)信息技术有限公司 | 区块链交易执行方法、区块链节点及控制装置 |
CN113760999A (zh) * | 2021-04-30 | 2021-12-07 | 支付宝(杭州)信息技术有限公司 | 区块链交易执行方法、区块链节点及控制装置 |
CN113064730A (zh) * | 2021-04-30 | 2021-07-02 | 支付宝(杭州)信息技术有限公司 | 区块链交易执行方法、区块链节点及控制装置 |
CN112988819A (zh) * | 2021-04-30 | 2021-06-18 | 支付宝(杭州)信息技术有限公司 | 区块链交易执行方法、区块链节点及控制装置 |
CN112883067A (zh) * | 2021-04-30 | 2021-06-01 | 支付宝(杭州)信息技术有限公司 | 区块链交易执行方法、区块链节点及控制装置 |
CN117056342A (zh) * | 2023-10-10 | 2023-11-14 | 腾讯科技(深圳)有限公司 | 一种基于区块链的数据处理方法及相关设备 |
CN117056342B (zh) * | 2023-10-10 | 2024-01-26 | 腾讯科技(深圳)有限公司 | 一种基于区块链的数据处理方法及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111488115A (zh) | 基于区块链的数据缓存方法、装置、电子设备以及介质 | |
CN109274754B (zh) | 用于在区块链网络中同步数据的方法、设备和存储介质 | |
US10996884B2 (en) | System and method for reference tracking garbage collector | |
EP3707613B1 (en) | Efficient management of client synchronization updates | |
JP6875557B2 (ja) | サービス・データをブロックチェーン・システムに書き込むための方法およびデバイス | |
US11741046B2 (en) | Method and apparatus for creating system disk snapshot of virtual machine | |
CN109086388B (zh) | 区块链数据存储方法、装置、设备及介质 | |
CN107395665B (zh) | 一种区块链业务受理及业务共识方法及装置 | |
US11709803B2 (en) | Data transaction processing method, apparatus, and electronic device | |
US9020916B2 (en) | Database server apparatus, method for updating database, and recording medium for database update program | |
TW201140350A (en) | High throughput, reliable replication of transformed data in information systems | |
US20160140201A1 (en) | Facilitating distributed deletes in a replicated storage system | |
EP3438845A1 (en) | Data updating method and device for a distributed database system | |
US10509767B2 (en) | Systems and methods for managing snapshots of a file system volume | |
US11669301B2 (en) | Effectively fusing database tables | |
CN112860412B (zh) | 业务数据处理方法、装置、电子设备及存储介质 | |
US9684668B1 (en) | Systems and methods for performing lookups on distributed deduplicated data systems | |
CN102597995B (zh) | 同步数据库和非数据库资源 | |
CN103503388A (zh) | 一种分布式队列消息读取方法及设备、系统 | |
CN115238006A (zh) | 检索数据同步方法、装置、设备及计算机存储介质 | |
EP4172887A1 (en) | Approximate nearest neighbor search engine | |
US10795875B2 (en) | Data storing method using multi-version based data structure | |
WO2023070462A1 (zh) | 一种文件去重方法、装置和设备 | |
US20210034518A1 (en) | System and method for balance localization and priority of pages to flush in a sequential log | |
CN115543935A (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 |