CN111159302A - 数据同步方法、装置、计算机可读存储介质及计算设备 - Google Patents

数据同步方法、装置、计算机可读存储介质及计算设备 Download PDF

Info

Publication number
CN111159302A
CN111159302A CN202010000475.6A CN202010000475A CN111159302A CN 111159302 A CN111159302 A CN 111159302A CN 202010000475 A CN202010000475 A CN 202010000475A CN 111159302 A CN111159302 A CN 111159302A
Authority
CN
China
Prior art keywords
event
block
database
events
data
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
CN202010000475.6A
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.)
Hangzhou Timestamp Information Technology Co ltd
Original Assignee
Hangzhou Timestamp Information Technology 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 Hangzhou Timestamp Information Technology Co ltd filed Critical Hangzhou Timestamp Information Technology Co ltd
Priority to CN202010000475.6A priority Critical patent/CN111159302A/zh
Publication of CN111159302A publication Critical patent/CN111159302A/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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • 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/2246Trees, e.g. B+trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及一种数据同步方法、装置、计算机可读存储介质及计算设备。所述方法包括:响应于区块链网络中的任意一个节点生成区块,对所述区块进行事件解析,得到事件日志;所述事件日志记录了所述区块的所有事件;所述事件的上下文记录了所述事件对应的区块数据;根据每一个所述事件的上下文将对应的区块数据同步到区块数据库中;将所述事件日志保存到事件数据库中。采用本方案能够减少bug隐患,提高代码的可维护性。

Description

