Documentdb Sql 简明教程
DocumentDB SQL - Overview
DocumentDB 是 Microsoft 最新 NoSQL 文档数据库平台,它在 Azure 上运行。在本教程中,我们将了解使用 DocumentDB 支持的特殊版本的 SQL 查询文档的全部内容。
NoSQL Document Database
DocumentDB 是 Microsoft 最新 NoSQL 文档数据库,但是,当我们说 NoSQL 文档数据库时,NoSQL 和文档数据库具体是什么意思?
-
SQL 表示结构化查询语言,这是关系数据库的传统查询语言。SQL 通常等同于关系数据库。
-
实际上,将 NoSQL 数据库视为非关系数据库更有帮助,因此 NoSQL 实际上指非关系。
有不同类型的 NoSQL 数据库,包括键值存储,例如:
-
Azure Table Storage
-
Column-based stores, like Cassandra
-
Graph databases, like NEO4
-
文档数据库,如 MongoDB 和 Azure DocumentDB
Why SQL Syntax?
这乍听起来可能很奇怪,但在 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 的某种形式。例如,在反范式化数据的领域中,我们不打交道的是行和列,而是包含嵌套数组和对象的层次结构的无模式文档。
How does SQL Work?
DocumentDB 团队已经通过多种创新方式回答了这个问题。如下列出了其中的少数几种 −
-
首先,假设您尚未更改默认行为以自动为文档中的每个属性建立索引,您可以在查询中使用点号标记来导航路径到任何属性,无论它在文档中嵌套的有多深。
-
您还可以执行文档内联接,在这种连接中,嵌套数组元素及其父元素在文档内以非常类似于在关系世界中两张表之间执行连接的方式进行连接。
-
您的查询可以按原样从数据库返回文档,或者您可以根据您想要的多或少文档数据来投影您想要的任何自定义 JSON 形状。
-
DocumentDB 中的 SQL 支持许多常见运算符,包括 − 算术和按位运算,AND 和 OR 逻辑,相等性和范围比较,字符串连接。
-
查询语言还支持许多内置函数。