查询任意半结构化数据的通用的sql增强以及高效地支持这样的增强的技术的制作方法

文档序号:9756913阅读:479来源:国知局
查询任意半结构化数据的通用的sql增强以及高效地支持这样的增强的技术的制作方法
【技术领域】
[0001] 本公开一般涉及用于支持半结构化数据在关系数据库环境中的存储和操作的增 强。
【背景技术】
[0002] 关系数据库管理系统(RDBMS)已经非常成功地提供了对结构化数据的数据管理。 然而,虽然RDBMS已经成为用于存储和操作结构化数据的标准,但是用于在多种多样的应用 之间描述并存储数据的半结构化数据格式正变得越来越流行。半结构化数据是这样的数 据:其中,该数据中所包含的语义元素的值可以由组织并可能描述语义元素的标签或其它 标记来标记或描绘,但是其可能不符合更正式的数据模型,例如典型地与关系数据库相关 联的关系数据模型。广泛使用的半结构化数据格式的例子包括可扩展标记语言(XML)和 Java脚本对象注释(JS0N)。
[0003] 因为半结构化数据可以不符合任何特定的正式结构,所以在RDBMS中存储半结构 化数据呈现了诸多挑战。第一,关系数据库依赖于关系数据模型,其期望在能够存储并操作 数据之前数据具有定义的并且静态的模式。第二,在RDBMS中管理数据通常是使用结构化查 询语言(SQL)来实现的;然而,SQL并没有被设计得具有用于查询半结构化数据的原生功能。 相反,半结构化数据格式通常可能与单独的特定于数据格式的查询语言(例如用于XML格式 化的数据的XQuery和用于JS0N格式化的数据的JSONPath)相关联。
[0004] 为了解决这些问题和其它问题,不同的标准已经演进或者当前正演进以在RDBMS 中提供对特定的半结构化数据格式的支持。例如,诸如用于SML数据的SQL/XML和用于JS0N 数据的SQL/JS0N之类的标准已经被开发或当前正处于开发之中,以提供对基于这些特定的 半结构化数据格式存储在RDBMS中的数据进行查询的能力。诸如SQL/XML之类的标准通常提 供一组基于SQL的操作符,其使得用户能够管理存储在RDBMS中的某些半结构化数据格式。
[0005] 诸如SQL/XML之类的特定于格式的标准已经成功地使得用户能够管理存储在 RDBMS中的特定的半结构化数据格式。然而,特定于格式的标准仅仅可应用于特定的半结构 化数据格式,并且一般不能延伸到对未来可能受欢迎的其它半结构化数据格式进行管理。 在一个方法中,可以开发新的特定于半结构化数据格式的数据类型和操作符来使用户能够 管理每一个新引进的半结构化数据格式。然而,从标准采用和RDBMS实现这两个角度来看, 在每次引入新的半结构化数据格式时就添加新的特定于数据格式的数据类型和操作符集 合是高代价的。此外,许多RDBMS客户端(例如JDBC、0DP和数据库导入/导出功能)可能需要 修改,以便在每个新的特定于数据格式的数据类型和操作符集合被添加的情况下提供客户 端可操作性。
[0006] 本节中所描述的方法是可能实行的方法,但是未必是之前已经设想或实行的方 法。因此,除非另外指出,否则不应当仅仅凭借本节中描述的方法包括在本节中而假设它们 中的任何一个适合作为现有技术。
【附图说明】
[0007] 在附图中:
[0008] 图1是示出了用于处理包括通用的半结构化数据操作符的查询表达式的步骤的流 程图;
[0009] 图2是示出了用于使用特定于半结构化数据格式的实现模块来对包含在数据库查 询中的半结构化数据表达式进行编译的步骤的流程图;
[0010] 图3是示出了可以实现本发明的实施例的计算机系统的方框图。
【具体实施方式】
[0011] 在以下描述中,为了解释的目的,给出了大量的具体细节以便提供对各种发明的 实施例的透彻理解。然而,对于本领域技术人员将清楚的是可以在不具有这些具体细节的 情况下实施本发明。
[0012] 1.0总体概述
[0013] 2.0示例性实现
[0014] 2.1用于查询半结构化数据的操作符
[0015] 2.1.1值操作符
[0016] 2.1.2存在操作符
[0017] 2.1.3查询操作符
[0018] 2.1.4验证操作符
[0019] 2.1.5 表函数
[0020] 2.2用于根据关系数据生成半结构化数据的操作符
[0021] 2.2.1对象操作符
[0022] 2.2.2聚合操作符
[0023] 2.3用于更新半结构化数据的操作符
[0024] 2.3.1更新操作符
[0025] 2.4用于在数据库服务器中高效地支持通用的半结构化操作
[0026] 符的技术
[0027] 2.4.1操作符实现
[0028] 2.4.2操作符模式
[0029] 2.4.3其它增强
[0030] 3.0硬件概述 [0031] 1.0总体概述
[0032]本文描述的方法为数据库服务器提供了一种用于支持对越来越多的半结构化数 据格式中的任何一个进行存储和检索的高效方式。在一个实施例中,提供了一组通用的半 结构化数据操作符,其使得用户能够对基于多个半结构化数据格式中的任何一个存储的 数据进行查询、更新和验证。在该上下文中,"通用的"半结构化数据操作符是指被配置为对 任意数量的不同半结构化数据格式进行操作的数据操作符。例如,根据一个实施例,可以使 用相同的一组通用的半结构化数据操作符来对根据XMUJS0N和任意数量的其它半结构化 数据格式存储的数据进行操作。
[0033]在实施例中,通用的半结构化数据操作符的使用允许用户使用标准的数据类型 (例如varchar、varbinary、CL0B或BLOB数据类型)来在数据库表中存储半结构化数据。在使 用标准的数据类型将半结构化数据存储到数据库表中之后,通用的半结构化数据操作符使 得用户能够指定半结构化查询语言表达式来对底层的半结构化数据执行期望的操作。 [0034] 本文描述的方法对诸如用于XML数据的SQL/XML标准和用于JS0N数据的SQL/JS0N 实现之类的特定于半结构化数据格式的方案进行了通用化和简化。例如,通过使用被配置 为对任意数量的不同半结构化数据格式进行操作的单组通用数据操作符,可以避免在每次 想要对新的半结构化数据格式进行支持时添加新的特定于格式的数据类型和特定于格式 的数据操作符。此外,可以使用与通用的SQL引擎处理兼容的方法来高效地执行通用的半结 构化操作符。例如,一旦数据库服务器使用如本文中描述的技术之类的技术来管理半结构 化数据,半结构化数据操作就可以利用传统的数据库服务器所提供的益处,例如事务、安 全、复制、分割、并行执行和操作完整性。
[0035] 2.0实现例子
[0036] 在一个实施例中,提供了使得用户能够对基于任意数量的不同半结构化数据格式 存储在数据库中的数据进行查询、更新和验证的一组通用的半结构化数据操作符。此外,呈 现了解释数据库服务器可以如何高效地设计并实现这些操作符的技术。
[0037] 图1是根据实施例的用于处理包括通用的半结构化数据操作符的查询表达式的 步骤的流程图。其它实施例并不包括图1中所示的所有步骤。在步骤110中,数据库服务器接 收包括通用的半结构化数据操作符的查询。查询表达式可以是对于存储在一个或多个数据 库表中的半结构化数据的集合的查询。例如,半结构化数据操作符可以是下文在单独的节 中更详细描述的通用的半结构化数据操作符中的一个。
[0038] 在步骤120中,数据库服务器确定查询表达式包括半结构化数据操作符。确定查询 表达式包括半结构化数据操作符可以包括:识别半结构化数据操作符的一个或多个参数, 所述一个或多个参数包括标识特定的半结构化数据格式的参数。例如,半结构化数据操作 符可以包括指示查询表达式针对被存储成XML数据、JS0N数据的半结构化数据或基于任何 其它半结构化数据格式存储的半结构化数据的参数。
[0039] 在步骤130中,数据库服务器对半结构化数据执行半结构化数据操作符所指定的 操作。例如,所述操作可以是用于检索某些数据的查询操作、被配置为更新存储在一个或多 个表中的半结构化数据的一个或多个分量的更新操作、或者用于验证指定的数据是否符合 特定的半结构化数据格式的操作。数据库服务器可以使用针对特定的半结构化数据格式 和/或针对特定的半结构化数据查询语言开发的库来执行所述操作。例如,库可以是向数据 库服务器进行注册的自含式模块,如本文进一步描述的。
[0040] 2.1用于查询半结构化数据的操作符
[0041] 在一个实施例中,一组通用的半结构化数据操作符包括被配置为使得用户能够查 询存储在一个或多个数据库表中的半结构化数据的一个或多个操作符。例如,用于查询半 结构化数据的操作符可以使得用户能够从半结构化数据获得值,确定在半结构化数据中是 否存在一个或多个条件,从存储的数据提取某些数据元素以及下文描述的其它操作。
[0042] 2.1.1值操作符
[0043] 在一个实施例中,一组通用的半结构化数据操作符可以包括"值"操作符。值操作 符一般可以被配置为将指定的半结构化数据查询语言表达式应用于半结构化输入数据。将 半结构化查询语言表达式应用于输入数据的结果可以被转换(ca
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1