CN110597814A - 结构化数据的序列化、反序列化方法以及装置 - Google Patents
结构化数据的序列化、反序列化方法以及装置 Download PDFInfo
- Publication number
- CN110597814A CN110597814A CN201910869336.4A CN201910869336A CN110597814A CN 110597814 A CN110597814 A CN 110597814A CN 201910869336 A CN201910869336 A CN 201910869336A CN 110597814 A CN110597814 A CN 110597814A
- Authority
- CN
- China
- Prior art keywords
- data
- block
- serialized
- service
- key 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; 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)
- Software Systems (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种结构化数据的序列化、反序列化方法以及装置,该方法包括:基于数据写入接口接收业务数据系统发送的数据写入请求,数据写入请求中包括区块索引键值和业务区块数据;根据业务区块数据确定对应的区块业务类型,并根据区块业务类型确定对应的序列化规则;基于序列化规则对区块索引键值和业务区块数据进行序列化以生成序列化区块索引键值和序列化业务区块数据,并将序列化区块索引键值和序列化业务区块数据发送至序列化数据存储系统中进行关联存储。采用本申请实施例,可节省数据存储空间,增强数据存储的安全性,适用性高。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种结构化数据的序列化、反序列化方法以及装置。
背景技术
区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
当前,针对新生成的每个业务区块数据,都是将该业务区块数据直接存储在数据库中,这样将原始数据存储于数据库的方式不利于数据存储的安全性,且随着链上的数据传输越来越多,会导致区块数量快速增加,全节点存储整个区块的数据需要巨大的存储空间。因此,如何降低区块数据的存储空间,增强数据存储的安全性成为当前亟待解决的问题。
发明内容
本申请实施例提供一种结构化数据的序列化、反序列化方法以及装置,可节省数据存储空间,增强数据存储的安全性,适用性高。
第一方面,本申请实施例提供了一种结构化数据的序列化方法,该方法包括:
基于数据写入接口接收业务数据系统发送的数据写入请求,上述数据写入请求中包括区块索引键值和业务区块数据,上述区块索引键值用于唯一标记上述业务区块数据;
根据上述业务区块数据确定对应的区块业务类型,并根据上述区块业务类型确定对应的序列化规则;
基于上述序列化规则对上述区块索引键值和上述业务区块数据进行序列化以生成序列化区块索引键值和序列化业务区块数据,并将上述序列化区块索引键值和上述序列化业务区块数据发送至序列化数据存储系统中进行关联存储。
结合第一方面,在一种可能的实施方式中,上述根据上述业务区块数据确定对应的区块业务类型,包括:
获取上述业务区块数据中包括的业务数据,若上述业务数据中包括交易数据转出方、交易数据转移量以及交易数据转入方,则确定上述区块业务类型为交易区块类型;
若上述业务数据中包括帐户名称、帐户地址和帐户数据余量,则确定上述区块业务类型为帐户区块类型;
若上述业务数据中包括智能合约名称、智能合约安装路径和智能合约版本号,则确定上述区块业务类型为合约区块类型。
结合第一方面,在一种可能的实施方式中,上述序列化规则包括二进制区块索引键值序列化规则和二进制业务区块数据序列化规则;上述基于上述序列化规则对上述区块索引键值和上述业务区块数据进行序列化,包括:
根据上述二进制区块索引键值序列化规则对上述区块索引键值进行二进制化编码以生成序列化区块索引键值;
基于上述二进制业务区块数据序列化规则对上述业务区块数据进行二进制化编码以生成序列化业务区块数据。
结合第一方面,在一种可能的实施方式中,上述将上述序列化区块索引键值和上述序列化业务区块数据发送至序列化数据存储系统中进行关联存储,包括:
将上述序列化区块索引键值和上述序列化业务区块数据进行拼接以生成拼接序列化数据;
将上述拼接序列化数据发送至序列化数据存储系统中进行存储。
第二方面,本申请实施例提供了一种结构化数据的反序列化方法,该方法包括:
基于数据读取接口接收数据读取请求,上述数据读取请求中包括区块业务类型和区块索引键值;
根据上述区块业务类型确定对应的序列化规则和反序列化规则,并基于上述序列化规则对上述区块索引键值进行序列化以得到序列化区块索引键值;
根据上述序列化区块索引键值从序列化数据存储系统中获取上述序列化区块索引键值对应的序列化业务区块数据;
根据上述反序列化规则对上述序列化业务区块数据进行反序列化以生成业务区块数据,并将上述业务区块数据发送至业务数据系统。
结合第二方面,在一种可能的实施方式中,上述序列化数据存储系统中包括拼接序列化数据;上述根据上述序列化区块索引键值从序列化数据存储系统中获取上述序列化区块索引键值对应的序列化业务区块数据,包括:
遍历上述序列化数据存储系统中存储的各拼接序列化数据;
若基于任一拼接序列化数据所拆分出的第一序列化区块索引键值与上述序列化区块索引键值相同,则将上述任一拼接训练化数据中包括的第一序列化业务区块数据确定为上述序列化区块索引键值对应的序列化业务区块数据。
第三方面,本申请实施例提供了一种结构化数据的序列化装置,该装置包括:
数据写入请求接收模块,用于基于数据写入接口接收业务数据系统发送的数据写入请求,上述数据写入请求中包括区块索引键值和业务区块数据,上述区块索引键值用于唯一标记上述业务区块数据;
序列化规则确定模块,用于根据上述业务区块数据确定对应的区块业务类型,并根据上述区块业务类型确定对应的序列化规则;
序列化数据生成模块,用于基于上述序列化规则对上述区块索引键值和上述业务区块数据进行序列化以生成序列化区块索引键值和序列化业务区块数据,并将上述序列化区块索引键值和上述序列化业务区块数据发送至序列化数据存储系统中进行关联存储。
结合第三方面,在一种可能的实施方式中,上述序列化规则确定模块具体用于:
获取上述业务区块数据中包括的业务数据,若上述业务数据中包括交易数据转出方、交易数据转移量以及交易数据转入方,则确定上述区块业务类型为交易区块类型;
若上述业务数据中包括帐户名称、帐户地址和帐户数据余量,则确定上述区块业务类型为帐户区块类型;
若上述业务数据中包括智能合约名称、智能合约安装路径和智能合约版本号,则确定上述区块业务类型为合约区块类型。
结合第三方面,在一种可能的实施方式中,上述序列化规则包括二进制区块索引键值序列化规则和二进制业务区块数据序列化规则;上述序列化数据生成模块包括:
序列化区块索引键值生成单元,用于根据上述二进制区块索引键值序列化规则对上述区块索引键值进行二进制化编码以生成序列化区块索引键值;
序列化业务区块数据生成单元,用于基于上述二进制业务区块数据序列化规则对上述业务区块数据进行二进制化编码以生成序列化业务区块数据。
结合第三方面,在一种可能的实施方式中,上述序列化数据生成模块还用于:
将上述序列化区块索引键值和上述序列化业务区块数据进行拼接以生成拼接序列化数据;
将上述拼接序列化数据发送至序列化数据存储系统中进行存储。
第四方面,本申请实施例提供了一种结构化数据的反序列化装置,该装置包括:
数据读取请求接收模块,用于基于数据读取接口接收数据读取请求,上述数据读取请求中包括区块业务类型和区块索引键值;
规则获取模块,用于根据上述区块业务类型确定对应的序列化规则和反序列化规则,并基于上述序列化规则对上述区块索引键值进行序列化以得到序列化区块索引键值;
序列化数据获取模块,用于根据上述序列化区块索引键值从序列化数据存储系统中获取上述序列化区块索引键值对应的序列化业务区块数据;
反序列化数据生成模块,用于根据上述反序列化规则对上述序列化业务区块数据进行反序列化以生成业务区块数据,并将上述业务区块数据发送至业务数据系统。
结合第四方面,在一种可能的实施方式中,上述序列化数据存储系统中包括拼接序列化数据;上述序列化数据获取模块用于:
遍历上述序列化数据存储系统中存储的各拼接序列化数据;
若基于任一拼接序列化数据所拆分出的第一序列化区块索引键值与上述序列化区块索引键值相同,则将上述任一拼接训练化数据中包括的第一序列化业务区块数据确定为上述序列化区块索引键值对应的序列化业务区块数据。
第五方面,本申请实施例提供了一种终端设备,该终端设备包括处理器和存储器,该处理器和存储器相互连接。该存储器用于存储支持该终端设备执行上述第一方面和/或第一方面任一种可能的实现方式和/或第二方面和/或第二方面任一种可能的实现方式提供的方法的计算机程序,该计算机程序包括程序指令,该处理器被配置用于调用上述程序指令,执行上述第一方面和/或第一方面任一种可能的实施方式所提供的方法。
第六方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令当被处理器执行时使该处理器执行上述第一方面和/或第一方面任一种可能的实施方式和/或第二方面和/或第二方面任一种可能的实现方式所提供的方法。
本申请实施例提供的结构化数据的训练化方法,通过数据写入接口接收业务数据系统发送的数据写入请求,可得到数据写入请求中包括区块索引键值和业务区块数据,其中区块索引键值用于唯一标记业务区块数据。根据业务区块数据确定对应的区块业务类型,可基于区块业务类型确定对应的序列化规则,进而根据上述序列化规则对区块索引键值和业务区块数据进行序列化以生成序列化区块索引键值和序列化业务区块数据。通过将序列化区块索引键值和序列化业务区块数据发送至序列化数据存储系统中,可将序列化后的数据关联存储在序列化数据存储系统中。本申请实施例通过将区块索引键值和业务区块数据进行序列化,可节省数据存储空间,增强数据存储的安全性,适用性高。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的结构化数据的序列化方法的流程示意图;
图1a是本申请实施例提供的一种区块链节点系统的结构示意图;
图1b是本申请实施例提供的区块索引键值和业务区块数据的对应关系示意图;
图1c是本申请实施例提供的区块的数据结构示意图;
图1d是本申请实施例提供的序列化区块索引键值和序列化业务区块数据关联存储的示意图;
图1e是本申请实施例提供的拼接序列化数据在序列化数据存储系统中存储的示意图;
图2是本申请实施例提供的结构化数据的反序列化方法的流程示意图;
图3是本申请实施例提供的一种通信系统;
图4是本申请实施例提供的序列化装置的结构示意图;
图5是本申请实施例提供的反序列化装置的结构示意图;
图6是本申请实施例提供的终端设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供的结构化数据的序列化、反序列化方法,可广泛适用于能够对结构化数据进行序列化和反序列化操作的服务器或终端。其中,终端包括但不限于手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobile internet device,MID)等,在此不做限制。本申请实施例提供的序列化方法,通过数据写入接口接收业务数据系统发送的数据写入请求,可得到数据写入请求中包括区块索引键值和业务区块数据,其中区块索引键值用于唯一标记业务区块数据。根据业务区块数据确定对应的区块业务类型,可基于区块业务类型确定对应的序列化规则,进而根据上述序列化规则对区块索引键值和业务区块数据进行序列化以生成序列化区块索引键值和序列化业务区块数据。通过将序列化区块索引键值和序列化业务区块数据发送至序列化数据存储系统中,可将序列化后的数据关联存储在序列化数据存储系统中。采用本申请实施例,可节省数据存储空间,增强数据存储的安全性,适用性高。
下面将结合图1至图6分别对本申请实施例提供的方法及相关装置分别进行详细说明。本申请实施例提供的序列化方法中可包括用于接收数据写入请求、获取数据写入请求中包括的区块索引值和业务区块数据、确定业务区块数据对应的区块业务类型、确定序列化规则、以及基于序列化规则对区块索引值和业务区块数据进行序列化等数据处理阶段。其中,上述各个数据处理阶段的实现方式可参见如下图1所示的实现方式。
参见图1,图1为本申请实施例提供的结构化数据的序列化方法的流程示意图。本申请实施例提供的序列化方法可以包括如下步骤101至103:
101、基于数据写入接口接收业务数据系统发送的数据写入请求。
在一些可行的实施方式中,针对不同的业务场景,在不同时间段内根据业务数据每生成一个新区块时,区块链节点系统中各区块链节点都会对该新区块进行校验,并在各区块链节点达成共识时将该新区块进行上链,即将新区块加入到区块链中。例如,参见图1a,图1a是本申请实施例提供的一种区块链节点系统的结构示意图。如图1a所示,区块链节点系统100是指用于进行区块链节点与区块链节点之间数据共享的系统,区块链节点系统100中可以包括多个区块链节点,各区块链节点之间相互连接,如图1a所示区块链节点系统100中包括区块链节点10a,区块链节点10b,区块链节点10c,区块链节点10d和区块链节点10e,其中每个区块链节点都与其他区块链节点具有连接关系。可以理解的是,区块链节点系统中的任一区块链节点可以是任意形式的计算设备,如服务器、终端等,在此不做限制。每个区块链节点在进行正常工作时可以接收输入信息,并基于接收到的输入信息维护该区块链节点系统内的共享数据,例如,输入信息可以是数据写入请求或数据读取请求等,在此不做限制。为了保证区块链节点系统内的信息互通,区块链节点系统中的每个区块链节点之间可以存在连接关系,区块链节点之间可以通过上述连接关系进行信息传输。例如,当区块链节点系统中的任意区块链节点接收到输入信息时,区块链节点系统中的其他区块链节点便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得区块链节点系统中全部区块链节点上存储的数据均一致。
具体地,在本申请实施例中,可基于数据写入接口接收业务数据系统发送的数据写入请求,其中数据写入请求中可包括区块索引键值和业务区块数据,不难理解的是,区块索引键值可用于唯一标记业务区块数据,因此通过区块索引值,可更快地从磁盘或数据库中检索出对应的业务区块数据。例如,参见图1b,图1b是本申请实施例提供的区块索引键值和业务区块数据的对应关系示意图。如图1b所示,区块索引键值1用于唯一标记业务区块数据1,区块索引键值2用于唯一标记业务区块数据2,区块索引键值3用于唯一标记业务区块数据3,区块索引键值4用于唯一标记业务区块数据4,…,区块索引键值n用于唯一标记业务区块数据n,n为正整数。应当理解的是,本申请实施例中所提到的业务区块数据即为区块,也就是说,业务区块数据中既包括了区块的区块头中的数据内容,同时也包括了区块的区块体中的数据内容。例如参见图1c,图1c是本申请实施例提供的区块的数据结构示意图。如图1c所示,区块包括区块头和区块体,区块头中封装了区块版本号、前一区块的哈希值、时间戳、难度值、随机数、默克尔树根等数据内容,区块体中包括业务数量和完整的业务数据,例如业务数据包括业务数据1,业务数据2,…,业务数据m。其中区块索引键值可以是用户自定义的标识符,例如该标识符可由数字、字母和/或符号按照一定的排列规则组成(例如区块索引键值可以是由数字和字母组成,其中排列规则为数字和字母交叉排列),或者区块索引值也可以是通过SHA256算法对区块头进行二次哈希计算而得到的一个32字节哈希值,即区块哈希值,通常也可以称为区块头哈希值,这是因为参与计算的数据只有区块头中封装的数据内容。具体地,区块哈希值的计算公式可定义为:
SHA256(SHA256(version+prev_hash+merkle_root+time+bits+x)) 公式1
其中,version表示区块版本号、prev_hash为前一区块的哈希值、merkle_root为本区块的默克尔树根、time为时间戳、bits为难度值、x为随机数。基于上述公式1对区块头中封装的数据内容进行二次哈希计算,可得到一个32字节哈希值,即区块哈希值,通常区块哈希值的呈现形式为64个十六进制数。
102、根据业务区块数据确定对应的区块业务类型,并根据区块业务类型确定对应的序列化规则。
在一些可行的实施方式中,针对不同的业务场景,区块体中业务数据所包括的具体内容其实是不同的。例如若区块体中的业务数据是交易数据,则交易数据中可以包括交易创建时间、交易数据转出方、交易数据转移量、交易数据转入方、数字签名等,在此不做限制。若区块体中的业务数据是帐户数据,则帐户数据中可以包括帐户名称、帐户地址、帐户数据余量、用户个人信息等,在此不做限制。若区块体中的业务数据是合约数据,则合约数据中可以包括智能合约名称、智能合约安装路径、智能合约版本号、状态变量、函数、函数修改器等,在此不做限制。不难理解的是,区块头中的数据内容几乎是固定的(即包括区块版本号、前一区块的哈希值、时间戳、难度值、随机数、默克尔树根),因此根据区块头中所封装的数据内容通常不太可能区分出区块业务类型,即业务区块数据对应的区块业务类型。因此在本申请实施例中,可通过分析业务区块数据中包括的业务数据以确定出区块业务类型。具体地,若业务数据中包括交易数据转出方、交易数据转移量以及交易数据转入方,则可确定区块业务类型为交易区块类型;若业务数据中包括帐户名称、帐户地址和帐户数据余量,则可确定区块业务类型为帐户区块类型;若业务数据中包括智能合约名称、智能合约安装路径和智能合约版本号,则可确定区块业务类型为合约区块类型,具体根据实际应用场景确定,在此不做限制。应该理解的是,由于不同区块业务类型所对应的业务区块数据中存储的业务数据是不同的,因此不同业务区块数据所对应的序列化规则也是不同的。在本申请实施例中,已事先注册了不同区块业务类型所对应的序列化规则。
可选的,在一些可行的实施方式中,数据写入请求中还可以包括区块业务类型,因此根据数据写入请求中携带的区块业务类型,即可确定对应的序列化规则。或者,在一些可行的实施方式中,已事先定义了不同的数据写入接口用于处理不同区块业务类型的业务区块数据,因此基于所调用的数据写入接口,即可确定业务区块数据所属的区块业务类型,进而确定对应的序列化规则。或者,在一些可行的实施方式中,业务区块数据中还可以包括表示区块业务类型的区块业务类型标识符,因此通过获取业务区块数据中包括的区块业务类型标识符,即可确定对应的区块业务类型,进而确定区块业务类型对应的序列化规则。或者,在一些可行的实施方式中,还可以通过区块分类模型来确定获取到的业务区块数据对应的区块业务类型。例如,通过获取业务区块数据中包括的业务数据,并将获取到的业务数据输入区块分类模型中,可基于区块分类模型的输出结果确定对应的业务区块类型,进而得到区块业务类型对应的序列化规则,具体可根据实际应用场景确定,在此不做限制。
可选的,在一些可行的实施方式中,为确保写入数据的安全性问题,即只准许注册过的区块业务类型对应的业务区块数据写入,因此若根据区块业务类型不能匹配到对应的序列化规则,或者根据业务区块数据不能确定出对应的区块业务类型时,则拒绝数据写入请求。或者,若数据写入请求中包括的区块索引键值为区块哈希值,则通过获取业务区块数据中区块头所包括的数据内容,可对区块头中的数据内容进行二次哈希计算以得到第一区块哈希值,若第一区块哈希值与数据写入请求中包括的区块哈希值不匹配,则说明业务区块数据中包括的数据内容可能已经被恶意篡改,因此拒绝数据写入请求。
103、基于序列化规则对区块索引键值和业务区块数据进行序列化以生成序列化区块索引键值和序列化业务区块数据,并将序列化区块索引键值和序列化业务区块数据发送至序列化数据存储系统中进行关联存储。
在一些可行的实施方式中,序列化是指将结构化数据按一定的编码规范转换成指定格式的过程,反序列化是指将转成指定格式的数据解析成原始的结构化数据的过程。例如Person是一个表示人的对象类型,person是一个Person类型的对象,将person存到一个对应的可扩展标记语言(XML,Extensible Markup Language)文档中的过程就是一种序列化,而解析XML生成对应Person类型对象person的过程,就是一个反序列化的过程。这里,结构化数据指的就是Person类型的数据,一定的编码规范指的就是XML文档的规范。一般而言,常用的序列化方式包括二进制序列化、XML序列化以及JS对象简谱(JavaScript ObjectNotation,JSON)序列化等,在此不做限制,为方便描述,本申请实施例中皆以二进制序列化为例进行说明。应当理解的是,二进制序列化是一种将要序列化的结构化数据,按照一定的编码规范,转换成一串二进制的字节流存储下来的序列化方式。在本申请实施例中,针对不同区块业务类型的业务区块数据,对应了不同的序列化规则,其中,任一区块业务类型对应的序列化规则中可包括区块索引键值序列化规则和业务区块数据序列化规则,不难理解的是,区块索引键值序列化规则是针对区块索引键值的序列化规则,业务区块数据序列化规则是针对业务区块数据的序列化规则。以下本申请实施例中的区块索引键值序列化规则和业务区块数据序列化规则分别为二进制区块索引键值序列化规则和二进制业务区块数据序列化规则。因此根据二进制区块索引键值序列化规则对区块索引键值进行二进制化编码,可生成序列化区块索引键值,基于二进制业务区块数据序列化规则对业务区块数据进行二进制化编码,可生成序列化业务区块数据。最后通过将生成的序列化区块索引键值和序列化业务区块数据发送至序列化数据存储系统中,可在序列化数据存储系统中进行关联存储。例如,参见图1d,图1d是本申请实施例提供的序列化区块索引键值和序列化业务区块数据关联存储的示意图。如图1d所示,序列化区块索引键值1用于唯一标记序列化业务区块数据1,序列化区块索引键值2用于唯一标记序列化业务区块数据2,序列化区块索引键值3用于唯一标记序列化业务区块数据3,序列化区块索引键值4用于唯一标记序列化业务区块数据4,…,序列化区块索引键值n用于唯一标记序列化业务区块数据n,n为正整数。
可以理解的是,二进制区块索引键值序列化规则中定义了对区块索引键值的编码长度,二进制业务区块数据序列化规则中定义了对业务区块数据中包括的各个字段的编码顺序、各个字段对应的编码长度以及在进行二进制化编码前对业务数据的预处理方式。通常而言,二进制业务区块数据序列化规则中的编码顺序为先对区块头中的各个字段进行二进制化编码,再对区块体中的各个字段进行二进制化编码,其中,区块头中各个字段的编码顺序依次为区块版本号、前一区块的哈希值、时间戳、随机数、难度值、默克尔树根,区块体中各个字段的编码顺序依次为业务数量、业务数据。由于不同业务区块类型对应的区块业务数据中所包括的业务数据的具体内容和格式有所差异,因此在对不同业务数据进行二进制化编码时,其对业务数据的预处理方式也大不相同。
具体地,在一些可行的实施方式中,若区块业务类型为交易区块类型,则交易区块类型对应的序列化规则中可包括二进制交易区块索引键值序列化规则和二进制交易区块数据序列化规则。其中,区块索引键值为交易区块索引键值,业务区块数据为交易区块数据,交易区块索引键值可用于唯一标记上述交易区块数据,且交易区块索引键值是通过SHA256算法对交易区块数据中区块头进行二次哈希计算而得到的交易区块哈希值,其呈现形式为64个十六进制数。因此,通过将这64个十六进制数转化成二进制数,即可得到交易区块索引键值对应的序列化交易区块索引键值。其次,针对交易区块数据,交易区块数据中包括了区块头中的数据内容和区块体中的数据内容。其中区块头中包括区块版本号、前一区块的哈希值、时间戳、随机数、难度值、默克尔树根等,区块体中包括交易数量和交易数据等。其中交易数据中可包括交易创建时间、交易数据转出方、交易数据转移量、交易数据转入方、数字签名等。例如区块体中某条交易数据可表示为“2019年09月06日10时33分23秒账户A向账户B转账100元”。由于交易数据的表现形式通常为一条中文文本数据,因此,通过对交易数据进行分词处理,可得到交易数据中包括的多个字和/或多个词,其中为减少二进制化编码的数据量,可去掉所得到的多个字和/或多个词中的量词、介词和/或副词等。例如某条交易数据“2019年09月06日10时33分23秒账户A向账户B转账100元”可分词为“2019年”,“09月”,“06日”,“10时”,“33分”、“23秒”,“账户A”,“向”,“账户B”,“转账”,“100元”,去掉上述多个字和/或多个词中的量词和介词,可得到处理后的交易数据“2019”,“09”,“06”,“10”,“33”、“23”,“账户A”,“账户B”,“转账”,“100”。因此,在对交易区块数据中的交易数据进行序列化时,可先对交易数据进行分词处理,并去掉所得到多个字和/或多个词中的量词、介词和/或副词后,再对处理后的交易数据进行二进制化编码,以生成序列化交易区块数据。最后通过将序列化交易区块索引键值和序列化交易区块数据发送至序列化数据存储系统中,可将序列化交易区块索引键值和序列化交易区块数据在序列化数据存储系统中进行关联存储。
可选的,在一些可行的实施方式中,若区块业务类型为帐户区块类型,则帐户区块类型对应的序列化规则中可包括二进制帐户区块索引键值序列化规则和二进制帐户区块序列化规则。其中,区块索引键值为帐户区块索引键值,业务区块数据为帐户区块数据,帐户区块索引键值可用于唯一标记上述帐户区块数据,在本申请实施例中,帐户区块索引键值可以是通过SHA256算法对帐户区块数据中区块头进行二次哈希计算而得到的帐户区块哈希值。因此通过将帐户区块哈希值转化成二进制数,即可得到帐户区块索引键值对应的序列化帐户区块索引键值。针对帐户区块数据,帐户区块数据中包括了区块头中的数据内容和区块体中的数据内容。其中区块头中包括区块版本号、前一区块的哈希值、时间戳、随机数、难度值、默克尔树根等,区块体中包括帐户数量和帐户数据等。其中帐户数据中可包括帐户名称、帐户地址、帐户数据余量、用户个人信息(例如用户私钥)等,具体根据实际应用场景确定,在此不做限制。例如区块体中某个帐户数据可表示为“帐户名称C帐户C地址帐户C数据余量帐户C私钥”。由于帐户数据中包括的用户私钥是非常重要的信息,因此,在对帐户区块数据中的帐户数据进行序列化时,需要对用户私钥等重要信息先进行加密再执行二进制化编码,或者需要先对用户私钥等重要信息先进行二进制化编码,然后再进行加密,最后生成序列化帐户区块数据。通过将序列化帐户区块索引键值和序列化帐户区块数据发送至序列化数据存储系统中,可将序列化帐户区块索引键值和序列化帐户区块数据在序列化数据存储系统中进行关联存储。
可选的,在一些可行的实施方式中,若区块业务类型为合约区块类型,则合约区块类型对应的序列化规则中可包括二进制合约区块索引键值序列化规则和二进制智能合约区块序列化规则。其中,区块索引键值为合约区块索引键值,业务区块数据为合约区块数据,且合约区块索引键值用于唯一标记上述合约区块数据,在本申请实施例中,合约区块索引键值也可以是通过SHA256算法对区块头进行二次哈希计算而得到的区块哈希值。因此通过将智能合约区块哈希值转化成二进制数,即可得到合约区块索引键值对应的序列化合约区块索引键值。合约区块数据中包括了区块头中的数据内容和区块体中的数据内容。其中区块头中包括区块版本号、前一区块的哈希值、时间戳、随机数、难度值、默克尔树根等,区块体中包括智能合约数量和合约数据,其中合约数据中包括智能合约名称、智能合约安装路径、智能合约版本号以及合约内容等,具体根据实际应用场景确定,在此不做限制。例如区块体中某条合约数据可表示为“智能合约版本号智能合约名称智能合约安装地址合约内容”。不难理解的是,合约内容其实是一段逻辑代码,通常程序员或开发人员为了增强代码的可读性,会在代码中插入一些注释,其中,注释包括单行注释(“//”表示注释一行)、多行注释(“/*......*/”表示注释若干行)和文档注释(“/**……*/”表示文档注释)等,在此不做限制。由于这些注释在序列化过程中会增加处理开销,因此在对合约内容进行二进制化编码前,可先删除代码中包括的注释,再对合约内容进行二进制化编码,以生成序列化合约数据。最后通过将序列化合约区块索引键值和序列化合约区块数据发送至序列化数据存储系统中,可将序列化合约区块索引键值和序列化合约区块数据在序列化数据存储系统中进行关联存储。
可选的,在一些可行的实施方式中,将序列化区块索引键值和序列化业务区块数据发送至序列化数据存储系统之前,还可以对序列化区块索引键值和序列化业务区块数据进行拼接,以生成拼接序列化数据,最后将拼接序列化数据发送至序列化数据存储系统中进行关联存储。其中,拼接序列化数据的格式可以是序列化区块索引键值在前,序列化业务区块数据在后,或者也可以是序列化区块索引键值在后,序列化业务区块数据在前,在此不做限制。例如,参见图1e,图1e是本申请实施例提供的拼接序列化数据在序列化数据存储系统中存储的示意图。如图1e所示,拼接序列化数据包括拼接序列化数据1,拼接序列化数据2,拼接序列化数据3,拼接序列化数据4,…,拼接序列化数据n。其中拼接序列化数据1由序列化区块索引键值1和序列化业务区块数据1拼接后得到,拼接序列化数据2由序列化区块索引键值2和序列化业务区块数据2拼接后得到,拼接序列化数据3由序列化区块索引键值3和序列化业务区块数据3拼接后得到,拼接序列化数据4由序列化区块索引键值4和序列化业务区块数据4拼接后得到,…,拼接序列化数据n由序列化区块索引键值n和序列化业务区块数据n拼接后得到,n为正整数。
在本申请实施例中,通过数据写入接口接收业务数据系统发送的数据写入请求,可得到数据写入请求中包括区块索引键值和业务区块数据,其中区块索引键值用于唯一标记业务区块数据。根据业务区块数据确定对应的区块业务类型,可基于区块业务类型确定对应的序列化规则,进而根据上述序列化规则对区块索引键值和业务区块数据进行序列化以生成序列化区块索引键值和序列化业务区块数据。通过将序列化区块索引键值和序列化业务区块数据发送至序列化数据存储系统中,可将序列化后的数据关联存储在序列化数据存储系统中。采用本申请实施例,可节省数据存储空间,增强数据存储的安全性,适用性高。
参见图2,图2是本申请实施例提供的结构化数据的反序列化方法的流程示意图。本申请实施例提供的反序列方法可通过如下步骤201至204提供的实现方式进行说明:
201、基于数据读取接口接收数据读取请求。
在一些可行的实施方式中,反序列化是指将二进制的字节流转换成对应的结构化数据的过程。在本申请实施例中,当需要用到存储在序列化数据存储系统中的某个序列化数据时,可基于数据读取接口接收数据读取请求,其中,数据读取请求中可包括区块业务类型和区块索引键值。或者,在一些可行的实施方式中,若已事先定义了不同的数据读取接口用于处理不同区块业务类型的业务区块数据,则可根据所调用的数据读取接口,确定区块业务类型。应当理解的是,数据写入接口和数据读取接口可以是同一个接口,或者也可以是不同的接口,具体根据实际应用场景确定,在此不做限制。
202、根据区块业务类型确定对应的序列化规则和反序列化规则,并基于序列化规则对区块索引键值进行序列化以得到序列化区块索引键值。
在一些可行的实施方式中,根据数据读取请求中携带的区块业务类型或者根据所调用的数据读取接口确定出区块业务类型后,即可根据区块业务类型确定出区块业务类型对应的序列化规则和反序列规则,其中该序列化规则为区块索引键值序列化规则,因此根据区块索引键值序列化规则对数据读取请求中携带的区块索引键值进行序列化,可以得到序列化区块索引键值。
203、根据序列化区块索引键值从序列化数据存储系统中获取序列化区块索引键值对应的序列化业务区块数据。
在一些可行的实施方式中,若序列化数据存储系统中序列化区块索引键值和序列化业务区块数据是关联存储的,且由于序列化区块索引键值可用于唯一标记对应的序列化业务区块数据,因此在上述步骤202中得到序列化区块索引键值后,可基于该序列化区块索引键值在序列化数据存储系统中进行查询,以得到对应的序列化业务区块数据。
可选的,在一些可行的实施方式中,若序列化数据存储系统中存储的是拼接序列化数据(即将序列化区块索引键值和序列化业务区块数据进行拼接后生成的数据),则可遍历序列化数据存储系统中存储的所有拼接序列化数据,并将各个拼接训练化数据进行拆分以得到拆分后的序列化区块索引键值和序列化业务区块数据,若基于任一拼接序列化数据拆分后得到的第一序列化区块索引键值与上述步骤202中得到的序列化区块索引键值相同,则将从所述任一拼接训练化数据中拆分得到的第一序列化业务区块数据确定为序列化区块索引键值对应的序列化业务区块数据。
204、根据反序列化规则对序列化业务区块数据进行反序列化以生成业务区块数据,并将业务区块数据发送至业务数据系统。
在一些可行的实施方式中,反序列规则为序列化业务区块数据对应的反序列化规则,反序列化规则中定义了对序列化业务区块数据的反序列方式,因此根据反序列化规则对序列化业务区块数据进行反序列化,可生成对应的业务区块数据。通过将得到的业务区块数据发送至业务数据系统,以便于后续对业务区块数据的使用。
在本申请实施例中,基于数据读取接口接收数据读取请求,可得到数据读取请求中包括区块业务类型和区块索引键值,根据区块业务类型确定对应的序列化规则和反序列化规则,并基于序列化规则对区块索引键值进行序列化以得到序列化区块索引键值,可根据序列化区块索引键值从序列化数据存储系统中获取序列化区块索引键值对应的序列化业务区块数据,根据反序列化规则对序列化业务区块数据进行反序列化以生成业务区块数据,并将业务区块数据发送至业务数据系统。采用本申请实施例,可方便地从序列化数据存储系统中获取到业务区块数据,适用性高。
参见图3,图3是本申请实施例提供的一种通信系统。该通信系统包括序列化装置30和反序列化装置40。具体地,参见图4,图4是本申请实施例提供的序列化装置的结构示意图。本申请实施例提供的序列化装置包括:
数据写入请求接收模块31,用于基于数据写入接口接收业务数据系统发送的数据写入请求,上述数据写入请求中包括区块索引键值和业务区块数据,上述区块索引键值用于唯一标记上述业务区块数据;
序列化规则确定模块32,用于根据上述业务区块数据确定对应的区块业务类型,并根据上述区块业务类型确定对应的序列化规则;
序列化数据生成模块33,用于基于上述序列化规则对上述区块索引键值和上述业务区块数据进行序列化以生成序列化区块索引键值和序列化业务区块数据,并将上述序列化区块索引键值和上述序列化业务区块数据发送至序列化数据存储系统中进行关联存储。
在一些可行的实施方式中,上述序列化规则确定模块32具体用于:
获取上述业务区块数据中包括的业务数据,若上述业务数据中包括交易数据转出方、交易数据转移量以及交易数据转入方,则确定上述区块业务类型为交易区块类型;
若上述业务数据中包括帐户名称、帐户地址和帐户数据余量,则确定上述区块业务类型为帐户区块类型;
若上述业务数据中包括智能合约名称、智能合约安装路径和智能合约版本号,则确定上述区块业务类型为合约区块类型。
在一些可行的实施方式中,上述序列化规则包括二进制区块索引键值序列化规则和二进制业务区块数据序列化规则;上述序列化数据生成模块33包括:
序列化区块索引键值生成单元331,用于根据上述二进制区块索引键值序列化规则对上述区块索引键值进行二进制化编码以生成序列化区块索引键值;
序列化业务区块数据生成单元332,用于基于上述二进制业务区块数据序列化规则对上述业务区块数据进行二进制化编码以生成序列化业务区块数据。
在一些可行的实施方式中,上述序列化数据生成模块33还用于:
将上述序列化区块索引键值和上述序列化业务区块数据进行拼接以生成拼接序列化数据;
将上述拼接序列化数据发送至序列化数据存储系统中进行存储。
进一步地,参见图5,图5是本申请实施例提供的反序列化装置的结构示意图。本申请实施例提供的反序列化装置包括:
数据读取请求接收模块41,用于基于数据读取接口接收数据读取请求,上述数据读取请求中包括区块业务类型和区块索引键值;
规则获取模块42,用于根据上述区块业务类型确定对应的序列化规则和反序列化规则,并基于上述序列化规则对上述区块索引键值进行序列化以得到序列化区块索引键值;
序列化数据获取模块43,用于根据上述序列化区块索引键值从序列化数据存储系统中获取上述序列化区块索引键值对应的序列化业务区块数据;
反序列化数据生成模块44,用于根据上述反序列化规则对上述序列化业务区块数据进行反序列化以生成业务区块数据,并将上述业务区块数据发送至业务数据系统。
在一些可行的实施方式中,上述序列化数据存储系统中包括拼接序列化数据;上述序列化数据获取模块43用于:
遍历上述序列化数据存储系统中存储的各拼接序列化数据;
若基于任一拼接序列化数据所拆分出的第一序列化区块索引键值与上述序列化区块索引键值相同,则将上述任一拼接训练化数据中包括的第一序列化业务区块数据确定为上述序列化区块索引键值对应的序列化业务区块数据。
具体实现中,上述结构化数据的序列化、反序列化装置可通过其内置的各个功能模块执行如上述图1至图2中各个步骤所提供的实现方式。例如,上述数据写入请求接收模块31可用于执行上述各个步骤中接收数据写入请求,以及获取数据写入请求中包括的区块索引键值和业务区块数据等实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。上述序列化规则确定模块32可用于执行上述各个步骤中确定区块业务类型以及对应的序列化规则等相关步骤所描述的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。上述序列化数据生成模块33可用于执行上述各个步骤中基于序列化规则对区块索引值和业务区块数据执行序列化操作等实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。上述数据读取请求接收模块41可用于执行上述各个步骤中接收数据读取请求,以及获取数据读取请求中包括的区块业务类型以及区块索引键值等实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。上述规则获取模块42可用于执行上述各个步骤中基于区块业务类型确定序列化规则和反序列化规则等相关步骤所描述的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。上述序列化数据获取模块43可用于执行上述各个步骤中根据序列化区块索引键值确定对应的序列化业务区块数据等实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。上述反序列化数据生成模块44可用于执行上述各个步骤中根据反序列化规则对序列化业务区块数据执行反序列化操作等实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
参见图6,图6是本申请实施例提供的终端设备的结构示意图。如图6所示,本实施例中的终端设备可以包括:一个或多个处理器501和存储器502。上述处理器501和存储器502通过总线503连接。存储器502用于存储计算机程序,该计算机程序包括程序指令,处理器501用于执行存储器502存储的程序指令,执行如下操作:
基于数据写入接口接收业务数据系统发送的数据写入请求,上述数据写入请求中包括区块索引键值和业务区块数据,上述区块索引键值用于唯一标记上述业务区块数据;
根据上述业务区块数据确定对应的区块业务类型,并根据上述区块业务类型确定对应的序列化规则;
基于上述序列化规则对上述区块索引键值和上述业务区块数据进行序列化以生成序列化区块索引键值和序列化业务区块数据,并将上述序列化区块索引键值和上述序列化业务区块数据发送至序列化数据存储系统中进行关联存储。
在一些可行的实施方式中,上述处理器501用于:
获取上述业务区块数据中包括的业务数据,若上述业务数据中包括交易数据转出方、交易数据转移量以及交易数据转入方,则确定上述区块业务类型为交易区块类型;
若上述业务数据中包括帐户名称、帐户地址和帐户数据余量,则确定上述区块业务类型为帐户区块类型;
若上述业务数据中包括智能合约名称、智能合约安装路径和智能合约版本号,则确定上述区块业务类型为合约区块类型。
在一些可行的实施方式中,上述序列化规则包括二进制区块索引键值序列化规则和二进制业务区块数据序列化规则;上述处理器501用于:
根据上述二进制区块索引键值序列化规则对上述区块索引键值进行二进制化编码以生成序列化区块索引键值;
基于上述二进制业务区块数据序列化规则对上述业务区块数据进行二进制化编码以生成序列化业务区块数据。
在一些可行的实施方式中,上述处理器501用于:
将上述序列化区块索引键值和上述序列化业务区块数据进行拼接以生成拼接序列化数据;
将上述拼接序列化数据发送至序列化数据存储系统中进行存储。
在一些可行的实施方式中,上述处理器501还用于:
基于数据读取接口接收数据读取请求,上述数据读取请求中包括区块业务类型和区块索引键值;
根据上述区块业务类型确定对应的序列化规则和反序列化规则,并基于上述序列化规则对上述区块索引键值进行序列化以得到序列化区块索引键值;
根据上述序列化区块索引键值从序列化数据存储系统中获取上述序列化区块索引键值对应的序列化业务区块数据;
根据上述反序列化规则对上述序列化业务区块数据进行反序列化以生成业务区块数据,并将上述业务区块数据发送至业务数据系统。
在一些可行的实施方式中,上述序列化数据存储系统中包括拼接序列化数据;上述处理器501用于:
遍历上述序列化数据存储系统中存储的各拼接序列化数据;
若基于任一拼接序列化数据所拆分出的第一序列化区块索引键值与上述序列化区块索引键值相同,则将上述任一拼接训练化数据中包括的第一序列化业务区块数据确定为上述序列化区块索引键值对应的序列化业务区块数据。
应当理解,在一些可行的实施方式中,上述处理器501可以是中央处理单元(central processing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integratedcircuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。该存储器502可以包括只读存储器和随机存取存储器,并向处理器501提供指令和数据。存储器502的一部分还可以包括非易失性随机存取存储器。例如,存储器502还可以存储设备类型的信息。
具体实现中,上述终端设备可通过其内置的各个功能模块执行如上述图1至图2中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被处理器执行时实现图1至图2中各个步骤所提供的结构化数据的序列化、反序列化方法,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
上述计算机可读存储介质可以是前述任一实施例提供的结构化数据的序列化、反序列化装置或者上述终端设备的内部存储单元,例如电子设备的硬盘或内存。该计算机可读存储介质也可以是该电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flashcard)等。进一步地,该计算机可读存储介质还可以既包括该电子设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该电子设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请的权利要求书和说明书及附图中的术语“第一”、“第二”、“第三”、“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置展示该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
Claims (10)
1.一种结构化数据的序列化方法,其特征在于,所述方法包括:
基于数据写入接口接收业务数据系统发送的数据写入请求,所述数据写入请求中包括区块索引键值和业务区块数据,所述区块索引键值用于唯一标记所述业务区块数据;
根据所述业务区块数据确定对应的区块业务类型,并根据所述区块业务类型确定对应的序列化规则;
基于所述序列化规则对所述区块索引键值和所述业务区块数据进行序列化以生成序列化区块索引键值和序列化业务区块数据,并将所述序列化区块索引键值和所述序列化业务区块数据发送至序列化数据存储系统中进行关联存储。
2.根据权利要求1所述方法,其特征在于,所述根据所述业务区块数据确定对应的区块业务类型,包括:
获取所述业务区块数据中包括的业务数据,若所述业务数据中包括交易数据转出方、交易数据转移量以及交易数据转入方,则确定所述区块业务类型为交易区块类型;
若所述业务数据中包括帐户名称、帐户地址和帐户数据余量,则确定所述区块业务类型为帐户区块类型;
若所述业务数据中包括智能合约名称、智能合约安装路径和智能合约版本号,则确定所述区块业务类型为合约区块类型。
3.根据权利要求1所述方法,其特征在于,所述序列化规则包括二进制区块索引键值序列化规则和二进制业务区块数据序列化规则;所述基于所述序列化规则对所述区块索引键值和所述业务区块数据进行序列化,包括:
根据所述二进制区块索引键值序列化规则对所述区块索引键值进行二进制化编码以生成序列化区块索引键值;
基于所述二进制业务区块数据序列化规则对所述业务区块数据进行二进制化编码以生成序列化业务区块数据。
4.根据权利要求1所述方法,其特征在于,所述将所述序列化区块索引键值和所述序列化业务区块数据发送至序列化数据存储系统中进行关联存储,包括:
将所述序列化区块索引键值和所述序列化业务区块数据进行拼接以生成拼接序列化数据;
将所述拼接序列化数据发送至序列化数据存储系统中进行存储。
5.一种结构化数据的反序列化方法,其特征在于,所述方法包括:
基于数据读取接口接收数据读取请求,所述数据读取请求中包括区块业务类型和区块索引键值;
根据所述区块业务类型确定对应的序列化规则和反序列化规则,并基于所述序列化规则对所述区块索引键值进行序列化以得到序列化区块索引键值;
根据所述序列化区块索引键值从序列化数据存储系统中获取所述序列化区块索引键值对应的序列化业务区块数据;
根据所述反序列化规则对所述序列化业务区块数据进行反序列化以生成业务区块数据,并将所述业务区块数据发送至业务数据系统。
6.根据权利要求5所述方法,其特征在于,所述序列化数据存储系统中包括拼接序列化数据;所述根据所述序列化区块索引键值从序列化数据存储系统中获取所述序列化区块索引键值对应的序列化业务区块数据,包括:
遍历所述序列化数据存储系统中存储的各拼接序列化数据;
若基于任一拼接序列化数据所拆分出的第一序列化区块索引键值与所述序列化区块索引键值相同,则将所述任一拼接训练化数据中包括的第一序列化业务区块数据确定为所述序列化区块索引键值对应的序列化业务区块数据。
7.一种结构化数据的序列化装置,其特征在于,所述装置包括:
数据写入请求接收模块,用于基于数据写入接口接收业务数据系统发送的数据写入请求,所述数据写入请求中包括区块索引键值和业务区块数据,所述区块索引键值用于唯一标记所述业务区块数据;
序列化规则确定模块,用于根据所述业务区块数据确定对应的区块业务类型,并根据所述区块业务类型确定对应的序列化规则;
序列化数据生成模块,用于基于所述序列化规则对所述区块索引键值和所述业务区块数据进行序列化以生成序列化区块索引键值和序列化业务区块数据,并将所述序列化区块索引键值和所述序列化业务区块数据发送至序列化数据存储系统中进行关联存储。
8.一种结构化数据的反序列化装置,其特征在于,所述装置包括:
数据读取请求接收模块,用于基于数据读取接口接收数据读取请求,所述数据读取请求中包括区块业务类型和区块索引键值;
规则获取模块,用于根据所述区块业务类型确定对应的序列化规则和反序列化规则,并基于所述序列化规则对所述区块索引键值进行序列化以得到序列化区块索引键值;
序列化数据获取模块,用于根据所述序列化区块索引键值从序列化数据存储系统中获取所述序列化区块索引键值对应的序列化业务区块数据;
反序列化数据生成模块,用于根据所述反序列化规则对所述序列化业务区块数据进行反序列化以生成业务区块数据,并将所述业务区块数据发送至业务数据系统。
9.一种终端设备,其特征在于,包括处理器和存储器,所述处理器和存储器相互连接;
所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-6任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910869336.4A CN110597814B (zh) | 2019-09-16 | 2019-09-16 | 结构化数据的序列化、反序列化方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910869336.4A CN110597814B (zh) | 2019-09-16 | 2019-09-16 | 结构化数据的序列化、反序列化方法以及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110597814A true CN110597814A (zh) | 2019-12-20 |
CN110597814B CN110597814B (zh) | 2021-12-28 |
Family
ID=68859584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910869336.4A Active CN110597814B (zh) | 2019-09-16 | 2019-09-16 | 结构化数据的序列化、反序列化方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110597814B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111061698A (zh) * | 2019-12-30 | 2020-04-24 | 语联网(武汉)信息技术有限公司 | 以太坊合约数据的存储方法及装置 |
CN111327676A (zh) * | 2020-01-20 | 2020-06-23 | 腾讯科技(深圳)有限公司 | 区块数据处理方法及装置 |
CN111641710A (zh) * | 2020-05-29 | 2020-09-08 | 深圳壹账通智能科技有限公司 | 基于微服务的数据处理方法、装置、终端及存储介质 |
CN112416940A (zh) * | 2020-11-27 | 2021-02-26 | 深信服科技股份有限公司 | 键值对存储方法、装置、终端设备以及存储介质 |
CN112633839A (zh) * | 2020-12-25 | 2021-04-09 | 山东浪潮通软信息科技有限公司 | 一种基于NoSql的自动纳税申报方法、装置及存储介质 |
CN113518094A (zh) * | 2021-09-14 | 2021-10-19 | 深圳市普渡科技有限公司 | 数据处理方法、装置、机器人和存储介质 |
CN115203159A (zh) * | 2022-07-25 | 2022-10-18 | 北京字跳网络技术有限公司 | 一种数据存储方法、装置、计算机设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106130653A (zh) * | 2016-06-03 | 2016-11-16 | 北京昊普康科技股份有限公司 | 数据传输装置和方法 |
US20170221032A1 (en) * | 2007-09-06 | 2017-08-03 | Mohammad A. Mazed | System and method for machine learning based user application |
US20190158270A1 (en) * | 2017-11-21 | 2019-05-23 | International Business Machines Corporation | Exchanging Asset, Maintenance, And Spares Parts Information Via Blockchain |
CN109815226A (zh) * | 2018-12-13 | 2019-05-28 | 平安科技(深圳)有限公司 | 基于区块链的数据存储方法、装置、设备和存储介质 |
CN110032884A (zh) * | 2019-01-31 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 区块链中实现隐私保护的方法及节点、存储介质 |
CN110096498A (zh) * | 2019-03-28 | 2019-08-06 | 阿里巴巴集团控股有限公司 | 一种数据清洗方法及装置 |
-
2019
- 2019-09-16 CN CN201910869336.4A patent/CN110597814B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170221032A1 (en) * | 2007-09-06 | 2017-08-03 | Mohammad A. Mazed | System and method for machine learning based user application |
CN106130653A (zh) * | 2016-06-03 | 2016-11-16 | 北京昊普康科技股份有限公司 | 数据传输装置和方法 |
US20190158270A1 (en) * | 2017-11-21 | 2019-05-23 | International Business Machines Corporation | Exchanging Asset, Maintenance, And Spares Parts Information Via Blockchain |
CN109815226A (zh) * | 2018-12-13 | 2019-05-28 | 平安科技(深圳)有限公司 | 基于区块链的数据存储方法、装置、设备和存储介质 |
CN110032884A (zh) * | 2019-01-31 | 2019-07-19 | 阿里巴巴集团控股有限公司 | 区块链中实现隐私保护的方法及节点、存储介质 |
CN110096498A (zh) * | 2019-03-28 | 2019-08-06 | 阿里巴巴集团控股有限公司 | 一种数据清洗方法及装置 |
Non-Patent Citations (3)
Title |
---|
姚前: "以太币", 《数字货币初探》 * |
张舒: "基于区块链的安全支付平台的设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
李为线: "数字货币分布式总账共识系统设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111061698A (zh) * | 2019-12-30 | 2020-04-24 | 语联网(武汉)信息技术有限公司 | 以太坊合约数据的存储方法及装置 |
CN111061698B (zh) * | 2019-12-30 | 2023-09-05 | 语联网(武汉)信息技术有限公司 | 以太坊合约数据的存储方法及装置 |
CN111327676A (zh) * | 2020-01-20 | 2020-06-23 | 腾讯科技(深圳)有限公司 | 区块数据处理方法及装置 |
CN111327676B (zh) * | 2020-01-20 | 2023-11-28 | 腾讯科技(深圳)有限公司 | 区块数据处理方法及装置 |
CN111641710A (zh) * | 2020-05-29 | 2020-09-08 | 深圳壹账通智能科技有限公司 | 基于微服务的数据处理方法、装置、终端及存储介质 |
CN112416940A (zh) * | 2020-11-27 | 2021-02-26 | 深信服科技股份有限公司 | 键值对存储方法、装置、终端设备以及存储介质 |
CN112416940B (zh) * | 2020-11-27 | 2024-05-28 | 深信服科技股份有限公司 | 键值对存储方法、装置、终端设备以及存储介质 |
CN112633839A (zh) * | 2020-12-25 | 2021-04-09 | 山东浪潮通软信息科技有限公司 | 一种基于NoSql的自动纳税申报方法、装置及存储介质 |
CN113518094A (zh) * | 2021-09-14 | 2021-10-19 | 深圳市普渡科技有限公司 | 数据处理方法、装置、机器人和存储介质 |
CN115203159A (zh) * | 2022-07-25 | 2022-10-18 | 北京字跳网络技术有限公司 | 一种数据存储方法、装置、计算机设备和存储介质 |
CN115203159B (zh) * | 2022-07-25 | 2024-06-04 | 北京字跳网络技术有限公司 | 一种数据存储方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110597814B (zh) | 2021-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110597814B (zh) | 结构化数据的序列化、反序列化方法以及装置 | |
US7665015B2 (en) | Hardware unit for parsing an XML document | |
US7716577B2 (en) | Method and apparatus for hardware XML acceleration | |
US7596745B2 (en) | Programmable hardware finite state machine for facilitating tokenization of an XML document | |
US7665016B2 (en) | Method and apparatus for virtualized XML parsing | |
CN109241484B (zh) | 一种基于加密技术的网页数据的发送方法及设备 | |
CN106970820A (zh) | 代码存储方法及代码存储装置 | |
CN112650533B (zh) | 接口文档的生成方法、装置和终端设备 | |
CN105659274A (zh) | 用于在可重构平台中解码数据流的方法和设备 | |
CN109460220A (zh) | 报文预定义代码生成方法、装置、电子设备和存储介质 | |
CN112307512A (zh) | 一种日志脱敏方法、装置及存储介质 | |
CN110955714A (zh) | 一种将非结构化文本转化为结构化文本的方法及装置 | |
CN111475700A (zh) | 一种数据提取方法及相关设备 | |
CN111240772B (zh) | 一种基于区块链的数据处理方法、装置及存储介质 | |
CN114201756A (zh) | 一种智能合约代码片段的漏洞检测方法和相关装置 | |
CN111858467B (zh) | 基于人工智能的文件数据处理方法、装置、设备和介质 | |
WO2024066271A1 (zh) | 数据库水印的嵌入方法、溯源方法、装置和电子设备 | |
CN113296854B (zh) | 一种数据加载方法、系统、电子设备及存储介质 | |
CN109840080B (zh) | 字符属性比较方法、装置、存储介质及电子设备 | |
CN109981818B (zh) | 域名语义异常分析方法、装置、计算机设备及其存储介质 | |
CN113627938B (zh) | 一种区块链的数据删除方法、装置、设备及存储介质 | |
CN115964075B (zh) | 应用导出导入方法、装置、计算机设备及存储介质 | |
CN117675870B (zh) | 一种基于区块链的电子病历分布式共享方法及装置 | |
CN113723059B (zh) | 一种基于区块链将html转换成pdf的方法和系统 | |
CN114816421A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |