一种基于收据的数据存储方法、装置及设备制造方法及图纸

技术编号:22330045 阅读:18 留言:0更新日期:2019-10-19 12:16
公开了一种基于收据的数据存储方法、装置及设备。通过本说明书实施例所提供的方案,在接收到用户需要存储的数据记录时,根据待存储数据记录中的业务属性,获取同一业务属性下前一数据记录的哈希值,将前一数据记录的哈希值写入待存储数据记录的收据中,并将待存储数据记录和收据写入同一数据块中,实现用户数据记录之间的相互关联。

A data storage method, device and equipment based on receipt

【技术实现步骤摘要】
一种基于收据的数据存储方法、装置及设备
本说明书实施例涉及信息
,尤其涉及一种基于收据的数据存储方法、装置及设备。
技术介绍
在块链式的账本中,同一业务属性(例如,同一用户名、同一项目名等等)相关的数据记录被分散的存储于各数据块上,难以体现数据记录之间的相关性和连续性。基于此,需要一种更有利于体现数据之间相关性的数据存储方案。
技术实现思路
本申请实施例的目的是提供一种有利于体现数据之间相关性的数据存储方案。为解决上述技术问题,本申请实施例是这样实现的:一种基于收据的数据存储方法,应用于以块链式账本存储数据的中心化的数据库服务端中,所述块链式账本中的数据块包括块头和块体,所述方法包括:获取包含业务属性的待存储数据记录,确定所述待存储数据记录的执行信息;在所述块链式账本中,获取包含同一业务属性的前一数据记录;确定所述前一数据记录的哈希值,生成包含所述哈希值和执行信息的收据记录;将所述待存储数据记录和收据记录写入所述块链式账本的同一块体中。对应的,本说明书实施例还提供一种基于收据的数据存储装置,应用于以块链式账本存储数据的中心化的数据库服务端中,所述块链式账本中的数据块包括块头和块体,所述方法包括:第一获取模块,获取包含业务属性的待存储数据记录,确定所述待存储数据记录的执行信息;第二获取模块,在所述块链式账本中,获取包含同一业务属性的前一数据记录;生成模块,确定所述前一数据记录的哈希值,生成包含所述哈希值和执行信息的收据记录;写入模块,将所述待存储数据记录和收据记录写入所述块链式账本的同一块体中。通过本说明书实施例所提供的方案,在接收到用户需要存储的数据记录时,根据待存储数据记录中的业务属性,获取同一业务属性下前一数据记录的哈希值,将前一数据记录的哈希值写入待存储数据记录的收据中,并将待存储数据记录和收据写入同一数据块中,实现用户数据记录之间的相互关联,从而日后可以从存储的数据块中进行链路式的查询或者验证,提高用户体验。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。附图说明为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。图1为本说明书实施例所涉及的系统架构示意图;图2是本说明书实施例提供的一种基于收据的数据存储方法的流程示意图;图3为本说明书实施例所提供的收据记录的生成方式的示意图;图4为本说明书实施例所提供的数据块块头和块体的格式示意图;图5为本说明书实施例提供的一种数据记录的索引创建方法的流程示意图;图6是本说明书实施例提供的一种基于收据的数据存储装置的结构示意图;图7是用于配置本说明书实施例方法的一种设备的结构示意图。具体实施方式为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。在实际应用中,数据库服务端面向的常常为各种机构,各机构则可以将它们与第三方用户(包括其它机构或者个人)之间所产生的数据记录在数据库服务端进行存储。如图1所示,图1为本说明书实施例所涉及的系统架构示意图。在该示意图中,一个企业机构可以面向多名用户,而每个用户均可以通过其对应的企业机构向数据库服务端进行查询。例如,数据库服务端对接的机构是某金融产品公司,数据记录可以是个人用户在该金融产品公司的理财记录;或者,对接的机构可以是政府部门,其中的数据记录是政府部门对于该部门所管理的公共项目的开销明细;或者,数据库服务端对接的机构是某个医院,其中的数据记录是病人的病历;或者,数据库服务端对接的机构是第三方支付机构,数据记录可以是个人用户通过该机构的支付记录,等等。对于用户而言,其数据记录通常是分散式的存储在多个数据块中的。例如,医院对于所有病人的病历记录按照时间产生的顺序,依次上传。则同一用户的不同病历记录可能就被分散的存储于不同的数据块中。基于此,本说明书实施例提供一种块链式账本中的数据存储方案,以体现各数据记录之间的相关性。以下结合附图,详细说明本说明书各实施例提供的技术方案。如图2所示,图2是本说明书实施例提供的一种基于收据的数据存储方法的流程示意图,该流程具体包括如下步骤:S201,获取包含业务属性的待存储数据记录,确定所述待存储数据记录的执行信息。在每个与数据库服务端对接的机构中,所述业务属性在所述对接机构中,一般而言是唯一存在的,业务属性基于不同的业务场景,可以包括用户名、用户身份证号、驾照编号、手机号、项目唯一编号等等。例如,对于第三方支付机构而言,数据记录是用户的消费记录,此时的业务属性即为用户标识(包括手机号、身份证号、用户名等等),或者对该用户标识进行哈希算法所得到的哈希值;或者,对于政府机构而言,数据记录为多个公共项目的开销流水,则此时的业务属性可以为每个项目的唯一编号。所述执行信息包括待存储数据记录在该块链式账本中的全局序列号、时间戳以及执行结果等等。容易理解,在中心化的数据库服务端中,由于无需共识即可存储,从而对于数据记录的执行结果总是成功。S203,在所述块链式账本中,获取包含同一业务属性的前一数据记录。具体而言,首先,数据库服务端可以从待存储数据记录中的指定标识字段获取业务属性。指定标识字段的具体位置以及获取方式可以是数据库服务端和对接机构事先协商。例如,对接机构所提供的数据记录为标准结构化的数据记录时,指定标识字段可以从数据记录中指定偏移量获取,或者由特定字符标识起始位置和结束位置(例如,以字符OE标识业务属性的开头,以字符OF标识结尾);又或者,对接机构所提供的数据记录为非结构化的数据时,在对接机构上传时可以直接在每条数据记录的开头拼接上包含业务属性的头部,数据库服务端可以直接从头部获取每条数据记录的业务属性。在确定了业务属性之后,一种可行的方式即为,数据库服务端可以从账本中由后往前对数据记录进行遍历,获取包含同一业务属性的前一数据记录;或者,另一种可行的方式即为,从预先建立的倒排索引中查询获取包含同一业务属性的前一数据记录。倒排索引中包含了业务属性和位置信息的对应关系,所述位置信息包括数据记录所处的数据块的块高,以及,在所处的数据块中的偏移量。倒排索引的具体建立方式以及使用方式将在下文详述。此处的前一数据记录指的是在块链式账本中的写入时间(即数据记录所处的数据块的成块时间)距离当前最近的数据记录,由于块链式账本的数据块块高和成块时间都是单调递增,因此,前一数据记录也可以是指所处数据块的块高最大的数据记录。同时需要说明的是,前一数据记录可以是已经存储好了的数据记录,也可以同样是待存储的数据记录。对于对服务端而言,在一条待存储的数据记录执行完毕以后,则需要将相应的执行信息返回给客户端。返回的执行信息可以是同步返回,也可以是异步返回。S205,确定所述前本文档来自技高网...

【技术保护点】
1.一种基于收据的数据存储方法,应用于以块链式账本存储数据的中心化的数据库服务端中,所述块链式账本中的数据块包括块头和块体,所述方法包括:获取包含业务属性的待存储数据记录,确定所述待存储数据记录的执行信息;在所述块链式账本中,获取包含同一业务属性的前一数据记录;确定所述前一数据记录的哈希值,生成包含所述哈希值和执行信息的收据记录;将所述待存储数据记录和收据记录写入所述块链式账本的同一块体中。

【技术特征摘要】
1.一种基于收据的数据存储方法,应用于以块链式账本存储数据的中心化的数据库服务端中,所述块链式账本中的数据块包括块头和块体,所述方法包括:获取包含业务属性的待存储数据记录,确定所述待存储数据记录的执行信息;在所述块链式账本中,获取包含同一业务属性的前一数据记录;确定所述前一数据记录的哈希值,生成包含所述哈希值和执行信息的收据记录;将所述待存储数据记录和收据记录写入所述块链式账本的同一块体中。2.如权利要求1所述的方法,获取包含同一业务属性的前一数据记录,包括:从预先建立的倒排索引中查询获取所述业务属性所对应的位置信息,其中,所述位置信息包括数据记录所处的数据块的块高,以及,在所处的数据块中的偏移量;确定所述位置信息中的块高的最大值;根据所述块高的最大值所对应的位置信息获取所述前一数据记录。3.如权利要求2所述的方法,还包括:若所述倒排索引中查询所述获取所述业务属性所对应的位置信息失败,将所述待存储数据记录本身确定为所述前一数据记录。4.如权利要求1所述的方法,将所述待存储数据记录和收据记录写入所述块链式账本的同一块体中,包括:获取至少一条待存储数据记录和对应的收据记录,确定所述待存储数据记录的哈希值;当达到预设的成块条件时,确定待写入数据块中的各存储数据记录和对应的收据记录,生成包含数据块的哈希值和数据记录的第N个数据块,具体包括:当N=1时,初始数据块的哈希值和块高基于预设方式给定;当N>1时,根据待写入数据块中的各待存储数据记录和对应的收据记录,以及第N-1个数据块的哈希值确定第N个数据块的哈希值,将所述第N个数据块哈希值写入第N个数据块的块头,将所述各待存储数据记录和对应的收据记录写入第N个数据块的的块体,其中,数据块的块高基于成块时间的先后顺序单调递增。5.如权利要求4所述的方法,所述预设的成块条件包括:待存储的数据记录数量达到数量阈值;或者,距离上一次成块时刻的时间间隔达到时间阈值。6.如权利要求2所述的方法,所述倒排索引通过如下方式预先建立:获取待存储数据记录中的业务属性;确定所述数据记录在账本中的位置信息,所述位置信息包括数据记录所处的数据块的块高,以及,在所处的数据块中的偏移量;建立所述业务属性和位置信息的对应关系,写入以所述业务属性为主键的倒排索引。7.一种基于收据的数据存储装置,应用于以块链式账本存储数据的中心化...

【专利技术属性】
技术研发人员:张渊杨新颖李亿泽
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

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

1