基于区块链的数据密封方法、装置、设备和存储介质与流程

文档序号:26050992发布日期:2021-07-27 15:26阅读:145来源:国知局
基于区块链的数据密封方法、装置、设备和存储介质与流程

本申请涉及计算机技术领域、更涉及区块链技术领域,特别是涉及一种基于区块链的数据密封方法、装置、设备和存储介质。



背景技术:

区块链技术是当今社会非常重要的技术之一,其凭借较高的安全性,在各种场景下都得到广泛的应用,数据的安全存储是区块链非常重要的应用之一,把数据存储在区块链上,能够大大提高数据存储的安全性。在将数据存储至区块链时,会涉及到数据密封处理,即,先将原始数据进行密封处理,然后将密封处理后的密文数据存储至区块链。

由于通常情况下,待密封数据的数据量比较大,传统方法是按照最小单位串行地进行多次密封计算,每次密封计算都需要去磁盘中获取位置索引以进行取数,从而耗时非常多,导致密封效率比较慢。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种能够提高密封效率的基于区块链的数据密封方法、装置、计算机设备和存储介质。

一种基于区块链的数据密封方法,所述方法包括:

响应于针对待存储至区块链的数据的密封任务,切分所述数据得到数据块;

从所述数据块中识别密封计算时的关键数据,得到第一数据;

从所述数据块中获取第二数据,将第二数据的位置索引预加载至二级缓存;

将所述第一数据的位置索引、以及所述第一数据的依赖数据的位置索引预加载至一级缓存中;

在进行密封计算时,从所述一级缓存中查找目标数据的位置索引;所述目标数据,是进行密封计算时需使用的数据;

若查找到,根据一级缓存中所述位置索引,获取目标数据以进行密封处理;

若未查找到,则从所述二级缓存中查找所述目标数据的位置索引;

根据二级缓存中查找到的所述位置索引,获取目标数据以进行密封处理。

在其中一个实施例中,所述从所述数据块中识别密封计算时的关键数据,得到第一数据,包括:

分析所述数据块中各数据的重复使用程度;所述重复使用程度,是密封计算时被重复使用的程度;

获取预设常用条件;

从所述数据块中,识别所述重复使用程度满足所述预设常用条件的数据,得到第一数据。

在其中一个实施例中,所述预设常用条件,包括密封计算时被重复使用的次数大于或等于预设次数阈值;

所述分析所述数据块中各数据的重复使用程度,包括:

对密封计算逻辑或者历史密封任务进行分析,预测密封计算时的所述数据块中各数据被重复使用的次数;

所述从所述数据块中,识别所述重复使用程度满足所述预设常用条件的数据,得到第一数据,包括:

从所述数据块中,选取所述被重复使用的次数大于或等于预设次数阈值的数据,得到第一数据。

在其中一个实施例中,所述第一数据为多个;所述将所述第一数据的位置索引、以及所述第一数据的依赖数据的位置索引预加载至一级缓存中,包括:

从所述数据块中,确定与所述第一数据具有依赖关系的依赖数据;

从磁盘中,获取所述依赖数据的位置索引;

将所述第一数据的位置索引、以及相应依赖数据的位置索引预加载至一级缓存中。

在其中一个实施例中,在所述将所述第一数据的位置索引、以及相应依赖数据的位置索引预加载至一级缓存中之前,还包括:

判断获取的所述位置索引是否存在于二级缓存中;

若不存在于二级缓存中、且一级缓存未满,则执行所述将所述第一数据的位置索引、以及相应依赖数据的位置索引预加载至一级缓存中;

若不存在于二级缓存中、且一级缓存已满,则将所述第一数据的位置索引、以及相应依赖数据的位置索引写入磁盘的缓存文件中。

在其中一个实施例中,所述方法还包括:

若从二级缓存中查找到所述目标数据的位置索引,则执行所述根据二级缓存中查找到的所述位置索引,获取目标数据以进行密封处理的步骤;

若从二级缓存中未查找到所述目标数据的位置索引,则

从所述磁盘的缓存文件中查找所述目标数据的位置索引,并根据查找的所述位置索引,获取目标数据以进行密封处理。

在其中一个实施例中,所述方法还包括:

获取用于进行密封计算的系统资源数据;

根据所述系统资源数据,确定所支持的密封任务的最大任务并发数;

在接收到所述密封任务时,判断当前已响应的密封任务的数量是否超过所述最大任务并发数,若否,则执行所述响应于针对待存储至区块链的数据的密封任务,切分所述数据得到数据块的步骤及后续步骤。

