DocumentDB SQL - 概述


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

NoSQL 文档数据库

DocumentDB是微软最新的NoSQL文档数据库,但是,当我们说NoSQL文档数据库时,NoSQL和文档数据库到底是什么意思呢?

  • SQL是Structured Query Language的缩写,是关系数据库的传统查询语言。SQL 通常被等同于关系数据库。

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

有不同类型的 NoSQL 数据库,其中包括键值存储,例如 -

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

为什么使用 SQL 语法?

乍一看这可能很奇怪,但在 NoSQL 数据库 DocumentDB 中,我们使用 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 团队通过多种创新方式回答了这个问题。其中很少列出如下 -

  • 首先,假设您没有更改自动索引文档中每个属性的默认Behave,则可以在查询中使用点分符号来导航到任何属性的路径,无论它在文档中嵌套的深度如何。

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

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

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

    • 算术和位运算

    • AND 和 OR 逻辑

    • 相等和范围比较

    • 字符串连接

  • 查询语言还支持许多内置函数。