数据存储方法、装置、系统和存储介质与流程

文档序号:20113114发布日期:2020-03-17 19:26阅读:116来源:国知局
数据存储方法、装置、系统和存储介质与流程
本发明涉及数据处理
技术领域
,特别涉及一种数据存储方法、装置、系统和存储介质。
背景技术
:在相关技术中,基于区块链的应用在同步数据到区块链的过程中会同时写入一份数据到数据库中,以便于在页面能够快速展示相关数据。数据库中会存储当前写入的数据在区块链中的标识,用于后续验证当前数据是否被篡改。在一些基于联盟链的部署的区块链应用场景中,存在多个参与方以及多个区块链节点,并且每个参与方的安全等级比较高,需要独立部署区块链节点。每个参与方都需要独立部署应用,并将同步本地所对应的区块链节点的数据。技术实现要素:发明人经过分析后发现,相关技术在将数据上传到区块链的同时在本地数据库进行备份,因此仅能够存储自身上传的数据、而无法获得区块链系统内其他节点的数据。因此无法保证数据库中数据的完整性。本发明实施例所要解决的一个技术问题是:如何提高区块链数据同步的完整性。根据本发明一些实施例的第一个方面,提供一种数据存储方法,包括:通过本地对应的区块链节点,将具有预设格式的数据上传到区块链中;从本地对应的区块链节点中下载数据,其中,下载的数据包括本地对应的区块链节点上传的数据和其他区块链节点上传的、具有预设格式的数据;将下载的数据存储到数据库中。在一些实施例中,数据存储方法还包括:根据获取的数据的业务类型,将获取的数据转换为业务类型对应的、具有预设格式的数据,其中,具有预设格式的数据中包括业务类型的标识。在一些实施例中,具有预设格式的数据采用json格式表示。在一些实施例中,将下载的数据存储到数据库中包括:根据预设格式解析下载的数据,并将解析结果存储到数据库中。在一些实施例中,具有预设格式的数据包括一个或多个预设的字段以及每个字段的值;根据预设格式解析下载的数据,并将解析结果存储到数据库中包括:根据预设字段与数据库的数据表中字段之间的对应关系解析下载的数据,获得数据表中各个字段对应的值;根据预设的插入语句指令的模板以及数据表中各个字段对应的值,生成下载的数据对应的插入语句;在数据库中执行下载的数据对应的插入语句。在一些实施例中,从本地对应的区块链节点中下载数据包括:获取已下载数据对应的区块高度;确定已下载数据对应的区块高度加1所对应的区块,作为待下载区块;从待下载区块中获取各个交易记录中的数据;将已下载数据对应的区块高度更新为原值加1后的结果。在一些实施例中,数据存储方法还包括:从本地对应的区块链节点中获取区块链当前的区块高度,以便在区块链当前的区块高度大于已下载数据对应的区块高度的情况下,确定已下载数据对应的区块高度加1所对应的区块,作为待下载区块。在一些实施例中,从待下载区块中获取各个交易记录中的数据包括:根据待下载区块中交易记录的数量建立多个并发任务;通过建立的并发任务获取待下载区块中各个交易记录的数据。在一些实施例中,区块链节点是联盟链中的区块链节点,每个区块链节点对应一个基于区块链的网关,基于区块链的网关用于通过相应的区块链节点,将具有预设格式的数据上传到区块链中。根据本发明一些实施例的第二个方面,提供一种数据存储装置,包括:上传模块,被配置为通过本地对应的区块链节点,将具有预设格式的数据上传到区块链中;下载模块,被配置为从本地对应的区块链节点中下载数据,其中,下载的数据包括本地对应的区块链节点上传的数据和其他区块链节点上传的、具有预设格式的数据;存储模块,被配置为将下载的数据存储到数据库中。根据本发明一些实施例的第三个方面,提供一种数据存储装置,包括:存储器;以及耦接至存储器的处理器,处理器被配置为基于存储在存储器中的指令,执行前述任意一种数据存储方法。根据本发明一些实施例的第四个方面,提供一种数据存储系统,包括:多个前述任意一种数据存储装置;以及多个区块链节点,每个区块链节点对应一个或多个数据存储装置。根据本发明一些实施例的第五个方面,提供一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现前述任意一种数据存储方法。上述发明中的一些实施例具有如下优点或有益效果:由于从区块链节点中下载数据,因此可以获得系统中的完整数据。并且,由于在数据上传阶段就对上传数据的格式进行了统一,因此从区块链节点中下载的数据也具有预设的格式,使得下载的完整数据能够被解析和处理。这种上传、下载独立处理的方式在保证数据完整性的同时,还能够提高数据上传、下载的效率。通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1示出了根据本发明一些实施例的数据存储方法的流程示意图。图2示出了根据本发明一些实施例的数据下载方法的流程示意图。图3示出了根据本发明一些实施例的数据解析方法的流程示意图。图4示出了根据本发明一些实施例的数据存储装置的结构示意图。图5示出了根据本发明一些实施例的数据存储系统的结构示意图。图6示出了根据本发明另一些实施例的数据存储装置的结构示意图。图7示出了根据本发明又一些实施例的数据存储装置的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。图1示出了根据本发明一些实施例的数据存储方法的流程示意图。如图1所示,该实施例的数据存储方法包括步骤s102~s106。在步骤s102中,通过本地对应的区块链节点,将具有预设格式的数据上传到区块链中。区块链中存储的数据具有统一的预设格式,即不同的数据上传方通过各自对应的区块链节点上传数据前,都需要将数据转换为统一格式。在一些实施例中,根据获取的数据的业务类型,将获取的数据转换为业务类型对应的、具有预设格式的数据,其中,具有预设格式的数据中包括业务类型的标识。例如,待上传的数据是用户在前端网页通过填写网页中的输入框获得的,则可以从后台服务器中获取前端传输的、各个输入框中用户输入的值,并根据输入框的标识与预设格式中字段之间的对应关系来生成具有预设格式的数据。在一些实施例中,数据的类型可以有多种,例如用户数据、订单数据等等。每种数据类型可以对应一种预设格式的数据。在一些实施例中,具有预设格式的数据采用json(javascriptobjectnotation,javascript对象简谱)格式表示。一个示例性的预设格式如下:在步骤s104中,从本地对应的区块链节点中下载数据,其中,下载的数据包括本地对应的区块链节点上传的数据和其他区块链节点上传的、具有预设格式的数据。数据的下载过程是与上传过程独立的。在区块链系统中,各个区块链节点共同维护一个“账本”,从而区块链节点除了具有自身上传的数据以外,还具有其他区块链节点上传的数据。从而,可以从区块链节点中获取完整的数据。区块链由区块构成。区块是在区块链网络上承载交易数据的数据包,是一种被标记上时间戳和前一个区块的哈希值的数据结构,区块链节点经过网络的共识机制验证区块、并确认区块中的内容。在步骤s106中,将下载的数据存储到数据库中。在一些实施例中,根据预设格式解析下载的数据,并将解析结果存储到数据库中。上述实施例由于从区块链节点中下载数据,因此可以获得系统中的完整数据。并且,由于在数据上传阶段就对上传数据的格式进行了统一,因此从区块链节点中下载的数据也具有预设的格式,使得下载的完整数据能够被解析和处理。这种上传、下载独立处理的方式在保证数据完整性的同时,还能够提高数据上传、下载的效率。下面参考图2描述下载数据的实施例。图2示出了根据本发明一些实施例的数据下载方法的流程示意图。如图2所示,该实施例的数据下载方法包括步骤s202~s208。在步骤s202中,获取已下载数据对应的区块高度。区块高度通常是指区块链中区块的数量,已下载数据则表示已下载的数据对应的区块数量。已下载数据对应的区块高度可以记录在本地。在一些实施例中,可以先从本地对应的区块链节点中获取区块链当前的区块高度,即当前区块链中的区块数量,并判断区块链当前的区块高度是否大于已下载数据对应的区块高度。如果大于,则开始后续的下载过程;否则说明在上一次下载后,区块链中没有新的数据上传,因此不执行下载过程。在步骤s204中,确定已下载数据对应的区块高度加1所对应的区块,作为待下载区块。在步骤s206中,从待下载区块中获取各个交易记录中的数据。一个区块中包括多笔“交易记录”。在区块链技术中,区块中的一条数据常常被称为一条“交易记录”,但是其记载的内容可以是与交易相关的信息、也可以是与交易无关的信息。在一些实施例中,根据待下载区块中交易记录的数量建立多个并发任务;通过建立的并发任务获取待下载区块中各个交易记录的数据。从而,当一个区块中的数据量较大时,可以通过并发的方式批量地下载数据。在步骤s208中,将已下载数据对应的区块高度更新为原值加1后的结果。然后,可以回到步骤s204,直到已下载数据对应的区块高度等于区块链当前的区块高度。通过上述实施例的方法,可以按照区块链中区块的生成顺序依次下载数据,从而可以完整、高效地获得系统中的全量数据。下面参考图3描述对下载的数据进行解析的实施例。图3示出了根据本发明一些实施例的数据解析方法的流程示意图。如图3所示,该实施例的数据解析方法包括步骤s302~s306。在步骤s302中,根据预设字段与数据库的数据表中字段之间的对应关系解析下载的数据,获得数据表中各个字段对应的值。在一些实施例中,可以使用正则匹配表达式等字符串匹配方法来获取下载数据中各个字段的值,例如对于数据{id:0001,type:1,time:201901011200,content:{name:a,age:21}},可以通过识别“id”、“type”、“time”、“name”、“age”这些字段后的内容,获得各个字段的值。表1示出了预设格式中的字段与数据表user中的字段之间的对应关系。表1预设格式中的字段数据表中的字段iduseridtimetranstimenameusernameageuserage从而,可以获知数据表user中相应字段的值。在步骤s304中,根据预设的插入语句指令的模板以及数据表中各个字段对应的值,生成下载的数据对应的插入语句。例如,插入语句指令的模板为“insertintouser(userid,transtime,username,userage)values(<v1>,<v2>,<v3>,<v4>);”,<v1>、<v2>、<v3>、<v4>分别表示相应的值。则根据该模板生成的插入语句例如为“insertintouser(userid,transtime,username,userage)values(0001,201901011200,a,21);”。在步骤s306中,在数据库中执行下载的数据对应的插入语句。从而,可以将下载的数据中的信息存储到数据库中。通过上述实施例的方法,可以根据预设格式对下载的数据进行解析,然后生成相应的插入语句并执行,从而可以自动地完成数据的解析和存储过程,提高了数据存储的效率。下面参考图4描述本发明数据存储装置的实施例。图4示出了根据本发明一些实施例的数据存储装置的结构示意图。如图4所示,该实施例的数据存储装置400包括:上传模块4100,被配置为通过本地对应的区块链节点,将具有预设格式的数据上传到区块链中;下载模块4200,被配置为从本地对应的区块链节点中下载数据,其中,下载的数据包括本地对应的区块链节点上传的数据和其他区块链节点上传的、具有预设格式的数据;存储模块4300,被配置为将下载的数据存储到数据库中。在一些实施例中,存储装置400还包括:数据转换模块4400,被配置为根据获取的数据的业务类型,将获取的数据转换为业务类型对应的、具有预设格式的数据,其中,具有预设格式的数据中包括业务类型的标识。在一些实施例中,具有预设格式的数据采用json格式表示。在一些实施例中,存储模块4300进一步被配置为根据预设格式解析下载的数据,并将解析结果存储到数据库中。在一些实施例中,具有预设格式的数据包括一个或多个预设的字段以及每个字段的值;存储模块4300进一步被配置为根据预设字段与数据库的数据表中字段之间的对应关系解析下载的数据,获得数据表中各个字段对应的值;根据预设的插入语句指令的模板以及数据表中各个字段对应的值,生成下载的数据对应的插入语句;在数据库中执行下载的数据对应的插入语句。在一些实施例中,下载模块4200进一步被配置为获取已下载数据对应的区块高度;确定已下载数据对应的区块高度加1所对应的区块,作为待下载区块;从待下载区块中获取各个交易记录中的数据;将已下载数据对应的区块高度更新为原值加1后的结果。在一些实施例中,下载模块4200进一步被配置为从本地对应的区块链节点中获取区块链当前的区块高度,以便在区块链当前的区块高度大于已下载数据对应的区块高度的情况下,确定已下载数据对应的区块高度加1所对应的区块,作为待下载区块。在一些实施例中,下载模块4200进一步被配置为根据待下载区块中交易记录的数量建立多个并发任务;通过建立的并发任务获取待下载区块中各个交易记录的数据。下面参考图5描述本发明数据存储系统的实施例。图5示出了根据本发明一些实施例的数据存储系统的结构示意图。如图5所示,该实施例的数据存储系统50包括:多个数据存储装置510;以及多个区块链节点520,每个区块链节点对应一个或多个数据存储装置510。在一些实施例中,区块链节点520是联盟链中的区块链节点,每个区块链节点520对应一个基于区块链的网关,基于区块链的网关中包括数据存储装置510。联盟链是指由指定若干机构共同控制共识机制的区块链。图6示出了根据本发明另一些实施例的数据存储装置的结构示意图。如图6所示,该实施例的数据存储装置60包括:存储器610以及耦接至该存储器610的处理器620,处理器620被配置为基于存储在存储器610中的指令,执行前述任意一个实施例中的数据存储方法。其中,存储器610例如可以包括系统存储器、固定非易失性存储介质等。系统存储器例如存储有操作系统、应用程序、引导装载程序(bootloader)以及其他程序等。图7示出了根据本发明又一些实施例的数据存储装置的结构示意图。如图7所示,该实施例的数据存储装置70包括:存储器710以及处理器720,还可以包括输入输出接口730、网络接口740、存储接口750等。这些接口730,740,750以及存储器710和处理器720之间例如可以通过总线760连接。其中,输入输出接口730为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口740为各种联网设备提供连接接口。存储接口750为sd卡、u盘等外置存储设备提供连接接口。本发明的实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现前述任意一种数据存储方法。本领域内的技术人员应当明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解为可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1