数据同步方法、装置、计算机可读存储介质及计算设备
技术领域
本申请涉及区块链技术领域,特别是涉及一种数据同步方法、装置、计算机可读存储介质及计算设备。
背景技术
区块链账本通过每次向后追加区块的方式来对之前的数据进行修改,这种方式保证了每一个区块具有不可篡改性,使得数据账本更加安全可靠,但同时也导致了数据检索上的困难。例如,如果想要查询一个地址下有多少余额,必须从头扫描一次区块链上所有的数据,于是产生了像区块链浏览器这样的应用。区块链浏览器主要通过与区块链数据保持同步,并将数据存放入可以方便检索的关系型或者非关系型数据库中。
但区块链在追加区块的过程中经常会发生分叉,分叉意味着区块需要进行向后回滚。区块链浏览器若想要与区块链数据保持同步,必须相应处理回滚的问题。目前,市面上的区块链浏览器在同步数据的技术实现上,对于正常的同步和分叉时的回滚,分别开发了两套代码,这不仅增加了开发成本,而且,在每次对正常同步进行功能扩展后,回滚的代码也需做相应的变更,容易带来bug隐患,同时存在代码不易维护等问题。
发明内容
基于此,有必要针对上述技术问题,提供一种数据同步方法、装置、计算机可读存储介质及计算设备,能够减少bug隐患,提高代码的可维护性。
一种数据同步方法,所述数据同步方法包括:
响应于区块链网络中的任意一个节点生成区块,对区块进行事件解析,得到事件日志;所述事件日志记录了所述区块的所有事件;所述事件的上下文记录了所述事件对应的区块数据;
根据每一个所述事件的上下文将对应的区块数据同步到区块数据库中;
将事件日志保存到事件数据库中。
在其中一个实施例中,该数据同步方法还包括:
响应于区块链发生区块回滚,从所述事件数据库中查找发生回滚的区块对应的事件日志;
根据发生回滚的区块对应的事件日志确定所述发生回滚的区块对应的所有事件;
根据每一个确定的事件对所述区块数据库中对应的区块数据进行回滚操作。
在其中一个实施例中,所述响应于区块链网络中的任意一个节点生成区块,对所述区块进行事件解析,得到事件日志,包括:
响应于区块链网络中的任意一个节点生成区块,对区块进行事件解析,根据事件的类型将事件日志的所有事件映射到事件树中,以使事件日志的事件与事件树的树结点一一对应。
在其中一个实施例中,所述根据每一个所述事件的上下文将对应的区块数据同步到区块数据库中,包括:
根据事件的类型将事件日志的所有事件映射到事件树中,以使所述事件日志的事件与所述事件树的树结点一一对应;
对事件树进行遍历,根据事件树的树结点对应的事件的上下文,将区块数据同步到区块数据库中。
在其中一个实施例中,所述将事件日志保存到事件数据库中,包括:
将事件日志持久化到事件数据库中。
在其中一个实施例中,所述事件数据库与所述区块数据库独立保存。
在其中一个实施例中,区块事件的上下文包括区块高度;则数据同步方法还包括:
在将事件日志同步到事件数据库中之后,将区块高度与最新的区块高度之间的差值绝对值大于预设数值的区块对应的所有事件,从事件数据库中删除。
一种数据同步装置,该装置包括:
事件解析模块,用于响应于区块链网络中的任意一个节点生成区块,对区块进行事件解析,得到事件日志;所述事件日志记录了所述区块的所有事件;所述事件的上下文记录了所述事件对应的区块数据;
同步模块,用于根据每一个所述事件的上下文将对应的区块数据同步到区块数据库中;
保存模块,用于将事件日志保存到事件数据库中。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
响应于区块链网络中的任意一个节点生成区块,对区块进行事件解析,得到事件日志;所述事件日志记录了所述区块的所有事件;所述事件的上下文记录了所述事件对应的区块数据;
根据每一个所述事件的上下文将对应的区块数据同步到区块数据库中;将事件日志保存到事件数据库中。
一种计算设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
响应于区块链网络中的任意一个节点生成区块,对区块进行事件解析,得到事件日志;所述事件日志记录了所述区块的所有事件;所述事件的上下文记录了所述事件对应的区块数据;
根据每一个所述事件的上下文将对应的区块数据同步到区块数据库中;将事件日志保存到事件数据库中。
上述数据同步方法、装置、计算机可读存储介质及计算设备,通过对生成的区块进行事件解析,得到事件日志,事件日志记录了所述区块的所有事件,由于每一个事件的上下文记录了对应的区块数据,因此,根据每一个所述事件的上下文将对应的区块数据同步到区块数据库中,将事件日志保存到事件数据库中,便能够实现区块数据同步,便于通过相反的顺序对事件进行处理来实现回滚,而无需使用两套代码实现正常的同步和分叉时的回滚,大大降低了开发成本,减少bug隐患;另外,事件日志相比起传统的log具备更好的可读性;本发明提供的方案具有较好的功能扩展性,例如,若某条链需要增加一种新的交易类型,只需要增加对应的事件即可。
附图说明
图1为一实施例中数据同步方法的流程示意图;
图2为一实施例中数据同步方法中的步骤S202的流程示意图;
图3为一实施例中事件树的示意图;
图4为一实施例中区块链浏览器的架构部署示意图;
图5为又一实施例中数据同步方法的流程示意图;
图6为一实施例中数据同步装置的结构框图;
图7为一实施例中计算设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”、等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)区块链(Blockchain),是由区块(Block)形成的加密的、链式的交易的存储结构。每个区块的头部既可以包括区块中所有交易的哈希值,同时也包含前一个区块中所有交易的哈希值,从而基于哈希值实现区块中交易的防篡改和防伪造;新产生的交易被填充到区块并经过区块链网络中节点的共识后,会被追加到区块链的尾部从而形成链式的增长。
2)区块链网络,通过共识的方式将新区块纳入区块链的一系列的节点的集合。区块链网络可以包括多个节点,该多个节点形成一个去中心化的、能够协同运转的数据库存储***。
3)区块链浏览器(Blockchain Explorer),浏览区块链信息的主要窗口,每一个区块所记载的内容都可以从区块链浏览器上进行查阅。通常数字资产用户会使用区块链浏览器查询记录在区块中的交易信息。
4)区块链钱包,例如,比特币钱包、比原钱包,为装密钥的工具,有了密钥就可以拥有相应地址上的数字货币的使用权。
5)交易,也称为交易请求,交易包括了需要提交到区块链网络执行的操作,以及对应的交易结果。并非单指商业语境中的交易,鉴于在区块链技术中约定俗成地使用了“交易”这一术语,本发明实施例遵循了这一习惯。
6)哈希(Hash),是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出为散列值。
7)区块高度(block height),用来识别区块在区块链中的位置,区块通过规则链接在一起构成了区块链,创始区块默认高度为0,其后一个区块高度为1,以此类推。
本发明实施例提供的数据同步方法可被实施于区块链浏览器、区块链钱包等需要与区块链进行同步的应用中(不同于区块链网络中的节点所运行的客户端),该应用运行于服务器中。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
以区块链浏览器应用为例,在一个实施例中,提供了一种数据同步方法,如图1所示,该数据同步方法包括以下步骤:
步骤S200,响应于区块链网络中的任意一个节点生成区块,对区块进行事件解析,得到事件日志。
其中,事件日志记录了所述区块的所有事件。事件的上下文(Context)记录了事件对应的区块数据。
可选的,对区块进行事件解析得到的事件日志中,事件以列形式呈现。
步骤S202,根据每一个事件的上下文将对应的区块数据同步到区块数据库中。
其中,区块数据库为关系型或者非关系型数据库。
结合图2所示,在一个实施例中,步骤S202包括:
步骤S2021,根据事件的类型将事件日志的所有事件映射到事件树中,以使事件日志的事件与事件树的树结点一一对应;
步骤S2023,对事件树进行遍历,根据事件树的树结点对应的事件的上下文,将区块数据同步到区块数据库中。
进一步,步骤S2023中,对事件树进行遍历,具体为:对事件树进行先序遍历。
在一个实施例中,事件的类型可包括区块事件、交易事件、输入(input)事件、输出(output)事件、地址事件和余额事件等。其中,区块事件包括至少一个交易事件。交易事件可包括至少一个输入事件和至少一个输出事件;输入事件可包括至少一个地址事件和至少一个余额事件。
一个区块在根部产生一个区块事件,一个区块体中可以存放若干笔交易,因此一个区块事件可以有若干个交易事件作为它的子事件。同样一笔交易可以有多个输入输出。与之对应,每个交易事件有若干个input事件、output事件作为它的子事件,以此类推,整个区块将被解析成一棵事件树,如图3所示。
示例性地,区块事件的上下文记录了区块的哈希值(block hash)、时间戳(timestamp)和区块高度;交易事件的上下文记录了交易哈希(Tx hash)、时间戳(timestamp)和区块高度;输入事件的上下文记录了金额(amount)、脚本(script)和签名(signature);输出事件的上下文记录了金额(amount)和地址(address);地址事件记录了地址(address)和program(程序);余额事件记录了地址(address)和金额(amount)。
步骤S204,将事件日志保存到事件数据库中。
结合图4所示,区块链浏览器10收到区块链网络8中的节点生成的新区块,将区块数据同步到区块数据库12中,将事件日志同步到事件数据库14中。
具体地,步骤S204包括:将事件日志以事件树形式保存到事件数据库中。
具体地,响应于区块链发生区块回滚,从所述事件数据库中查找发生回滚的区块对应的事件树;
根据查找到的事件树上的每一个事件对区块数据库中的区块数据进行回滚操作。
进一步,所述根据查找到的事件树上的每一个事件对区块数据库中的区块数据进行回滚操作,包括:
从末级子结点开始对查找到的事件树进行逆序遍历,根据对应的事件对区块数据库中的区块数据进行回滚操作。
区块链在追加区块的过程中经常会发生分叉,分叉意味着区块需要进行向后回滚。当区块发生回滚时,查询该区块对应的所有事件,按照与正常同步时处理事件相反的顺序对所有事件进行处理,例如,按照地址事件、余额事件,input事件、output事件、交易事件和区块事件的顺序处理。示例性地,在同步交易事件时,向数据库***了一笔交易。回滚时,只要通过交易的hash将该交易删除即可。示例性地,若某个地址的余额增加一定金额,则回滚时根据该事件找到区块数据库中对应的区块数据,并对该区块数据进行回滚操作,即,从该地址的余额中减去相应的金额。
示例性地,假设区块中有一笔交易,该交易中向某一个地址转账了一定数量的金额。当***接收到该区块后。将其解析成三个对应的事件:交易事件,交易事件下有地址事件和地址余额事件两个子事件。假设当前数据库表为空,当三个事件同步完成后,区块数据库中的区块数据如表1a-1c所示。
表1a为本发明一可选实施例提供的根据交易事件的上下文同步到区块数据库中的区块数据的表格。
表1a:根据交易事件的上下文同步到区块数据库中的区块数据的表格
Figure BDA0002353076950000071
表1b为本发明一可选实施例提供的根据地址事件的上下文同步到区块数据库中的区块数据的表格。
表1b:根据地址事件的上下文同步到区块数据库中的区块数据的表格
Figure BDA0002353076950000072
表1c为本发明一可选实施例提供的根据余额事件的上下文同步到区块数据库中的区块数据的表格。
表1c:根据余额事件的上下文同步到区块数据库中的区块数据的表格
Figure BDA0002353076950000073
Figure BDA0002353076950000081
当相应的区块发生回滚时,根据事件数据库确定回滚区块对应的事件为交易事件、地址事件和余额事件,从而找到区块数据库中的表1a-1c,并删除区块数据库中的表1a-1c,即可实现区块回滚情况下的数据同步。
需要说明的是,上述表格1a-1c、区块对应的所有事件仅为示例性说明,本发明对此不做限定。
可选地,该数据同步方法还包括:在将事件日志同步到事件数据库中之后,将区块高度与最新的区块高度之间的差值绝对值大于预设数值的区块对应的所有事件,从事件数据库中删除。
例如,假设最新的区块高度为35496,预设数值为96,则将区块高度为35400之前的区块对应的所有事件从事件数据库中删除。
区块链中一个区块一般达到6次确认后,便很难再被推翻,通过事件数据库中只存最新的若干个区块事件,可满足区块回滚的要求,而且还能节约存储资源。
可选的,事件数据库与区块数据库独立保存。将事件数据库与区块数据库分开保存,当区块数据库发生数据丢失或者写入错误后,便可利用事件数据库来恢复区块数据库中的数据。
本实施例通过对生成的区块进行事件解析,得到事件日志,事件日志记录了所述区块的所有事件,由于每一个所述事件的上下文记录了对应的区块数据,因此,根据每一个所述事件的上下文将对应的区块数据同步到区块数据库中,将事件日志保存到事件数据库中,便能够实现区块数据同步,便于通过相反的顺序对事件进行处理来实现回滚,而无需使用两套代码实现正常的同步和分叉时的回滚,大大降低了开发成本,减少bug隐患,适用于不同区块链。
另外,传统的log与开发中技术员的打印习惯有关,难以保证一致性,而且传统的log只具备较低的抽象层次,不利于人阅读。事件日志相比起传统的log具备更好的可读性。
此外,本发明提供的数据同步方法具有较好的功能扩展性,例如,若某条链需要增加一种新的交易类型,只需要增加对应的事件即可。
应该理解的是,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在又一个实施例中,如图5所示,提供了一种数据同步方法,该数据同步方法包括以下步骤:
步骤S400,响应于区块链网络中的任意一个节点生成区块,对区块进行事件解析,得到事件日志。
其中,事件日志记录了所述区块的所有事件。每一个事件具有对应的上下文(Context)。每一个事件的上下文记录了事件对应的区块数据。
具体地,步骤S400包括:
步骤S4001,响应于区块链网络中的任意一个节点生成区块,对区块进行事件解析,根据事件的类型将事件日志的所有事件映射到事件树中,以使事件日志的事件与事件树的树结点一一对应。
步骤S402,根据每一个事件的上下文将对应的区块数据同步到区块数据库中。
具体地,区块数据库为关系型数据库。步骤S402包括:
根据每一个事件的类型与每一个事件的上下文将对应的区块数据同步到区块数据库中。
例如,若事件的类型为交易事件,事件的上下文记录了交易哈希(Tx hash)、时间戳(timestamp)和区块高度,则将交易事件和交易哈希作为对应的区块数据的索引,将该区块数据同步到区块数据库中。
可选的,所述根据每一个事件的类型与每一个事件的上下文将对应的区块数据同步到区块数据库中,包括:对事件树进行遍历,根据事件树的树结点对应的事件的上下文和类型,将区块数据同步到区块数据库中。
步骤S404,将事件日志保存到事件数据库中。
可选的,事件数据库为设置于区块数据库中的数据表。
步骤S406,响应于区块链发生区块回滚,从事件数据库中查找发生回滚的区块对应的事件日志。
具体地,步骤S406包括:响应于接收到区块链网络中的节点发送的区块回滚通知,从事件数据库中查找发生回滚的区块对应的事件日志。可选的,区块链发生区块回滚时,由生成该回滚的区块的节点向区块链浏览器发送区块回滚通知;在其他实施方式中,区块链发生区块回滚时,由生成该回滚的区块的节点向对等节点发送区块回滚通知,由对等节点将该通知传递到区块链浏览器。
示例性地,步骤S406包括:响应于区块链发生区块回滚,根据发生回滚的区块的哈希值从事件数据库中查询该区块对应的事件日志。
步骤S408,根据发生回滚的区块对应的事件日志确定发生回滚的区块对应的所有事件。
步骤S410,根据每一个确定的事件对区块数据库中对应的区块数据进行回滚操作。
示例性地,发生回滚的区块对应的所有事件包括区块事件、交易事件、input事件、output事件、地址事件和余额事件
示例性地,交易事件的上下文记录了交易哈希(Tx hash)、时间戳(timestamp)和区块高度,则步骤S410包括:
对发生回滚的区块对应的交易事件,根据交易事件的Tx hash从区块数据库中查询交易记录;
将查询到的交易记录从区块数据库中删除。
具体地,余额增加事件记录了地址(address)和金额(amount),则步骤S410包括:
对发生回滚的区块对应的余额增加事件,根据余额增加事件的地址和金额对区块数据库中的地址减去相应金额。
步骤S412,将对应的事件日志从事件数据库中删除。
本实施例通过对生成的区块进行事件解析,得到事件日志,事件日志记录了所述区块的所有事件,由于每一个事件的上下文记录了对应的区块数据,因此,根据每一个所述事件的上下文将对应的区块数据同步到区块数据库中,响应于区块链发生区块回滚,从所述事件数据库中查找发生回滚的区块对应的事件日志,根据发生回滚的区块对应的事件日志确定所述发生回滚的区块对应的所有事件,根据每一个确定的事件对所述区块数据库中的区块数据进行回滚操作,而无需使用两套代码实现正常的同步和分叉时的回滚,大大降低了开发成本,减少bug隐患,适用于不同区块链。
本实施例还通过将事件解析流程与数据库的持久化操作隔离,使得区块同步应用(例如区块链浏览器)具备更好的可测试性。
本实施例还通过事件数据库保存全量的区块事件,可用于事件溯源、数据灾备。
另外,传统的log与开发中技术员的打印习惯有关,难以保证一致性,而且传统的log只具备较低的抽象层次,不利于人阅读。事件日志相比起传统的log具备更好的可读性。
此外,本发明提供的数据同步方法具有较好的功能扩展性,例如,若某条链需要增加一种新的交易类型,只需要增加对应的事件即可。
应该理解的是,虽然图5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图6所示,提供了一种数据同步装置1,包括:事件解析模块101、同步模块103和保存模块105。
事件解析模块101,用于响应于区块链网络中的任意一个节点生成区块,对区块进行事件解析,得到事件日志。
事件日志记录了区块的所有事件。每一个所述事件的上下文记录了对应的区块数据。
同步模块103,用于根据每一个事件的上下文将对应的区块数据同步到区块数据库中;
保存模块105,用于将事件日志保存到事件数据库中。
在一个实施例中,装置1还包括:
查找模块,用于响应于区块链发生区块回滚,从事件数据库中查找发生回滚的区块对应的事件日志;
确定模块,用于根据发生回滚的区块对应的事件日志确定发生回滚的区块对应的所有事件;
操作模块,用于根据每一个确定的事件对区块数据库中对应的区块数据进行回滚操作。
在一个实施例中,事件解析模块101包括:事件解析单元,用于响应于区块链网络中的任意一个节点生成区块,对区块进行事件解析,根据事件的类型将事件日志的所有事件映射到事件树中,以使事件日志的事件与事件树的树结点一一对应。
在一个实施例中,装置1还包括:日志删除模块,用于在根据对应的上下文对区块数据库中的区块数据进行回滚操作之后,将发生回滚的区块对应的事件日志从事件数据库中删除。
在一个实施例中,保存模块105包括:
持久化单元,用于将事件日志持久化到事件数据库中。
在一个实施例中,根据所有事件的上下文将区块数据同步到区块数据库中,包括:
根据事件的类型将事件日志的所有事件映射到事件树中,以使事件日志的事件与事件树的树结点一一对应;
对事件树进行遍历,根据事件树的树结点对应的事件的上下文,将区块数据同步到区块数据库中。
在一个实施例中,区块事件的上下文包括区块高度;则数据同步装置还包括:
事件删除模块,用于在将事件日志同步到事件数据库中之后,将区块高度与最新的区块高度之间的差值绝对值大于预设数值的区块对应的所有事件,从事件数据库中删除。
在一个实施例中,事件数据库与区块数据库独立保存。
关于数据同步装置的具体限定可以参见上文中对于数据同步方法的限定,在此不再赘述。上述数据同步装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算设备中的处理器中,也可以以软件形式存储于计算设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算设备,该计算设备可以是服务器,其内部结构图可以如图7所示。该计算设备包括通过设备总线连接的处理器、存储器、网络接口和数据库。其中,该计算设备的处理器用于提供计算和控制能力。该计算设备的存储器包括非易失性计算机可读存储介质、内存储器。该非易失性计算机可读存储介质存储有操作设备、计算机程序和数据库。该内存储器为非易失性计算机可读存储介质中的操作设备和计算机程序的运行提供环境。该计算设备的数据库用于存储数据。该计算设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据同步方法。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算设备的限定,具体的计算设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
响应于区块链网络中的任意一个节点生成区块,对区块进行事件解析,得到事件日志;事件日志记录了所述区块的所有事件;每一个所述事件的上下文记录了对应的区块数据;
根据每一个所述事件的上下文将对应的区块数据同步到区块数据库中;
将事件日志保存到事件数据库中。
在其中一个实施例中,处理器执行计算机程序时还实现以下步骤:
响应于区块链发生区块回滚,从事件数据库中查找发生回滚的区块对应的事件日志;
根据发生回滚的区块对应的事件日志确定发生回滚的区块对应的所有事件;
根据每一个确定的事件对所述区块数据库中对应的区块数据进行回滚操作。
在其中一个实施例中,所述响应于区块链网络中的任意一个节点生成区块,对所述区块进行事件解析,得到事件日志,包括:
响应于区块链网络中的任意一个节点生成区块,对区块进行事件解析,根据事件的类型将事件日志的所有事件映射到事件树中,以使事件日志的事件与事件树的树结点一一对应。
在其中一个实施例中,将事件日志保存到事件数据库中,包括:
将事件日志持久化到事件数据库中。
在其中一个实施例中,根据所有事件的上下文将区块数据同步到区块数据库中,包括:
根据事件的类型将事件日志的所有事件映射到事件树中,以使事件日志的事件与事件树的树结点一一对应;
对事件树进行遍历,根据事件树的树结点对应的事件的上下文,将区块数据同步到区块数据库中。
在其中一个实施例中,区块事件的上下文包括区块高度;处理器执行计算机程序时还实现以下步骤:在将事件日志同步到事件数据库中之后,将区块高度与最新的区块高度之间的差值绝对值大于预设数值的区块对应的所有事件,从事件数据库中删除。
在其中一个实施例中,事件数据库与区块数据库独立保存。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
响应于区块链网络中的任意一个节点生成区块,对区块进行事件解析,得到事件日志;所述事件日志记录了所述区块的所有事件;每一个所述事件的上下文记录了对应的区块数据;
根据每一个所述事件的上下文将对应的区块数据同步到区块数据库中;
将事件日志保存到事件数据库中。
在其中一个实施例中,计算机程序被处理器执行时还实现以下步骤:响应于区块链发生区块回滚,从事件数据库中查找发生回滚的区块对应的事件日志;
根据发生回滚的区块对应的事件日志确定发生回滚的区块对应的所有事件;
根据每一个确定的事件对所述区块数据库中的区块数据进行回滚操作。
在其中一个实施例中,所述响应于区块链网络中的任意一个节点生成区块,对所述区块进行事件解析,得到事件日志,包括:
响应于区块链网络中的任意一个节点生成区块,对区块进行事件解析,根据事件的类型将事件日志的所有事件映射到事件树中,以使事件日志的事件与事件树的树结点一一对应。
在其中一个实施例中,将事件日志保存到事件数据库中,包括:
将事件日志持久化到事件数据库中。
在其中一个实施例中,根据所有事件的上下文将区块数据同步到区块数据库中,包括:
根据事件的类型将事件日志的所有事件映射到事件树中,以使事件日志的事件与事件树的树结点一一对应;
对事件树进行遍历,根据事件树的树结点对应的事件的上下文,将区块数据同步到区块数据库中。
在其中一个实施例中,区块事件的上下文包括区块高度;计算机程序被处理器执行时还实现以下步骤:在将事件日志同步到事件数据库中之后,将区块高度与最新的区块高度之间的差值绝对值大于预设数值的区块对应的所有事件,从事件数据库中删除。
在其中一个实施例中,事件数据库与区块数据库独立保存。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取计算机可读存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种数据同步方法,其特征在于,包括:
响应于区块链网络中的任意一个节点生成区块,对所述区块进行事件解析,得到事件日志;所述事件日志记录了所述区块的所有事件;所述事件的上下文记录了所述事件对应的区块数据;
根据每一个所述事件的上下文将对应的区块数据同步到区块数据库中;
将所述事件日志保存到事件数据库中。
2.根据权利要求1所述的方法,其特征在于,还包括:
响应于区块链发生区块回滚,从所述事件数据库中查找发生回滚的区块对应的事件日志;
根据发生回滚的区块对应的事件日志确定所述发生回滚的区块对应的所有事件;
根据每一个确定的事件对所述区块数据库中对应的区块数据进行回滚操作。
3.根据权利要求1所述的方法,其特征在于,所述响应于区块链网络中的任意一个节点生成区块,对所述区块进行事件解析,得到事件日志,包括:
响应于区块链网络中的任意一个节点生成区块,对区块进行事件解析,根据事件的类型将事件日志的所有事件映射到事件树中,以使事件日志的事件与事件树的树结点一一对应。
4.根据权利要求1所述的方法,其特征在于,所述根据每一个所述事件的上下文将对应的区块数据同步到区块数据库中,包括:
根据事件的类型将所述事件日志的所有事件映射到事件树中,以使所述事件日志的事件与所述事件树的树结点一一对应;
对所述事件树进行遍历,根据所述事件树的树结点对应的事件的上下文,将区块数据同步到区块数据库中。
5.根据权利要求1所述的方法,其特征在于,所述将所述事件日志保存到事件数据库中,包括:
将所述事件日志持久化到所述事件数据库中。
6.根据权利要求1所述的方法,其特征在于,所述事件数据库与所述区块数据库独立保存。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述区块事件的上下文包括区块高度;则所述数据同步方法还包括:
在将事件日志同步到事件数据库中之后,将区块高度与最新的区块高度之间的差值绝对值大于预设数值的区块对应的所有事件,从所述事件数据库中删除。
8.一种数据同步装置,其特征在于,包括:
事件解析模块,用于响应于区块链网络中的任意一个节点生成区块,对所述区块进行事件解析,得到事件日志;所述事件日志记录了所述区块的所有事件;所述事件的上下文记录了所述事件对应的区块数据;
同步模块,用于根据每一个所述事件的上下文将对应的区块数据同步到区块数据库中;
保存模块,用于将所述事件日志保存到事件数据库中。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任意一项所述的数据同步方法的步骤。
10.一种计算设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任意一项所述的数据同步方法的步骤。
CN202010000475.6A 2020-01-02 2020-01-02 数据同步方法、装置、计算机可读存储介质及计算设备 Pending CN111159302A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010000475.6A CN111159302A (zh) 2020-01-02 2020-01-02 数据同步方法、装置、计算机可读存储介质及计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010000475.6A CN111159302A (zh) 2020-01-02 2020-01-02 数据同步方法、装置、计算机可读存储介质及计算设备

