📅  最后修改于: 2023-12-03 15:02:56.790000             🧑  作者: Mango
Cosmos DB 是一种用于开发高度可扩展、多模型、全局分发的 NoSQL 数据库服务。它允许您按照需要扩展应用程序,而不必考虑容量、吞吐量或地理位置。即使是增长最快的应用程序也可以轻松处理大量数据,无论是分散在不同地理位置还是集中在同一个位置。
在 NoSQL 数据库中,分区键是用于确定如何将数据分发到不同分区的属性。选择正确的分区键可以显著提高查询效率和并发性能。
选择分区键是一个关键的决策,并且通常需要在数据库最初设计时考虑,因此需要考虑以下几个因素:
在 Cosmos DB 中,您可以选择自定义分区键或使用系统分区键。系统分区键是由 Cosmos DB 自动生成的属性。例如,如果您的数据模型使用用户 ID 来查询数据,则可以将其设置为自定义分区键。如果您的数据访问模式不涉及任何特定属性,则可以使用系统分区键,例如 /_partitionKey。
以下是使用 Azure 资源管理器 Azure PowerShell 创建折扣数据库并将分区键设置为自定义属性 "userId":
$accountName = "your-cosmos-account"
$rgName = "your-rg"
$location = "eastus"
$cosmosDbProperties = @{
"accountName" = $accountName;
"resourceGroupName" = $rgName;
"location" = $location;
"kind" = "GlobalDocumentDB";
}
$cosmosDb = New-AzCosmosDBAccount @cosmosDbProperties
$databaseProperties = @{
"resourceGroupName" = $rgName;
"accountName" = $accountName;
"databaseName" = "your-database";
}
$database = New-AzCosmosDBSqlDatabase @databaseProperties
$collectionProperties = @{
"resourceGroupName" = $rgName;
"accountName" = $accountName;
"databaseName" = "your-database";
"collectionName" = "your-collection";
"partitionKey" = @{
"paths" = @("/userId");
"kind" = "Hash";
"dataType" = "String";
}
}
$collection = New-AzDocumentDbCollection @collectionProperties
在设计 Cosmos DB 数据库模型时,选择正确的分区键至关重要。正确选择分区键可以提高查询效率和并发性能。Cosmos DB 提供了灵活性,让开发人员自定义分区键或使用系统生成的分区键。