一种基于区块链的数据密封装置,所述装置包括:

切分模块,用于响应于针对待存储至区块链的数据的密封任务,切分所述数据得到数据块;

关键数据识别模块,用于从所述数据块中识别密封计算时的关键数据,得到第一数据;

预加载模块,用于从所述数据块中获取第二数据,将第二数据的位置索引预加载至二级缓存;将所述第一数据的位置索引、以及所述第一数据的依赖数据的位置索引预加载至一级缓存中;

查找模块,用于在进行密封计算时,从所述一级缓存中查找目标数据的位置索引;所述目标数据,是进行密封计算时需使用的数据;若查找到,根据一级缓存中所述位置索引,获取目标数据以进行密封处理;若未查找到,则从所述二级缓存中查找所述目标数据的位置索引;根据二级缓存中查找到的所述位置索引,获取目标数据以进行密封处理。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

响应于针对待存储至区块链的数据的密封任务,切分所述数据得到数据块;

从所述数据块中识别密封计算时的关键数据,得到第一数据;

从所述数据块中获取第二数据,将第二数据的位置索引预加载至二级缓存;

将所述第一数据的位置索引、以及所述第一数据的依赖数据的位置索引预加载至一级缓存中;

在进行密封计算时,从所述一级缓存中查找目标数据的位置索引;所述目标数据,是进行密封计算时需使用的数据;

若查找到,根据一级缓存中所述位置索引,获取目标数据以进行密封处理;

若未查找到,则从所述二级缓存中查找所述目标数据的位置索引;

根据二级缓存中查找到的所述位置索引,获取目标数据以进行密封处理。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

响应于针对待存储至区块链的数据的密封任务,切分所述数据得到数据块;

从所述数据块中识别密封计算时的关键数据,得到第一数据;

从所述数据块中获取第二数据,将第二数据的位置索引预加载至二级缓存;

将所述第一数据的位置索引、以及所述第一数据的依赖数据的位置索引预加载至一级缓存中;

在进行密封计算时,从所述一级缓存中查找目标数据的位置索引;所述目标数据,是进行密封计算时需使用的数据;

若查找到,根据一级缓存中所述位置索引,获取目标数据以进行密封处理;

若未查找到,则从所述二级缓存中查找所述目标数据的位置索引;

根据二级缓存中查找到的所述位置索引,获取目标数据以进行密封处理。

上述基于区块链的数据密封方法、装置、计算机设备和存储介质,在响应于针对待存储至区块链的数据的密封任务时,先进入数据准备阶段,在数据准备阶段,切分数据得到数据块,然后,从所述数据块中识别密封计算时的关键数据,得到第一数据;从所述数据块中获取第二数据,将第二数据的位置索引预加载至二级缓存;将所述第一数据的位置索引、以及所述第一数据的依赖数据的位置索引预加载至一级缓存中。即,对待密封的数据进行密封计算关键数据的识别处理,然后,针对性的进行多级缓存的预加载处理。后续,在实质性的密封计算阶段,则可以基于多级预加载缓存中快速地进行取数,以快速获取目标数据进行密封处理,提高了密封效率。

附图说明

图1为一个实施例中基于区块链的数据密封方法的应用环境图;

图2为一个实施例中基于区块链的数据密封方法的流程示意图;

图3为一个实施例中单个密封任务处理的流程简示图;

图4为一个实施例中多级缓存预加载的流程示意图;

图5为一个实施例中缓存查找示意图;

图6为一个实施例中任务并发判断的原理示意图;

图7为一个实施例中基于区块链的数据密封装置的结构框图;

图8为另一个实施例中基于区块链的数据密封装置的结构框图;

图9为一个实施例中计算机设备的内部结构图;

图10为另一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的基于区块链的数据密封方法,可以应用于如图1所示的应用环境中。该应用场景中,由客户端110、以及多个区块链节点120通过网络通信的形式连接形成区块链系统。其中,区块链节点120可以是任意形式的计算设备,比如可以是终端或服务器。区块链节点120是用于将数据存储至区块链的存储机。本申请中基于区块链的数据密封方法由区块链节点120执行。可以是由区块链节点120中的业务程序通过加载复制证明算法库中的程序,以执行本申请中的基于区块链的数据密封方法。可以理解,在区块链数据存储领域,需要使用复制证明算法对待存储至区块链的数据进行密封和证明计算处理,本申请正是对传统的复制证明算法中的密封计算进行的改进。

