基于JSON的数据交换技术应用研究
2017-11-02徐宝磊罗江潘刚
徐宝磊 罗江 潘刚
摘要:随着信息技术在各领域的广泛普及,尤其是移动技术应用的不断深入,各业务部门间信息交换更加频繁,各业务部门之间、移动设备与Web服务端等异构数据库之间进行数据共享或通信的问题日益突出。研究了JSON数据对象在异构数据库系统间集成的应用,利用JSON技术的特性及其相关优势,构建了一种基于JSON数据结构的数据交换模型,提高了异构数据库间数据通信的通用性和通信效率。
关键词:JSON;数据交换;异构数据库;系统集成;数据模型
DOIDOI:10.11907/rjdk.172299
中图分类号:TP391文献标识码:A文章编号:16727800(2017)010017303
0引言
随着信息化建设的不断推进,各部门均建立了自己的MIS应用系统,这些系统或独立开发、维护,或定制购买整套系统等,在服务器平台方面有Windows、Linux等不同系统的各种版本,数据库有msSQL、MySQL、Oracle、Access,开发语言有ASP、ASP.NET、JSP、PHP等。这些信息系统的建立在一定程度上提高了部门工作效率和信息化程度,但由于各个信息系统之间的相对独立性和封闭性,数据结构不一,有结构化、半结构化、非结构化等,给系统集成带来了不少问题。共享信息资源效率低下且安全性低,数据无法实现统一管理,无法进行有效的数据分析和数据挖掘,无法给决策者提供全面、统一的决策信息[1],导致整个单位的工作效率不高。因此,迫切需要对各业务系统进行整合和集成。数据交换是现代业务系统集成的关键,目前关于数据交换技术的研究涉及多个方面,如XML、JSON、YAML等。
1JSON简介
互聯网联合组织(W3C)在1998年发布了XML可扩展性标记语言,它是一种跨平台、跨网络、跨编程语言的数据描述语言。XML广泛应用于传统的数据交换领域,实现异构数据库间的数据同步。但XML由于具有文档庞大、格式复杂、数据冗余、解析需消耗太多系统资源等固有缺陷,使其执行效率低下[2]。
Clark Evans在2001年5月首次发表了YAML标记语言。YAML支持对宿主语言的直接转化,适合在脚本语言中使用,但由于存在兼容性问题,其支持的开发语言较少。
JSON(JavaScript Object Notation)属于轻量级的数据交换格式,具有很好的易读性和快速解析的特性。JSON文件就是普通的ASCII文本文件,使用常用的文字编辑器即可编辑。JSON可以直接用来编写Web页面的某些部分,在浏览器中,JSON的解析速度比XML更快。与机器代码不同,JSON不需要编译和执行,在大量复杂数据的存储方面,JSON有希望成为传统关系数据库系统的替代方法[3]。
2数据交换模型
整个数据交换模型包括:一个数据中心、若干部门子系统,子系统分别与数据中心相连,形成一个星形拓扑结构。各子系统使用序列化的JSON对象通过数据中心与其它子系统通信。为提高数据检索效率,数据中心使用具有层次性的树形JSON数据对象存储各子系统的数据库、数据表及结构信息。用户发起查询时,模型首先进行查询处理,在数据中心查询JSONtree,判断需要检索的子系统数据库及子系统数据表,将查询转换为各个子系统的子查询,并生成逻辑查询计划,最后将查询结果转换为JSON对象并显示[4]。
节点的实体定义如下:
Class shujuku{
String id;
String department;
String DateName;
String Connstr;
String Tables;
……
}
JSON对象模型定义如下:
{
“id”:”1”;
“department”:”教务系统”;
“DateName”:”jwc”;
“Connstr”:”Provider-SQLOLEDB.1;...”;
“Tables”:”Student...”;
……
}
2.1数据抽象并转换为JSON对象
最常用的数据存储方式为关系数据库,其遵守一定的规则范式,将来自关系数据库DBMS的数据抽象并转换为JSON对象。
JSON对象具有标准格式,其由3个主要元素组成:标题、类型和属性。属性与关系数据库中的属性相似,可以是一个或多个。JSON协议中总共定义了6种数据类型[5]:string、number、boolean、空字符、array、Object。使用{}包含的一系列无序的key/value键值对表示:{ "TableName":"Students" }。
在创建JSON对象模式之后,查询关系数据库的数据,并转换为JSON对象。将数据加载和转换为JSON对象的算法如下:
输入:用户需要查询的数据;
输出:该查询所对应的JSON对象;
Step1初始化:i=0,M=记录数;
Step2IF(i Step3{读取记录对象; Step4读取该记录对象的属性; Step5将该key/value键值对转换为JSON对象; Step6i=i++,跳转到Step2}; Step7ELSE{跳转到Step8}; Step8显示该JSON对象。 2.2JSON查询方法 与关系数据、XML标记语言相比,JSON对象解析时不需要考虑子节点和父节点问题,降低了数据冗余,JSON有更高的查询检索效率和更灵活的查询方式[6]。
(1) N1QL:用于文件数据库的下一代查询语言,将SQL扩展为可查询的半结构化数据,其支持全部的JSON对象数据类型。JSON是不符合第一范式的数据模型,而N1QL则对这一数据模型进行操作。
(2) JSONiq:构建在XQuery之上的新型查询语言,可以对各种类型的JSON对象进行查询,实现查询分解和优化。
(3) 针对不同的使用环境,JSON对象有多样的数据查询方式[7],例如JSONSQL、Jfunk、JSONPath、JSON:Select()等。从JSON对象读取数据的算法如下:
输入:JSON对象;
输出:Data set (D)数据集;
Step1初始化:i=0,M=记录数;
Step2读取JSON对象;
Step3读取该记录对象的属性;
Step4IF(i {D=D.value[i]; i++}; Step5跳转到Step4; Step6ELSE {跳转到Step7}; Step7显示该数据集。 3结语 与关系数据库、XML标记语言相比,基于文件的JSON对象具有更强的可扩展性,是便携式和独立的平台,其它系统可以轻松地从JSON对象查询数据[8]。几乎所有关系数据库系统最新版本都实现了对JSON对象的支持。Oracle依据ANSI SQL/JSON标准实现了JSON对象的大部分功能,提供了JSON_VALUE()和JSON_QUERY()函数以及RETURNING子句;Microsoft数据库系统在其SQL Server 2016版本中实现了对JSON对象的支持,提供了ISJSON)、JSON_VALUE()、OPENJSON()函数,并实现了对查询语句的支持[9]。通过使用JSON对象,业务部门子系统可以轻松地实现数据系统集成。 在关系数据库方法中,数据建模受到数据库管理系统的权限数量限制,当数据量较大时,系统检索变得缓慢且易产生死锁。在JSON中可以随时添加具有复杂结构的数据,当内容更改时,不需要重新设计模式,对于提取大型或巨型记录而言,JSON对象显得更为实用和高效[10]。在今后的工作中,将使用JSON对象替代关系数据库进行存储数据的研究。 参考文献参考文献: [1]刘嘉琦,孙嘉成.使用JSON完成异构系统间通讯的应用研究[J].黑龙江科技信息,2016(19):127. [2]谷方舟,沈波.JSON数据交换格式在异构系统集成中的应用研究[J].铁路计算机应用,2012,21(2):14. [3]MOHD KAMIR YUSOF, MUSTAFA MAN. Efficiency of JSON approach for data extraction and query retrieval[J]. Indonesian Journal of Electrical Engineering and Computer Science,2016,4(1):203213. [4]張沪寅,屈乾松,胡瑞芸.基于JSON的数据交换模型[J].计算机工程与设计,2016, 36(12):33803383. [5]朱建红,陆保国.基于对象序列化技术的数据分发系统[J].网络安全技术与应用,2014(1):4951. [6]倪睿熙.一种基于JSON的异构数据查询方法[J].无线电通信技术,2013,39(1):7376. [7]仇小花,秦栓栓,邱果.基于Web开发中的XML与JSON数据传输格式研究[J].信息技术与信息化,2017(4):123125. [8]李金来,吴涛.基于JSON数据交换的移动终端与服务器端异构数据库的数据交互[J].现代计算机,2016(6):5557. [9]DUSAN PETKOVIC. JSON integration in relational database systems[J]. International Journal of Computer Applications,2017,168(5):1419. [10]高静,段会川.JSON数据传输效率研究[J].计算机工程与设计,2011,32(7):22672270. 责任编辑(责任编辑:黄健)