CN110134671B - 一种面向溯源应用的区块链数据库数据管理系统及方法 - Google Patents
一种面向溯源应用的区块链数据库数据管理系统及方法 Download PDFInfo
- Publication number
- CN110134671B CN110134671B CN201910420570.9A CN201910420570A CN110134671B CN 110134671 B CN110134671 B CN 110134671B CN 201910420570 A CN201910420570 A CN 201910420570A CN 110134671 B CN110134671 B CN 110134671B
- Authority
- CN
- China
- Prior art keywords
- data
- bcd
- bdql
- key
- data set
- 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
Links
Images
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/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/313—Logic programming, e.g. PROLOG programming language
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/37—Compiler construction; Parser generation
Abstract
本发明提供了一种面向溯源应用的区块链数据库数据管理系统,包括:1)解析转换组件层:包含多个解析转换组件ARP,实现对BDQL语句的简单处理与解析;2)逻辑组合处理层:实现对语句的重新组合;3)数据驱动层:将数据转换成BCD驱动所需的数据格式,数据由逻辑处理层处理之后发送给BCD驱动,BCD驱动将数据格式转换为BCD可执行数据BED,并发送至数据存储层;4)数据存储层:存储数据。一种面向溯源应用的区块链数据库数据管理方法,包括区块链数据库BDQL语言转换及通过BDQL在区块链数据库中对数据进行查询、插入和更新操作。该系统和方法将数据格式转化,完成标准化的操作,开发人员直接输入类SQL语句,通过BDQL对区块链数据库BCD进行增改查操作。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种面向溯源应用的区块链数据库数据管理系统及方法。
背景技术
区块链是指将许多存储数据的区块按时间顺序组合而成的一种链式数据结构,采用密码学方式保证数据的不可篡改性,通过分布式存储的方式保证数据的安全性及使用共识机制来保证数据的有效性,并利用自动化脚本代码组成的智能合约实现数据处理和相关业务的操作。
溯源是指要对处理对象进行全生命周期的追溯,来监测整个过程,发现问题并可追溯到具体责任人。但溯源目前存在的痛点有:数据中心化存储,存在中间管理方为了自身利益而篡改数据的风险;假冒伪劣产品信息或者虚假信息出现而追责困难;信息安全管理也是溯源需要解决的痛点问题。区块链溯源实现了去中心的信任,区块链中的多方共识、加密算法、P2P网络等技术解决了在去中心的系统中如何保证数据的不可篡改问题;智能合约按照规则自动执行,去除了人为控制的风险;关键数据以链式存储,可通过安全访问方式对每笔数据进行追溯。而当前区块链存在的一个重要问题,就是交易和处理性能的挑战,因此一种叫做区块链数据库的新系统可以作为传统区块链系统的有效补充,加强区块链在实际中的应用。
传统数据库具有中心化的特点,通过中心机构来控制与管理数据,数据存在易被篡改和丢失的风险。而区块链数据库(Blockchain Database,简称BCD)不同,由去中心化的多个分布式节点组成,所有节点共同来管理数据,对数据的操作需要通过共识机制得到确认后才能实现。在具备区块链典型特征,即数据不可篡改性的基础上,采用加密方式保证数据的安全性,所有历史记录数据都会被存储在BCD中,实现有效数据管理。相对于传统的区块链系统,区块链数据库具备高吞吐量、低延迟等优点。实际系统可以单独使用区块链数据库或与区块链系统结合使用。
目前,现有技术中区块链数据库的数据管理仍旧存在如下问题:
1、通常采用NoSQL的非关系型数据库,不支持SQL标准;
2、查询过程复杂;
3、系统维护困难;
4、数据展示困难。
例如BigchainDB对于开发人员和数据管理客户端来说使用较为复杂,不易于和其他系统的兼容,开发人员使用及操作难度大,学习周期长。
总之,非关系型数据库虽然数据格式更灵活,但是对数据库的操作并不容易,需要在非关系型数据库上搭建的区块链数据库并与SQL语句之间建立一定的逻辑桥梁克服现有技术的上述缺陷。
发明内容
为了解决这些问题,本发明提供了一种面向溯源应用的区块链数据库数据管理系统及方法,该数据管理系统,可实现查询、插入和更新操作,并且使用一种类SQL语言,被称为区块链数据库查询语言(Blockchain Database Query Language,BDQL)。其管理方法就是构建一套BDQL语言,通过解析转换、逻辑处理、数据驱动、数据存储四个层次操作可以将BDQL解释转换为BCD可解析并执行的语句,并完成BCD操作。开发人员采用该数据管理系统及方法,直接输入BDQL语句,并对区块链数据库BCD进行增改查操作。
本发明的目的在于提供一种面向溯源应用的区块链数据库数据管理系统,包括:
1)解析转换组件层:包含解析转换组件ARP(Analyses Resolve Parse),所述解析转换组件ARP实现对BDQL语句的简单处理与解析的操作;
2)逻辑组合处理层:用于进行逻辑组合处理LCP(Logical Compose Process)操作,实现对语句的重新组合;
3)数据驱动层:用于将数据转换成BCD驱动所需要的数据格式,所述数据由逻辑处理层处理之后发送给BCD驱动,BCD驱动将数据格式转换为BCD可执行数据BED(BCDExecuted Data),并发送至数据存储层;
4)数据存储层:用于存储所述数据。
优选地,所述解析转换组件层包含预处理模块、词法/语法分析模块以及解释器模块;其中,所述预处理模块完成对BDQL语言的分析与检错的功能,通过所述预处理模块将BDQL语言进行规范的处理,使其更适合所述词法/语法分析模块对其进行下一步操作;所述词法/语法分析模块用于词法及语法的分析,通过所述词法分析识别关键字、标识符、字面量,再对所述BDQL语言进行语法分析,生成简单易懂的语法树结构,便于由所述解释器模块进行解析转换;所述解释器模块将由所述词法/语法分析处理完毕的语句解析转换成可操作查询的字段(Operational Query Field,OQF),以便所述逻辑组合处理层对字段进行操作。
优选地,所述逻辑组合处理层包括字段分类模块、逻辑组合模块以及接口定制模块;其中所述字段分类模块首先将字段按不同的类别进行区分,并将字段按规则、规定将所述字段放置到所属的地方,便于所述逻辑组合模块对字段进行选取;所述逻辑组合模块从所述字段分类模块选择所需要的字段,并按照新的语法规则对其进行重组,进而发送给所述接口定制模块;所述接口定制模块按照区块链数据库接口的标准对数据进行标准化处理,使数据参数能放入到所需要的接口中,此后经过所述数据驱动层对数据进行处理,并上传至所述数据存储层,其中,所述不同的类别包括:集合名称、数据内容、约束条件。
优选地,所述数据存储层的所述数据存储方式为区块链数据库内存储。
优选地,所述BCD的数据集合包括关键数据集keydata、附加数据集attachdata、区块数据集blocks以及交易数据集transactions;所述关键数据集keydata存储的是关键数据,为基本数据,用来存放不同存储目标的最基本信息,所述最基本信息不可更改;所述附加数据集attachdata中存放所述关键数据集中数据的属性信息,也就是附加数据,通过交易的创建、转让进行属性信息的修改和添加;所述区块数据集blocks中的数据用于记录区块高度和每个区块的交易列表;所述交易数据集transactions中的数据是记录交易信息,所述交易就是向BCD发送指令,进行数据操作;当执行创建交易时,所述BCD同时在关键数据集keydata、交易数据集transactions、区块数据集blocks中进行记录,注册新资产asset;当执行转让交易时,所述BCD将在附加数据集attachdata、交易数据集transactions、区块数据集blocks中进行记录,更改资产的所有权属性或者修改资产状态;将关键数据集keydata、附加数据集attachdata、区块数据集blocks以及交易数据集transactions中各数据集中的一条数据称为一个数据记录datarecord或数据文档,在所述关键数据集keydata和附加数据集attachdata中定义字段recordName作为与BDQL进行交互的表名,定义字段recordValue用于描述所述数据记录中的数据项和对应的值;所述关键数据集keydata数据记录描述一个资产为:keyrecordName表示所述数据记录名称,对应于传统关系型数据库的表名,keyrecordValue表示所属数据记录ID所对应资产的信息,所述ID表示所述数据记录的标识,是在创建资产数据时,所述BCD自动生成的唯一标识,所述资产的信息以K-V数据形式存储,其中K表示数据项名称,V表示数据内容;所述附加数据集attachdata数据记录描述一个资产为:attachrecordName表示附加数据集中所述数据记录的名称;attachrecordValue表示所述数据记录ID所对应资产的内容,所述ID表示所述数据记录的ID,与关键数据集keydata中的相应数据记录是同一个ID,关键数据集keydata和附加数据集attachdata通过所述唯一的ID关联在一起,所述数据记录的内容以K-V数据形式存储,其中K表示数据项名称,V表示数据内容。
本发明的目的还在于提供一种面向溯源应用的区块链数据库数据管理方法。,其中所述方法包括面向区块链数据库的BDQL语言转换以及通过BDQL在所述区块链数据库中对数据进行查询、插入和更新操作。
优选地,所述面向区块链数据库的BDQL语言转换包括以下步骤:
步骤1:通过解析转换组件层进行预处理:通过对BDQL语言进行预处理操作,生成预处理文件PF(Preprocess File),实现对BDQL语言的基本检查分析及简单处理,使其更适用于作词法/语法的解析;
步骤2:通过解析转换组件层进行词法/语法分析:通过对输入的源程序进行词法/语法的分析,生成一个按指定规则执行BDQL的抽象语法树BAST(BDQL Abstract SyntaxTree,BAST);
步骤3:通过解析转换组件层进行解释器解析转换:所述解释器负责在得到所述抽象语法树BAST的基础上把BDQL语句解析转换为各个字段,所述字段是可操作查询字段OQF,所述可操作查询字段OQF中的字段可实现将所述字段与BCD数据库中的字段相映射;
步骤4:通过逻辑组合处理层进行逻辑组合操作:所述逻辑组合操作根据BCD驱动按字段类别的原则进行重新组合,并遵循组合规则及组合顺序,然后根据BCD驱动将数据格式转换成BCD所需要的数据格式,生成区块链数据库接口数据Interface Data;
步骤5:采用数据驱动层进行BCD驱动操作,生成BCD可执行数据BED,并将所述可执行数据BED发送至BCD中。
优选地,通过BDQL在所述BCD中对数据进行插入操作实现为:
INSERT
INTO<表名>[(<字段1>[,<字段2>]…)]
VALUES(<值1>[,<值2>]…);
其中,表名分别表示关键数据集keydata中的keyrecordName或附加数据集中的attachrecordName;对BCD插入一个新的数据,为关键数据集keydata中插入一条新数据记录,表示生成某个新资产,并记录关键信息,所述关键信息具有不可篡改性,在关键数据集keydata中插入新数据的同时,也在附加数据集attachdata中的数据添加所述资产的其他属性数据,根据BDQL解析后的表名和字段名判断,将属于关键数据集的部分新建为一个新资产,并将其他属性添加到附加数据集attachdata中,所述关键数据和附加数据表名类似,将附加数据的表名增加一个后缀_attch。
优选地,通过BDQL在所述BCD中对数据进行更新操作实现为:
UPDATE<表名>
SET<KEY1>=<VALUE1>[,<KEY2>=<VALUE2>]…
[WHERE子句条件];
所述更新操作指更新附加数据集attachdata中某一资产满足WHERE子句条件的数据,通过SET子句中给出表达式的VALUE来代替所述资产对应的KEY的原始VALUE,完成更新操作,所述KEY对应附加数据集attachdata中的field数据项名称,当在BCD中不存在此操作所要更新的数据集ID时,则会直接抛出异常;在附加数据集attachdata不存在的时候,创建新数据记录,创建各数据项并插入数值,所述更新操作在底层区块链数据库实现中,记录所有的状态,查询为默认查询最新的数据值,同时提供按照不同的时间追溯前面数据值的功能。
优选地,通过BDQL在所述BCD中对数据进行查询实现为:
SELECT<目标字段表达式>…
FROM<表名>
[WHERE<条件表达式>]
[GROUP BY<分组条件>]
[HAVING<分组统计条件>]
[ORDER BY<排序顺序>]
其中,整个SELECT语句的含义是从FROM子句所指定的数据记录中找到满足WHERE子句条件表达式的目标字段的值,SELECT<目标字段表达式>表示需要查询的KEY,所述KEY对应关键数据集keydata或者附加数据集attachdata中的field数据项名称,FROM<表名>表示从目标集合中完成对某个表的查询操作,所述表名表示为keyrecordName或attachrecordName,WHERE<条件表达式>指通过所述条件将所查询的KEY进一步过滤,将满足所述条件的VALUE返回到查询结果中,表现形式为KEY=、>、<、>=或<=,所述SELECT语句是针对关键数据集keydata和附加数据集attachdata展开查询工作的。
本发明的有益效果:
本发明的系统和方法应用于具有去中心化、不可篡改性及高吞吐量、低延迟的区块链数据库(Blockchain Database,简称BCD)上进行部署,区块链数据库采用去中心化的多个分布式节点组成,所有节点共同来管理数据,对数据的操作需要通过共识机制得到确认后才能实现。在具备区块链典型特征,即数据不可篡改性的基础上,采用加密方式保证数据的安全性,所有历史记录数据都会被存储在区块链数据库中,实现有效数据管理;采用的区块链数据库是通过数据驱动与其建立连接,完成数据的交互,本发明的系统和方法将数据格式进行转化,完成标准化的操作,使参数放入到相应的区块链数据库接口,即满足区块链数据所需要的数据格式,再经过区块链数据的数据驱动处理操作,将数据发给区块链数据库,返回结果关闭连接,实现了开发人员采用该管理系统和管理方法,直接输入类SQL语句,通过BDQL对区块链数据库进行增改查操作,更为便捷,另外,减少了区块链数据库的系统维护难度,数据展示易于操作,降低了数据库区块链的使用门槛,同时,有助于加强传统数据操作应用的兼容性。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。本发明的目标及特征考虑到如下结合附图的描述将更加明显,附图中:
图1为根据本发明实施例的面向溯源应用的区块链数据库数据管理系统架构图;
图2为根据本发明实施例的面向溯源应用的区块链数据库数据管理方法的逻辑流程图;
图3为根据本发明实施例的BCD关键数据插入操作示意图;
图4为根据本发明实施例的BCD附加数据插入操作示意图;
图5为根据本发明实施例的以Java为例的区块链数据库BDQL转换实例逻辑流程图。
具体实施方式
为了使得本发明能够针对其发明要点更加明显易懂,下面将结合附图和实例对本发明作进一步的说明。在下面的描述中阐述了很多细节和具体实例,提供这些实例是为了能够更透彻地理解本发明,并且能够将本发明完整形象地传达给本领域的技术人员。虽然本发明能够以很多不同于此描述的其它方式实施,但是本领域技术人员可以在不违背本发明内涵的情况下做相应的推广,因此本发明不受下面公开的具体实例及具体附图所限制。
本实施例的面向溯源应用的区块链数据库数据管理系统架构图如图1所示,包括:解析转换组件层、逻辑组合处理层、数据驱动层和数据存储层;其中,
1)解析转换组件层:解析转换组件(Analyses Resolve Parse,ARP)主要实现对BDQL语句的简单处理与解析的操作。解析转换组件层包含三个模块:预处理模块、词法/语法分析模块、解释器模块。
预处理模块主要完成了对BDQL语言的分析与检错的功能,通过预处理模块将BDQL语言进行规范的处理,通过预处理模块的简单处理之后,使其更适合词法/语法分析模块对其进行下一步操作。
词法/语法分析模块主要负责词法及语法的分析,通过词法分析识别关键字、标识符、字面量等,再对其进行语法分析,生成简单易懂的语法树结构,再由解释器模块进行解析转换,提高了操作的效率。
解释器模块将由词法/语法分析处理完毕的语句解析转换成可操作查询的字段(Operational Query Field,OQF),以便逻辑组合处理层对字段进行操作。
2)逻辑组合处理层,逻辑组合处理(Logical Compose Process,LCP)主要是对语句的重新组合。逻辑组合处理层包括字段分类、逻辑组合、接口定制模块。
其中字段分类模块首先将字段按不同的类别进行区分,比如集合名称、数据内容,并将字段按规则、规定放置在其所属的地方,方便逻辑组合模块对字段进行选取。
逻辑组合模块从字段分类模块选择所需要的字段,并按照新的语法规则对其进行重组,并发送给接口定制模块。
接口定制模块按照区块链数据库接口的标准对数据进行标准化处理,使数据参数能放入到所需要的接口中。再经过数据驱动层对数据进行处理,并上传至数据存储层。
3)数据驱动层,数据驱动层(Data Driver Layer,DDL)主要负责将数据转换成BCD驱动所需要的数据格式,数据由逻辑处理层处理之后发送给BCD驱动,BCD驱动将数据格式转换为BCD可执行数据(BCD Executed Data,BED),并发送至数据存储层。
4)数据存储层(Data Storage Layer,DSL),主要负责数据的存储,本设计存储方式为区块链数据库。
BCD主要的数据集合包括关键数据集(keydata)、附加数据集(attachdata)、区块数据集(blocks)、交易数据集(transactions)。关键数据又可称为基本数据,用来存放不同存储目标(通常可用来表示资产,资产可以是虚拟资产,也可以是实物资产)的最基本信息,该信息具有不可更改性。附加数据是关键数据的属性信息,可以通过交易(Transactions)的创建(Create)、转让(Transfer)等方法,进行属性的修改和添加。区块数据用于记录区块高度和每个区块的交易列表。交易是指向BCD发送指令,进行数据操作。当创建交易时,BCD同时在关键数据集、交易数据集、区块数据集中进行记录,注册新资产(asset);当执行转让交易时,BCD将在附加数据集、交易数据集、区块数据集中进行记录,更改资产的所有权属性或者修改资产状态。
本实施例主要针对关键数据集和附加数据集,在原有查询的基础上扩展支持类SQL语句进行增加、查找等操作,即可实现包含上述交易的全部方法。
本实施例将上述各数据集中的一条数据称为一个数据记录(datarecord,也可称为数据文档),在原生区块链数据库中,数据记录的核心信息主要包括id和data两个数据项,交易数据集中的数据记录还需包括交易id和交易双方的信息。上述data是数据记录中描述的资产信息,包括资产的属性和状态两部分。
为了方便使用BDQL语句对BCD进行操作,本实施例在关键数据集和附加数据集中定义一个字段recordName作为与BDQL进行交互的“表名”,recordValue部分描述该数据记录中的数据项和对应的值。关键数据集中的数据记录的结构如下表所示:
因此,每条数据记录描述一个资产,keyrecordName表示该条数据记录名称,可对应于传统关系型数据库的表名,keyrecordValue是该ID所对应资产的信息,通常以K-V数据形式存储,K表示数据项名称,比如示例中的field1,field2等,V表示数据内容,比如value1,value2等,ID表示该条数据记录的标识,是在创建资产数据时,BCD自动生成的唯一标识。
类似的,附加数据集的数据记录结构表示如下:
attachrecordName表示附加数据集中该条数据记录的名称;attachrecordValue是该条数据的内容,同关键数据集,也是以K-V数据形式存储,这里的ID表示附加数据集中数据记录的ID,与关键数据集中的相应数据记录是同一个ID,关键数据集和附加数据集通过这个唯一的ID关联在一起。
如图2所示为本实施例面向溯源应用的区块链数据库数据管理方法的逻辑流程图,包括区块链数据库BDQL语言转换以及通过BDQL在所述区块链数据库中对数据进行查询、插入和更新操作。
区块链数据库BDQL语言转换包括具体包括以下步骤:
步骤1:预处理:通过对BDQL语言进行预处理操作,生成预处理文件PF(PreprocessFile),实现对BDQL语言的基本检查分析及简单的处理,使其更适用于作词法/语法的解析。
步骤2:词法/语法分析:通过对输入的源程序进行词法/语法的分析,生成一个按指定规则执行BDQL抽象语法树(BDQLAbstract Syntax Tree,BAST)。
词法/语法分析模块主要负责词法及语法的分析,通过词法分析识别关键字和符号,再对其进行语法分析,生成简单易懂的语法树结构,再由解释器模块进行解析转换,提高了操作的效率。
步骤3:解释器解析转换:解释器负责在得到BAST的基础上把BDQL语句解析转换为各个字段,该字段是可操作查询字段(Operational Query Field,OQF)。可操作查询字段即表示字段具有高度的灵活性、可操作性,进而就可以实现将该字段与BCD数据库中的字段相映射。
本实施例中BCD可以使用BigchainDB等区块链数据库进行部署,其不仅具有去中心化的控制、不可篡改性以及数字资产的创建与移动,还具有高吞吐量、低延迟的特点。
步骤4:逻辑组合的操作:逻辑组合指根据BCD驱动按字段的类别等原则进行重新组合的过程,并遵循一定的组合规则及组合顺序。再根据BCD驱动将数据格式转换成BCD所需要的数据格式,生成区块链数据库接口数据(Interface Data)。
步骤5:经过BCD驱动操作,生成BCD可执行数据(BCDExecuted Data,BED),并将该数据发送至BCD中。
本实施例中,BCD采用BigchainDB作为实例,当然也可以采用同类型的其他区块链数据库,以BigchainDB作为实例的情况下,其中assetdata对应关键数据集keydata,metadata对应附加数据集attachdata,驱动可以采用BigchainDB Java Driver等,使用BigchainDB Java Driver与区块链数据库BCD建立联系,且可对数据进行标准化处理,完成数据格式转化操作,使数据满足BCD所需要的格式。
通过BDQL可以在BCD中对数据进行查询、插入和更新操作,具体操作表述方法如下:
1)插入操作:INSERT
INTO<表名>[(<字段1>[,<字段2>]…)]
VALUES(<值1>[,<值2>]…);
其中,表名分别表示关键数据集中的keyrecordName或附加数据集中的attachrecordName,具体转换方式如图3所示(以关键数据集为例)。
对BCD插入一个新的数据,通常是在关键数据集中插入一条新数据记录,表示生成某个新资产,并记录其关键信息,该信息具有不可篡改性。在关键数据集中插入新数据的同时,也可以在附加数据中添加该资产的其他属性数据。系统将根据BDQL解析后的表名和字段名判断,将属于关键数据集的部分新建为一个新资产,并将其他属性添加到附加数据集中。这种情况下,关键数据和附加数据表名类似,将附加数据的表名增加一个后缀_attch,如图4所示。
2)更新操作:UPDATE<表名>
SET<KEY1>=<VALUE1>[,<KEY2>=<VALUE2>]…
[WHEREID=资产ID];
更新操作指更新附加数据集中某一资产满足WHERE子句条件的数据,例如WHEREID=资产ID,表示更新该资产的附加数据,通过SET子句中给出表达式的VALUE来代替其对应的KEY(KEY对应附加数据集中的field数据项名称)的原始VALUE,完成更新操作,当在BCD中不存在此操作所要更新的数据集ID时,则会直接抛出异常。另外,在附加数据集不存在的时候,创建新数据记录,创建各数据项并插入数值。更新操作在底层区块链数据库实现中,会记录所有的状态,本质上是附加一个相同数据项filed的数据值value,同时记录相应的时间信息,查询时候是默认查询最新的数据值,该系统也提供按照不同的时间追溯前面数据值的功能。
3)查询操作:SELECT<目标字段表达式>…
FROM<表名>
[WHERE<条件表达式>]
[GROUP BY<分组条件>]
[HAVING<分组统计条件>]
[ORDER BY<排序顺序>]
其中,整个SELECT语句的含义是从FROM子句所指定的数据记录中找到满足WHERE子句条件表达式的目标字段的值,SELECT<目标字段表达式>表示需要查询的KEY(KEY对应关键数据集或者附加数据集中的field数据项名称),FROM<表名>(表名表示keyrecordName或attachrecordName)表示从该集合中完成对某个表的查询操作,WHERE<条件表达式>指通过该条件将所查询的KEY进一步过滤,将满足该条件的VALUE返回到查询结果中,表现形式为KEY=(或>、<、>=、<=)VALUE,该操作既可查询关键数据集,也可查询附加数据集。
如图5所示,以Java作为实现语言,BigchainDB Java Driver作为BCD的数据接口,本实施案例实现步骤如下:
步骤1:预处理:通过对BDQL语言进行预处理操作,生成.jjt文件,实现对BDQL语言的基本检查分析及简单处理,使其更适用于作词法/语法解析。
步骤2:词法/语法分析:通过JavaCC(Java Compiler Compiler)对输入的BDQL进行词法/语法分析和处理。JavaCC是一个使用Java开发的语法分析生成器。通过JavaCC将BDQL转换成可识别,可匹配该语法的Java程序,JavaCC还提供JJTree等工具来建立相应的语法树。
步骤3:解释器解析转换:通过JavaCC生成的.Java解释器把BDQL语句解析为各个字段,该字段是可操作查询字段(Operational Query Field,OQF)。可操作查询字段即表示字段具有高度的灵活性,可操作性,进而就可以实现将该字段与BigchainDB区块链数据库中的字段相映射。
本发明采取具有去中心化、不可篡改性、数字资产的创建与移动及高吞吐量、低延迟的BigchainDB区块链数据库进行部署。该数据库是基于键值方式设计的。
步骤4:逻辑组合的操作:逻辑组合指根据BigchainDB Java Driver驱动按字段的类别等原则进行重新组合的过程,并遵循新的语法规则及组合顺序。再根据BigchainDBJava Driver驱动将数据格式转换成BigchainDB Java Driver所需要的数据格式,生成区块链数据库接口数据(Interface Data)。
步骤5:再经过BigchainDB Java Driver驱动操作,生成BCD可执行数据(BCDExecuted Data,BED),并将该数据发送至BigchainDB中。
本实施例的系统和方法采取具有去中心化、不可篡改性、数字资产的创建与移动及高吞吐量、低延迟的区块链数据库(Blockchain Database,简称BCD)进行部署,BigchainDB区块链数据库采用去中心化的多个分布式节点组成,所有节点共同来管理数据,对数据的操作需要通过共识机制得到确认后才能实现。在具备区块链典型特征,即数据不可篡改性的基础上,采用加密方式保证数据的安全性,所有历史记录数据都会被存储在BCD中,实现有效数据管理;采用的BigchainDB数据库是通过BigchainDB Java Driver驱动与其建立连接,完成数据的交互,本实施例的系统和方法将数据格式进行转化,完成标准化的操作,使参数放入到相应的BigchainDB数据库接口,即满足BigchainDB所需要的数据格式,再经过BigchainDB Java Driver驱动处理操作,将数据发给BigchainDB数据库,返回结果关闭连接,实现了开发人员采用该管理系统和管理方法,直接输入SQL语句,通过BDQL对区块链数据库BCD进行增改查操作,更为便捷。另外,减少了区块链数据库的系统维护难度,数据展示易于操作,降低了数据库区块链的使用门槛,同时,有助于加强传统数据操作应用的兼容性。
虽然本发明已经参考特定的说明性实施例进行了描述,但是不会受到这些实施例的限定而仅仅受到附加权利要求的限定。本领域技术人员应当理解可以在不偏离本发明的保护范围和精神的情况下对本发明的实施例能够进行改动和修改。
Claims (2)
1.一种面向溯源应用的区块链数据库数据管理系统,其特征在于包括:
1)解析转换组件层:包含解析转换组件ARP,所述解析转换组件ARP实现对BDQL语句的简单处理与解析的操作,所述解析转换组件层包含预处理模块、词法/语法分析模块以及解释器模块;其中,所述预处理模块完成对BDQL语句的分析与检错的功能,通过所述预处理模块将BDQL语句进行规范的处理,使其更适合所述词法/语法分析模块对其进行下一步操作;所述词法/语法分析模块用于词法及语法的分析,通过所述词法分析识别关键字、标识符和字面量,再对所述BDQL语句进行语法分析,生成简单易懂的语法树结构,便于由所述解释器模块进行解析转换;所述解释器模块将由所述词法/语法分析处理完毕的语句解析转换成可操作查询的字段,以便逻辑组合处理层对字段进行操作;
2)逻辑组合处理层:用于进行逻辑组合处理LCP操作,实现对语句的重新组合,所述逻辑组合处理层包括字段分类模块、逻辑组合模块以及接口定制模块;其中所述字段分类模块首先将字段按不同的类别进行区分,并将字段按规则和规定将所述字段放置到所属的地方,便于所述逻辑组合模块对字段进行选取;所述逻辑组合模块从所述字段分类模块选择所需要的字段,并按照新的语法规则对其进行重组,进而发送给所述接口定制模块;所述接口定制模块按照区块链数据库接口的标准对数据进行标准化处理,使数据参数能放入到所需要的接口中,此后经过数据驱动层对数据进行处理,并上传至数据存储层,其中,所述不同的类别包括:集合名称、数据内容和约束条件;
3)数据驱动层:用于将数据转换成BCD驱动所需要的数据格式,所述数据由逻辑处理层处理之后发送给BCD驱动,BCD驱动将数据格式转换为BCD可执行数据BED,并发送至数据存储层;
4)数据存储层:用于存储所述数据,所述数据存储层的数据存储方式为区块链数据库内存储;所述数据存储层的所述数据存储方式为区块链数据库内存储所述BCD的数据集合包括关键数据集keydata、附加数据集attachdata、区块数据集blocks以及交易数据集transactions;所述关键数据keydata存储的是关键数据,为基本数据,用来存放不同存储目标的最基本信息,所述最基本信息不可更改;所述附加数据集attachdata中存放所述关键数据集中数据的属性信息,也就是附加数据,通过交易的创建、转让进行属性信息的修改和添加;所述区块数据集blocks中的数据用于记录区块高度和每个区块的交易列表;所述交易数据集transactions中的数据是记录交易信息,所述交易就是向BCD发送指令,进行数据操作;当执行创建交易时,所述BCD同时在关键数据集keydata、交易数据集transactions和区块数据集blocks中进行记录,注册新资产asset;当执行转让交易时,所述BCD将在附加数据集attachdata、交易数据集transactions和区块数据集blocks中进行记录,更改资产的所有权属性或者修改资产状态;将关键数据集keydata、附加数据集attachdata、区块数据集blocks以及交易数据集transactions中各数据集中的一条数据称为一个数据记录datarecord或数据文档,在所述关键数据集keydata和附加数据集attachdata中定义字段recordName作为与BDQL进行交互的表名,定义字段recordValue用于描述所述数据记录中的数据项和对应的值;所述关键数据集keydata数据记录描述一个资产为:keyrecordName表示所述数据记录名称,对应于传统关系型数据库的表名,keyrecordValue表示所属数据记录ID所对应资产的信息,所述ID表示所述数据记录的标识,是在创建资产数据时,所述BCD自动生成的唯一标识,所述资产的信息以K-V数据形式存储,其中K表示数据项名称,V表示数据内容;所述附加数据集attachdata数据记录描述一个资产为:attachrecordName表示附加数据集中所述数据记录的名称;attachrecordValue表示所述数据记录ID所对应资产的内容,所述ID表示所述数据记录的ID,与关键数据集keydata中的相应数据记录是同一个ID,关键数据集keydata和附加数据集attachdata通过所述唯一的ID关联在一起,所述数据记录的内容以K-V数据形式存储,其中K表示数据项名称,V表示数据内容。
2.一种使用权利要求1所述的面向溯源应用的区块链数据库数据管理系统进行的面向溯源应用的区块链数据库数据管理方法,其特征在于:其中所述方法包括面向区块链数据库的BDQL语句转换以及通过BDQL在所述区块链数据库中对数据进行查询、插入和更新操作;所述面向区块链数据库的BDQL语句转换包括以下步骤:
步骤1:通过解析转换组件层进行预处理:通过对BDQL语句进行预处理操作,生成预处理文件PF(Preprocess File),实现对BDQL语句的基本检查分析及简单处理,使其更适用于作词法/语法的解析;
步骤2:通过解析转换组件层进行词法/语法分析:通过对输入的源程序进行词法/语法的分析,生成一个按指定规则执行BDQL的抽象语法树BAST;
步骤3:通过解析转换组件层进行解释器解析转换:所述解释器负责在得到所述抽象语法树BAST的基础上把BDQL语句解析转换为各个字段,所述字段是可操作查询字段OQF,所述可操作查询字段OQF中的字段可实现将所述字段与BCD数据库中的字段相映射;
步骤4:通过逻辑组合处理层进行逻辑组合操作:所述逻辑组合操作根据BCD驱动按字段类别的原则进行重新组合,并遵循组合规则及组合顺序,然后根据BCD驱动将数据格式转换成BCD所需要的数据格式,生成区块链数据库接口数据Interface Data;
步骤5:采用数据驱动层进行BCD驱动操作,生成BCD可执行数据BED,并将所述可执行数据BED发送至BCD中;
通过BDQL在所述BCD中对数据进行插入操作实现为:
INSERT
INTO<表名>[(<字段1>[,<字段2>]…)]
VALUES(<值1>[,<值2>]…);
其中,表名分别表示关键数据集keydata中的keyrecordName或附加数据集中的attachrecordName;对BCD插入一个新的数据,为关键数据集keydata中插入一条新数据记录,表示生成某个新资产,并记录关键信息,所述关键信息具有不可篡改性,在关键数据集keydata中插入新数据的同时,也在附加数据集attachdata中的数据添加所述资产的其他属性数据,根据BDQL解析后的表名和字段名判断,将属于关键数据集的部分新建为一个新资产,并将其他属性添加到附加数据集attachdata中,所述关键数据和附加数据表名类似,将附加数据的表名增加一个后缀_attch;
通过BDQL在所述BCD中对数据进行更新操作实现为:
UPDATE<表名>
SET<KEY1>=<VALUE1>[,<KEY2>=<VALUE2>]…
[WHERE子句条件];
所述更新操作指更新附加数据集attachdata中某一资产满足WHERE子句条件的数据,通过SET子句中给出表达式的VALUE来代替所述资产对应的KEY的原始VALUE,完成更新操作,所述KEY对应附加数据集attachdata中的field数据项名称,当在BCD中不存在此操作所要更新的数据集ID时,则会直接抛出异常;在附加数据集attachdata不存在的时候,创建新数据记录,创建各数据项并插入数值,所述更新操作在底层区块链数据库实现中,记录所有的状态,查询为默认查询最新的数据值,同时提供按照不同的时间追溯前面数据值的功能;
通过BDQL在所述BCD中对数据进行查询操作实现为:
SELECT<目标字段表达式>…
FROM<表名>
[WHERE<条件表达式>]
[GROUP BY<分组条件>]
[HAVING<分组统计条件>]
[ORDER BY<排序顺序>]
其中,整个SELECT语句的含义是从FROM子句所指定的数据记录中找到满足WHERE子句条件表达式的目标字段的值,SELECT<目标字段表达式>表示需要查询的KEY,所述KEY对应关键数据集keydata或者附加数据集attachdata中的field数据项名称,FROM<表名>表示从目标集合中完成对某个表的查询操作,所述表名表示为keyrecordName或attachrecordName,WHERE<条件表达式>指通过所述条件将所查询的KEY进一步过滤,将满足所述条件的VALUE返回到查询结果中,表现形式为KEY=、>、<、>=或<=,所述SELECT语句是针对关键数据集keydata和附加数据集attachdata展开查询工作的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910420570.9A CN110134671B (zh) | 2019-05-21 | 2019-05-21 | 一种面向溯源应用的区块链数据库数据管理系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910420570.9A CN110134671B (zh) | 2019-05-21 | 2019-05-21 | 一种面向溯源应用的区块链数据库数据管理系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110134671A CN110134671A (zh) | 2019-08-16 |
CN110134671B true CN110134671B (zh) | 2020-09-01 |
Family
ID=67571640
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910420570.9A Active CN110134671B (zh) | 2019-05-21 | 2019-05-21 | 一种面向溯源应用的区块链数据库数据管理系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110134671B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110597921B (zh) * | 2019-09-27 | 2024-01-26 | 腾讯云计算(北京)有限责任公司 | 一种信息处理的方法及装置 |
CN110880146A (zh) * | 2019-11-21 | 2020-03-13 | 上海中信信息发展股份有限公司 | 区块链上链方法、装置、电子设备及存储介质 |
CN111506650B (zh) * | 2020-04-13 | 2023-06-23 | 西安电子科技大学 | 一种关系型区块链数据管理方法及存储介质 |
CN112115156B (zh) * | 2020-05-07 | 2021-08-27 | 北京天德科技有限公司 | 一种面向对象的区块链查询方法和装置 |
CN112286963B (zh) * | 2020-11-17 | 2023-05-26 | 北京物资学院 | 一种区块链终端数据可信查询系统及其实现方法 |
CN114840563B (zh) * | 2021-02-01 | 2024-05-03 | 腾讯科技(深圳)有限公司 | 一种字段描述信息的生成方法、装置、设备及存储介质 |
CN115150089A (zh) * | 2021-03-29 | 2022-10-04 | 中兴通讯股份有限公司 | 区块链上链方法、装置、电子设备和存储介质 |
CN113328920B (zh) * | 2021-08-04 | 2021-10-29 | 成都飞机工业(集团)有限责任公司 | 一种对设备数据的采集与存储方法 |
CN114936250B (zh) * | 2022-07-22 | 2022-11-04 | 浙江中控技术股份有限公司 | 一种数据处理方法、装置、设备及存储介质 |
CN115757462B (zh) * | 2022-11-15 | 2023-06-06 | 中国科学院软件研究所 | 一种面向对象的数据库动态接口生成方法及操作方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105912595A (zh) * | 2016-04-01 | 2016-08-31 | 华南理工大学 | 一种关系数据库的数据起源收集方法 |
WO2017109140A1 (en) * | 2015-12-22 | 2017-06-29 | Bigchaindb Gmbh | Decentralized, tamper-resistant, asset-oriented database system and method of recording a transaction |
CN107766453A (zh) * | 2017-09-26 | 2018-03-06 | 上海策赢网络科技有限公司 | 基于区块链的数据库管理方法、装置及存储介质 |
CN108701296A (zh) * | 2016-02-11 | 2018-10-23 | 万事达卡国际股份有限公司 | 用于离线区块链交换的方法和系统 |
CN108694238A (zh) * | 2018-05-14 | 2018-10-23 | 腾讯科技(深圳)有限公司 | 基于区块链的业务数据处理方法、装置及存储介质 |
CN109559231A (zh) * | 2018-12-29 | 2019-04-02 | 华东师范大学 | 一种面向区块链的追溯查询方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107730277A (zh) * | 2017-10-18 | 2018-02-23 | 上海唯链信息科技有限公司 | 一种基于区块链技术的产品溯源验证方法 |
CN109191003A (zh) * | 2018-09-25 | 2019-01-11 | 仲恺农业工程学院 | 基于区块链的果蔬农产品质量安全溯源系统 |
-
2019
- 2019-05-21 CN CN201910420570.9A patent/CN110134671B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017109140A1 (en) * | 2015-12-22 | 2017-06-29 | Bigchaindb Gmbh | Decentralized, tamper-resistant, asset-oriented database system and method of recording a transaction |
CN108701296A (zh) * | 2016-02-11 | 2018-10-23 | 万事达卡国际股份有限公司 | 用于离线区块链交换的方法和系统 |
CN105912595A (zh) * | 2016-04-01 | 2016-08-31 | 华南理工大学 | 一种关系数据库的数据起源收集方法 |
CN107766453A (zh) * | 2017-09-26 | 2018-03-06 | 上海策赢网络科技有限公司 | 基于区块链的数据库管理方法、装置及存储介质 |
CN108694238A (zh) * | 2018-05-14 | 2018-10-23 | 腾讯科技(深圳)有限公司 | 基于区块链的业务数据处理方法、装置及存储介质 |
CN109559231A (zh) * | 2018-12-29 | 2019-04-02 | 华东师范大学 | 一种面向区块链的追溯查询方法 |
Non-Patent Citations (1)
Title |
---|
基于区块链技术的交易信息存储与查询系统的设计与实现;葛利洁;《中国优秀硕士学位论文全文数据库 信息科技辑》;20181115(第11(2018)期);正文第31-53页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110134671A (zh) | 2019-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110134671B (zh) | 一种面向溯源应用的区块链数据库数据管理系统及方法 | |
Karnitis et al. | Migration of relational database to document-oriented database: Structure denormalization and data transformation | |
Bikakis et al. | The XML and semantic web worlds: technologies, interoperability and integration: a survey of the state of the art | |
CN110837492B (zh) | 一种多源数据统一sql提供数据服务的方法 | |
US8103684B2 (en) | Abstract pipeline component connection | |
US20080183725A1 (en) | Metadata service employing common data model | |
EP2078267A1 (en) | Data processing | |
EP1815349A2 (en) | Methods and systems for semantic identification in data systems | |
US20200272664A1 (en) | Knowledge-driven federated big data query and analytics platform | |
US20200272623A1 (en) | Knowledge-driven federated big data query and analytics platform | |
WO2011116471A1 (en) | Method and system for generating updated test data | |
EP3699774A1 (en) | Knowledge-driven federated big data query and analytics platform | |
Mossakowski et al. | Hets user guide-version 0.99 | |
US11068459B2 (en) | Computer implemented and computer controlled method, computer program product and platform for arranging data for processing and storage at a data storage engine | |
Parmar et al. | MongoDB as an efficient graph database: An application of document oriented NOSQL database | |
CN113157723B (zh) | 一种面向Hyperledger Fabric的SQL访问方法 | |
Costa et al. | An evaluation of Graph Databases and Object-Graph Mappers in CIDOC CRM-compliant digital archives | |
Mami | Strategies for a Semantified Uniform Access to Large and Heterogeneous Data Sources | |
Poinot et al. | Seven keys for practical understanding and use of CGNS | |
Völkel | D2. 3.3. v2 SemVersion Versioning RDF and Ontologies | |
Jakob et al. | View creation of meta models by using modified triple graph grammars | |
Kwakye | A Practical Approach to Merging Multidimensional Data Models | |
Hoi et al. | Manipulating Data Lakes Intelligently with Java Annotations | |
Haslhofer et al. | A retrospective on semantics and interoperability research | |
Tahiri Alaoui | An approach to automatically update the Spanish DBpedia using DBpedia Databus |
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 |