具体地,客户端110可以向区块链节点120发送针对待存储至区块链的数据的密封任务,区块链节点120可以响应于该密封任务,切分所述数据得到数据块。区块链节点120可以从所述数据块中识别密封计算时的关键数据,得到第一数据;从所述数据块中获取第二数据,将第二数据的位置索引预加载至二级缓存;将所述第一数据的位置索引、以及所述第一数据的依赖数据的位置索引预加载至一级缓存中。即,实现预加载。后续,区块链节点120在进行密封计算时,则可以从所述一级缓存中查找目标数据的位置索引。其中,所述目标数据,是进行密封计算时需使用的数据。若查找到,区块链节点120可以根据一级缓存中所述位置索引,获取目标数据以进行密封处理。若未查找到,区块链节点120则可以从所述二级缓存中查找所述目标数据的位置索引。区块链节点120可以根据二级缓存中查找到的所述位置索引,获取目标数据以进行密封处理。

在一个实施例中,如图2所示,提供了一种基于区块链的数据密封方法,本实施例以该方法应用于图1中的区块链节点进行举例说明,该区块链节点可以是终端或服务器。可以理解的是,该方法还可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现。本实施例中,该方法包括以下步骤:

步骤202,响应于针对待存储至区块链的数据的密封任务,切分该数据得到数据块。

其中,密封任务,是用于指示对待存储至区块链上的数据进行密封的任务。

可以理解,待存储至区块链上的数据即为原始数据,需要对其进行密封处理,在密封后,以密文形式存储至区块链上。本申请各实施例的方法即为对密封处理进行了优化改进。

具体地,在接收到针对待存储至区块链的数据的密封任务后,区块链节点可以对该数据进行切分处理,得到数据块。

在一个实施例中,可以按照预设大小,对待存储至区块链的数据进行切分。比如,可以将待存储至区块链的数据一共有32g比较大,所以可以将其切分成几个部分,每部分即为一个数据块,比如,512m可以为一个数据块。

步骤204,从所述数据块中识别密封计算时的关键数据,得到第一数据。

可以理解,第一数据,是数据库中包含的、且进行密封计算时的关键数据。关键数据,是在密封计算中较为关键的数据。

在一个实施例中,第一数据,可以是指在密封计算时会被多次重复使用到的数据。可以理解,切分得到的数据块中可以包括多个数据(即多个数据点)。在一次密封计算中,有些数据不仅仅只参加一次计算,而是会多次重复参与计算,即,会被多次重复使用。显然,这些被多次重复使用的数据对于密封计算来说,就很关键,因而可以称之为关键数据。进一步地,第一数据,还可以是密封计算时被重复使用到的数据中重复使用程度非常高的数据。

在其他实施例中,除了从重复使用维度来识别关键的第一数据以外,还可以从其他维度来识别关键数据得到第一数据。比如,可以从数据获取难度这一维度,来识别关键数据,即,将密封计算时获取难度大的数据,作为密封计算时的关键数据。可以理解,若某些数据在密封计算时很难获取,假设需要耗时很久才能获取到,那么,一定程度上对密封计算也起到关键性影响,因此,可以将这些数据称之为关键数据。本申请对确定关键数据的方式不做限定,只要能够对密封计算起关键性影响作用的数据,都可以作为关键数据,即第一数据。

步骤206,从数据块中获取第二数据,将第二数据的位置索引预加载至二级缓存;将第一数据的位置索引、以及第一数据的依赖数据的位置索引预加载至一级缓存中。

其中,位置索引,是数据在磁盘中存储位置的索引,用于在磁盘中定位查询实质性数据。一级缓存和二级缓存,是查询优先级不同的缓存。一级缓存的查询优先级高于二级缓存。即,先从一级缓存中进行查询,若查询不到,再从二级缓存中进行查询。

在一个实施例中,区块链节点可以从数据块中随机地获取一部分数据,作为第二数据。可以理解,这种情况下,获取的第二数据与第一数据可能存在重复的情况。比如,可以从10g的数据中,预先随机加载2g的数据到二级缓存中。需要说明的是,为了提高存储资源的利用率,本申请实施例中一级缓存和二级缓存不存在重复存储的情况,所以,若第二数据和第二数据存在重复,则在后续位置存储时,可以加入位置索引去重验证机制,以保证一级缓存和二级缓存中不重复存储。

