Azure Cosmos DB:SQL API 简介

Tip

Azure Cosmos DB DocumentDB API 或 SQL (DocumentDB) API 现在称为 Azure Cosmos DB SQL API。 无需进行任何更改即可继续运行使用 DocumentDB API 构建的应用。 功能保持相同。

Azure Cosmos DB 是 21Vianet 针对任务关键型应用程序提供的全局分布式多模型数据库服务。 Azure Cosmos DB 在多个数据中心范围内提供统包全局分发吞吐量和存储的弹性扩展、99% 的情况下低至个位数的毫秒级延迟、五个妥善定义的一致性级别以及得到保证的高可用性,所有这些均由行业领先的 SLA 提供支持。 Azure Cosmos DB 自动为数据编制索引,无需客户管理架构和索引。 它采用多种模型,支持文档、键/值和列式数据模型。

Azure SQL API

使用 SQL API,Azure Cosmos DB 提供了丰富且熟悉的 SQL 查询功能,在传输无架构 JSON 数据过程中可持续保持较低的延迟。 本文概述了 Azure Cosmos DB 的 SQL API,以及如何使用它来存储大量的 JSON 数据,以毫秒级的延迟查询这些数据,以及轻松改进结构。

Azure Cosmos DB 提供了哪些功能和主要特性?

Azure Cosmos DB 通过 SQL API 提供了以下主要功能和优势:

  • 可弹性增减吞吐量和存储:根据应用程序需求,轻松增大或减小 JSON 数据库规模。 数据存储在固态硬盘 (SSD) 上,以实现可预测的低延迟。 Azure Cosmos DB 支持使用容器来存储称为集合的 JSON 数据,这些数据集几乎可以扩展到无限存储大小和预配吞吐量。 随着应用程序规模的增长,可以弹性无缝地扩展 Azure Cosmos DB 且其性能可以预测。

  • 多区域复制:Azure Cosmos DB 以透明方式将数据复制到与 Azure Cosmos DB 帐户关联的所有区域,使你能够开发那些对全局性数据访问有要求的应用程序,与此同时还在一致性、可用性和性能方面做出权衡,所有这些都有相应的保证。 Azure Cosmos DB 提供具有多宿主 API 的透明区域故障转移,还可以弹性缩放全局吞吐量和存储。 有关详细信息,请参阅使用 Azure Cosmos DB 全局分发数据

  • 使用熟悉的 SQL 语法进行即席查询:存储异类 JSON 文档,并通过熟悉的 SQL 语法查询这些文档。 Azure Cosmos DB 使用高并发、无锁、日志结构化索引技术为所有文档内容自动编制索引。 这样可以实现各种实时查询,而无需指定架构提示、二级索引或视图。 有关详细信息,请参阅查询 Azure Cosmos DB

  • 在数据库中执行 JavaScript:使用标准 JavaScript 将应用程序逻辑表示为存储过程、触发器和用户定义函数 (UDF)。 这样,应用程序逻辑可基于数据进行运作,而无需担心应用程序和数据库架构之间的不匹配。 SQL API 支持在数据库引擎内部直接进行 JavaScript 应用程序逻辑的完全事务执行。 对 JavaScript 的深度集成支持在一个 JavaScript 程序中将 INSERT、REPLACE、DELETE 和 SELECT 操作作为独立的事务来执行。 有关详细信息,请参阅 SQL 服务器端编程

  • 可调整的一致性级别:从五个妥善定义的一致性级别中选择,实现一致性与性能之间的最佳平衡。 对于查询和读取操作,Azure Cosmos DB 提供五种不同的一致性级别:强一致性、有限过时一致性、会话一致性、前缀一致性和最终一致性。 通过这些细化的定义完好的一致性级别,可以在一致性、可用性和延迟之间实现合理的平衡。 有关详细信息,请参阅使用一致性级别最大化可用性和性能

  • 完全托管: 无需管理数据库和计算机资源。 作为一种完全托管的 Azure 服务,用户无需管理虚拟机、部署并配置软件、管理缩放或处理复杂的数据层升级。 每个数据库都会自动备份,以防受到区域故障的影响。 可轻松添加 Azure Cosmos DB 帐户并根据需要预配容量,从而可以专注于应用程序而不是操作和管理数据库。

  • 源于设计的开放性: 通过使用现有的技能和工具快速入门。 针对 SQL API 的编程非常简单易学,无需使用新的工具或遵循 JSON 或 JavaScript 的自定义扩展。 可以通过简单的 RESTful HTTP 接口访问所有数据库功能,包括 CRUD、查询和 JavaScript 处理。 SQL API 包含现有格式、语言和标准,并同时基于这些内容提供高价值的数据库功能。

  • 自动编制索引:默认情况下,Azure Cosmos DB 将自动为数据库中的所有文档编制索引,无需任何架构或创建二级索引。 不想索引所有内容? 别担心,还可以 退出 JSON 文件中的路径

  • 更改源支持:更改源在 Azure Cosmos DB 集合中按文档修改顺序提供排序的文档列表。 可以使用此源来侦听对数据的修改,以便复制数据、触发 API 调用或对更新执行流处理。 更改源是自动启用的,且易于使用:详细了解更改源