Publications (1)

Publication Number Publication Date
CN111159302A true CN111159302A (zh) 2020-05-15

Family

ID=70560879

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010000475.6A Pending CN111159302A (zh) 2020-01-02 2020-01-02 数据同步方法、装置、计算机可读存储介质及计算设备

Country Status (1)

Country Link
CN (1) CN111159302A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180287797A1 (en) * 2017-04-04 2018-10-04 International Business Machines Corporation Distributed logging of application events in a blockchain
CN110264194A (zh) * 2019-05-20 2019-09-20 阿里巴巴集团控股有限公司 基于事件函数类型的收据存储方法和节点
CN110572281A (zh) * 2019-08-23 2019-12-13 华南理工大学 一种基于区块链的可信日志记录方法及***
CN110597913A (zh) * 2019-09-17 2019-12-20 腾讯科技(深圳)有限公司 交易信息跟踪方法、装置、***、存储介质和计算机设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180287797A1 (en) * 2017-04-04 2018-10-04 International Business Machines Corporation Distributed logging of application events in a blockchain
CN110264194A (zh) * 2019-05-20 2019-09-20 阿里巴巴集团控股有限公司 基于事件函数类型的收据存储方法和节点
CN110572281A (zh) * 2019-08-23 2019-12-13 华南理工大学 一种基于区块链的可信日志记录方法及***
CN110597913A (zh) * 2019-09-17 2019-12-20 腾讯科技(深圳)有限公司 交易信息跟踪方法、装置、***、存储介质和计算机设备

