CN112307011A - 一种数据存储方法、装置及设备 - Google Patents

一种数据存储方法、装置及设备 Download PDF

Info

Publication number
CN112307011A
CN112307011A CN201910690038.9A CN201910690038A CN112307011A CN 112307011 A CN112307011 A CN 112307011A CN 201910690038 A CN201910690038 A CN 201910690038A CN 112307011 A CN112307011 A CN 112307011A
Authority
CN
China
Prior art keywords
data
data block
stored
block
hash value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910690038.9A
Other languages
English (en)
Inventor
杨新颖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Advanced New Technologies Co Ltd
Original Assignee
Advanced New Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced New Technologies Co Ltd filed Critical Advanced New Technologies Co Ltd
Priority to CN201910690038.9A priority Critical patent/CN112307011A/zh
Publication of CN112307011A publication Critical patent/CN112307011A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Finance (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Accounting & Taxation (AREA)
  • Development Economics (AREA)
  • Computing Systems (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

公开了一种数据存储方法、装置及设备。通过本说明书实施例中所提供的方案,用户可以在创建账本时根据自身需要设置相应的数据结构配置参数,从而数据库服务端接收到用户的待存储数据时,可以结合由配置参数所确定的顺序编号,生成另一包含顺序编号的拼接数据进行存储,在以中心化的块链式账本存储数据时,实现更为灵活的数据存储。

Description

一种数据存储方法、装置及设备
技术领域
本说明书实施例涉及信息技术领域,尤其涉及一种数据存储方法、装置及设备。
背景技术
在以中心化的块链式账本存储数据时,由于数据库服务端通常是将数据记录进行整体式的存储,而不会涉及到数据记录的结构和顺序。而在实际应用中,用户对于存储的数据往往还有时序特征要求。
基于此,需要一种可以灵活实现块链式数据块中数据记录有序存储的方案。
发明内容
本申请实施例的目的是提供一种更灵活的块链式账本中的数据存储方法。
为解决上述技术问题,本申请实施例是这样实现的:
一种数据存储方法,包括:
接收用户所发送的待存储数据,获取关于账本的数据结构配置参数,所述配置参数包括业务属性和序号参数;
确定所述业务属性所对应的字符串,以及,根据所述序号参数确定所述待存储数据的顺序编号,其中,所述字符串表征所述用户的待存储数据的业务属性;
拼接所述字符串、顺序编号和待存储数据,生成包含业务属性和顺序编号的拼接数据;
确定所述拼接数据的哈希值,当达到预设的成块条件时,生成包含数据块的哈希值和所述拼接数据的第N个数据块,具体包括:
当N=1时,初始数据块的哈希值和块高基于预设方式给定;
当N>1时,根据待写入数据块中的各拼接数据和第N-1个数据块的哈希值确定第N个数据块的哈希值,生成包含第N个数据块的哈希值和拼接数据的第N个数据块,其中,数据块的块高基于成块时间的先后顺序单调递增。
对应的,本说明书实施例还提供一种数据存储装置,包括:
获取模块,接收用户所发送的待存储数据,获取关于账本的数据结构配置参数,所述配置参数包括业务属性和序号参数;
确定模块,确定所述业务属性所对应的字符串,以及,根据所述序号参数确定所述待存储数据的顺序编号,其中,所述字符串表征所述用户的待存储数据的业务属性;
拼接模块,拼接所述字符串、顺序编号和待存储数据,生成包含业务属性和顺序编号的拼接数据;
数据块生成模块,确定所述拼接数据的哈希值,当达到预设的成块条件时,生成包含数据块的哈希值和所述拼接数据的第N个数据块,具体包括:
当N=1时,初始数据块的哈希值和块高基于预设方式给定;
当N>1时,根据待写入数据块中的各拼接数据和第N-1个数据块的哈希值确定第N个数据块的哈希值,生成包含第N个数据块的哈希值和拼接数据的第N个数据块,其中,数据块的块高基于成块时间的先后顺序单调递增。
通过本说明书实施例中所提供的方案,用户可以在创建账本时根据自身需要设置相应的数据结构配置参数,从而数据库服务端接收到用户的待存储数据时,可以结合由配置参数所确定的顺序编号,生成另一包含顺序编号的拼接数据进行存储,在以中心化的块链式账本存储数据时,实现更为灵活的数据存储。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书实施例。
此外,本说明书实施例中的任一实施例并不需要达到上述的全部效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本说明书实施例所涉及的系统架构示意图;
图2是本说明书实施例提供的一种数据存储方法的流程示意图;
图3为本说明书实施例所提供的一种数据块的块头的示意图;
图4是本说明书实施例提供的一种数据存储装置的结构示意图;
图5是用于配置本说明书实施例方法的一种设备的结构示意图。
具体实施方式
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
在本说明书中,数据库服务端以中心化的块链式账对外提供数据库服务,服务对象包括机构也包括个人,如图1所示,图1为本说明书实施例所涉及的系统架构示意图。在这种架构中,数据库服务端无需了解用户所发送的数据的结构、具体内容以及业务含义,而是直接将用户数据作为一个整体进行整体的不可篡改的存证,用户可以对账本中的数据进行查询和验证,具体存储方式将在后文详述。
以下结合附图,详细说明本说明书各实施例提供的技术方案。如图2所示,图2是本说明书实施例提供的一种数据存储方法的流程示意图,该流程具体包括如下步骤:
S201,接收用户所发送的待存储数据,获取关于账本的数据结构配置参数,所述配置参数包括业务属性和序号参数。
此处的待存储的数据记录,可以是客户端个人用户的各种消费记录,也可以是应用服务器基于用户的指令,在执行业务逻辑时产生的业务结果、中间状态以及操作记录等等。具体的业务场景可以包括消费记录、审计日志、供应链条、政府监管记录、医疗记录、金融交易记录等等。
数据结构配置参数用于指示在块链式账本中的具体的数据结构配置方式。换言之,在每个账本中都存在对应的数据结构配置参数,但每个账本的数据结构配置参数是独立的。
例如,数据结构配置参数包括业务属性。业务属性表征了数据记录的业务特征,可以包括用户名、用户身份证号、机构名、交易类别、数据记录类别等等。例如,在一条由金融机构上传的包含报表的数据记录中,业务属性可以是表征该报表类别的报表编号“G01”,即资产负债项目统计表;或者,数据记录可以是该报表所属的项目编号等等。
数据结构配置参数还包括序号参数,所述序号参数用于指示获取待存储数据的顺序编号。换言之,数据库服务端在接收到用户的待存储数据记录时,可以通过序号参数来判断待存储数据记录是否需要顺序编号。若该用户账本的配置参数中序号参数的值为需要获取顺序编号,则数据库服务端需要针对该账本中的每条待存储数据确定顺序编号,否则,不需要。
例如,用户可以通过指令修改配置参数中序号参数的值,例如,在创建账本时,输入指令CreateLedger(LedgerID,CLUE,NULL),将序号参数的值设定为“NULL”,表示无需顺序编号;或者输入指令CreateLedger(LedgerID,CLUE,SEQ-NUM),表示从待存储的数据记录中获取用户指定的顺序编号;或者,输入指令CreateLedger(LedgerID,CLUE,SEQ-TIME),表示数据库服务端根据接收到的数据的时间确定顺序编号。
此外,数据结构配置参数还可以包括业务属性的字节长度“LENGTH”,用以指示业务属性的合法长度,以及,数据结构配置参数还可以包括序号参数“SEQ”,用于指示获取数据记录在账本中的编号,等等。需要说明的是,在本说明书实施例中,业务属性的字节长度“LENGTH”是一个可选的配置参数。
业务属性可以通过某个预设字段来表征,例如“CLUE”,用户可以对该字段进行赋值,例如“CLUE:ID”,表征在该用户下业务属性的具体值,或者,“CLUE:G01”等等,该字段的具体值可以保存在某个指定的存储位置,例如,账本的初始数据块的块头中,或者,该账本的的数据结构配置文件中。从而,数据库服务端可以从前述的指定存储位置获取得到该业务属性。
具体而言,用户可以通过创建指令进行创建账本,并且在创建指令中即包含有该账本的数据结构配置参数,从而,数据库服务端可以从指令中获取该账本的配置参数,并且将所述配置参数写入所创建的账本的初始数据块的块头中,同时,生成包含所述创建指令的数据记录,将所述数据记录写入所述初始数据块的块体中。日后可以随时从初始数据块中查询得到用户是如何创建该账本的。
同时,在创建账本时,还可以生成所述账本的数据结构参数配置文件,数据结构参数配置文件中的参数值即为创建指令中的参数值,所述数据结构参数配置文件用于配置所述账本的配置参数的类型以及每个参数的具体参数值。换言之,在初始设定了参数值以后,用户还可以通过更改配置文件来实现对于配置参数的更改。
例如,例如,用户可以向数据库服务端发起指令CreateLedger(LedgerID,CLUE:ID),其中,“LedgerID”为账本ID,“CLUE:ID”表征为将该账本的业务属性设置为用户ID;又或者,用户可以向数据库服务端发起指令CreateLedger(LedgerID,CLUE:G01),“CLUE:G01”表征为将盖章本的业务属性的值修改为“G01”。
基于前述,数据库服务端可以从账本的数据结构参数配置文件中获取所述数据结构配置参数;或者从所述账本中的初始数据块中获取所述数据结构配置参数。当二者存在不一致时,以数据结构参数配置文件中为准。
S203,确定所述业务属性所对应的字符串,以及,根据所述序号参数确定所述待存储数据的顺序编号,其中,所述字符串表征所述用户的待存储数据的业务属性。
如前所述,业务属性可以通过具体的字符串来表征。例如,对于字段“CLUE”而言,用户可以一些指定的合法字符(即数据服务端可以识别含义的字符)对其进行通用赋值“CLUE:ID”,从而,数据库服务端可以将用户的ID(一般即为用户登录客户端时的数字ID,或者登录名、手机号码等等)确定为所述业务属性所对应的字符串。合法字符可以是数据服务端事先预定义的,合法字符的数量可以有多个,一个合法字符用于表征用户或者待存储数据的一个特征。例如,ID表征用户标识。
例如,若用户A和B均定义ID为各自账本的业务属性。用户A的ID为“UID2019”,则对于该用户A而言,业务属性所对应的字符串为“UID2019”;用户B的ID为“UID2020”,则对于该用户B而言,业务属性所对应的字符串为“UID2020”。
或者,用户可以自定义字符串进行个性赋值,例如“CLUE:G01”,数据库服务端不能识别G01的含义,但是,仍然将G01作为该账本的业务属性。从而,将字符串“G01”确定为所述业务属性所对应的字符串。
针对顺序编号,具体而言,针对任一待存储的数据记录,获取顺序编号的方式可以有如下两种方式:
第一种,顺序编号由用户方指定,即用户在发送待存储数据时即携带相应的顺序编号。这种方式下需要数据库服务端和用户之间协议数据格式。以便数据库服务端可以从待存储数据中提取出对应的顺序编号。
第二种,顺序编号由数据库服务端确定,即数据库服务端根据接收到的待存储数据记录的时间戳,分配给该待存储数据记录在该账本中的一个顺序编号。容易理解,各账本所维护的顺序编号是分别独立的。在用户发送的待存储数据的频率不高时,该方式同样可以准确的分配给各数据记录相应的顺序。
例如,在同一账本中的同一用户所上传的数据,业务属性“ID”所对应的顺序编号可能是“100”,而如果业务属性是“G01”,其顺序编号可能是“50”。具体而言对于每一业务属性,可以在初始数据块时即分配顺序编号为1,以后每写入同一业务属性的值,顺序编号加1。
由于在数据块中存储的拼接数据实际上是看不出来彼此在业务上的顺序关系的,通过给拼接数据分配顺序编号可以明确账本中的各拼接数据的先后关系,有利于用户日后的查询与验证。
S205,拼接所述字符串、顺序编号和待存储数据,生成包含业务属性和顺序编号的拼接数据;
具体而言,拼接的方式可以包括将字符串、顺序编号置于头部,或者将字符串顺序编号置于尾部。又或者,还可以通过将头部以及尾部分配指定的占用空间,以便区分所述数据记录的头部、尾部和其中所包含的待存储数据。
在不限定拼接数据中头部或者尾部的长度时,字符串以及顺序编号将会被完全拼接。可以需要使用特殊的标识字符用于识别所述字符串,例如,以“OE”作为开头标识字符,以“OF”作为结束标识字符,等等。
例如,若用户A上传的待存储数据为“DATA”,该数据的顺序编号为99,则拼接得到的包含业务属性的拼接数据为“UID2019DAT99”;或者,当存在所述标识字符时,则生成的拼接数据为“OEUID2019OFDATAOE99OF”。
又例如,在指定了头部以及尾部的占用空间时,还可以是如下形式:[UID2019][DATA][99],其中,“[UID2019]”和“[99]”分别占用了指定的空间长度,不足部分可以用无效字符补全,在这种方式下可以有效的识别出头部、数据和尾部,从而可以方便的识别出数据记录中所包含的业务属性、数据正文和顺序编号。
在一种实施例中,配置参数还可以限定业务属性的字节长度。例如,通过指令CreateLedger(LedgerID,CLUE:ID,20),来标识数据结构配置参数:以用户的ID作为业务属性,同时合法的字节长度不超过20。
在这种实施方式下,若业务属性的字符串超出了预定义的子节长度,则将超出的部分去掉,直接取字符串中的前20个字符(即预先定义的字节长度)作为截取后的字符串,并且,拼接截取后的字符串和待存储数据生成拼接数据。
S207,确定所述拼接数据的哈希值,当达到预设的成块条件时,生成包含数据块的哈希值和所述拼接数据的第N个数据块。
所述预设的成块条件包括:待存储的拼接数据的数量达到数量阈值,例如,每接收到一千条拼接数据时,生成一个新数据块,将一千条拼接数据写入块中;或者,距离上一次成块时刻的时间间隔达到时间阈值,例如,每隔5分钟,生成一个新数据块,将在这5分钟内接收到的拼接数据写入块中。
此处的N指的是数据块的序号,换言之,在本说明书实施例中,数据块是以块链的形式,基于成块时间的顺序先后排列,具有很强的时序特征。其中,数据块的块高基于成块时间的先后顺序单调递增。块高可以是序号,此时第N个数据块的块高即为N;块高也可以其它方式生成,例如,将数据块的成块时间对称加密转换为单调递增的大整型数据作为块高。
当N=1时,即此时的数据块为为初始数据块。初始数据块的哈希值和块高基于预设方式给定。例如,初始数据块中不包含拼接数据,哈希值则为任一给定的哈希值,块高blknum=0;又例如,初始数据块的生成触发条件与其它数据块的触发条件一致,但是初始数据块的哈希值由对初始数据块中的所有内容取哈希确定。
在本说明书实施例中,用户可以将数据结构配置参数写入初始数据块中,以及,将创建账本时的相关指令以数据记录的形式写入数据块中,以备日后查询。
当N>1时,由于前一数据块的内容和哈希值已经确定,则此时,可以基于前一数据块(即第N-1个数据块)的哈希值生成当前数据块(第N个数据块)的哈希值,例如,一种可行的方式为,确定每一条将要写入第N个块中的拼接数据的哈希值,按照在块中的排列顺序,生成一个默克尔树,将默克尔树的根哈希值和前一数据块的哈希值拼接在一起,再次采用哈希算法,生成当前块的哈希值。又例如,还可以按照块中数据记录的顺序进行拼接并取哈希得到同一数据块中的整体数据记录的哈希值,拼接前一数据块的哈希值和整体数据记录的哈希值,并对拼接得到的字串进行哈希运算,生成数据块的哈希值。
用户在上传数据成功后,即可以得到对应的数据记录的哈希值以及所处的数据块的哈希值,并保存,并且可以基于该哈希值发起完整性验证。具体的验证方式即为在数据库中重新计算数据记录自身的哈希值以及所处的数据块的哈希值,与本地所保存的进行对比。
上述方式生成的数据块,可以包括块头和块体两个部分。块体中可以用于存储拼接数据的明文,或者拼接数据的哈希值等等;块头中可以用于存储有关本数据块的元数据,例如,账本的版本号,前一数据块的哈希值,自身数据块中的拼接数据所组成的默克尔树的根哈希值,自身数据块的哈希值,用于记录拼接数据的被操作状态的状态数组等等。例如,可以将数据数据结构配置参数写入初始数据块中的块头中。如图3所示,图3为本说明书实施例所提供的一种数据块的块头的示意图。在初始数据块中,Parent_hash可以为空或者指定一个值,以及,还可以包括诸如CLUE、LENGTH以及SEQ等数据结构配置参数。在实际应用中,每个字段均会有一个实际的赋值(例如,Parent_hash的具体值为一个256长度的字符串,CLUE的具体值为“ID”,SEQ的赋值为“SEQ_TIME”等等),具体的赋值在该示意图中未显示。
通过前述的数据块的生成方式,每一个数据块通过哈希值确定,数据块的哈希值由数据块中的拼接数据的内容、顺序以及前一数据块的哈希值决定。用户可以随时基于数据块的哈希值发起验证,对于数据块中任何内容(包括对于数据块中数据记录内容或者顺序的修改)的修改都会造成在验证时计算得到的数据块的哈希值和数据块生成时的哈希值不一致,而导致验证失败,从而实现了中心化下的不可篡改。
通过通过本说明书实施例中所提供的方案,用户可以在创建账本时根据自身需要设置相应的数据结构配置参数,从而数据库服务端接收到用户的待存储数据时,可以结合由配置参数所确定的顺序编号,生成另一包含顺序编号的拼接数据进行存储,在以中心化的块链式账本存储数据时,实现更为灵活的数据存储。
在一种实施方式中,数据库服务端在生成数据块时,还可以根据数据记录中各数据块的顺序编号进行排序。具体而言,数据库服务端分别确定数据块中所包含的各拼接数据的顺序编号;在所述数据块中按所述顺序编号对各拼接数据依序排列;根据排列好的拼接数据确定所述第N个数据块的哈希值,生成包含第N个数据块的哈希值和各拼接数据的第N个数据块。
例如,在每个数据块中根据各数据记录的顺序编号从小到大依次排列,生成第N个数据块。在这种实施方式下,一个数据块中的数据记录的顺序编号是完全进行了升序排列,同时,各数据块之间也是基于时序关系升序排列,因此,从而整体而言,整个账本中的数据记录就有了强烈的时序关系:即按照用户指定的顺序或者数据库服务端接收到的顺序对数据记录进行了依序排列,使得整个账本贴近实际业务需求,有利于用户的查询和验证。当然,在业务无需顺序编号的时候则可以通过用户修改数据结构配置参数来实现,节省数据库服务端的资源。
对应的,本说明书实施例还提供一种数据存储装置,如图4所示,图4是本说明书实施例提供的一种数据存储装置的结构示意图,包括:
获取模块401,接收用户所发送的待存储数据,获取关于账本的数据结构配置参数,所述配置参数包括业务属性和序号参数;
确定模块403,确定所述业务属性所对应的字符串,以及,根据所述序号参数确定所述待存储数据的顺序编号,其中,所述字符串表征所述用户的待存储数据的业务属性;
拼接模块405,拼接所述字符串、顺序编号和待存储数据,生成包含业务属性和顺序编号的拼接数据;
数据块生成模块407,确定所述拼接数据的哈希值,当达到预设的成块条件时,生成包含数据块的哈希值和所述拼接数据的第N个数据块,具体包括:
当N=1时,初始数据块的哈希值和块高基于预设方式给定;
当N>1时,根据待写入数据块中的各拼接数据和第N-1个数据块的哈希值确定第N个数据块的哈希值,生成包含第N个数据块的哈希值和拼接数据的第N个数据块,其中,数据块的块高基于成块时间的先后顺序单调递增。
进一步地,所述配置参数还包括业务属性的字节长度,所述装置还包括字符串截取模块409,用于若获取得到的用户的业务属性所对应的字符串的长度超过所述字节长度,从所述字符串中去除超过字节长度的字符,生成截取后的字符串;相应,所述拼接模块405,拼接所述截取后的字符串和待存储数据。
进一步地,所述确定模块403,根据所述序号参数,获取由所述待存储数据中由用户确定的顺序编号;或者,根据所述序号参数,确定所述待存储数据的接收时间戳,根据所述接收时间戳依序确定所述待存储数据的顺序编号。
进一步地,在接收用户所发送的待存储数据之前,在接收用户所发送的待存储数据之前,所述装置还包括:
指令接收模块411,接收用户所发送的用于创建账本的创建指令,所述创建指令中包含有数据结构配置参数;
写入模块413,将所述数据结构配置参数写入所创建的账本的初始数据块的块头中;以及,生成包含所述创建指令的数据记录,将所述数据记录写入初始数据块的块体中;
配置文件生成模块415,生成所述账本的数据结构参数配置文件,所述数据结构参数配置文件用于配置所述账本的待存储数据的业务属性。
进一步地,所述获取模块401,从所述账本的结构参数配置文件中获取所述数据结构配置参数;或者,从所述账本中的初始数据块中获取所述数据结构配置参数。
进一步地,在所述装置中,所述预设的成块条件包括:待存储数据的数量达到数量阈值;或者,距离上一次成块时刻的时间间隔达到时间阈值。
进一步地,在所述装置中,所述数据块生成模块407,确定第N个数据块中所包含的各拼接数据的顺序编号;在所述第N个数据块中按所述顺序编号对各拼接数据依序排列;根据排列好的拼接数据确定所述第N个数据块的哈希值,生成包含第N个数据块的哈希值和各拼接数据的第N个数据块。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现图2所示的数据存储方法。
图5示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现图2所示的数据存储方法。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的方法实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。

Claims (15)

1.一种数据存储方法,包括:
接收用户所发送的待存储数据,获取关于账本的数据结构配置参数,所述配置参数包括业务属性和序号参数;
确定所述业务属性所对应的字符串,以及,根据所述序号参数确定所述待存储数据的顺序编号,其中,所述字符串表征所述用户的待存储数据的业务属性;
拼接所述字符串、顺序编号和待存储数据,生成包含业务属性和顺序编号的拼接数据;
确定所述拼接数据的哈希值,当达到预设的成块条件时,生成包含数据块的哈希值和所述拼接数据的第N个数据块,具体包括:
当N=1时,初始数据块的哈希值和块高基于预设方式给定;
当N>1时,根据待写入数据块中的各拼接数据和第N-1个数据块的哈希值确定第N个数据块的哈希值,生成包含第N个数据块的哈希值和拼接数据的第N个数据块,其中,数据块的块高基于成块时间的先后顺序单调递增。
2.如权利要求1所述的方法,所述配置参数还包括业务属性的字节长度,所述方法还包括:
若获取得到的用户的业务属性所对应的字符串的长度超过所述字节长度,从所述字符串中去除超过字节长度的字符,生成截取后的字符串;
相应,拼接所述字符串和待存储数据,包括:拼接所述截取后的字符串和待存储数据。
3.如权利要求1所述的方法,根据所述序号参数确定所述待存储数据的顺序编号,包括:
根据所述序号参数,获取由所述待存储数据中由用户确定的顺序编号;或者,
根据所述序号参数,确定所述待存储数据的接收时间戳,根据所述接收时间戳依序确定所述待存储数据的顺序编号。
4.如权利要求1所述的方法,在接收用户所发送的待存储数据之前,所述方法还包括:
接收用户所发送的用于创建账本的创建指令,所述创建指令中包含有数据结构配置参数;
将所述数据结构配置参数写入所创建的账本的初始数据块的块头中;以及,
生成包含所述创建指令的数据记录,将所述数据记录写入初始数据块的块体中;
生成所述账本的数据结构参数配置文件,所述数据结构参数配置文件用于配置所述账本的待存储数据的业务属性。
5.如权利要求4所述的方法,获取关于账本的数据结构配置参数,包括:
从所述账本的结构参数配置文件中获取所述数据结构配置参数;或者
从所述账本中的初始数据块中获取所述数据结构配置参数。
6.如权利要求1所述的方法,所述预设的成块条件包括:
待存储数据的数量达到数量阈值;或者,距离上一次成块时刻的时间间隔达到时间阈值。
7.如权利1所述的方法,生成包含第N个数据块的哈希值和拼接数据的第N个数据块,包括:
确定第N个数据块中所包含的各拼接数据的顺序编号;
在所述第N个数据块中按所述顺序编号对各拼接数据依序排列;
根据排列好的拼接数据确定所述第N个数据块的哈希值,生成包含第N个数据块的哈希值和各拼接数据的第N个数据块。
8.一种数据存储装置,包括:
获取模块,接收用户所发送的待存储数据,获取关于账本的数据结构配置参数,所述配置参数包括业务属性和序号参数;
确定模块,确定所述业务属性所对应的字符串,以及,根据所述序号参数确定所述待存储数据的顺序编号,其中,所述字符串表征所述用户的待存储数据的业务属性;
拼接模块,拼接所述字符串、顺序编号和待存储数据,生成包含业务属性和顺序编号的拼接数据;
数据块生成模块,确定所述拼接数据的哈希值,当达到预设的成块条件时,生成包含数据块的哈希值和所述拼接数据的第N个数据块,具体包括:
当N=1时,初始数据块的哈希值和块高基于预设方式给定;
当N>1时,根据待写入数据块中的各拼接数据和第N-1个数据块的哈希值确定第N个数据块的哈希值,生成包含第N个数据块的哈希值和拼接数据的第N个数据块,其中,数据块的块高基于成块时间的先后顺序单调递增。
9.如权利要求8所述的装置,所述配置参数还包括业务属性的字节长度,所述装置还包括字符串截取模块,用于若获取得到的用户的业务属性所对应的字符串的长度超过所述字节长度,从所述字符串中去除超过字节长度的字符,生成截取后的字符串;相应,所述拼接模块,拼接所述截取后的字符串和待存储数据。
10.如权利要求8所述的装置,所述确定模块,根据所述序号参数,获取由所述待存储数据中由用户确定的顺序编号;或者,根据所述序号参数,确定所述待存储数据的接收时间戳,根据所述接收时间戳依序确定所述待存储数据的顺序编号。
11.如权利要求8所述的装置,在接收用户所发送的待存储数据之前,在接收用户所发送的待存储数据之前,所述装置还包括:
指令接收模块,接收用户所发送的用于创建账本的创建指令,所述创建指令中包含有数据结构配置参数;
写入模块,将所述数据结构配置参数写入所创建的账本的初始数据块的块头中;以及,生成包含所述创建指令的数据记录,将所述数据记录写入初始数据块的块体中;
配置文件生成模块,生成所述账本的数据结构参数配置文件,所述数据结构参数配置文件用于配置所述账本的待存储数据的业务属性。
12.如权利要求11所述的装置,所述获取模块,从所述账本的结构参数配置文件中获取所述数据结构配置参数;或者,从所述账本中的初始数据块中获取所述数据结构配置参数。
13.如权利要求8所述的装置,所述预设的成块条件包括:
待存储数据的数量达到数量阈值;或者,距离上一次成块时刻的时间间隔达到时间阈值。
14.如权利要求8所述的装置,所述数据块生成模块,确定第N个数据块中所包含的各拼接数据的顺序编号;在所述第N个数据块中按所述顺序编号对各拼接数据依序排列;根据排列好的拼接数据确定所述第N个数据块的哈希值,生成包含第N个数据块的哈希值和各拼接数据的第N个数据块。
15.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如权利要求1至7任一项所述的方法。
CN201910690038.9A 2019-07-29 2019-07-29 一种数据存储方法、装置及设备 Pending CN112307011A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910690038.9A CN112307011A (zh) 2019-07-29 2019-07-29 一种数据存储方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910690038.9A CN112307011A (zh) 2019-07-29 2019-07-29 一种数据存储方法、装置及设备

Publications (1)

Publication Number Publication Date
CN112307011A true CN112307011A (zh) 2021-02-02

Family

ID=74330303

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910690038.9A Pending CN112307011A (zh) 2019-07-29 2019-07-29 一种数据存储方法、装置及设备

Country Status (1)

Country Link
CN (1) CN112307011A (zh)

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080288530A1 (en) * 2007-01-17 2008-11-20 Sparta Systems, Inc. User-Defined Fields with Automatic Numbering
CN103488617A (zh) * 2012-06-11 2014-01-01 北京新媒传信科技有限公司 一种数据截取的方法和装置
CN104063362A (zh) * 2013-07-18 2014-09-24 腾讯科技(深圳)有限公司 一种字符串截断方法及装置
CN106709851A (zh) * 2016-11-30 2017-05-24 中体彩科技发展有限公司 大数据检索方法及装置
WO2018119930A1 (zh) * 2016-12-29 2018-07-05 深圳前海达闼云端智能科技有限公司 交易验证处理方法、装置及节点设备
US20180351747A1 (en) * 2017-05-30 2018-12-06 Sap Se Identity Verification Using Computer-Implemented Decentralized Ledger
CN109690519A (zh) * 2017-06-16 2019-04-26 华为技术有限公司 一种文件处理方法及移动终端
CN109902071A (zh) * 2019-01-31 2019-06-18 阿里巴巴集团控股有限公司 业务日志存储方法、系统、装置及设备
CN110008743A (zh) * 2019-03-26 2019-07-12 阿里巴巴集团控股有限公司 一种块链式账本中的数据属性标识方法、装置及设备
CN110059084A (zh) * 2019-01-31 2019-07-26 阿里巴巴集团控股有限公司 一种数据存储方法、装置及设备
CN110059088A (zh) * 2019-03-26 2019-07-26 阿里巴巴集团控股有限公司 一种块链式账本中的数据属性标识方法、装置及设备

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080288530A1 (en) * 2007-01-17 2008-11-20 Sparta Systems, Inc. User-Defined Fields with Automatic Numbering
CN103488617A (zh) * 2012-06-11 2014-01-01 北京新媒传信科技有限公司 一种数据截取的方法和装置
CN104063362A (zh) * 2013-07-18 2014-09-24 腾讯科技(深圳)有限公司 一种字符串截断方法及装置
CN106709851A (zh) * 2016-11-30 2017-05-24 中体彩科技发展有限公司 大数据检索方法及装置
WO2018119930A1 (zh) * 2016-12-29 2018-07-05 深圳前海达闼云端智能科技有限公司 交易验证处理方法、装置及节点设备
US20180351747A1 (en) * 2017-05-30 2018-12-06 Sap Se Identity Verification Using Computer-Implemented Decentralized Ledger
CN109690519A (zh) * 2017-06-16 2019-04-26 华为技术有限公司 一种文件处理方法及移动终端
CN109902071A (zh) * 2019-01-31 2019-06-18 阿里巴巴集团控股有限公司 业务日志存储方法、系统、装置及设备
CN110059084A (zh) * 2019-01-31 2019-07-26 阿里巴巴集团控股有限公司 一种数据存储方法、装置及设备
CN110008743A (zh) * 2019-03-26 2019-07-12 阿里巴巴集团控股有限公司 一种块链式账本中的数据属性标识方法、装置及设备
CN110059088A (zh) * 2019-03-26 2019-07-26 阿里巴巴集团控股有限公司 一种块链式账本中的数据属性标识方法、装置及设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
佘维等: "一种面向医疗大数据安全共享的新型区块链技术", 《小型微型计算机系统》, pages 1449 - 1454 *

Similar Documents

Publication Publication Date Title
CN110188096B (zh) 一种数据记录的索引创建方法、装置及设备
CN110162662B (zh) 一种块链式账本中数据记录的验证方法、装置及设备
CN111352935B (zh) 一种块链式账本中的索引创建方法、装置及设备
CN110162526B (zh) 一种块链式账本中数据记录的查询方法、装置及设备
CN110275916B (zh) 数据操作记录的存储方法、系统、装置及设备
CN110825737A (zh) 索引创建和数据查询方法、装置及设备
CN110008743B (zh) 一种块链式账本中的数据属性标识方法、装置及设备
CN113726751B (zh) 一种块链式账本中的权重管理方法、装置及设备
US10795874B2 (en) Creating index in blockchain-type ledger
CN110837502B (zh) 一种块链式账本中的数据存储方法、装置及设备
CN110347679B (zh) 一种基于收据的数据存储方法、装置及设备
CN110349019B (zh) 一种块链式账本中的验证方法、装置及设备
CN110716965B (zh) 一种块链式账本中的查询方法、装置及设备
CN111046069B (zh) 一种块链式账本中的聚合计算方法、装置及设备
CN110266494B (zh) 一种块链式账本中的授时认证方法、装置及设备
CN110059088B (zh) 一种块链式账本中的数据属性标识方法、装置及设备
CN110597461B (zh) 块链式账本中的数据存储方法、装置及设备
CN110362568B (zh) 一种针对块链式账本的压缩方法、装置及设备
CN110750533A (zh) 一种基于多条业务属性的数据存储方法、装置及设备
CN110727679A (zh) 法院案卷的协同追踪方法、系统、装置及设备
CN110059087B (zh) 一种块链式账本中的数据属性标识方法、装置及设备
CN111444194B (zh) 一种块链式账本中索引的清除方法、装置及设备
CN110597462A (zh) 块链式账本中的数据存储方法、系统、装置及设备
CN112307011A (zh) 一种数据存储方法、装置及设备
CN112307010A (zh) 一种数据存储方法、装置及设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40045462

Country of ref document: HK