在另一个实施例中,区块链节点可以从数据块中除第一数据以外的数据中,随机地选取一部分数据,作为第二数据。这种情况下,第二数据与第一数据则不存在重复。

在又一个实施例中,区块链节点可以从数据块中除第一数据以外的数据中,进行关键数据分析,以从剩余的数据中选取较为关键的、但关键程度次于第一数据的关键数据,作为第二数据。这种情况下,选取的第二数据相较于数据块中除第一数据和第二数据以外的数据而言,对密封计算的影响更为关键,但关键程度又低于第一数据。

可以理解,本申请各实施例中并不限定第二数据的选取方式。

具体地,区块链节点可以从磁盘中获取第二数据的位置索引,并将该位置索引预先加载至二级缓存中。区块链节点还可以获取第一数据的位置索引、以及第一数据的依赖数据的位置索引,并将这些位置索引存储至一级缓存中。可以理解,一级缓存和二级缓存中缓存有位置索引。

步骤208,在进行密封计算时,从一级缓存中查找目标数据的位置索引;目标数据,是进行密封计算时需使用的数据。

可以理解,步骤202~206都属于进行具体密封计算前的数据准备阶段,即将待密封数据(即待存储至区块链上的数据)进行切分,以及进行多级缓存的预加载等预备处理。那么,后续则会按照分块的数据块进行实质性密封计算,在进行实质性的密封计算时,会需要获取待密封计算时需使用的数据,由于有了多级预加载缓存,所以,区块链节点可以先从一级缓存中,查找进行密封计算时需使用的目标数据的位置索引。比如,区块链节点可以根据目标数据的数据标识,从一级缓存中查找相应的位置索引。

步骤210,若查找到,根据一级缓存中位置索引,获取目标数据以进行密封处理;若未查找到,则从二级缓存中查找目标数据的位置索引。

具体地,若从一级缓存中查找到目标数据的位置索引,区块链节点则可以根据该查找到的位置索引,获取目标数据,以基于该目标数据进行数据密封处理。若从一级缓存中未查找到目标数据的位置索引,区块链节点则可以继续从二级缓存中查找该目标数据的位置索引。比如,区块链节点可以根据目标数据的数据标识,从二级缓存中查找相应的位置索引。

步骤212,根据二级缓存中查找到的位置索引,获取目标数据以进行密封处理。

可以理解,从二级缓存中查找该目标数据的位置索引时,会存在查找到和未查找到两种情况,当从二级缓存中查找到目标数据的位置索引时,区块链节点则可以根据该查找到的位置索引,获取目标数据,以基于该目标数据进行数据密封处理。

在一个实施例中,若从二级缓存中查找到目标数据的位置索引,则执行步骤212根据二级缓存中查找到的所述位置索引,获取目标数据以进行密封处理。若从二级缓存中未查找到所述目标数据的位置索引,则可以从所述磁盘的缓存文件中查找所述目标数据的位置索引,并根据查找的位置索引,获取目标数据以进行密封处理。

可以理解,区块链节点除了可以预先将数据预加载至一级缓存和二级缓存以外,还可以将数据块中各数据的位置索引预先加载至磁盘的缓存文件中。即,磁盘的缓存文件中存储有完整数据的位置索引。磁盘的缓存文件在多级缓存中的查询优先级低于第二缓存。因而,当从二级缓存中未查找到目标数据的位置索引(即从第二缓存中查询失败)时,区块链节点则可以从磁盘的缓存文件中查找目标数据的位置索引。由于,磁盘的缓存文件中存储有完整的位置索引,因而,能够保证查询成功,而且,是从磁盘的缓存文件中查找位置索引,相较于直接从磁盘中查询而言,仍能减少时长,提高效率。

需要说明的是,本申请中密封计算和缓存中的预加载是并行、动态进行的,即边进行预加载,边进行密封计算。由于密封计算是多次,所以,对于密封计算使用完毕的数据,则可以将其位置索引从缓存中清除释放掉,而不断预加载后续密封计算需要使用的数据的位置索引。因此,本申请实施例中,是针对当前需要进行密封计算的数据块进行预加载缓存,并在密封计算执行完毕后,从缓存中清除,继续预加载下一个需要进行密封计算的数据块。如此实现密封计算和预加载缓存的并行处理。