如何使用 SQL API 管理数据?

SQL API 有助于通过定义完好的数据库资源管理 JSON 数据。 这些资源经过复制具有高可用性,并且使用其逻辑 URI 进行唯一寻址。 SQL API 为所有资源提供简单的基于 HTTP 的 RESTful 编程模型。

Azure Cosmos DB 数据库帐户是授予对 Azure Cosmos DB 的访问权限的唯一命名空间。 在创建数据库帐户之前,必须具有 Azure 订阅,以便提供访问各种 Azure 服务的权限。

Azure Cosmos DB 中的所有资源都以 JSON 文档的形式建模和存储。 将资源作为项(包含元数据的 JSON 文档)进行管理,也可以将其作为源(项的集合)进行管理。 项集包含在它们各自的源中。

下图显示了 Azure Cosmos DB 资源之间的关系:

Azure Cosmos DB 中的资源之间的层级关系

一个数据库帐户可以包含一组数据库,每个数据库都包含多个集合,每个集合又包含存储过程、触发器、UDF、文档及相关附件。 数据库也有关联的用户,每个用户都有一组权限来访问其他各种集合、存储过程、触发器、UDF、文档或附件。 尽管数据库、用户、权限和集合是系统定义的具有已知架构的资源,文档、存储过程、触发器、UDF 和附件也包含任意的用户定义的 JSON 内容。

如何使用 SQL API 开发应用?

Azure Cosmos DB 通过 REST API 公开资源,可以使用能够发出 HTTP/HTTPS 请求的任何语言来调用这些 API。 另外,我们还针对多种主流语言为 SQL API 提供了编程库。 客户端库通过处理一些细节,例如地址缓存、异常管理、自动重试等,简化了使用 API 的许多方面。 当前这些库可用于以下语言和平台:

下载 文档
.NET SDK .NET 库
Node.js SDK Node.js 库
Java SDK Java 库
JavaScript SDK JavaScript 库
不适用 服务器端 JavaScript SDK
Python SDK Python 库
不适用 适用于 MongoDB 的 API

使用 Azure Cosmos DB 模拟器可在本地通过 SQL API 开发和测试应用程序,无需创建 Azure 订阅且不会产生任何费用。 如果对应用程序在模拟器中的工作情况感到满意,则可以切换到在云中使用 Azure Cosmos DB 帐户。

除了基本的创建、读取、更新和删除操作,SQL API 还提供了丰富的 SQL 查询接口,用于检索 JSON 文档和针对 JavaScript 应用程序逻辑的事务执行的服务器端支持。 可通过所有平台库获取查询和脚本执行接口以及 REST API。

SQL 查询

Azure Cosmos DB 支持使用 SQL 语言(来源于 JavaScript 类型系统)和支持关系、层级和空间查询的表达式来查询文档。 Azure Cosmos DB 查询语言是一种用于查询 JSON 文档的简单而强大的接口。 该语言支持部分 ANSI SQL 语法,并深度集成了 JavaScript 对象、数组、对象构造和函数调用。 SQL API 提供的查询模型没有任何显式架构或来自开发人员的索引提示。

可以在 SQL API 中注册用户定义函数 (UDF),并将其作为 SQL 查询的一部分进行引用,从而将语法扩展为支持自定义的应用程序逻辑。 这些 UDF 编写为 JavaScript 程序,并在数据库中执行。

对于 .NET 开发人员,SQL API .NET SDK 还提供了 LINQ 查询提供程序。

事务和 JavaScript 执行

SQL API 允许将应用程序逻辑编写为完全使用 JavaScript 编写的命名程序。 这些程序是为集合注册的,可以对指定集合内的文档发布数据库操作。 可针对执行将 JavaScript 注册为触发器、存储过程或用户定义函数。 触发器和存储过程可以创建、读取、更新和删除文档,而用户定义函数作为查询执行逻辑的一部分执行,并且没有集合的写访问权限。

Cosmos DB 中的 JavaScript 执行是在关系型数据库系统所支持的概念的基础之上建立的,只是现代性的将 Transact-SQL 换成了 JavaScript。 所有 JavaScript 逻辑都在使用快照隔离的环境 ACID 事务内执行。 在其执行过程中,如果 JavaScript 引发异常,则整个事务会被中止。

后续步骤

已有 Azure 帐户? 然后,可以根据快速入门开始使用 Azure Cosmos DB,这些快速入门将引导创建帐户并开始使用 Cosmos DB。