一种本地数据库重构方法、设备和存储介质技术

技术编号:21298663 阅读:35 留言:0更新日期:2019-06-12 07:42
本发明专利技术提供一种本地数据库重构方法、设备和存储介质,该方法包括:检测本地数据库的版本是否更新:是,则以区块高度为序重新执行第一区块链上的所有区块的交易以重新构建本地数据库。本发明专利技术通过为本地数据库配置版本号,检测数据库版本号是否有更新,如果有更新,则按照区块高度从低到高的顺序重新执行区块中的交易以重构本地数据库,从而保证本地数据库中均为当前区块链版本的实际结果同时大大提高了重新构建数据库的效率。

A Local Database Reconfiguration Method, Equipment and Storage Media

The invention provides a local database reconstruction method, device and storage medium. The method includes detecting whether the version of the local database is updated or not. Yes, the transaction of all blocks on the first block chain is re-executed in order of block height to reconstruct the local database. By configuring the version number for the local database, the invention detects whether the version number of the database is updated or not. If there is an update, the transaction in the block is re-executed in order of the block height from low to high in order to reconstruct the local database, thus ensuring that the local database is the actual result of the current block chain version and greatly improving the efficiency of rebuilding the database.

【技术实现步骤摘要】
一种本地数据库重构方法、设备和存储介质
本申请涉及区块链
,具体涉及一种本地数据库重构方法、设备和存储介质。
技术介绍
随着区块链版本的迭代,本地数据库和状态数据库也应该不断有更新,然而区块链节点分布众多,版本往往不会及时更新,然而本地数据库不进行共识,如果版本更新不及时也不会影响数据存入,然而在升级版本后,本地数据库会有和当前版本所记录数据结构不一致的情况,现有更新本地数据库的方案为删掉本地数据库和状态数据库,重新从区块高度为0开始同步数据。现有的方案缺陷在于:由于区块高度动辄几百万高度,还会随时增长,删除数据库后重新在系统中同步数据的方法耗时很长,效率低下。
技术实现思路
鉴于现有技术中的上述缺陷或不足,期望提供一种效率高的,仅需要重构本地数据库的重构方法、设备和存储介质。第一方面,本专利技术提供一种本地数据库的重构方法,包括:检测本地数据库的版本是否更新:是,则以区块高度为序重新执行第一区块链上的所有区块的交易以重新构建本地数据库。进一步,重新计算第一区块链上的所有区块的交易以重新构建本地数据库包括:删除本地数据库,并按照区块高度从低到高的顺序获取并执行各区块的交易;将计算执行各交易后生成的若干数据信息存储在本地数据库中以重新构建本地数据库。进一步,上述方法还包括:若执行各交易过程中发生中断,系统重启后从中断的区块高度后继续执行后续各区块。第二方面,本专利技术还提供一种设备,包括一个或多个处理器和存储器,其中存储器包含可由该一个或多个处理器执行的指令以使得该一个或多个处理器执行根据本专利技术各实施例提供的本地数据库重构方法。第三方面,本专利技术还提供一种存储有计算机程序的存储介质,该计算机程序使计算机执行根据本专利技术各实施例提供的本地数据库重构方法。本专利技术诸多实施例提供的一种本地数据库重构方法、设备和存储介质通过为本地数据库配置版本号,检测数据库版本号是否有更新,如果有更新,则按照区块高度从低到高的顺序重新执行区块中的交易以重构本地数据库,大大提高了重构数据库的效率。进一步,本专利技术还可以只针对其中某一种合约更新时针对该合约存储的数据进行重新构建,对其他没有更新的合约数据则不做处理,有针对性的进行数据库更行,进一步减少了重构数据库的时间。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:图1为本专利技术一实施例提供的一种本地数据库重构方法的流程图。图2为图1所述方法的一优选实施方式的流程图。图3为图1或图2所示方法的一优选实施方式的流程图。图4为本专利技术一实施例提供的一种设备的结构示意图。具体实施方式下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关专利技术,而非对该专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与专利技术相关的部分。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。本专利技术提供一种本地数据库重构的技术方案。在本专利技术中,区块链数据库包括本地数据库和状态数据库,状态数据库中存储交易的关键信息,通过区块链共识实现更新,在区块高度正常增长的情况下,状态数据库存储的是当前版本的实际结果,一般不需要重新构建;本地数据库用于存储记录一些交易的辅助信息,用来辅助用户查询需要的信息,如供列表查询用户的资产,该用户的买单时间,挂单时间等相关信息,这些信息不需要通过共识,可以直接记录在本地数据库即可;本地数据库以key-value的形式对数据信息进行存储,查询时通过提供key值进行数据库查询。本专利技术的技术方案中,为本地数据库配置文件配置版本号,区块链版本升级时(如优化了某项功能或者增加了某项功能等),会有相应的key值更新或增加,当有key更新或者增加时,就更新配置文件版本号。图1为本专利技术一实施例提供的一种本地数据库重构方法的流程图。如图1所示,在本实施例中,本专利技术提供一种本地数据库重构方法,包括:S11、检测本地数据库的版本是否更新:是,则以区块高度为序重新执行第一区块链上的所有区块的交易以重新构建本地数据库。具体地,系统重新启动后,会检测判断配置文件当前的版本号b与存储在本地数据库中的版本号a(数据库中有专门的key值记录版本号信息,重启不消失)是否有更新,若有,则更新本地数据库中的版本号a为当前的版本号b,并删除本地数据库存储的第一区块链上的交易键值信息,并按照区块高度从低到高的顺序重新执行第一区块链上各区块的交易,并将执行交易后生成的若干辅助信息重新存储到本地数据库。进一步,上面所述的本地数据库的版本更新,可以是配置文件的版本号增加,也可以是按照其他定义方式进行改变版本号,只要是符合节点认定规则能实现新旧版本的判定即可。在更多实施例中,本地数据库是否重新构建,即是否重新执行区块链上的交易以重新生成本地数据库,与数据库代码有更新没有关系,如果本地数据库版本不变,即使代码改变,系统重新启动也不会重新执行所有区块;即使代码不改变,若本地数据库版本改变,系统重启后也会重新执行所有区块。上述实施例通过检测本地数据库的版本是否有更新以对本地数据库重新构建,实现了单独更新本地数据库,不需要从0开始重新从网络同步数据,也不需要更新状态数据库,大大节省了版本升级后重新构建数据库的时间。图2为图1所述方法的一优选实施方式的流程图。如图2所示,在一优选实施例中,上述方法还包括:S12、若执行各交易过程中发生中断,系统重启后从中断的区块高度后继续执行后续各区块。具体地,系统在重新执行第一区块链上区块中的交易时,会在执行完某个区块交易的区块高度信息存储到本地数据库中,若在执行过程因为某些原因(如网络中断,停电等情况)发生中断,则系统重新启动后,则将从存储在本地数据库中的最后一个区块高度开始继续执行后面区块高度的区块交易,直到达到状态数据库中记录的区块高度。图3为图1或图2所示方法的一优选实施方式的流程图。如图3所示,在一优选实施例中,重新计算第一区块链上的区块的交易之前还包括:S111、获取本地数据库中有更新的合约名称;重新计算第一区块链上的区块的交易以重新构建本地数据库,包括:S112、删除本地数据库中存储的关于合约名称对应合约的若干数据信息,根据合约名称获取并执行与对应合约相关的区块交易以重新构建本地数据库。具体地,系统重启后,检测本地数据库配置文件版本更新时判断是否有合约的更新,若有,则获取更新的合约名称,根据合约名称删除本地数据库中存储的该合约名称对应的合约的相关数据,然后从区块高度为0的区块开始执行与该合约有关的交易,将执行后的若干交易数据存储到本地数据库中。上述实施例中通过仅构建某一种或几种更新合约的本地数据库,对于其他未更新的合约数据则不做处理,这样进一步提高了重新构建数据库的速度。图4为本专利技术一实施例提供的一种设备的结构示意图。如图4所示,作为另一方面,本申请还提供了一种设备300,包括一个或多个中央处理单元(CPU)301,其可以根据存储在只读存储器(ROM)302中的程序或者从存储部分308加载到随机访问存储器(RAM)303中的程序而执行各种适当的动作和处理。在RAM303中,还存储有设备300操作所需的各种程序和数据。C本文档来自技高网...

【技术保护点】
1.一种本地数据库重构方法,其特征在于,包括:检测本地数据库的版本是否更新:是,则以区块高度为序重新执行第一区块链上的区块的交易以重新构建本地数据库。

【技术特征摘要】
1.一种本地数据库重构方法,其特征在于,包括:检测本地数据库的版本是否更新:是,则以区块高度为序重新执行第一区块链上的区块的交易以重新构建本地数据库。2.根据权利要求1所述的方法,其特征在于,所述重新计算第一区块链上的区块的交易以重新构建本地数据库包括:删除本地数据库,按照区块高度从低到高的顺序获取并执行各所述区块的交易;将计算执行各所述交易后生成的若干数据信息存储在本地数据库中以重新构建所述本地数据库。3.根据权利要求2所述的方法,其特征在于,还包括:若执行各所述交易过程中发生中断,系统重启后从中断的区块高度后继续执行后续各所述区块。4.根据权利要求2或3所述的方法,其特征在于,在...

【专利技术属性】
技术研发人员:马登极王志文吴思进
申请(专利权)人:杭州复杂美科技有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1