图3为一个实施例中单个密封任务处理的流程简示图。从图3可知,在接收到密封任务后,针对该密封任务,可以切分该密封任务所指示的待密封的数据(即待存储至区块链上的数据),然后进行多级缓存预加载,进而并行地进行密封计算,在密封计算时可以基于多级缓存依次进行取数,在并行密封计算处理完毕后,则完成数据密封处理。

可以理解,在数据密封处理完成后,则可以将密封后的密文数据存储至区块链上。

上述基于区块链的数据密封方法,在响应于针对待存储至区块链的数据的密封任务时,先进入数据准备阶段,在数据准备阶段,切分数据得到数据块,然后,从所述数据块中识别密封计算时的关键数据,得到第一数据;从所述数据块中获取第二数据,将第二数据的位置索引预加载至二级缓存;将所述第一数据的位置索引、以及所述第一数据的依赖数据的位置索引预加载至一级缓存中。即,对待密封的数据进行密封计算关键数据的识别处理,然后,针对性的进行多级缓存的预加载处理。后续,在实质性的密封计算阶段,则可以基于多级预加载缓存中快速地进行取数,以快速获取目标数据进行密封处理,提高了密封效率。

此外,在多级预加载缓存时,由于对待密封的数据进行密封计算关键数据的识别处理,能够使得一级缓存中准确地存储对于密封计算来说更为关键的数据,在取数时优先从一级缓存中查找位置索引,从而能够更为快捷地获取到更为关键的目标数据,而且,相较于传统每次计算都要从磁盘中获取位置索引以进行取数而言,大大节省了取数所耗费的资源,进而也提高了密封效率。

在一个实施例中,步骤204从所述数据块中识别密封计算时的关键数据,得到第一数据,包括:分析数据块中各数据的重复使用程度;获取预设常用条件;从数据块中,识别所述重复使用程度满足所述预设常用条件的数据,得到第一数据。

其中,重复使用程度,是密封计算时被重复使用的程度。预设常用条件,是预先设置的、用于表征数据在密封计算时被经常使用的条件。可以理解,满足预设常用条件的数据,则属于在密封计算时被经常使用到的数据,即为对密封计算起关键性影响的关键数据。

具体地,在对每个数据块进行数据密封处理时,区块链节点可以分析该数据块中各数据的重复使用程度。区块链节点还可以获取预设常用条件,进而,区块链节点可以将各数据的重复使用程度与该预设常用条件进行比对,以从数据块中识别重复使用程度满足预设常用条件的数据,作为第一数据。

上述实施例中,通过分析数据块中各数据的重复使用程度,能够快速、准确地获取到满足预设常用条件的关键数据,既提高了效率,又节省了资源。

在一个实施例中,所述预设常用条件,包括密封计算时被重复使用的次数大于或等于预设次数阈值。本实施例中,分析数据块中各数据的重复使用程度,包括:对密封计算逻辑或者历史密封任务进行分析,预测密封计算时的数据块中各数据被重复使用的次数。本实施例中,从数据块中,识别所述重复使用程度满足所述预设常用条件的数据,得到第一数据,包括:从数据块中,选取所述被重复使用的次数大于或等于预设次数阈值的数据,得到第一数据。

其中,密封计算逻辑,是用于执行密封计算任务的处理逻辑。历史密封任务,是进行密封计算的历史任务。

本实施例中,重复使用程度可以由被重复使用的次数来表征。因此,在对每个数据块进行数据密封处理时,区块链节点可以对密封计算逻辑或者历史密封任务进行分析,预测密封计算时的数据块中各数据被重复使用的次数。

在一个实施例中,区块链节点可以对历次历史密封任务中使用到的数据进行被重复使用的次数分析,以得到数据块中各数据在执行历史密封任务时被重复使用的次数。区块链节点可以直接将该被重复使用的次数作为在执行本次密封任务时,数据块中各数据可能会被重复使用的次数。区块链节点也可以基于数据块中各数据在执行历史密封任务时被重复使用的次数,进一步结合数据块中数据的特性,进一步预测在执行本次密封任务时,数据块中各数据可能会被重复使用的次数。

在另一个实施例中,区块链节点可以对密封计算逻辑的字段进行解析,以从中分析出同一数据标识的字段被重复使用的次数,从而得到密封计算时的数据块中各数据被重复使用的次数。

上述实施例中,通过对密封计算逻辑或者历史密封任务进行分析,能够准确预测密封计算时的数据块中各数据被重复使用的次数,从而能够快速、准确地获取到满足预设常用条件的关键数据,既提高了效率,又节省了资源。

