CN110019043B - 一种区块链数据存储方法 - Google Patents

一种区块链数据存储方法 Download PDF

Info

Publication number
CN110019043B
CN110019043B CN201711361477.2A CN201711361477A CN110019043B CN 110019043 B CN110019043 B CN 110019043B CN 201711361477 A CN201711361477 A CN 201711361477A CN 110019043 B CN110019043 B CN 110019043B
Authority
CN
China
Prior art keywords
data
database
layer module
block chain
nodes
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.)
Active
Application number
CN201711361477.2A
Other languages
English (en)
Other versions
CN110019043A (zh
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.)
Benchainless Technology (Shenzhen) Co.,Ltd.
Original Assignee
Benchainless Technology Shenzhen 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 Benchainless Technology Shenzhen Co ltd filed Critical Benchainless Technology Shenzhen Co ltd
Priority to CN201711361477.2A priority Critical patent/CN110019043B/zh
Publication of CN110019043A publication Critical patent/CN110019043A/zh
Application granted granted Critical
Publication of CN110019043B publication Critical patent/CN110019043B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
    • 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/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • 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/17Details of further file system functions
    • G06F16/1737Details of further file system functions for reducing power consumption or coping with limited storage space, e.g. in mobile devices
    • 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/182Distributed file systems

Landscapes

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

Abstract

本发明公开了一种区块链数据存储方法,包括数据抽象层模块、应用访问层模块、逻辑运算层模块,在应用所述存储方法时将数据分为历史数据和业务数据,在数据抽象层中同时运用SQLite数据库与Mongodb数据库创建关键检查点、校验数据正确性,应用访问层模块用于参与区块链网络的节点之间和/或节点与移动端的访问的访问,逻辑运算层模块用于区块链网络的节点和/或移动端进行数据逻辑计算,相比传统区块链IT建设,实现在没有太多计算资源与存储资源情况下的完整实务运算能力,解决了移动终端计算能力有限情况下的计算问题;融合SQLite数据库与Mongodb数据库,让节点即可参与共识又可以保持轻巧的体积,解决数据检索效率问题,为我们实现公平奖励提供了基础。

Description