Similar Documents

Publication Publication Date Title
US11283616B2 (en) Method for index-based and integrity-assured search in a blockchain
US20200320091A1 (en) Schemaless to relational representation conversion
EP2302538B1 (en) Method and system for capturing change of data
US7478113B1 (en) Boundaries
CN113329031A (zh) 一种区块的状态树的生成方法及装置
CN102426609B (zh) 一种基于MapReduce编程架构的索引生成方法和装置
CN106933703B (zh) 一种数据库数据备份的方法、装置及电子设备
CN102027457B (zh) 单独可访问数据单元的管理存储
CN111651300B (zh) 一种区块链数据恢复方法、装置、设备及介质
KR20110010598A (ko) 상태 비저장 프로토콜들을 통한 문서 동기화
Choi et al. A database synchronization algorithm for mobile devices
CN104077423A (zh) 一种基于一致性散列的结构化数据存储、查询和迁移方法
CN111930850A (zh) 数据校验方法、装置、计算机设备和存储介质
EP4310689A1 (en) Data archiving method and apparatus, device, storage medium, and computer program product
CN111625540A (zh) 一种关系型数据库数据同步完整性校验方法和装置
CN114461673A (zh) 一种基于链上-链下协同的区块链查询优化方法
CN111984732A (zh) 在区块链上实现去中心化检索的方法、节点及区块链网络
CN112948898A (zh) 一种区块链中防止应用数据被篡改的方法和安全模块
CN111159302A (zh) 数据同步方法、装置、计算机可读存储介质及计算设备
CN116303789A (zh) 多分片多副本数据库并行同步方法、装置及可读介质
CN115858322A (zh) 日志数据处理方法、装置和计算机设备
CN111444194B (zh) 一种块链式账本中索引的清除方法、装置及设备
CN110727726B (zh) 一种文档型数据库中数据抽取到关系数据库的方法和***
CN118035360B (zh) 一种增量数据识别、定位、更新方法
CN117131023B (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
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20200515

WD01 Invention patent application deemed withdrawn after publication