在一个实施例中,第一数据为多个。本实施例中,所述将所述第一数据的位置索引、以及所述第一数据的依赖数据的位置索引预加载至一级缓存中,包括:从数据块中,确定与所述第一数据具有依赖关系的依赖数据;从磁盘中,获取所述依赖数据的位置索引;将所述第一数据的位置索引、以及相应依赖数据的位置索引预加载至一级缓存中。

可以理解,第一数据的依赖数据,即为与第一数据具有依赖关系的数据。

依赖关系,可以是与第一数据在密封计算时相互依赖、相互影响的关系。即,依赖数据可以是数据块中与第一数据在密封计算时相互依赖、相互影响的数据。

在一个实施例中,第一数据的依赖数据,可以是数据块中位于第一数据之后的连续的预设数量的数据。比如,数据块中的数据点a为第一数据,假设预设数量为11,那么,位于数据点a之后的连续11个数据点,即为第一数据的依赖数据。

在一个实施例中,针对数据块中的每个第一数据,计算机设备可以以该第一数据为起始点,连续选取位于第一数据之后的预设数量的数据,得到第一数据的依赖数据。

需要说明的是,第一数据的依赖数据在数据块中的位置,并不限定于这一种情况,还可以是位于数据块中其他位置的、且与第一数据在密封计算时相互依赖、相互影响的数据。

在获取第一数据的依赖数据之后,区块链节点可以从磁盘中,获取所述第一数据的相应依赖数据的位置索引。区块链节点可以将第一数据的位置索引、以及相应依赖数据的位置索引预加载至一级缓存中。可以理解,第一数据的位置索引可以在确定第一数据后,即可获取,也可以在获取依赖数据的位置索引时一并获取。并不限定第一数据的位置索引的获取时机。

在一个实施例中,在第二数据与第一数据之间存在重复的情况下,比如,第二数据是从数据块中随机选取的数据,在将所述第一数据的位置索引、以及相应依赖数据的位置索引预加载至一级缓存中之前,该方法还包括:判断获取的所述位置索引是否存在于二级缓存中;若不存在于二级缓存中、且一级缓存未满,则执行所述将所述第一数据的位置索引、以及相应依赖数据的位置索引预加载至一级缓存中;若存在于二级缓存中、且一级缓存已满,则将所述第一数据的位置索引、以及相应依赖数据的位置索引写入磁盘的缓存文件中。

具体地,在将所述第一数据的位置索引、以及相应依赖数据的位置索引预加载至一级缓存中之前,区块链节点可以将获取的第一数据的位置索引、以及相应依赖数据的位置索引与二级缓存中存储的第二数据的位置索引进行比对,以判断第一数据的位置索引、以及相应依赖数据的位置索引是否存在于二级缓存中。

若不存在于二级缓存中,则可以继续判断一级缓存是否存满,而一级缓存未满,则可以将第一数据的位置索引、以及相应依赖数据的位置索引预加载至一级缓存中。若一级缓存已满,则可以将所述第一数据的位置索引、以及相应依赖数据的位置索引写入磁盘的缓存文件中,从而能够在后续查询时,从磁盘的缓存文件中查找到位置索引,保证了查询成功率。

可以理解,若存在于二级缓存中,则可以不将第一数据的位置索引、以及相应依赖数据的位置索引预加载至一级缓存中。以避免在一级缓存和二级缓存中重复存储。

在一个实施例中,在将第一数据的位置索引、以及相应依赖数据的位置索引预加载至一级缓存后,还可以进一步地将第一数据的位置索引、以及相应依赖数据的位置索引写入磁盘的缓存文件中。也可以将数据块中除第一数据以外的数据的位置索引,一并写入至磁盘的缓存文件中,从而使得磁盘的缓存文件中存储有完整的位置索引,保证后续查询的成功率。且,从磁盘的缓存文件中查询相较于从磁盘中查询而言,也能一定程度上提高效率。

图4为一个实施例中多级缓存预加载的流程示意图。参照图4,在切分数据后,可以预先根据算法确定第二数据,以将第二数据的位置索引添加至二级缓存中,然后,遍历第一数据的位置索引,针对每个第一数据的位置索引,从磁盘中获取相应依赖数据的位置索引,判断获取的位置索引是否已在二级缓存中,若未在二级缓存中,则继续判断一级缓存是否已满。若一级缓存未满,则将该第一数据的位置索引、以及相应依赖数据的位置索引预加载至一级缓存中,在预加载至一级缓存之后,还可以将该第一数据的位置索引、以及相应依赖数据的位置索引写入至磁盘的缓存文件中。若一级缓存已满,则可以直接将第一数据的位置索引、以及相应依赖数据的位置索引写入至磁盘的缓存文件中。在写入至磁盘的缓存文件后,可以判断该第一数据的位置索引是否为最后一个第一数据的位置索引,若是,则结束,若不是,则继续遍历下一个第一数据的位置索引,以进行循环处理。