一种区块链数据存储方法
技术领域
本发明涉及区块链技术领域,特别是一种区块链数据存储方法。
背景技术
数据存储能力是区块链落地的基础,由于区块链的特殊性,无法预设和要求参与节点提供大容量、高吞吐的数据存储设备,所以相比传统中心化IT建设在设计时就需要增加如下方面的考虑:
(1)存储容量:传统IT建设可以要求提供大容量磁盘阵列提高容量,或分离业务与历史数据以降低存储压力与系统性能压力,但是区块链网络中无法通过上述两种方法完成。
(2)吞吐性能:传统IT建设中可以要求节点采用高转速、SSD等更快速的存储设备,或者采用Raid1阵列磁盘并增加磁盘数,或分散吞吐压力到多节点,或预加载数据到内存等方式即可有效提高吞吐性能,但到了区块链场景是行不通的,因为绝大多数参与节点都没有这些设备与条件。
(3)不符合区块链共识要求:传统IT建设中,系统架构是按中心化服务器设计,因为现实的难题,目前绝大多数区块链在存储设计上依然沿用传统的IT建设思想,数据集中存储在参与节点上,终端参与者(如移动钱包)通过其他参与节点中转或。
综上以上三种现实中的难题,由此带来的问题有:一是因为终端无法直接访问区块链,实际的数据请求和业务过程由其他节点完成,数据的可信度由参与节点是否作弊来保证,这样有违区块链去中心化的初衷;二是终端如果不能接入区块链网络,或者接入了区块链网络而数据不全,将不能有效参与网络的治理(传统共识机制下),虽然看上去是一个节点,在一定程度上也可以通过桥接手段完成间接通信,但依然算不上一个合格的节点;三是无法参与共识,当终端网络与数据有一个缺失时,将导致终端失去参与共识的基础,不能参与共识往往代表着不能参与区块的建立,而这意味着伴随区块建立的奖励将无缘获得,对于贡献相同参与度的此类终端来说,某种意义上有失公平。
因此为了未来区块链生态的发展,鼓励更多的角色与终端接入区块链网络,并获取公平的奖励,为了兼顾终端成本问题,终端都不参与业务逻辑运算,同时终端也不会存储业务数据,所以如何减少终端移动存储的需求,但是又能参与区块链共识以及保证数据存储过程的正确性将是当下与未来区块链行业的重要研究方向。
发明内容
本发明所要解决的技术问题在于提供一种区块链数据存储方法,解决移动终端计算能力有限情况下的计算问题和数据检索校验的效率问题,从而实现在低存储也可以参与区块链共识。
为解决上述技术问题,本发明的技术解决方案是:
一种区块链数据存储方法,包括数据抽象层模块、应用访问层模块、逻辑运算层模块,在应用所述存储方法时将数据分为历史数据和业务数据,其特征在于,
所述数据抽象层模块在进行数据存储时运用SQLite数据库与Mongodb数据库,对SQLite数据库和Mongodb数据库的增删改查的访问接口进行了封装,当节点要使用数据时可以自动选择并获取;
所述应用访问层模块用于参与区块链网络的节点之间和/或节点与移动端的访问;
所述逻辑运算层模块用于区块链网络的节点和/或移动端进行数据逻辑计算。
进一步的,所述SQLite数据库用于存储业务数据和关键检查点并进行数据处理与计算,所述Mongodb数据库用于校验并不参与运算的历史数据的正确性并存储。
进一步的,所述业务数据和关键检查点的大小在SQLite数据库的存储容量之内。
进一步的,所述数据抽象层模块在节点存储数据过程中包括以下步骤:
S1:节点启动时,初始化Mongodb数据库和SQLite数据库;
S2:节点获取数据后建立关键检查点,将数据以关键检查点为分界线划分历史数据与业务数据,运用Mongodb数据库对数据的正确性进行校验,并提供校验结果;
S3:运用SQLite数据库存储关键检查点与业务数据,并对所存储的业务数据进行处理与计算。
进一步的,所述设置关键检查点,为区块链上所有账户建立快照,在建立快照时需要对数据进行校验,确保数据正确性,如果数据正确性充分则保存数据并确定关键检查点。
进一步的,所述Mongodb数据库采用键值对的形式存储数据,具体操作是将区块哈希树以键值对的形式存储于Mongodb数据库当中,每当节点接收到一个新区块时,通过新区块中上一个区块的ID,即可立即定位该区块的位置,进行数据校验。
进一步的,所述关键检查点当每57个区块周期结束时便产生一个。
进一步的,所述SQLite数据库在基于Mongodb数据库对数据校验正确后进行业务数据处理与计算过程是在SQLite数据库系统内存中进行的。
进一步的,所述SQLite数据库创建关键检查点与Mongodb数据库进行数据校验是同时进行的。
本发明提及的技术方案相比传统区块链的存储相比,显著优点在于:
1、通过引入微型数据库SQLite,实现在没有太多计算资源与存储资源情况下的完整实务运算能力,解决了移动终端计算能力有限情况下的计算问题;
2、引入普遍使用的Mongodb数据库,运用其在链式数据很长情况下的快速检索能力,将其与SQLite数据库进行融合,让节点即可参与共识又可以保持轻巧的体积,解决数据检索效率问题,为我们实现公平奖励提供了基础;
3、同时运用两种数据库,即可实现关键检查点的建立,又可保证数据校验准确的前提下降低对节点或者终端的存储要求,大大提高区块链的共识机制公平有效。
附图说明
图1是本发明方案模块组成示意图;
图2是本发明方案在数据抽象层模块当中节点存储数据流程示意图;
图3是本发明方案区块哈希树示意图,
其中,Part1是数据抽象层模块,Part2是应用访问层模块,Part3是逻辑运算层模块;
图4-图13是本发明方案包含的编码内容。
具体实施方式
下面结合具体实施例对本发明作进一步详述。在此需要说明的是,下面所描述的本发明各个实施例中所涉及的技术特征只要彼此之间未构成冲突就可以相互组合。
在进行本技术方案的详细说明前,说明技术内容当中几个专业术语:
SQLite:SQLite是遵守ACID的关系数据库管理系统,是一种应用于移动端的微型数据库,用于解决移动端的数据库检索问题,它包含在一个相对小的C程式库中。它是D.RichardHipp建立的公有领域项目。不像常见的客户端/服务器结构范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接API调用。这在消耗总量、延迟时间和整体简单性上有积极的作用。整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。
Mongodb:MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
键值对:指的是成对键值,所述键值(key)是windows中注册表中的概念。键值位于注册表结构链末端,和文件系统的文件类似,包含当前计算机及应用程序执行时使用的实际配置信息和数据。键值包含几种数据类型,以适应不同环境的使用需求。注册表中,是通过键和子键来管理各种信息。同时,在注册表里面的所有信息是以各种形式的键值项数据保存下来。在注册表编辑器的右窗口中,保存的都是各种键值项数据。键值项由键值名、数据类型和键值三部分组成,其格式为:“键值名:数据类型:键值”。
快照:是基于硬件编程技术的一种,针对内存进行的快速读取技术,常用于硬件开发。实现快照功能的文件系统基本上都是一些专用系统或者专为某个特定功能实现的文件系统。
一种区块链数据存储方法,移动端和节点在访问区跨链时,需要保证自身拥有足够进行运算数据的存储容量,参与区块链共识机制下的网络数据传输、运算以及后续的奖励分配,因此,如图1所示,我们在区跨链数据存储方法方面做了如下改进:
建立数据抽象层模块Part1、应用访问层模块Part2、逻辑运算层模块Part3,
数据抽象层模块Part1在进行数据存储时同时运用SQLite数据库与Mongodb数据库,对SQLite数据库和Mongodb数据库的增删改查的访问接口进行了封装,以便于节点对所要访问的数据进行自动选择获取以供节点使用;
应用访问层模块Part2用于参与区块链网络的节点之间和/或节点与移动端的访问;
逻辑运算层模块Part3用于区块链网络的节点和/或移动端进行数据逻辑计算。
引入SQLite数据库,用于解决移动端的数据库检索问题,但是,在应用该数据库时,不能承载大量的数据。,在应用SQLite数据库与Mongodb数据库时先将数据拆分为两部分,一块是并不参与业务运算的历史数据,一块是数据大小在SQLite数据库存储范围之内的业务数据。
如图2所示,在数据抽象层模块Part1当中,需要同时运用SQLite数据库与Mongodb数据库,数据抽象层模块Part1在节点存储数据过程中包括以下步骤:
S1:节点启动时,初始化Mongodb数据库和SQLite数据库,使其数据库允许移动端接入并且进行数据运算;
S2:节点获取数据后建立关键检查点,所谓建立关键检查点是为区块链上所有账户建立快照,对历史数据部分进行完全拷贝,拷贝包括历史数据在链式数据的映像,将数据以关键检查点为分界线划分历史数据与业务数据,运用Mongodb数据库对数据的正确性进行校验,并提供校验结果;
S3:运用SQLite数据库存储关键检查点与业务数据,并对所存储的业务数据进行处理与计算。
当完成关键检查点的建立以及对历史数据校验过程完毕后,交易数据只需要基于建立关键检查点的结果进行运算即可,而不用重新遍历该交易设计的所有数据,同时移动端做到只需少量数据即可参与区块链共识。
每当57个区块周期结束时,区块链上会生成一个新的检查点,SQLite数据库只需存储交易数据最后的检查点与业务数据即可,
Mongodb数据库是一种采用键值对的形式存储数据的键值型数据库,内存容量大,且运行速度很快,将区块哈希树以键值对的形式存储在Mongodb数据库当中,利用其快速检索能力完成数据校验。
如图3所示,移动端参与区块链共识过程中,每当接收到一个新区块时,只需要提供上一个区块的ID时,Mongodb数据库可以立即定位该区块的存储位置,从而达到快速校验数据正确的目的。
进一步的,一种区块链数据存储方法的编码过程具体包括:
Figure BDA0001511755220000051
Figure BDA0001511755220000061
Figure BDA0001511755220000071
Figure BDA0001511755220000081
Figure BDA0001511755220000091
Figure BDA0001511755220000101
Figure BDA0001511755220000111
Figure BDA0001511755220000121
Figure BDA0001511755220000131
Figure BDA0001511755220000141
以上所述,仅是本发明的较佳实施例而已,并非对本发明的技术范围作任何限制,故但凡依本发明的权利要求和说明书所做的变化或修饰,皆应属于本发明专利涵盖的范围之内。

