写入区块链业务数据的方法和装置及业务子集合确定方法与流程

文档序号:11677623阅读:154来源:国知局
写入区块链业务数据的方法和装置及业务子集合确定方法与流程
本申请涉及计算机
技术领域
,尤其涉及一种写入区块链业务数据的方法和装置,以及区块链业务数据的业务子集合确定方法。
背景技术
:随着计算机技术的发展,区块链技术(又称分布式账本技术)以其去中心化、公开透明、不可篡改、可信任等优点,备受青睐,在智能合约、证券交易、电子商务、物联网、社交通讯、文件存储、存在性证明、身份验证、股权众筹等众多领域得到广泛应用。具体说来,区块链技术是一种去中心化的分布式数据库技术。区块链中的每笔数据,都会广播至全网的区块链节点,每个节点都会保存全量的、一致的数据。区块链技术要求每个节点的状态保持一致,包括数据库的状态等。为保证数据库状态的一致性,要求执行区块链交易的顺序是有序的,且在各个节点中保持一致,每个节点按照这一顺序执行交易,完成交易验证、实施、数据入链等。拿以太坊这一区块链应用为例,在接收交易时会创建一个时间戳,将交易写入交易池,并按照时间戳给交易排序;在挖矿时,按交易时间戳的顺序执行交易,并将执行每笔交易后的账户信息更新至数据库中,实现数据库账户状态的更新。现有技术中,为保障数据库状态的一致性,需要根据交易(也可理解为待写入区块链的业务数据)接收的时间戳串行进行数据的处理,因此限制了只能够采用单机执行,导致数据库的写入性能和效率受限于单机的性能。若想要提高写入性能和效率则只能提高单机的cpu等物理性能,如增加cpu核数等,这不仅成本较高,且可扩展性受限。技术实现要素:本申请实施例提供一种写入区块链业务数据的方法和装置,旨在降低数据处理执行效率的提高所需的成本,并提高可扩展性。本申请实施例还提供一种区块链业务数据的业务子集合确定方法,旨在对业务数据进行合理划分,从而降低数据处理执行效率的提高所需的成本,并提高可扩展性。本申请实施例采用下述技术方案:第一方面,本申请实施例提供的一种写入区块链业务数据的方法,包括:获取多个待执行的业务数据;依据所述业务数据的业务类型和/或数据变更范围,确定业务数据归属的业务子集合;其中,属于不同业务子集合的业务数据间不具有交易依赖关系;并行执行各所述业务子集合,以将执行的结果写入所述区块链。优选地,本申请实施例提供的写入区块链业务数据的方法中,依据所述业务数据的业务类型和/或数据变更范围,确定业务数据归属的业务子集合,具体包括:依据所述业务数据的数据属性,确定业务数据归属的业务子集合;其中,所述数据属性与所述业务数据的业务类型和/或数据变更范围具有对应关系,所述数据属性用于反映所述业务数据的交易依赖关系。优选地,本申请实施例提供的写入区块链业务数据的方法中,并行执行各所述业务子集合,具体包括:采用多线程或者机器集群并行执行各所述业务子集合。优选地,本申请实施例提供的写入区块链业务数据的方法中,所述业务数据与时间戳具有对应关系,则执行所述业务子集合时,具体包括:按照所述时间戳对应的时间顺序,串行执行所述业务子集合中包含的业务数据。优选地,本申请实施例提供的写入区块链业务数据的方法中,依据所述业务数据的业务类型,确定业务数据归属的业务子集合,具体包括:依据所述业务数据的业务类型,将所述业务类型相同的业务数据分入相同的业务子集合,将所述业务类型不相同的业务数据分入不同的业务子集合。优选地,本申请实施例提供的写入区块链业务数据的方法中,依据所述业务数据的数据变更范围,确定业务数据归属的业务子集合,具体包括:依据所述业务数据的数据变更范围,将数据变更范围有交集的业务数据分入相同的业务子集合,将数据变更范围无交集的业务数据分入不同的业务子集合。优选地,本申请实施例提供的写入区块链业务数据的方法中,依据所述业务数据的数据变更范围,将数据变更范围有交集的业务数据分入相同的业务子集合,将数据变更范围无交集的业务数据分入不同的业务子集合,具体包括:遍历所述业务数据的数据变更范围;若第一业务数据的数据变更范围与第一业务子集合的数据变更范围有交集,则将所述第一业务数据添加进所述第一业务子集合;若所述第一业务数据的数据变更范围与第一业务子集合的数据变更范围无交集,则创建一个包含所述第一业务数据的第二业务子集合;其中,所述第一业务数据为任一业务数据,所述第一业务子集合为所述业务子集合中任一业务子集合,所述第二业务子集合与所述第一业务子集合不相同。优选地,本申请实施例提供的写入区块链业务数据的方法中,所述业务子集合的数据变更范围,确定为该业务子集合包含的业务数据的数据变更范围的并集。优选地,本申请实施例提供的写入区块链业务数据的方法中,所述业务数据与时间戳具有对应关系,则遍历所述业务数据的数据变更范围,具体包括:依据各业务数据的所述时间戳,按照所述时间戳对应的时间顺序进行遍历。优选地,本申请实施例提供的写入区块链业务数据的方法中,依据所述业务数据的业务类型和数据变更范围,确定业务数据归属的业务子集合,具体包括:依据所述业务数据的业务类型,确定所述业务数据所属的i级子集合;依据所述i级子集合中业务数据的数据变更范围,确定各业务数据所属的ⅱ级子集合,以所述ⅱ级子集合作为所述业务子集合;其中,所述ⅱ级子集合为所述i级子集合的子集。优选地,本申请实施例提供的写入区块链业务数据的方法中,依据所述业务数据的业务类型,确定各业务数据所属的i级子集合,具体包括:依据所述业务数据的业务类型,将所述业务类型相同的业务数据分入相同的i级子集合,将所述业务类型不相同的业务数据分入不同的i级子集合。优选地,本申请实施例提供的写入区块链业务数据的方法中,依据所述i级子集合中业务数据的数据变更范围,确定各业务数据所属的ⅱ级子集合,具体包括:依据所述i级子集合中的业务数据的数据变更范围,将数据变更范围有交集的业务数据分入相同的ⅱ级子集合,将数据变更范围无交集的业务数据分入不同的ⅱ级子集合。优选地,本申请实施例提供的写入区块链业务数据的方法中,依据所述i级子集合中的业务数据的数据变更范围,将数据变更范围有交集的业务数据分入相同的ⅱ级子集合,将数据变更范围无交集的业务数据分入不同的ⅱ级子集合,具体包括:遍历第一i级子集合中各业务数据的数据变更范围;若第二业务数据的数据变更范围与第一ⅱ级子集合的数据变更范围有交集,则将所述第二业务数据添加进所述第一ⅱ级子集合;若所述第二业务数据的数据变更范围与第一ⅱ级子集合的数据变更范围无交集,则创建一个包含所述第二业务数据的第二ⅱ级子集合;其中,所述第一i级子集合为所述i级子集合中任一i级子集合,所述第二业务数据为所述第一i级子集合中任一业务数据,所述第一ⅱ级子集合为所述第一i级子集合中任一ⅱ级子集合,所述第二ⅱ级子集合与所述第一ⅱ级子集合不相同。优选地,本申请实施例提供的写入区块链业务数据的方法中,获取多个待执行的业务数据,形成由所述业务数据构成的待执行的业务集合,所述业务集合由预设数据处理量和/或预设业务数据时间确定。第二方面,本申请实施例还提供了另一种写入区块链业务数据的方法,包括:获取多个待写入区块链的业务数据;依据所述业务数据的数据变更范围,确定不具有交易依赖关系的第一业务数据;其中,所述第一业务数据间不具有交易依赖关系;并行执行各所述第一业务数据,以将执行的结果写入所述区块链。优选地,上述写入区块链业务数据的方法中,依据所述业务数据的数据变更范围,确定不具有交易依赖关系的第一业务数据,具体包括:依据所述业务数据的数据变更范围,将与其他任一业务数据的数据变更范围无交集的业务数据确定为不具有交易依赖关系的所述第一业务数据。第三方面,本申请实施例还提供一种写入区块链业务数据的装置,包括:获取模块,获取多个待写入区块链的业务数据;业务子集合确定模块,依据所述业务数据的业务类型和/或数据变更范围,确定业务数据归属的业务子集合;其中,属于不同业务子集合的业务数据间不具有交易依赖关系;数据执行模块,并行执行各所述业务子集合,以将执行的结果写入所述区块链。第四方面,本申请实施例还提供一种区块链业务数据的业务子集合确定方法,包括:在获取多个待写入区块链的业务数据之后,依据所述业务数据的业务类型和/或数据变更范围,确定业务数据归属的业务子集合,以便并行执行各所述业务子集合,将执行的结果写入所述区块链;其中,属于不同业务子集合的业务数据间不具有交易依赖关系。优选地,本申请实施例提供的业务子集合确定方法中,依据所述业务数据的业务类型和/或数据变更范围,确定业务数据归属的业务子集合,具体包括:依据所述业务数据的数据属性,确定业务数据归属的业务子集合;其中,所述数据属性与所述业务数据的业务类型和/或数据变更范围具有对应关系,所述数据属性用于反映所述业务数据的交易依赖关系。优选地,本申请实施例提供的业务子集合确定方法中,依据所述业务数据的业务类型,确定业务数据归属的业务子集合,具体包括:依据所述业务数据的业务类型,将所述业务类型相同的业务数据分入相同的业务子集合,将所述业务类型不相同的业务数据分入不同的业务子集合;或者,依据所述业务数据的数据变更范围,确定业务数据归属的业务子集合,具体包括:依据所述业务数据的数据变更范围,将数据变更范围有交集的业务数据分入相同的业务子集合,将数据变更范围无交集的业务数据分入不同的业务子集合。优选地,本申请实施例提供的业务子集合确定方法中,依据所述业务数据的业务类型和数据变更范围,确定业务数据归属的业务子集合,具体包括:依据所述业务数据的业务类型,确定所述业务数据所属的ⅰ级子集合;依据所述i级子集合中业务数据的数据变更范围,确定各业务数据所属的ⅱ级子集合,以所述ⅱ级子集合作为所述业务子集合;其中,所述ⅱ级子集合为所述i级子集合的子集。本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:本申请实施例,在获取了待写入区块链的业务数据后,可以依据业务数据的业务类型或数据变更范围,确定业务数据间是否具有交易依赖关系,进而可以依据业务数据间的交易依赖情况,将业务数据分入不同的业务子集合中。由于分属不同业务子集合的业务数据间没有交易依赖关系,因此不同的业务子集合可以并行执行,而不会影响数据库状态的一致性。采用本申请实施例提供的方案,将没有交易依赖关系的业务数据并行执行,既保障了数据库状态的一致性,又可提高数据处理的执行效率,而无需依赖于单机性能的改善,因此对单机的性能要求可以降低,有利于节约成本,而且可扩展性更好。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1为本申请实施例中一种区块链业务数据写入方法的流程示意图;图2为本申请实施例中第二种区块链业务数据写入方法的流程示意图;图3为本申请实施例中第三种区块链业务数据写入方法的流程示意图;图4为本申请实施例中区块链业务数据写入方法的实际场景应用示意图;图5为本申请实施例中一种区块链业务数据写入装置的结构示意图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。以下结合附图,详细说明本申请各实施例提供的技术方案。实施例1图1给出了本申请实施例的一种写入区块链业务数据的方法,具体包括:s101:获取多个待写入区块链的业务数据;s102:依据业务数据的业务类型和/或数据变更范围,确定业务数据归属的业务子集合;其中,属于不同业务子集合的业务数据间不具有交易依赖关系;s103:并行执行各业务子集合,以将执行的结果写入区块链。上述实施例中,在执行步骤s101获取了待写入区块链的业务数据后,可以依据业务数据的业务类型或数据变更范围,确定业务数据间是否具有交易依赖关系,进而可以依据业务数据间的交易依赖情况,将业务数据分入不同的业务子集合中。由于分属不同业务子集合的业务数据间没有交易依赖关系,因此不同的业务子集合可以并行执行,而不会影响数据库状态的一致性。采用本申请实施例提供的方案,采用并行执行业务子集合中业务数据的方式即可提高数据处理的执行效率,而无需依赖于单机性能的改善,因此对单机的性能要求可以降低,有利于节约成本,而且可扩展性更好。本实施例执行步骤s101获取多个业务数据后,可以形成由待执行的业务数据构成的待执行的业务集合。这一业务集合,可以由预设数据处理量和/或预设业务数据时间确定。具体来说,可以通过预设数据处理量确定需要在同一批执行的业务数据,这一预设数据处理量的具体数值可以根据允许写入区块链的数据的数量确定。例如,假设允许写入区块链的业务数据的数量为1000,则预设数据处理量可以设定得小于1000,例如800,以满足要求。在实际实施时,服务器每获取到800条业务数据即可形成一个待执行的业务集合供后续处理。在确定待执行的业务集合时,还可以通过预设业务数据时间来确定需要在同一批执行的业务数据。例如,将预设业务数据时间设定为1秒,则需要在同一批执行的业务数据为1秒内并发产生的业务数据。在执行步骤s103时,由于已将业务数据划分为没有交易依赖关系的多个业务子集合,因此可以采用多线程或者机器集群等方式并行执行各业务子集合,从而既满足数据库状态一致性的要求,又能够达到提高数据执行效率的目的。采用这种方式,无需依赖于单机性能的改善即可提高数据执行效率,对单机的性能要求可以降低,有利于节约成本,而且采用机器集群的方式,可扩展性更好。更具体地,在执行包含有业务数据的业务子集合时,由于被分入不同业务子集合的业务数据间不具有交易依赖关系,而被分入相同业务子集合的业务数据间具有交易依赖关系,因此,不同的业务子集合可以并行执行,以提高数据执行效率;而同一业务子集合内包含的各业务数据应串行执行,以保证数据库状态的一致性,具体地,业务数据与时间戳具有对应关系,则在执行某一业务子集合时,按照时间戳对应的时间顺序,串行执行该业务子集合中包含的业务数据。更进一步地,在执行每条业务数据时,按照交易验证、交易实施和数据入链的顺序进行,最终将执行的结果写入区块链。在执行步骤s102时,可以有多种不同的方式确定业务子集合,只要能够将有交易依赖关系的业务数据和没有交易依赖关系的业务数据区分开即可。具体地,可以依据业务数据的数据属性,确定业务数据归属的业务子集合;其中,数据属性与业务数据的业务类型和/或数据变更范围具有对应关系,数据属性用于反映所述业务数据的交易依赖关系。从而,通过从业务数据中提取的数据属性,即可将具有交易依赖关系的业务数据分入相同的业务子集合,将不具有交易依赖关系的业务数据分入不同的业务子集合,进而实现不同业务子集合的并行执行。更具体地,数据属性可以以业务数据中包含的标识字段的形式体现,也可以以业务数据携带的特征信息的形式体现。在依据数据属性确定业务数据的交易依赖关系时,可以通过判断是否包含有指定标识字段的方式,也可以通过提取业务数据的特征信息、进而判断特征信息是否满足预设条件的方式进行。本申请实施例中所称的业务数据间的交易依赖关系,可以体现为不同业务数据在执行时存在的业务关联性,例如,可以是时间顺序、业务对象或执行结果等方面的关联性。例如,若执行时间在后的业务数据的执行依赖于时间在后的业务数据的执行结果,或者不同业务数据的执行会影响到相同的数据状态,则可认为这两条业务数据间具有交易依赖关系,反之可以认为这两条业务数据间不具有交易依赖关系。以下将详细举例说明业务子集合的确定过程。(一)依据业务数据的业务类型确定业务子集合。本申请实施例中,可以依据业务数据的业务类型,确定业务子集合。具体地,可以将业务类型相同的业务数据分入相同的业务子集合,将业务类型不相同的业务数据分入不同的业务子集合。由于分属不同业务类型的业务数据间不存在交易依赖关系,因此,对于不同类型的业务数据而言,无论其执行顺序如何,都不会影响数据执行的结果。按照业务类型是否相同确定业务数据所属的业务子集合是否相同,就能够保证属于不同业务子集合的业务数据间不具有交易依赖关系,从而能够满足不同业务子集合间对业务数据进行并行处理的需要,有利于提高数据处理的执行效率。例如,合约类业务(又可称为交易)执行后只会变更相对应的合约数据,而转账类业务(又可称为交易)执行后会变更转账双方的账户金额数据。由此可见,这两类交易在执行时的先后顺序对于执行的结果并没有影响。因此,将两种不同类型的交易划分入不同的业务子集合,即可保证属于不同业务子集合的业务数据间不具有交易依赖关系,从而各业务子集合可以并行处理,而不会影响数据库状态的一致性。(二)依据业务数据的数据变更范围确定业务子集合。本申请所称的数据变更范围指执行业务数据所指向的对象。在本申请实施例中,可以依据业务数据的数据变更范围,将数据变更范围有交集的业务数据分入相同的业务子集合,将数据变更范围无交集的业务数据分入不同的业务子集合。依据业务数据的数据变更范围确定业务子集合,若不同业务数据的执行会影响到的数据范围有交集,则需要按照业务数据发生的顺序执行这些业务数据,否则会影响数据执行的结果。而若不同业务数据的执行会影响到的数据范围没有交集,则这些业务数据的执行顺序不会影响数据处理的结果。因此,根据业务数据的数据变更范围确定的业务子集合可以满足不同业务子集合间进行并行执行的需要,从而有利于提高数据处理的执行效率。具体地,将数据变更范围有交集的业务数据分入相同的业务子集合,将数据变更范围无交集的业务数据分入不同的业务子集合,可包括:遍历业务集合中各业务数据的数据变更范围;若第一业务数据的数据变更范围与第一业务子集合的数据变更范围有交集,则将第一业务数据添加进第一业务子集合;若第一业务数据的数据变更范围与第一业务子集合的数据变更范围无交集,则创建一个包含第一业务数据的第二业务子集合;其中,第一业务数据为业务集合中任一业务数据,第一业务子集合为业务子集合中任一业务子集合,第二业务子集合与第一业务子集合不相同。下面结合图2给出的流程示意图说明以上过程。s1021:判断是否已遍历业务集合中所有的业务数据,若是则结束,否则执行步骤s1022;s1022:在业务集合中任取一个业务数据tx;需要说明的是,业务数据tx通常可以在尚未分入业务子集合的业务数据中抽取产生,但若抽取的业务数据tx已经被分入业务子集合,则在后续步骤执行完毕时,该业务数据tx仍将被分入同样的业务子集合,不影响技术目的的达成;s1023:计算该业务数据tx的数据变更范围;s1024:判断业务数据tx的数据变更范围与已存在的业务子集合txb的数据变更范围是否有交集;s1025:若步骤s1024的判断结果为是,则将业务数据tx添加进业务子集合txb中;s1026:若步骤s1024的判断结果为否,则创建一个新的业务子集合txn,将业务数据tx添加进业务子集合txn中。需要说明的是,在业务子集合中包含的业务数据发生改变时,需要重新计算业务子集合的数据变更范围,可将业务子集合中包含的业务数据的数据变更范围的并集,作为该业务子集合的数据变更范围。例如,合约类业务的执行对象为合约id,在执行后会变更与合约id相对应的合约数据,合约id即可理解为该条业务数据的数据变更范围。若两条业务数据是针对同一合约id执行的,即可理解为这两条业务数据的数据变更范围存在交集,则这两条业务数据应分入相同的业务子集合中,按照业务数据对应的时间戳确定的先后顺序执行。而若两条业务数据是针对不同的合约id执行的,即可理解为这两条业务数据的数据变更范围不存在交集,则其执行时会变更与不同的合约id相对应的合约数据,因此,执行的先后顺序对于执行的结果没有影响,可以将这两条业务数据分入不同的业务子集合中,并行分发执行。再例如,转账类业务的执行对象为转账双方的账户,执行后会变更转账双方的账户金额数据,因此,转账类业务数据的数据变更范围可以理解为转账双方的账户。假设业务集合中包含以下五条业务数据:业务数据1:账户a转账至账户b,则业务数据1的数据变更范围可表达为(a,b);业务数据2:账户b转账至账户a,则业务数据2的数据变更范围可表达为(b,a);业务数据3:账户c转账至账户e,则业务数据3的数据变更范围可表达为(c,e);业务数据4:账户f转账至账户x,则业务数据4的数据变更范围可表达为(f,x);业务数据5:账户x转账至账户e,则业务数据5的数据变更范围可表达为(x,e)。由上可知,业务数据1与业务数据2的数据变更范围存在交集,业务数据3和业务数据5的数据变更范围存在交集,业务数据4和业务数据5的数据变更范围存在交集。因此,可以将包含有业务数据1~业务数据5的业务集合分为以下业务子集合:业务子集合1:包含业务数据1和业务数据2,数据变更范围为(a,b);业务子集合2:包含业务数据3、业务数据4和业务数据5,数据变更范围为(c,e,f,x)。由此可见,业务子集合1和业务子集合2所涉及到的数据变更范围没有交集,即使并行执行也不会影响执行结果,因此,业务子集合1和业务子集合2可以并行执行,以提高执行效率。而对于业务子集合1而言,业务数据1和业务数据2的数据变更范围有交集(此处甚至完全相同),这两个业务数据的执行有可能依赖于在其执行之前的业务数据,因此,需要按照这两个业务数据所对应的时间戳判断执行的先后顺序,按照时间顺序串行执行。对于业务子集合2而言也同样如此,例如,按照时间戳可以判断,应先执行业务数据4由账户f转账至账户x,后执行业务数据5账户x转账至账户e,则这个执行顺序不可并行,也不可颠倒,因为有可能执行业务数据5时账户x向账户e转账所需的资金依赖于执行业务数据4账户f向账户x的转账。需要说明的是,在遍历业务集合中各业务数据的数据变更范围时,既可以按照图2的示例中所示,采用执行步骤1022任取一个业务数据的方式进行,也可以依据各业务数据的时间戳,按照业务集合中各业务数据发生的时间顺序进行遍历。(三)依据业务数据的业务类型和数据变更范围确定业务子集合。在本申请实施例中,还可以将业务类型和数据变更范围结合起来,分阶段分层级确定业务子集合。在具体实现时,可以先依据数据变更范围进行划分,在此基础上再依据业务类型进行二次划分,也可以反过来。以下以先依据业务类型进行划分,再依据数据变更范围进行二次划分为例,说明依据业务数据的业务类型和数据变更范围,确定业务子集合的实施过程,可具体包括:先执行步骤s1027,依据业务数据的业务类型,确定业务数据所属的i级子集合;再依据i级子集合中业务数据的数据变更范围,确定各业务数据所属的ⅱ级子集合,以ⅱ级子集合作为业务子集合;其中,ⅱ级子集合为i级子集合的子集。其中,首先按业务类型对于业务集合进行第一级划分,确定各业务数据所属的i级子集合,可进一步包括:依据业务集合中业务数据的业务类型,将业务类型相同的业务数据分入相同的i级子集合,将业务类型不相同的业务数据分入不同的i级子集合。由于业务数据的业务类型非常有限,仅仅按照业务类型确定可以并行执行的业务子集合,虽能在一定程度上提高执行效率,但对于并发量大等可能大量产生业务数据的情况可能无法取得满意的效果。因此,可以在此基础上依据数据变更范围,对依据业务类型确定出的i级子集合进行第二级划分,将经过第二级划分得到的ⅱ级子集合作为业务子集合进行并行处理,以期进一步提高执行效率。具体地,依据i级子集合中业务数据的数据变更范围,确定各业务数据所属的ⅱ级子集合,可包括:依据i级子集合中的业务数据的数据变更范围,将数据变更范围有交集的业务数据分入相同的ⅱ级子集合,将数据变更范围无交集的业务数据分入不同的ⅱ级子集合。更进一步地,依据i级子集合中的业务数据的数据变更范围,将数据变更范围有交集的业务数据分入相同的ⅱ级子集合,将数据变更范围无交集的业务数据分入不同的ⅱ级子集合,参见图3所示,可具体包括:s1028:遍历第一i级子集合中各业务数据的数据变更范围;s1029:判断第二业务数据的数据变更范围与第一ⅱ级子集合的数据变更范围是否有交集;s1030:若第二业务数据的数据变更范围与第一ⅱ级子集合的数据变更范围有交集,则将第二业务数据添加进第一ⅱ级子集合;s1031:若第二业务数据的数据变更范围与第一ⅱ级子集合的数据变更范围无交集,则创建一个包含第二业务数据的第二ⅱ级子集合;其中,第一i级子集合为i级子集合中任一i级子集合,第二业务数据为第一i级子集合中任一业务数据,第一ⅱ级子集合为第一i级子集合中任一ⅱ级子集合,第二ⅱ级子集合与第一ⅱ级子集合不相同。从i级子集合中划分出ⅱ级子集合的过程,与第(二)项中描述的从业务集合中划分出业务子集合的过程和原理均相似,此处不再赘述。在采用如上实施过程进行业务子集合的划分后,即可并行执行各业务子集合,完成区块链业务数据的执行过程,以便将执行的结果写入区块链。参见图4所示,业务数据编排模块用于实现业务子集合的划分。业务数据执行集群并行地执行不同业务子集合中的业务数据,在业务子集合内部则依据业务数据对应的时间戳串行执行,然后将执行的结果写入区块链中,从而既能够保证区块链数据库状态的一致性,又能够降低数据处理执行效率的提高所需的成本,并提高可扩展性。在将执行的结果写入区块链数据块时,可将业务数据执行集群执行业务数据的结果汇总后写入区块链,具体可由集群中指定的某一计算机完成执行结果的汇总。在现有技术中,拿以太坊应用举例,业务执行的时候根据接收业务数据的时间戳给业务数据排序,然后按照时间顺序串行的执行,将执行每笔业务数据后的账户信息进行更新。本申请实施例中,在接收到待写入区块链的业务数据(即区块链接收到的交易数据)后,先依据业务类型和/或数据变更范围对业务数据进行分类,形成业务子集合,使得不具有交易依赖关系的业务数据被分入不同的业务子集合,具有交易依赖关系的业务数据被分入相同的业务子集合。业务数据的划分和业务子集合的确定可以由图4示例中的业务数据编排模块实现。业务数据编排模块完成对业务数据的划分后,可将各业务子集合分发到业务数据执行集群中的各计算机中进行数据处理,业务数据执行集群中各计算机仅执行被分配到的业务子集合中的业务数据,按照验证-实施-入链的过程进行,将执行的结果写入区块链。在实际实施时,业务数据编排模块与业务数据执行集群也可以合并理解为业务执行集群,实现业务数据的接收、分类、分发和执行的功能,并将业务数据的执行结果进行汇总后写入区块链。实施例2本申请实施例还提供了另一种写入区块链业务数据的方法,包括:获取多个待写入区块链的业务数据;依据所述业务数据的数据变更范围,确定不具有交易依赖关系的第一业务数据;其中,所述第一业务数据间不具有交易依赖关系;并行执行各所述第一业务数据,以将执行的结果写入所述区块链。具体地,在确定第一业务数据时,可以依据所述业务数据的数据变更范围,将与其他任一业务数据的数据变更范围无交集的业务数据确定为不具有交易依赖关系的所述第一业务数据。假设获取到的多条业务数据如下:数据编号业务类型数据变更范围备注1合约类ida执行将变更ida的数据2合约类ida执行将变更ida的数据3合约类idb执行将变更idb的数据4合约类idc执行将变更idc的数据5转账类账户x、账户y执行将变更账户x和账户y的数据6转账类账户z、账户d执行将变更账户z和账户d的数据7转账类账户x、账户m执行将变更账户x和账户m的数据8转账类账户n、账户l执行将变更账户n和账户l的数据则依据业务数据的数据变更范围,可以看出,业务数据3、4、6、8与其他任一业务数据的数据变更范围都没有交集,因此,这几条业务数据的执行顺序不会影响到数据库状态的一致性,从而采用并行执行这几条业务数据的方式,有利于提高数据处理的执行效率,从而能够降低数据处理执行效率的提高所需的成本,并提高可扩展性。实施例3参见图5所示,本申请提供的一种写入区块链业务数据的装置,可包括:获取模块101,获取多个待写入区块链的业务数据;业务子集合确定模块102,依据业务数据的业务类型和/或数据变更范围,确定业务数据归属的业务子集合;其中,属于不同业务子集合的业务数据间不具有交易依赖关系;数据执行模块103,并行执行各业务子集合,以将执行的结果写入所述区块链。本实施例是与实施例1中的写入区块链业务数据的方法相对应的装置,实施例1中的所有阐释均适用于本实施例,此处不再赘述。实施例4本申请还提供了一种区块链业务数据的业务子集合确定方法,基于该方法对业务数据进行合理划分,使得不具有交易依赖关系的业务数据可以并行执行,从而降低数据处理执行效率的提高所需的成本,并提高可扩展性。该方法包括:在获取多个待执行的业务数据之后,依据业务数据的业务类型和/或数据变更范围,确定业务数据归属的业务子集合,以便并行执行各业务子集合;其中,属于不同业务子集合的业务数据间不具有交易依赖关系。具体地,依据业务数据的业务类型和/或数据变更范围,确定业务数据归属的业务子集合,可包括:依据业务数据的数据属性,确定业务数据归属的业务子集合;其中,数据属性与业务数据的业务类型和/或数据变更范围具有对应关系,数据属性用于反映业务数据的交易依赖关系。进一步地,依据业务数据的业务类型,确定业务数据归属的业务子集合,可具体包括:依据业务数据的业务类型,将业务类型相同的业务数据分入相同的业务子集合,将业务类型不相同的业务数据分入不同的业务子集合。依据业务数据的数据变更范围,确定业务数据归属的业务子集合,可具体包括:依据业务数据的数据变更范围,将数据变更范围有交集的业务数据分入相同的业务子集合,将数据变更范围无交集的业务数据分入不同的业务子集合。依据业务数据的业务类型和数据变更范围,确定业务数据归属的业务子集合,可进一步具体包括:依据业务数据的业务类型,确定业务数据所属的i级子集合;依据i级子集合中业务数据的数据变更范围,确定各业务数据所属的ⅱ级子集合,以ⅱ级子集合作为业务子集合;其中,ⅱ级子集合为i级子集合的子集。本实施例的具体实施与实施例1中步骤s102相对应,实施例1中的相关描述均适用于本实施例,此处不再赘述。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ri级子集合m)和/或非易失性内存等形式,如只读存储器(rom)或闪存(fli级子集合shri级子集合m)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pri级子集合m)、静态随机存取存储器(sri级子集合m)、动态随机存取存储器(dri级子集合m)、其他类型的随机存取存储器(ri级子集合m)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(tri级子集合nsitorymedii级子集合),如调制的数据信号和载波。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1