可以理解,若第一数据的位置索引、以及相应依赖数据的位置索引已在二级缓存中,则不再将其缓存至一级缓存中,以避免重复的缓存存储,而是可以判断该第一数据的位置索引是否为最后一个第一数据的位置索引,若是,则结束,若不是,则继续遍历下一个第一数据的位置索引,以进行循环处理。

可以理解,在使用一级缓存和二级缓存对部分数据的位置索引进行预加载之后,以及在完成磁盘的缓存文件的写入之后,在进行密封计算时,就可以依次从一级缓存、二级缓存和磁盘的缓存文件中进行取数,以基于多级缓存,获取进行密封计算时需使用的目标数据。

图5为一个实施例中缓存查找示意图。从图5可知,可以先判断目标数据的位置索引是否在一级缓存中,若是,则根据一级缓存中查找到的该位置索引,获取目标数据以进行密封处理,若否,则继续判断目标数据的位置索引是否在二级缓存中。若在二级缓存中,则根据二级缓存中查找到的该位置索引,获取目标数据以进行密封处理,若不在二级缓存中,则继续从磁盘的缓存文件中查找相应的位置索引,以根据该位置索引获取目标数据进行密封处理。

在一个实施例中,该方法还包括:获取用于进行密封计算的系统资源数据;根据所述系统资源数据,确定所支持的密封任务的最大任务并发数;在接收到所述密封任务时,判断当前已响应的密封任务的数量是否超过所述最大任务并发数,若否,则执行所述响应于针对待存储至区块链的数据的密封任务,切分所述数据得到数据块的步骤及后续步骤。

其中,最大任务并发数,是指区块链节点支持的能够并行处理的密封任务的最大数量。

具体地,区块链节点可以获取用于进行密封计算的系统资源数据;根据所述系统资源数据,确定所支持的密封任务的最大任务并发数。在每接收到一个密封任务时,则可以判断当前已响应的密封任务的数量是否超过最大任务并发数,若未超过,则可以响应于该密封任务执行步骤202~212。若当前已响应的密封任务的数量超过最大任务并发数,则将新接收的该密封任务设为等待状态,待系统资源足够时,再对其进行处理。

在一个实施例中,系统资源数据可以包括磁盘数、内存容量以及cpu核心数等中的至少一种。

在一个实施例中,当系统资源数据包括磁盘数、内存容量以及cpu核心数时,则可以分别根据磁盘数、内存容量以及cpu核心数各自计算一个最大任务并发数,然后,从这些最大任务并发数中选取最小值,作为最终的最大任务并发数。也可以将磁盘数、内存容量以及cpu核心数一起进行最大任务并发数的计算,得到一个最大任务并发数。对此不作限定。

图6为一个实施例中任务并发判断的原理示意图。从图6中可知,可以分别根据磁盘数、内存容量以及cpu核心数各自计算一个最大任务并发数,将其中的最小值确定为最终的最大任务并发数。然后,在接收到密封任务时,判断当前已响应的密封任务的数量是否超过最终的最大任务并发数,若是,则等待,若否,则针对该密封任务开启数据密封处理流程,即执行步骤202~212,即开始数据密封处理流程。

上述实施例中,根据系统资源数据,确定所支持的密封任务的最大任务并发数,进而对密封任务的并行计算进行控制,能够最大限度的使用系统资源进行并行计算,提高了密封处理的效率。此外,还能够避免过度并行处理,提高了处理控制的准确性。

应该理解的是,虽然本申请各实施例的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,本申请各实施例的流程图的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

如图7所示,在一个实施例中,提供了一种基于区块链的数据密封装置,该装置包括:切分模块702、关键数据识别模块704、预加载模块706以及查找模块708;其中:

切分模块702,用于响应于针对待存储至区块链的数据的密封任务,切分所述数据得到数据块。

关键数据识别模块704,用于从所述数据块中识别密封计算时的关键数据,得到第一数据。