Claims (7)

1.一种区块链数据存储方法,包括数据抽象层模块、应用访问层模块、逻辑运算层模块,在应用所述存储方法时将数据分为历史数据和业务数据,其特征在于,
所述数据抽象层模块在进行数据存储时运用SQLite数据库与Mongodb数据库,对SQLite数据库和Mongodb数据库的增删改查的访问接口进行了封装,当节点要使用数据时自动选择并获取;所述数据抽象层模块在节点存储数据过程中包括以下步骤:
S1:节点启动时,初始化Mongodb数据库和SQLite数据库;
S2:节点获取数据后建立关键检查点,将数据以关键检查点为分界线划分历史数据与业务数据,运用Mongodb数据库对数据的正确性进行校验,并提供校验结果;所述建立关键检查点,为区块链上所有账户建立快照,在建立快照时需要对数据进行校验,确保数据正确性,如果数据正确性充分则保存数据并确定关键检查点;
S3:运用SQLite数据库存储关键检查点与业务数据,并对所存储的业务数据进行处理与计算;
所述应用访问层模块用于参与区块链网络的节点之间和/或节点与移动端的访问;
所述逻辑运算层模块用于区块链网络的节点和/或移动端进行数据逻辑计算。
2.根据权利要求1所述的一种区块链数据存储方法,其特征在于,所述SQLite数据库用于存储业务数据和关键检查点并进行数据处理与计算,所述Mongodb数据库用于校验并不参与运算的历史数据的正确性并存储。
3.根据权利要求2所述的一种区块链数据存储方法,其特征在于,所述业务数据和关键检查点的大小在SQLite数据库的存储容量之内。
4.根据权利要求1所述的一种区块链数据存储方法,其特征在于,所述Mongodb数据库采用键值对的形式存储数据,具体操作是将区块哈希树以键值对的形式存储于Mongodb数据库当中,每当节点接收到一个新区块时,通过新区块中上一个区块的ID,即可立即定位该区块的位置,进行数据校验。
5.根据权利要求1所述的一种区块链数据存储方法,其特征在于,所述关键检查点当每57个区块周期结束时便产生一个。
6.根据权利要求1所述的一种区块链数据存储方法,其特征在于,所述SQLite数据库在基于Mongodb数据库对数据校验正确后进行业务数据处理与计算过程是在SQLite数据库系统内存中进行的。
7.根据权利要求1所述的一种区块链数据存储方法,其特征在于,所述SQLite数据库创建关键检查点与Mongodb数据库进行数据校验是同时进行的。
CN201711361477.2A 2017-12-18 2017-12-18 一种区块链数据存储方法 Active CN110019043B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711361477.2A CN110019043B (zh) 2017-12-18 2017-12-18 一种区块链数据存储方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711361477.2A CN110019043B (zh) 2017-12-18 2017-12-18 一种区块链数据存储方法

