编辑: 胡欣
E-mail: huxin@cesi.cn
Standardization Research
SQL标准对JSON的支持性研究Research on the Support of SQL Standard for JSON中国电子技术标准化研究院 卫凤林 李 莹 张展新摘 要 介绍了SQL标准现状和JSON概念。重点对SQL标准支持JSON所采用的SQL/JSON数据模型、SQL/JSON功能和SQL/JSON路径语言等内容进行分析,并阐述了SQL标准支持JSON的重要意义。关键词 SQL标准 国际标准 JSONAbstract: Introduced the current situation of SQL standard and the concept of JSON. This paper focuses on the analysis of the data model of SQL/JSON, the function of SQL/JSON and the path language of SQL/JSON adopted by the SQL standard.And expounds the importance of the support of JSON by the SQL standard. Keywords: SQL standard; international standard; JavaScript Object Notation1 SQL标准 SQL标准即结构化查询语言标准,由国际标准化组织ISO/IEC JTC 1/SC 32/WG 3 数据库语言工作组负责制定。目前ISO发布和在研的SQL标准共有23项,由ISO/IEC 9075《信息技术 数据库语言SQL》、ISO/IEC 13249《信息技术 数据库语言SQL多媒体和应用包》和ISO/IEC TR 19705《信息技术 数据库语言SQL技术报告》三个系列标准构成。ISO/IEC 9075的未来版本,将增加支持大数据和高级分析法方面的内容。WG 3工作组也在考虑开展近似查询、BASE事务、SQL对流数据的支持和图数据等方面的工作。SQL标准最新版如表1所示。表1 SQL系列标准序号12345678910111213信息技术 数据库语言SQL系列标准名称标准编号ISO/IEC 9075-1:2016ISO/IEC 9075-2:2016ISO/IEC 9075-3:2016ISO/IEC 9075-4:2016ISO/IEC 9075-9:2016ISO/IEC 9075-10:2016ISO/IEC 9075-11:2016ISO/IEC 9075-13:2016ISO/IEC 9075-14:2016ISO/IEC FDIS 9075-15.2信息技术 数据ISO/IEC 13249-1:2016库语言SQL多媒ISO/IEC 13249-2:2003体和应用包ISO/IEC 13249-3:2016标准名称信息技术 数据库语言SQL 第1部分:框架信息技术 数据库语言SQL 第2部分:基础信息技术 数据库语言SQL 第3部分:调用层接口信息技术 数据库语言SQL 第4部分:持久存储模块信息技术 数据库语言SQL 第9部分:外部数据管理信息技术 数据库语言SQL 第10部分:对象语言绑定信息技术 数据库语言SQL 第11部分:信息和定义模式信息技术 数据库语言SQL 第13部分:使用Java程序设计语言的SQL例程和类型信息技术 数据库语言SQL 第14部分:与XML有关的规范信息技术 数据库语言SQL 第15部分:多维数组信息技术 数据库语言 SQL 多媒体和应用包第1部分:框架信息技术 数据库语言 SQL 多媒体和应用包第2部分:全文信息技术 数据库语言 SQL 多媒体和应用包第3部分:空间项目来源:国家重点研发计划课题“基于制造业大数据平台标准研究”,课题编号:2018YFF0213104。68
信息技术与标准化
http://www.its.cesi.cn
Standardization Research
标准化研究
续表1序号141516171819信息技术 数据20212223库语言SQL技术ISO/IEC TR 19075-4:2015报告ISO/IEC TR 19075-5:2016ISO/IEC TR 19075-6:2017ISO/IEC TR 19075-7:2017系列标准名称信息技术 数据库语言SQL多媒体和应用包标准编号ISO/IEC 13249-5:2003ISO/IEC 13249-6:2006ISO/IEC TS 13249-7:2013ISO/IEC TR 19075-1:2011ISO/IEC TR 19075-2:2015ISO/IEC TR 19075-3:2015态图像信息技术 数据库语言 SQL多媒体和应用包 第6部分:数据挖掘信息技术 数据库语言 SQL多媒体和应用包 第7部分:历史数据库语言 技术报告 第1部分:SQL中支持的XQuery规则表达式信息技术 数据库语言SQL技术报告 第2部分:SQL对实时信息的支持信息技术 数据库语言SQL技术报告 第3部分:使用JavaTM程序设计语言的嵌入式SQL信息技术 数据库语言SQL技术报告 第4部分:使用JavaTM程序设计语言的SQL例程和类型信息技术 数据库语言SQL技术报告 第5部分:SQL中的行模式识别信息技术 数据库语言SQL技术报告 第6部分:SQL对JSON的支持信息技术 数据库语言SQL技术报告 第7部分:SQL中的多态表函数标准名称信息技术 数据库语言 SQL 多媒体和应用包 第5部分:静2 JSONJSON是“JavaScript Object Notation”的缩写,既是一种标记,又是表示数据的一种隐含的模型。JSON不是一种面向对象的数据模型,它不定义类和方法,类型继承或数据抽象的集合。相反,JSON对象是一种简单的数据结构,包含数组。RFC7159中说JSON是一种序列化结构数据,它最初的用途是作为一种数据传输语法。2013年年底发布的ECMA标准规定了JSON的语法。ECMA和RFC7159在语法定义方面的差异非常小。JSON数据模型中的主要内容是对象和数组。JSON对象是用大括号{ }括起来的零个或多个名称-值对。名称-值对之间用逗号(,)隔开,名称和值之间用冒号(:)分开。名称通常是字符串,用(双)引号标记。值可以是字符串、数值、布尔值(由JSON常量true和false表示)和JSON的空值(NULL)。下面是一个JSON对象的例子:{ “Name” : “zhang san”,“Age” : 19,“Weight” : 120,“Phone” : 64102858 }JSON数组是用方括号[ ]括起来的零个或多个值的有序序列。下面是一个JSON数组的例子:[“zhang san”, 100, false, ”chaoyang road”]JSON数组和对象是完全嵌套的。也就是说,任何JSON值可以由“原子”值(字符串、数值、文字),JSON对象或JSON数组构成。JSON有时也用来表示关联数组,元素为名称-值对。数组中名称作为“索引”来定位对象中的元素位置,值用来表示元素的内容。2019年第10期
http://www.its.cesi.cn
69
标准化研究
Standardization Research
JSON本质是无模式,任何JSON对象能够通过增加新的名称-值对来修改。同样,任何JSON数组可以通过改变数组中的值的数量进行修改。以及非空的数字、字符串和时间类型上是完全重叠的。JSON、SQL/JSON、SQL之间的关系如图1所示。JSON、SQL/JSON和SQL之间的对比如表1所示。3 SQL/JSON数据模型SQL标准中用SQL/JSON表示支持JSON的数据模型,以区分数据库管理系统(DBMS)外使用的JSON。SQL/JSON由使用SQL引擎的数据模型构建,被SQL/JSON路径语言使用,可以概括为“项目序列”,类似于XQuery。用户进行查询时,需要配置参数进行传统的SQL查询,尤其是谓词。因此,需要将传统的SQL和SQL/JSON进行转换。所有的JSON均可解析成SQL/JSON,并不是所有的SQL/JSON可以序列化为JSON;SQL/JSON和SQL标准在布尔类型解析JSON:指对JSON进行解析是指将一些存储格式导入到SQL/JSON数据模型的过程。存储格式可以是以Unicode字符串存储的JSON文本,也可以是一些二进制格式如AVRO或BSON。SQL/JSON序列化:指从SQL/JSON数据模型导出一个值到一些存储格式。序列化的结果是一个依赖于实现的Unicode字符串。“SQL/JSON”和“SQL”关系图图1 “JSON”、“SQL/JSON”和“SQL”对比表表1 “JSON”、JSONJSON 数组JSON 对象JSON 成员JSON nullJSON trueJSON falseJSON numberJSON string---SQL/JSONSQL/JSON 数组SQL/JSON 对象SQL/JSON 成员SQL/JSON nullTrueFalsenumberCharacter stringdatetimeSQL/JSON 项SQL/JSON 序列SQL标准(ISO/IEC 9075)---nullTrueFalsenon-null numberNon-null character stringnon-null datetime--4 SQL/JSON功能在SQL标准9075-14中,对XML数据的操作通常采用内置函数的方式。SQL标准9075-2采用相同的方式处理JSON数据,并将处理JSON的功能命名为“SQL/JSON功能”。SQL/JSON功能由构造函数和查询函数实现。产生JSON值。构造函数包含4个函数:JSON_OBJECT、JSON_OBJECTAGG、 JSON_ARRAY和JSON_ARRAYAGG,函数返回值为JSON值(对象或数组)。(1) JSON_OBJECT:SQL应用程序在处理JSON数据时,无论是应用程序本身使用JSON数据,还是将JSON数据存储在SQL数据库中,还是将数据返回到应用程序本身,都需要构造新的JSON对象。JSON_OBJECT函4.1 构造函数构造函数是对SQL类型值通过使用SQL聚类70
信息技术与标准化
http://www.its.cesi.cn
Standardization Research
标准化研究
数能够利用确定的名称/值对构建JSON对象,这些名称/值对必须是SQL标识符。JSON_OBJECT有些类似9075-14中定义的XMLELEMENT,它通常用于