CN110471918A - 一种关系型数据库同步到区块链的方法及装置 - Google Patents
一种关系型数据库同步到区块链的方法及装置 Download PDFInfo
- Publication number
- CN110471918A CN110471918A CN201910635791.8A CN201910635791A CN110471918A CN 110471918 A CN110471918 A CN 110471918A CN 201910635791 A CN201910635791 A CN 201910635791A CN 110471918 A CN110471918 A CN 110471918A
- Authority
- CN
- China
- Prior art keywords
- data
- block chain
- synchronized
- message
- relevant database
- 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
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/2282—Tablespace storage structures; Management thereof
-
- 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
- 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Abstract
本发明公开了一种关系型数据库同步到区块链的方法及装置,所述方法包括:从关系型数据库中获取待同步数据,通过消息队列发送携带所述待同步数据的消息,采用动态脚本语言将所述消息转化为区块链数据,将所述区块链数据写入区块链中,实现了关系型数据库到区块链的数据同步,不涉及分布式事务问题,无需侵入原有业务系统,避免了对原有业务系统的稳定性和可靠性的影响,且不会额外增加原有业务系统的复杂度,解决了现有的区块链网络和业务系统对接时,不仅费时费力,而且影响原有业务系统的稳定性和可靠性,增加原有业务系统的复杂度的问题。
Description
技术领域
本发明涉及计算机应用技术领域,尤其涉及一种关系型数据库同步到区块链的方法及装置。
背景技术
从2008年比特币问世一来,经历十年的发展,区块链这种分布式的、全网一致的、不可删除、不可篡改的链式区块存储结构,作为一种史无前例的人类记账和存储模式,创造性地解决了人类大规模协作过程中的信用问题,使得区块链在去中心化与防伪溯源数据不可篡改的应用越来越丰富,已落地的场景也越来越多,如利用区块链提供的分布式的在线数据库,加密交易数据由多方共享,从而为加密货币交易提供完整的审计跟踪;又如应用于制造供应链中解决假冒伪劣品的问题,并加强银行金融交易服务,遍布公证、跨境支付、供应链金融、物联网等领域中的众多应用。
但现有的上述这些应用较多都不是全新开发的,大部分是在原有的应用基础之上为数字资产写入区块链来实现的。传统的系统对接的方式是,在区块链网络和业务系统之间,额外添加一套对接接口,在有需要进行区块链对接的逻辑单元,做有选择性的对接,通常是以超文本传输协议http的表述性状态传递rest接口形式,或者植入封装好的区块链数据读写相关软件开发工具包SDK的应用程序编程接口API,从而实现数据接入。
可见,对原有已经存在的存量业务数据,以及不断增长的增量数据上链操作,涉及到较多的逻辑单元,采用现有的做法,由于涉及到分布式事务问题,额外的数据接入会引入一致性相关的问题,影响原有业务系统的稳定性和可靠性,而且会额外增加原有业务系统的复杂度,同时,现有的做法还要投入较多的时间和人力,存在费时、费力、周期长等缺陷。
发明内容
有鉴于此,本发明提供了一种关系型数据库同步到区块链的方法及装置,用于解决现有的区块链网络和业务系统对接时,不仅费时费力,而且额外的数据接入影响原有业务系统的稳定性和可靠性,增加了原有业务系统的复杂度的问题。
为达上述之一或部分或全部目的或是其他目的,本发明实施例的第一方面提供了一种关系型数据库同步到区块链的方法,包括:
从关系型数据库中获取待同步数据;
通过消息队列发送携带所述待同步数据的消息;
采用动态脚本语言将所述消息转化为区块链数据;
将所述区块链数据写入区块链中。
在其中一个实施例中,所述从关系型数据库中获取待同步数据,包括:
根据用户输入的信息获取存放所述待同步数据的表名;
根据所述表名查找数据库,得到所述表名对应的数据表;
从所述数据表中获取待同步数据。
在其中一个实施例中,所述从所述数据表中获取待同步数据,包括:
提取所述数据表的元数据,所述元数据包括字段;
当所述数据表的元数据提取完成后,获取所述数据表中所述字段对应的全量数据;
将所述元数据和所述全量数据确定为待同步数据。
在其中一个实施例中,所述从所述数据表中获取待同步数据,还包括:
监听所述数据表中所述字段对应的全量数据是否存在增量;
若存在增量,获取所述数据表中所述字段对应的增量数据;
将获取的增量数据确定为待同步数据。
在其中一个实施例中,所述通过消息队列发送携带所述待同步数据的消息,包括:
将所述待同步数据进行标准化处理,得到满足预设格式要求的消息,所述消息携带所述待同步数据;
通过消息队列发送所述消息。
在其中一个实施例中,所述采用动态脚本语言将所述消息转化为区块链数据,包括:
采用动态脚本语言解析所述消息;
根据所述数据表初始化关系型数据库中数据表的字段与区块链中区块链字段的转换规则;
根据所述转换规则将解析后的消息转换为区块链数据。
在其中一个实施例中,所述将所述区块链数据写入区块链中,包括:
根据预设阈值确定分拆策略;
若当前预写入的区块链数据的长度大于或等于所述预设阈值,按照所述分拆策略分拆所述区块链数据;
若当前预写入的区块链数据的长度小于所述预设阈值,按照所述分拆策略合并所述当前预写入的区块链数据与下一个预写入的区块链数据;
将经过分拆或合并后的区域链数据批量写入区块链中。
本发明实施例的第二方面提供了一种关系型数据库同步到区块链的装置,包括:
数据读取器,用于从关系型数据库中获取待同步数据;
发送器,用于通过消息队列发送携带所述待同步数据的消息;
转换器,用于采用动态脚本语言将所述消息转化为区块链数据;
数据写入器,用于将所述区块链数据写入区块链中。
本发明实施例的第三方面提供了一种终端设备,包括:
存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述所述方法的步骤。
本发明实施例的第四方面提供了一种计算机可读存储介质,包括:
所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述方法的步骤。
本发明提供了一种关系型数据库同步到区块链的方法及装置,所述方法包括:从关系型数据库中获取待同步数据,通过消息队列发送携带所述待同步数据的消息,采用动态脚本语言将所述消息转化为区块链数据,将所述区块链数据写入区块链中,实现了关系型数据库到区块链的数据同步,不涉及分布式事务问题,无需侵入原有业务系统,避免了对原有业务系统的稳定性和可靠性的影响,且不会额外增加原有业务系统的复杂度,解决了现有的区块链网络和业务系统对接时,不仅费时费力,而且影响原有业务系统的稳定性和可靠性,增加原有业务系统的复杂度的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例一提供的一种关系型数据库同步到区块链的方法的实现流程示意图;
图2是图1所示实施例一的步骤11的细化步骤流程示意图;
图3是图1所示实施例一的步骤12的细化步骤流程示意图;
图4是图1所示实施例一的步骤13的细化步骤流程示意图;
图5是图1所示实施例一的步骤14的细化步骤流程示意图;
图6是本发明实施例六提供的一种关系型数据库同步到区块链的装置的示意图;
图7是本发明实施例七提供的终端设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
图1是本发明实施例一提供的一种关系型数据库同步到区块链的方法的实现流程示意图,如图1所示,本实施例提供的关系型数据库同步到区块链的方法包括以下步骤:
步骤11、从关系型数据库中获取待同步数据。
关系型数据库是由多张能互相联接的二维行列表格组成的数据库。当前主流的关系型数据库有Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL等。
根据用户输入的信息,确定区块链中需要的数据,然后通过查询数据库表,获取业务数据库表中存放的区块链中需要的数据,该数据即为待同步数据。
在查询数据库表时,不同的关系型数据库的查询规则不同,根据业务数据库的实际类型,配置不同的查询语句。例如,以业务数据库为MySQL为例,查询表test中的所有数据,查询语句为:select*fromtest。
在获取的过程中,若由于各种原因暂停获取时,在当前读取的位置设置中断标记,待获取过程恢复正常后,从中断标记的位置开始继续读取待同步数据,避免获取待同步数据的过程中出现中断后,无法获知是否已读取完成,需要从头重新开始重新读取。本实施例中在发生获取暂停时,通过中断标记,不仅节省了获取待同步数据的时间,而且节省了暂存待同步数据的内存空间,避免造成内存空间的浪费。
步骤12、通过消息队列发送携带所述待同步数据的消息。
得到待同步数据后,将待同步数据发送至缓冲区,具体可以通过消息队列发送待同步数据。
消息队列是在消息的传输过程中保存消息的容器,消息队列将待同步数据从业务数据库中取出放至缓冲区。消息队列数据结构的实质为链表,采用先进先出原则,先读取的数据最先保存至缓冲区。当缓冲区当前无更多空间存放待同步数据时,消息队列保留已获取的待同步数据,直到可以成功地传递保存。
本实施例中,消息队列发送的所述待同步数据,暂时存放的缓冲区可以为预设的数据中心,数据中心的存储量可以根据业务级别确定,业务所需数据量与数据中心存储空间的大小成正比。
步骤13、采用动态脚本语言将所述消息转化为区块链数据。
由于业务数据与区块链数据的属性之间存在差异(如在业务中,用户年龄为“age”,而在区块链中表示为“userAge”),因此将业务数据写入区块链之前,需要将其转换为区块链属性的数据。本实施例中,选择脚本语言将其转化,具体的,可以为JavaScript动态脚本语言进行转换。
本实施例中采用动态脚本语言将消息中的待同步数据转化为区块链数据,可极大地简化数据的转换过程,可实现随时部署,不需要耗时的编译/打包过程,并且脚本语言的代码能够被实时生成和执行,实时的实现业务数据至区块链数据的同步。
步骤14、将所述区块链数据写入区块链中。
本实施例提供了一种关系型数据库同步到区块链的方法,包括:从关系型数据库中获取待同步数据,通过消息队列发送携带所述待同步数据的消息,采用动态脚本语言将所述消息转化为区块链数据,将所述区块链数据写入区块链中,实现了关系型数据库到区块链的数据同步,不涉及分布式事务问题,无需侵入原有业务系统,避免了对原有业务系统的稳定性和可靠性的影响,且不会额外增加原有业务系统的复杂度,解决了现有的区块链网络和业务系统对接时,不仅费时费力,而且影响原有业务系统的稳定性和可靠性,增加原有业务系统的复杂度的问题。
图2是图1所示实施例一的步骤11的细化步骤流程示意图,如图2所示,本实施例中,所述从关系型数据库中获取待同步数据,包括以下步骤:
步骤201、根据用户输入的信息获取存放所述待同步数据的表名。
由于通常业务系统的数据库较为复杂,涉及数百至数千个数据表,而需要与区块链做同步的实际是只是少数的一部分数据,因此需要获取存放待同步数据的表名,避免从成百数千个数据表中一一查找,导致查找速度慢,而且大大增加了查找的空间复杂度,给业务数据库造成过多的压力。
获取表名时,首先根据用户输入的信息,确定待同步数据所在的表,获取存放待同步数据的数据库表的表名。可以直接根据用户输入的信息获取表名,如用户已指定表名;或者,根据用户输入的信息,间接的获取表名,如根据用户设定的条件,判断得出表名。
步骤202、根据所述表名查找数据库,得到所述表名对应的数据表。
在业务系统成百数千的数据库表中,根据表名确定具体的数据表。
步骤203、从所述数据表中获取待同步数据。
从确定的数据表中获取待同步数据,具体包括以下步骤:
S2031、提取所述数据表的元数据,所述元数据包括字段。
元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data aboutdata),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。本实施例中,采用元数据描述关系型数据表结构的数据,各种字段类型及主键、外键等约束信息。
本实施例暂不支持MySQL数据库中存在缺少主键或者复合主键的表的数据同步,除此种表外,可使用show index from*语句从系统information_schema库内取得索引数据,得到的数据类型和约束信息被保存在元数据信息中,表1所示的业务数据库中的字段数据,提取得到的元数据如表2所示:
表1业务数据库中的字段数据
COLIMN_ID | TABLE_NAME | COL_NAME | DATA_TYPE | DATA_LENGTH |
1 | ct_buyerpscae | ROW_ID | varchar | 64 |
2 | ct_buyerpscae | FID | varchar | 44 |
3 | ct_buyerpscae | FSEQ | decimal | 22 |
表2元数据存储字段类型数据
table_id | name | data_type | column_id | data_length |
420691274629639 | ROW_ID | NVARchar2 | 1 | 64 |
420691274629639 | FID | VARchar2 | 2 | 44 |
420691274629639 | FSEQ | NUMBER | 3 | 22 |
每次提取元数据时,都需要检查元数据是否已经提取完成,如元数据提取已成功完成,则在此后的同步过程中,无需再对该表重新提取。
S2032、当所述数据表的元数据提取完成后,获取所述数据表中所述字段对应的全量数据。
元数据处理完毕之后,开始实际业务数据的提取过程。本实施例中,提取记录的过程是一个长连接的方式,连续地从数据库表中不断地遍历,直到不再有新的查找数据为止,此时,则获取了数据表中所有元数据包括的字段的所有数据,即当前数据库表中的全量数据。
由于每次同步之后会产生一个指针用于记录上次同步的位置,因此在对容量较大的表进行同步过程中如果发生中断,则下次重新启动时会从最后指针所在的位置开始,避免重复获取数据。
S2033、将所述元数据和所述全量数据确定为待同步数据。
将提取的元数据和根据元数据获取的全量数据,确定为待同步数据。
可选的,由于全量数据的数据量一般都较大,在发送消息队列之前,先将全量数据进行预处理,按照预设值(如5000)做批量合并处理,从而加快了消息队列发送携带待同步数据的消息的速度,从而提高同步效率。
S2034、监听所述数据表中所述字段对应的全量数据是否存在增量;
由于关系型数据库中的业务数据的变动通常都是频繁的,因此全量数据存放到缓冲区后,需要持续的获取增量数据。各类关系型数据库在增量数据的获取上,存在较大的差异。以MySQL为例,可通过开启binlog日志的方式,取得每一次进行数据操纵语言DML操作所产生的增量数据。又如在ORACLE中可以采用物化视图日志的方式,获取产生的增量数据。实际上无论使用哪一种数据库,除了数据库厂商提供的增量获取方法之外,还可以使用触发器等方法得到数据的增量更新。
与全量提取的不同在于,增量变动数据触发被捕获之后,会得到一条当前记录的id,通过此id又可以获取到该记录当前的最新值,辅助元数据的类型及约束条件,可以形成JSON格式的完整记录。依据DML操作类型,同时要辅助当前记录的最新状态对DML操作进行校准,最后将主键作为更新条件jsonCondition,并最终形成带有DML操作类型的JSON格式消息体,如表3为不带DML操作类型的消息,表4为带有DML操作类型的消息:
表3不带DML操作类型的消息
表4带有DML操作类型的消息
S2035、若存在增量,获取所述数据表中所述字段对应的增量数据;
根据上步判断的结果,当数据库表中存在增量数据时,将其确定为增量数据。
S2036、将获取的增量数据确定为待同步数据。
然后,同全量数据相同的操作,将增量数据确定为待同步数据,从而不仅得到了数据库表中原先就有的全量数据,同时获取到了该全量数据对应的增量数据,实现了增量数据的同步。
图3是图1所示实施例一的步骤12的细化步骤流程示意图,如图3所示,所述通过消息队列发送携带所述待同步数据的消息,包括以下步骤:
步骤301、将所述待同步数据进行标准化处理,得到满足预设格式要求的消息,所述消息携带所述待同步数据。
预设数据的格式要求,对待同步数据进行标准化处理,将其格式处理为预设格式要求。
步骤302、通过消息队列发送所述消息。
本实施例是在实施例一的基础上,在发送消息至缓冲区之前,先将获取的待同步数据进行处理,使得所有数据满足预设格式要求,通过消息队列发送携带待同步数据的消息,根据预设格式要求接收待同步数据,提高了消息的发送速度,区块链再按照统一的预设格式接收待同步数据,从而加快了待同步数据的同步速度,并且,统一格式的数据,更便于写入区块链中,节省写入时间。
图4是图1所示实施例一的步骤13的细化步骤流程示意图,如图4所示,所述采用动态脚本语言将所述消息转化为区块链数据,包括:
步骤401、采用动态脚本语言解析所述消息。
由于业务数据与区块链数据的属性之间存在差异(如在业务中,用户年龄为“age”,而在区块链中表示为“userAge”),因此将业务数据写入区块链之前,需要将其转换为区块链属性的数据。首先,采用动态脚本语言解析携带待同步数据的消息,得到待同步数据的元数据和元数据对应数据,以元数据为字段为例,解析的消息为:
其中,name、age、birthday为元数据,“my_name”、12、“2007-06-01 12:00:00”为上述元数据分别对应的数据。
步骤402、根据所述数据表初始化关系型数据库中数据表的字段与区块链中区块链字段的转换规则。
转换规则为关系型数据库数据表的字段与区块链中区块链字段的对应关系,可由用户预先定义,根据转换规则将元数据字段转换为区块链字段。如定义关系型数据库中name、age、birthday分别对应区块链中的userName、userAge、userBirthday,得到转换规则如下:
步骤403、根据所述转换规则将解析后的消息转换为区块链数据。
根据上述得到的转换规则将解析后的消息转换为区块链的数据,得到的区块链数据为:
根据上述步骤,实现了采用动态脚本语言将消息携带的待同步数据转换为区块链数据,本实施例中,采用动态脚本语言做转换引擎,可实现在做大量的转换规则时,相比编译型高级语言,动态脚本语言不需要针对每一个规则单独另编码,只需一段用户预先自定义的转换脚本即可实现多种多样的转换规则,从而在不改动源代码的条件下能够很好地进行扩展。
图5是图1所示实施例一的步骤14的细化步骤流程示意图,如图5所示,所述将所述区块链数据写入区块链中,包括以下步骤:
步骤501、根据预设阈值确定分拆策略。
区块链是在联盟链的环境下使用的,由于目前的联盟链在吞吐量上无法达到传统的关系型数据库同样的数据级,因此在业务交易比较频繁的时段,易出现并发问题。为减少并发影响,本实施例中对预写入区块链数据进行预处理:先根据业务数据级预设一个阈值(如5000),再获取预写入区块链数据,在不改变区块链数据的前提下,按照预设阈值重新划分预写入区块链数据的长度。
步骤502、若当前预写入的区块链数据的长度大于或等于所述预设阈值,按照所述分拆策略分拆所述区块链数据。
步骤503、若当前预写入的区块链数据的长度小于所述预设阈值,按照所述分拆策略合并所述当前预写入的区块链数据与下一个预写入的区块链数据。
当预写入的区块链数据的长度大于或等于预设阈值时,将其分拆为预设阈值大小的数据,将多余的数据并入下一个预写入的区块链数据中。当预写入的区块链数据的长度小于预设阈值,利用下一个预写入的区块链数据的长度弥补,使当前预写入的区块链数据的长度满足预设阈值的长度要求。
步骤504、将经过分拆或合并后的区域链数据批量写入区块链中。
本实施例中,在将区块链数据写入区块链中时,在业务交易比较频繁的时段,尽可能在写入时做批量分拆和合并,避免过大和过小的批处理,从而减少对并发方面的影响。
图6是本发明实施例六提供的一种关系型数据库同步到区块链的装置,如图6所示,本实施例的关系型数据库同步到区块链的装置包括以下模块:
数据读取器61,用于从关系型数据库中获取待同步数据;
发送器62,用于通过消息队列发送携带所述待同步数据的消息;
转换器63,用于采用动态脚本语言将所述消息转化为区块链数据;
数据写入器64,用于将所述区块链数据写入区块链中。
本实施例六提供的一种关系型数据库同步到区块链的装置,用于实现实施例一所述的关系型数据库同步到区块链的方法,其中各个模块的功能可以参考方法实施例中相应的描述,其实现原理和技术效果类似,此处不再赘述。
图7是本发明实施例七提供的终端设备的示意图。如图7所示,该实施例的终端设备7包括:处理器70、存储器71以及存储在所述存储器71中并可在所述处理器70上运行的计算机程序72,例如关系型数据库同步到区块链的程序。所述处理器70执行所述计算机程序72时实现上述各个关系型数据库同步到区块链方法实施例中的步骤,例如图1所示的步骤11至14。或者,所述处理器70执行所述计算机程序72时实现上述各装置实施例中各模块的功能,例如图6所示模块61至64的功能。
示例性的,所述计算机程序72可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器71中,并由所述处理器70执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序72在所述终端设备7中的执行过程。例如,所述计算机程序72可以被分割成数据读取器、发送器和转换器和数据写入器(虚拟装置中的单元模块),各模块具体功能如下:
数据读取器,用于从关系型数据库中获取待同步数据;
发送器,用于通过消息队列发送携带所述待同步数据的消息;
转换器,用于采用动态脚本语言将所述消息转化为区块链数据;
数据写入器,用于将所述区块链数据写入区块链中。
所述终端设备7可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述终端设备7可包括,但不仅限于,处理器70、存储器71。本领域技术人员可以理解,图7仅仅是终端设备7的示例,并不构成对终端设备7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述终端设备7还可以包括输入输出设备、网络接入设备、总线等。
所称处理器70可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器71可以是所述终端设备7的内部存储单元,例如终端设备7的硬盘或内存。所述存储器71也可以是所述终端设备7的外部存储设备,例如所述终端设备7上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器71还可以既包括所述终端设备7的内部存储单元也包括外部存储设备。所述存储器71用于存储所述计算机程序以及所述终端设备7所需的其他程序和数据。所述存储器71还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述终端设备的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种关系型数据库同步到区块链的方法,其特征在于,包括:
从关系型数据库中获取待同步数据;
通过消息队列发送携带所述待同步数据的消息;
采用动态脚本语言将所述消息转化为区块链数据;
将所述区块链数据写入区块链中。
2.根据权利要求1所述的关系型数据库同步到区块链的方法,其特征在于,所述从关系型数据库中获取待同步数据,包括:
根据用户输入的信息获取存放所述待同步数据的表名;
根据所述表名查找数据库,得到所述表名对应的数据表;
从所述数据表中获取待同步数据。
3.根据权利要求2所述的关系型数据库同步到区块链的方法,其特征在于,所述从所述数据表中获取待同步数据,包括:
提取所述数据表的元数据,所述元数据包括字段;
当所述数据表的元数据提取完成后,获取所述数据表中所述字段对应的全量数据;
将所述元数据和所述全量数据确定为待同步数据。
4.根据权利要求3所述的关系型数据库同步到区块链的方法,其特征在于,所述从所述数据表中获取待同步数据,还包括:
监听所述数据表中所述字段对应的全量数据是否存在增量;
若存在增量,获取所述数据表中所述字段对应的增量数据;
将获取的增量数据确定为待同步数据。
5.根据权利要求1所述的关系型数据库同步到区块链的方法,其特征在于,所述通过消息队列发送携带所述待同步数据的消息,包括:
将所述待同步数据进行标准化处理,得到满足预设格式要求的消息,所述消息携带所述待同步数据;
通过消息队列发送所述消息。
6.根据权利要求3所述的关系型数据库同步到区块链的方法,其特征在于,所述采用动态脚本语言将所述消息转化为区块链数据,包括:
采用动态脚本语言解析所述消息;
根据所述数据表初始化关系型数据库中数据表的字段与区块链中区块链字段的转换规则;
根据所述转换规则将解析后的消息转换为区块链数据。
7.根据权利要求1所述的关系型数据库同步到区块链的方法,其特征在于,所述将所述区块链数据写入区块链中,包括:
根据预设阈值确定分拆策略;
若当前预写入的区块链数据的长度大于或等于所述预设阈值,按照所述分拆策略分拆所述区块链数据;
若当前预写入的区块链数据的长度小于所述预设阈值,按照所述分拆策略合并所述当前预写入的区块链数据与下一个预写入的区块链数据;
将经过分拆或合并后的区域链数据批量写入区块链中。
8.一种关系型数据库同步到区块链的装置,其特征在于,包括:
数据读取器,用于从关系型数据库中获取待同步数据;
发送器,用于通过消息队列发送携带所述待同步数据的消息;
转换器,用于采用动态脚本语言将所述消息转化为区块链数据;
数据写入器,用于将所述区块链数据写入区块链中。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1至7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910635791.8A CN110471918A (zh) | 2019-07-15 | 2019-07-15 | 一种关系型数据库同步到区块链的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910635791.8A CN110471918A (zh) | 2019-07-15 | 2019-07-15 | 一种关系型数据库同步到区块链的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110471918A true CN110471918A (zh) | 2019-11-19 |
Family
ID=68508681
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910635791.8A Pending CN110471918A (zh) | 2019-07-15 | 2019-07-15 | 一种关系型数据库同步到区块链的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110471918A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111046407A (zh) * | 2019-12-13 | 2020-04-21 | 山东众阳健康科技集团有限公司 | 一种基于区块链的数据存储系统 |
CN111666344A (zh) * | 2020-06-19 | 2020-09-15 | 中信银行股份有限公司 | 异构数据同步方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107609010A (zh) * | 2017-07-27 | 2018-01-19 | 北京瑞卓喜投科技发展有限公司 | 基于区块链技术的信息处理方法和装置 |
CN109241175A (zh) * | 2018-06-28 | 2019-01-18 | 东软集团股份有限公司 | 数据同步方法、装置、存储介质及电子设备 |
CN109766342A (zh) * | 2018-12-28 | 2019-05-17 | 国云科技股份有限公司 | 一种基于区块链的数据存储与查询方法 |
-
2019
- 2019-07-15 CN CN201910635791.8A patent/CN110471918A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107609010A (zh) * | 2017-07-27 | 2018-01-19 | 北京瑞卓喜投科技发展有限公司 | 基于区块链技术的信息处理方法和装置 |
CN109241175A (zh) * | 2018-06-28 | 2019-01-18 | 东软集团股份有限公司 | 数据同步方法、装置、存储介质及电子设备 |
CN109766342A (zh) * | 2018-12-28 | 2019-05-17 | 国云科技股份有限公司 | 一种基于区块链的数据存储与查询方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111046407A (zh) * | 2019-12-13 | 2020-04-21 | 山东众阳健康科技集团有限公司 | 一种基于区块链的数据存储系统 |
CN111666344A (zh) * | 2020-06-19 | 2020-09-15 | 中信银行股份有限公司 | 异构数据同步方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11366856B2 (en) | System and method for updating target schema of graph model | |
CN108268253B (zh) | 接口代码生成方法及终端设备 | |
CN109034988B (zh) | 一种会计分录生成方法和装置 | |
CN109947998A (zh) | 跨异构系统的网络的计算数据沿袭 | |
CN106547766A (zh) | 一种数据访问方法和装置 | |
CN108897874B (zh) | 用于处理数据的方法和装置 | |
CN107784063B (zh) | 算法的生成方法及终端设备 | |
CN111444256A (zh) | 一种数据可视化的实现方法和装置 | |
CN111046237A (zh) | 用户行为数据处理方法、装置、电子设备及可读介质 | |
CN112930529A (zh) | 从概念数据模型生成软件工件 | |
US11288427B2 (en) | Automated root-cause analysis, visualization, and debugging of static verification results | |
CN110471918A (zh) | 一种关系型数据库同步到区块链的方法及装置 | |
CN105335482A (zh) | 面向海量分布式数据库的批量插入方法 | |
CN107977504A (zh) | 一种非对称堆芯燃料管理计算方法、装置及终端设备 | |
CN110244945A (zh) | 接口文档生成方法及终端设备 | |
CN110135814A (zh) | Bim与工程数据的关联方法、系统及终端设备 | |
CN110704486B (zh) | 数据处理方法、装置、系统、存储介质和服务器 | |
CN108280224B (zh) | 万级维度数据生成方法、装置、设备以及存储介质 | |
CN112970011A (zh) | 记录查询优化中的谱系 | |
CN115774672A (zh) | 测试用例的生成方法、生成装置、服务器和存储介质 | |
CN115809259A (zh) | 基于sql的数据查询方法、终端及服务器 | |
CN110362551A (zh) | 数据仓库构建方法、装置、设备及存储介质 | |
CN113868138A (zh) | 测试数据的获取方法、系统、设备及存储介质 | |
CN114356454A (zh) | 对账数据处理方法、设备、存储介质及程序产品 | |
CN112905601A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191119 |