Azure Cosmos DB for NoSQL 的工作原理
现在我们已经了解 Azure Cosmos DB 的基础知识,接下来让我们看看使用一个帐户需要哪些资源和信息。 此信息应有助于确定 Azure Cosmos DB for NoSQL 是否适用于数据集。 此外,它应有助于确定需要多少额外配置(如果有)。
Azure Cosmos DB for NoSQL 有哪些组件?
要开始使用 Azure Cosmos DB,首先要在 Azure 中创建各种资源,例如帐户、数据库、容器和项。
帐户
“帐户”是 SaaS 应用程序的高可用性和租户隔离的基本单位。 在帐户级别,可以在 Azure Cosmos DB for NoSQL 中为数据配置区域。 帐户还包含用于 API 请求的全局唯一 DNS 名称。 还可以为帐户级别上的请求设置默认一致性级别。 可以使用 Azure 门户、Azure 资源管理器模板、Azure CLI 或 Azure PowerShell 来管理或创建帐户。
数据库
每个帐户可以包含一个或多个数据库。 在 Azure Cosmos DB for NoSQL 中,数据库是容器管理的逻辑单元。
容器
容器是 Azure Cosmos DB for NoSQL 中可伸缩性的基本单元。 使用 Azure Cosmos DB,可以预配容器级别的吞吐量。 还可以选择在容器级别配置索引策略或默认生存时间值。 Azure Cosmos DB for NoSQL 将自动且透明地对容器中的数据进行分区。
项目
适用于 Azure Cosmos DB 的 NoSQL API 在容器中将单个 JSON 格式的文档存储为项。 Azure Cosmos DB for NoSQL 对 JSON 文件提供本机支持,并提供快速且可预测的性能,因为对 JSON 文档的写入操作具有原子性。
分区和分区键
每个 Azure Cosmos DB for NoSQL 容器都需要指定一个用于分发数据进行横向扩展的分区键路径。在后台,Azure Cosmos DB for NoSQL 使用这个路径通过分区键值对数据进行逻辑分区。 例如,请对以下 JSON 文档进行思考:
{
"id": "35b5bf7d-5f0e-4209-b7cb-8c5c70c3bb59",
"deviceDisplayName": "shared-printer",
"acquiredYear": 2019,
"department": {
"name": "information-technology",
"metadata": {
"location": "floor-5-unit-27"
}
},
"queuedDocuments": [
{
"sender": "user-293749329",
"sentTime": "2019-07-26T05:12:37",
"pages": 5,
"spoolRef": "3f4b759c-3230-4269-a88e-de7620ad91c0"
},
{
"device": {
"type": "mobile"
},
"sentTime": "2019-11-12T13:08:42",
"spoolRefs": [
"6a86682c-be5a-4a4a-bacd-96c4d1c7ece6",
"79e78fe2-93aa-4688-89db-a7278b034aa6"
]
}
]
}
如果容器指定分区键路径 /department/name
那么此文档的分区键值为 information-technology
。 在后台,Azure Cosmos DB for NoSQL 自动管理支持数据工作负载所需的物理资源。
为容器选择分区键路径对于允许应用程序进行缩放至关重要,是新工作负荷最重要的设计决策之一。 请查看选择分区键文档,获取更深入的技术解释和最佳做法。