Publications (2)

Publication Number Publication Date
CN110019043A CN110019043A (zh) 2019-07-16
CN110019043B true CN110019043B (zh) 2021-07-30

Family

ID=67186991

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711361477.2A Active CN110019043B (zh) 2017-12-18 2017-12-18 一种区块链数据存储方法

Country Status (1)

Country Link
CN (1) CN110019043B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114006906B (zh) * 2020-11-23 2023-11-07 北京八分量信息科技有限公司 一种通过优化节点通讯来降低内存消耗的方法
CN113822656B (zh) * 2021-11-23 2022-02-11 江苏荣泽信息科技股份有限公司 基于区块链技术的跨链协作方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9569771B2 (en) * 2011-04-29 2017-02-14 Stephen Lesavich Method and system for storage and retrieval of blockchain blocks using galois fields
US10025277B2 (en) * 2014-09-14 2018-07-17 Electric Motor Werks, Inc. Systems and methods for electrical charging load modeling services to optimize power grid objectives
CN106155832B (zh) * 2015-03-30 2019-03-22 Tcl集团股份有限公司 一种数据恢复的方法、装置及Android设备
CN105472412B (zh) * 2015-11-20 2018-05-08 四川长虹电器股份有限公司 一种区分智能电视状态的大数据处理方法
CN106874440B (zh) * 2017-02-07 2019-11-12 杭州秘猿科技有限公司 一种基于sql数据库的区块链状态存储方法
CN106897933A (zh) * 2017-04-18 2017-06-27 杜伯仁 一种面向多区块链平台的区块链网络节点服务装置

