DocumentDB SQL - 概述



DocumentDB 是微软最新的 NoSQL 文档数据库平台,运行在 Azure 上。在本教程中,我们将学习有关使用 DocumentDB 支持的 SQL 特殊版本查询文档的所有内容。

NoSQL 文档数据库

DocumentDB 是微软最新的 NoSQL 文档数据库,但是,当我们说 NoSQL 文档数据库时,我们究竟指的是什么?NoSQL 和文档数据库分别是什么?

  • SQL 代表结构化查询语言,它是关系数据库的传统查询语言。SQL 通常与关系数据库等同。

  • 将 NoSQL 数据库视为非关系数据库实际上更有帮助,因此 NoSQL 实际上意味着非关系型。

NoSQL 数据库有不同类型,包括如下键值存储:

  • Azure 表存储
  • 基于列的存储,如 Cassandra
  • 图数据库,如 NEO4
  • 文档数据库,如 MongoDB 和 Azure DocumentDB

为什么使用 SQL 语法?

这起初听起来可能很奇怪,但在 DocumentDB(一个 NoSQL 数据库)中,我们使用 SQL 进行查询。如上所述,这是基于 JSON 和 JavaScript 语义的 SQL 特殊版本。

  • SQL 只是一种语言,但它也是一种非常流行的语言,功能丰富且表达力强。因此,使用某种 SQL 方言而不是想出一种全新的查询表达方式(如果要从数据库中获取文档,则需要学习这种新方式)绝对是一个好主意。

  • SQL 是为关系数据库设计的,而 DocumentDB 是一个非关系型文档数据库。DocumentDB 团队实际上已经调整了 SQL 语法,使其适用于文档数据库的非关系型世界,这就是将 SQL 植根于 JSON 和 JavaScript 的含义。

  • 该语言的阅读方式仍然与熟悉的 SQL 相同,但语义都基于无模式的 JSON 文档,而不是关系表。在 DocumentDB 中,我们将使用 JavaScript 数据类型而不是 SQL 数据类型。我们将熟悉 SELECT、FROM、WHERE 等,但使用 JavaScript 类型(仅限于数字和字符串、对象、数组、布尔值和 null)远少于 SQL 数据类型的广泛范围。

  • 同样,表达式也作为 JavaScript 表达式进行计算,而不是某种形式的 T-SQL。例如,在非规范化数据的世界中,我们不处理行和列,而是处理包含嵌套数组和对象的层次结构的无模式文档。

SQL 如何工作?

DocumentDB 团队已经通过几种创新的方式回答了这个问题。其中一些列出如下:

  • 首先,假设您没有更改默认行为以自动索引文档中的每个属性,您可以在查询中使用点表示法来导航到任何属性的路径,无论它在文档中嵌套多深。

  • 您还可以执行文档内连接,其中嵌套数组元素与其父元素在文档中连接,方式与在关系世界中两个表之间执行连接的方式非常相似。

  • 您的查询可以按原样返回数据库中的文档,或者您可以根据所需文档数据的多少,投影任何所需的自定义 JSON 形状。

  • DocumentDB 中的 SQL 支持许多常见运算符,包括:

    • 算术和位运算

    • AND 和 OR 逻辑

    • 等式和范围比较

    • 字符串连接

  • 查询语言还支持大量内置函数。

广告