预加载模块706,用于从所述数据块中获取第二数据,将第二数据的位置索引预加载至二级缓存;将所述第一数据的位置索引、以及所述第一数据的依赖数据的位置索引预加载至一级缓存中。

查找模块708,用于在进行密封计算时,从所述一级缓存中查找目标数据的位置索引;所述目标数据,是进行密封计算时需使用的数据;若查找到,根据一级缓存中所述位置索引,获取目标数据以进行密封处理;若未查找到,则从所述二级缓存中查找所述目标数据的位置索引;根据二级缓存中查找到的所述位置索引,获取目标数据以进行密封处理。

在一个实施例中,关键数据识别模块704还用于分析所述数据块中各数据的重复使用程度;所述重复使用程度,是密封计算时被重复使用的程度;获取预设常用条件;从所述数据块中,识别所述重复使用程度满足所述预设常用条件的数据,得到第一数据。

在一个实施例中,所述预设常用条件,包括密封计算时被重复使用的次数大于或等于预设次数阈值;关键数据识别模块704还用于对密封计算逻辑或者历史密封任务进行分析,预测密封计算时的所述数据块中各数据被重复使用的次数;从所述数据块中,选取所述被重复使用的次数大于或等于预设次数阈值的数据,得到第一数据。

在一个实施例中,所述第一数据为多个;预加载模块706还用于从所述数据块中,确定与所述第一数据具有依赖关系的依赖数据;从磁盘中,获取所述依赖数据的位置索引;将所述第一数据的位置索引、以及相应依赖数据的位置索引预加载至一级缓存中。

在一个实施例中,预加载模块706还用于判断获取的所述位置索引是否存在于二级缓存中;若不存在于二级缓存中、且一级缓存未满,则执行所述将所述第一数据的位置索引、以及相应依赖数据的位置索引预加载至一级缓存中;若不存在于二级缓存中、且一级缓存已满,则将所述第一数据的位置索引、以及相应依赖数据的位置索引写入磁盘的缓存文件中。

在一个实施例中,查找模块708还用于若从二级缓存中查找到所述目标数据的位置索引,则执行所述根据二级缓存中查找到的所述位置索引,获取目标数据以进行密封处理的步骤;若从二级缓存中未查找到所述目标数据的位置索引,则从所述磁盘的缓存文件中查找所述目标数据的位置索引,并根据查找的所述位置索引,获取目标数据以进行密封处理。

如图8所示,在一个实施例中,该装置还包括:

任务并发处理模块701,用于获取用于进行密封计算的系统资源数据;根据所述系统资源数据,确定所支持的密封任务的最大任务并发数;在接收到所述密封任务时,判断当前已响应的密封任务的数量是否超过所述最大任务并发数,若否,则通知切分模块702执行所述响应于针对待存储至区块链的数据的密封任务,切分所述数据得到数据块的步骤。

上述基于区块链的数据密封装置,在响应于针对待存储至区块链的数据的密封任务时,先进入数据准备阶段,在数据准备阶段,切分数据得到数据块,然后,从所述数据块中识别密封计算时的关键数据,得到第一数据;从所述数据块中获取第二数据,将第二数据的位置索引预加载至二级缓存;将所述第一数据的位置索引、以及所述第一数据的依赖数据的位置索引预加载至一级缓存中。即,对待密封的数据进行密封计算关键数据的识别处理,然后,针对性的进行多级缓存的预加载处理。后续,在实质性的密封计算阶段,则可以基于多级预加载缓存中快速地进行取数,以快速获取目标数据进行密封处理,提高了密封效率。

此外,在多级预加载缓存时,由于对待密封的数据进行密封计算关键数据的识别处理,能够使得一级缓存中准确地存储对于密封计算来说更为关键的数据,在取数时优先从一级缓存中查找位置索引,从而能够更为快捷地获取到更为关键的目标数据,而且,相较于传统每次计算都要从磁盘中获取位置索引以进行取数而言,大大节省了取数所耗费的资源,进而也提高了密封效率。

关于基于区块链的数据密封装置的具体限定可以参见上文中对于基于区块链的数据密封方法的限定,在此不再赘述。上述基于区块链的数据密封装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是作为区块链节点的服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于区块链的数据密封方法。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是作为区块链节点的终端,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过wifi、运营商网络、nfc(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种基于区块链的数据密封方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图9或10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-onlymemory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(randomaccessmemory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(staticrandomaccessmemory,sram)或动态随机存取存储器(dynamicrandomaccessmemory,dram)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1