Also Published As

Publication number Publication date
CN110019043A (zh) 2019-07-16

Similar Documents

Publication Publication Date Title
CN108647361B (zh) 一种基于区块链的数据存储方法、装置及系统
CN109639521B (zh) 区块链性能的测试方法、装置、设备及存储介质
Xie et al. Federatedscope: A flexible federated learning platform for heterogeneity
US10176242B2 (en) Local key-value database synchronization
WO2016127720A1 (zh) 一种数据互通的方法,及数据互通设备
WO2021115021A1 (zh) 数据处理方法、装置、终端设备及计算机可读存储介质
WO2020029844A1 (zh) 一种区块链节点和交易方法
CN111338766A (zh) 事务处理方法、装置、计算机设备及存储介质
US20130191523A1 (en) Real-time analytics for large data sets
CN103226598B (zh) 访问数据库的方法和装置以及数据库管理系统
US11102322B2 (en) Data processing method and apparatus, server, and controller
US20230084325A1 (en) Random greedy algorithm-based horizontal federated gradient boosted tree optimization method
CN106569896B (zh) 一种数据分发及并行处理方法和系统
CN110069431A (zh) 基于RDMA和HTM的弹性Key-Value键值对数据存储方法
CN113407600B (zh) 一种动态实时同步多源大表数据的增强实时计算方法
CN110019043B (zh) 一种区块链数据存储方法
CN114201421A (zh) 一种数据流处理方法、存储控制节点及可读存储介质
CN112785408A (zh) 基于哈希的对账方法及装置
US20230370285A1 (en) Block-chain-based data processing method, computer device, computer-readable storage medium
CN111832661B (zh) 分类模型构建方法、装置、计算机设备及可读存储介质
CN113037824A (zh) 一种面向云计算的高性能区块链架构方法
CN107678680A (zh) 分布式块存储系统中纠删码并发io的方法及存储装置
CN111209263A (zh) 数据存储方法、装置、设备及存储介质
CN115510161A (zh) 数据同步方法、装置、设备及存储介质
CN115827772A (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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210316

Address after: Room 2201, 703c, Desai science and technology building, 9789 Shennan Avenue, high tech Zone community, Yuehai street, Nanshan District, Shenzhen, Guangdong 518000

Applicant after: Benchainless Technology (Shenzhen) Co.,Ltd.

Address before: 361000 unit 21, 201, building B, 86 Haijing Road, Xiamen area, China (Fujian) pilot Free Trade Zone, Xiamen City, Fujian Province

Applicant before: XIAMEN INSTINCT BLOCKCHAIN TECHNOLOGY Co.,Ltd.

GR01 Patent grant
GR01 Patent grant