Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Azure Cosmos DB 是一个完全托管的平台即服务(PaaS)。 若要开始使用 Azure Cosmos DB,请在订阅Azure资源组中创建 Azure Cosmos DB 帐户。 然后,在帐户中创建数据库和容器。
Azure Cosmos DB 帐户包含唯一的域名系统(DNS)名称。 可以使用许多工具管理 DNS 名称,包括:
- Azure portal
- Azure Resource Manager模板
- Bicep 模板
- Azure PowerShell
- Azure CLI
- Azure管理软件开发工具包(SDK)
- Azure REST API
若要跨多个Azure区域复制数据和吞吐量,可以随时向帐户添加和删除Azure区域。 可将帐户配置为使用单区域或多个写入区域。 有关详细信息,请参阅
Azure Cosmos DB 帐户中的元素
目前,可以在Azure订阅下创建最多 250 个 Azure Cosmos DB 帐户。 可以通过发出支持请求来提高此上限。
可以使用单个 Azure Cosmos DB 帐户来管理无限量的数据和预配吞吐量。 若要管理数据和预配吞吐量,可以在帐户中创建一个或多个数据库,然后创建一个或多个容器用于存储数据。
下图显示了 Azure Cosmos DB 帐户中的元素层次结构。
下图显示了 Azure Cosmos DB 帐户中的实体层次结构。
Azure Cosmos DB 数据库
在 Azure Cosmos DB 中,数据库类似于命名空间。 数据库只是一组容器。 下表显示如何将数据库映射到各种特定于 API 的实体:
| Azure Cosmos DB 实体 | 用于 NoSQL 的 API | 适用于 Apache Cassandra 的 API | 适用于 MongoDB 的 API | 适用于 Apache Gremlin 的 API | 适用于表的 API |
|---|---|---|---|---|---|
| Azure Cosmos DB 数据库 | 数据库 | 密钥空间 | 数据库 | 数据库 | 不适用 |
注意事项
通过表帐户 API,Azure Cosmos DB 中的表在帐户级别创建,以保持与 Azure 表存储的兼容性。
Azure Cosmos DB 容器
Azure Cosmos DB 容器存储数据。 与大多数通过增大虚拟机规模实现纵向扩展的关系数据库不同,Azure Cosmos DB 是通过横向扩展来实现的。
数据存储在一个或多个称为分区的服务器上。 若要增加分区,可以增加分区数量以提高吞吐量,或者随着存储增加自动增加。 此关系为容器提供无限的吞吐量和存储。
创建容器时,需要提供分区键。 分区键是从项中选择的属性,可帮助Azure Cosmos DB 在分区之间高效地分发数据。 Azure Cosmos DB 使用此属性的值将数据路由到要写入、更新或删除的相应分区。 还可以在查询中使用WHERE子句中的分区键来高效检索数据。
Azure Cosmos DB 中数据的基础存储机制称为物理分区。 物理分区的吞吐量可达每秒 10,000 个请求单位,且最多可以存储 50 GB 的数据。 Azure Cosmos DB 使用逻辑分区抽象化此分区概念,该分区最多可存储 20 GB 的数据。
随着更多分区的添加,逻辑分区允许服务为基础物理分区上的数据提供更大的弹性和更好的管理。 若要了解有关分区和分区键的详细信息,请参阅 Azure Cosmos DB 中的分区和水平缩放。
创建容器时,会在以下某种模式下配置吞吐量:
- 专用吞吐量:容器的吞吐量专门保留给该容器使用。 有两种类型的专用吞吐量:标准和自动伸缩。 若要了解详细信息,请参阅 Azure Cosmos DB 容器上的 配置标准(手动)吞吐量。
- 共享吞吐量:吞吐量是在数据库级别指定的,最多可与数据库中 25 个容器共享。 吞吐量共享不包括已配置专用吞吐量的容器。
当数据库中的所有容器具有类似的请求和storage需求,或者不需要对数据具有可预测的性能时,共享吞吐量可能是一个不错的选择。 若要了解详细信息,请参阅 Azure Cosmos DB 中数据库的配置标准(手动)吞吐量。
注意事项
不能在专用吞吐量和共享吞吐量之间切换。 在共享吞吐量数据库中创建的容器不能更新为具有专用吞吐量的容器。 若要将容器从具有共享吞吐量改为具有专用吞吐量,必须创建新的容器,并将数据复制到该容器。 Azure Cosmos DB 中的 container copy 功能可以简化此过程。
容器与架构无关。 容器中的项可以具有任意架构或不同的实体,只要它们共享相同的分区键。 例如,容器可以存储客户的个人资料。 它还可以为该客户发出的每个销售订单存储独立的项目。 可以将所有客户的相似信息放在同一个容器。
默认情况下,添加到容器中的所有数据都会自动编制索引,而无需显式索引。 可以通过配置容器的索引策略来自定义容器的索引。
为避免影响性能,可以针对容器中的选定项或整个容器设置生存时间 (TTL),以在未使用吞吐量的情况下,在后台自动删除这些项。 但是,过期的数据即使未删除,也不会出现在任何读取操作中。 若要了解详细信息,请参阅 在 Azure Cosmos DB 中配置存活时间。
Azure Cosmos DB 提供名为 更改源 的变更数据捕获的内置功能。 您可以使用此功能订阅对容器内数据的所有更改。
可为容器注册存储过程、触发器、用户定义的函数 (UDF) 和合并过程。
容器中的每个文档都必须具有一个属性,此id属性在该容器的逻辑键属性值内是唯一的。 可以使用这种属性组合在容器中提供唯一约束,而无需显式定义一个约束。
您还可以在使用一个或多个属性的 Azure Cosmos DB 容器上指定唯一键约束。 唯一键约束可确保每个逻辑分区键一个或多个值的唯一性。 如果使用唯一键策略创建容器,则不能创建任何值与唯一键约束指定的值重复的新项或更新项。
容器专用于 API 特定的实体,如下表所示:
| Azure Cosmos DB 实体 | 用于 NoSQL 的 API | 用于 Cassandra 的 API | 适用于 MongoDB 的 API | 用于 Gremlin 的 API | 适用于表的 API |
|---|---|---|---|---|---|
| Azure Cosmos DB 容器 | 容器 | 表 | 集合 | Graph | 表 |
注意事项
请确保不要创建两个具有相同名称但大小写不同的容器。 Azure平台的某些部分不区分大小写,这种命名方式可能会导致诊断数据的混淆或容器上操作的冲突。
Azure Cosmos DB 容器的属性
Azure Cosmos DB 容器具有一组系统定义的属性。 根据所用的 API,某些属性可能不会直接公开。 下表介绍了系统定义属性:
| 系统定义的属性 | 可以由系统生成或由用户配置 | 目的 | 用于 NoSQL 的 API | 用于 Cassandra 的 API | 适用于 MongoDB 的 API | 用于 Gremlin 的 API | 适用于表的 API |
|---|---|---|---|---|---|---|---|
_rid |
系统生成 | 容器的唯一标识符。 | 是 | 否 | 否 | 否 | 否 |
_etag |
系统生成 | 用于乐观并发控制的实体标记。 | 是 | 否 | 否 | 否 | 否 |
_ts |
系统生成 | 容器上次更新的时间戳。 | 是 | 否 | 否 | 否 | 否 |
_self |
系统生成 | 容器的可寻址 URI。 | 是 | 否 | 否 | 否 | 否 |
id |
用户可配置 | 容器名。 | 是 | 是 | 是 | 是 | 是 |
indexingPolicy |
用户可配置 | 用于生成容器索引的策略。 | 是 | 否 | 是 | 是 | 是 |
TimeToLive |
用户可配置 | 在设置的时间段后自动从容器中删除项。 有关详细信息,请参阅生存时间。 | 是 | 否 | 否 | 否 | 是 |
changeFeedPolicy |
用户可配置 | 用于读取对容器中的项所做更改的策略。 有关详细信息,请参阅更改提要。 | 是 | 否 | 否 | 否 | 是 |
uniqueKeyPolicy |
用户可配置 | 用于确保逻辑分区中一个或多个值唯一性的策略。 有关详细信息,请参阅唯一键约束。 | 是 | 否 | 否 | 否 | 是 |
AnalyticalTimeToLive |
用户可配置 | 在分析存储的上下文中,在设置时间段后自动从容器中删除项。 此功能已弃用。 | 是 | 否 | 是 | 否 | 否 |
Azure Cosmos DB 数据项
根据所使用的 API,各个数据实体可以通过多种方式表示:
| Azure Cosmos DB 实体 | 用于 NoSQL 的 API | 用于 Cassandra 的 API | 适用于 MongoDB 的 API | 用于 Gremlin 的 API | 适用于表的 API |
|---|---|---|---|---|---|
| Azure Cosmos DB 数据项 | 项目 | 行 | 文档 | 节点或边缘 | 项目 |
项目的属性
每个Azure Cosmos DB 项都有以下系统定义属性。 根据所用的 API,其中的某些属性可能不会直接公开。
| 系统定义的属性 | 系统生成或用户定义 | 目的 | 用于 NoSQL 的 API | 用于 Cassandra 的 API | 适用于 MongoDB 的 API | 用于 Gremlin 的 API | 适用于表的 API |
|---|---|---|---|---|---|---|---|
_rid |
系统生成 | 项目的唯一标识符 | 是 | 否 | 否 | 否 | 否 |
_etag |
系统生成 | 用于乐观并发控制的实体标记 | 是 | 否 | 否 | 否 | 否 |
_ts |
系统生成 | 项目的最后更新时间戳 | 是 | 否 | 否 | 否 | 否 |
_self |
系统生成 | 项的可寻址 URI | 是 | 否 | 否 | 否 | 否 |
id |
任一个 | 逻辑分区中用户定义的唯一名称 | 是 | 是 | 是 | 是 | 是 |
| 任意用户定义的属性 | 用户定义的 | API 原生表示形式中的用户定义属性,包括 JSON、二进制 JSON(BSON)和 Cassandra 查询语言(CQL) | 是 | 是 | 是 | 是 | 是 |
注意事项
id 属性的唯一性在每个逻辑分区中强制实施。 多个文档可以具有相同的id属性值,但具有不同的分区键值。
项目操作
Azure Cosmos DB 项目支持以下操作。 可以使用任何 Azure Cosmos DB API 来执行操作。
| 操作 | 用于 NoSQL 的 API | 用于 Cassandra 的 API | 适用于 MongoDB 的 API | 用于 Gremlin 的 API | 适用于表的 API |
|---|---|---|---|---|---|
| 插入、替换、删除、插入或更新、读取 | 是 | 是 | 是 | 是 | 是 |
相关内容
- 通过 Azure portal 管理 Azure Cosmos DB 帐户
- 使用 Azure Cosmos DB 跨区域分布您的数据
- Azure Cosmos DB 中的一致性级别