Краткое руководство по созданию базы данных Azure Cosmos DB и контейнера с помощью Bicep
ОБЛАСТЬ ПРИМЕНЕНИЯ: NoSQL
Azure Cosmos DB — это быстрая база данных NoSQL от Майкрософт с открытыми API для использования в любом масштабе. С помощью Azure Cosmos DB вы можете быстро создавать базы данных с парами "ключ — значение", документами, графами и обращаться к ним. Без кредитной карты или подписки Azure можно настроить бесплатную пробную учетную запись Azure Cosmos DB. В этом кратком руководстве рассматривается процесс развертывания Bicep-файла для создания базы данных Azure Cosmos DB и контейнера в этой базе данных. Впоследствии в этом контейнере можно будет хранить данные.
Bicep — это предметно-ориентированный язык (DSL), который использует декларативный синтаксис для развертывания ресурсов Azure. Он обеспечивает краткий синтаксис, надежную безопасность типов и поддержку повторного использования кода. Bicep предлагает лучшие возможности для разработки решений Azure типа "инфраструктура как код".
Необходимые компоненты
Подписка Azure или бесплатная пробная учетная запись Azure Cosmos DB.
- Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
Проверка BICEP-файла
Файл Bicep, используемый в этом кратком руководстве, взят из шаблонов быстрого запуска Azure.
@description('Azure Cosmos DB account name, max length 44 characters')
param accountName string = 'sql-${uniqueString(resourceGroup().id)}'
@description('Location for the Azure Cosmos DB account.')
param location string = resourceGroup().location
@description('The primary region for the Azure Cosmos DB account.')
param primaryRegion string
@description('The secondary region for the Azure Cosmos DB account.')
param secondaryRegion string
@allowed([
'Eventual'
'ConsistentPrefix'
'Session'
'BoundedStaleness'
'Strong'
])
@description('The default consistency level of the Cosmos DB account.')
param defaultConsistencyLevel string = 'Session'
@minValue(10)
@maxValue(2147483647)
@description('Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 2147483647. Multi Region: 100000 to 2147483647.')
param maxStalenessPrefix int = 100000
@minValue(5)
@maxValue(86400)
@description('Max lag time (minutes). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400.')
param maxIntervalInSeconds int = 300
@allowed([
true
false
])
@description('Enable system managed failover for regions')
param systemManagedFailover bool = true
@description('The name for the database')
param databaseName string = 'myDatabase'
@description('The name for the container')
param containerName string = 'myContainer'
@minValue(400)
@maxValue(1000000)
@description('The throughput for the container')
param throughput int = 400
var consistencyPolicy = {
Eventual: {
defaultConsistencyLevel: 'Eventual'
}
ConsistentPrefix: {
defaultConsistencyLevel: 'ConsistentPrefix'
}
Session: {
defaultConsistencyLevel: 'Session'
}
BoundedStaleness: {
defaultConsistencyLevel: 'BoundedStaleness'
maxStalenessPrefix: maxStalenessPrefix
maxIntervalInSeconds: maxIntervalInSeconds
}
Strong: {
defaultConsistencyLevel: 'Strong'
}
}
var locations = [
{
locationName: primaryRegion
failoverPriority: 0
isZoneRedundant: false
}
{
locationName: secondaryRegion
failoverPriority: 1
isZoneRedundant: false
}
]
resource account 'Microsoft.DocumentDB/databaseAccounts@2024-02-15-preview' = {
name: toLower(accountName)
location: location
kind: 'GlobalDocumentDB'
properties: {
consistencyPolicy: consistencyPolicy[defaultConsistencyLevel]
locations: locations
databaseAccountOfferType: 'Standard'
enableAutomaticFailover: systemManagedFailover
disableKeyBasedMetadataWriteAccess: true
}
}
resource database 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases@2024-02-15-preview' = {
parent: account
name: databaseName
properties: {
resource: {
id: databaseName
}
}
}
resource container 'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers@2024-02-15-preview' = {
parent: database
name: containerName
properties: {
resource: {
id: containerName
partitionKey: {
paths: [
'/myPartitionKey'
]
kind: 'Hash'
}
indexingPolicy: {
indexingMode: 'consistent'
includedPaths: [
{
path: '/*'
}
]
excludedPaths: [
{
path: '/myPathToNotIndex/*'
}
{
path: '/_etag/?'
}
]
compositeIndexes: [
[
{
path: '/name'
order: 'ascending'
}
{
path: '/age'
order: 'descending'
}
]
]
spatialIndexes: [
{
path: '/location/*'
types: [
'Point'
'Polygon'
'MultiPolygon'
'LineString'
]
}
]
}
defaultTtl: 86400
uniqueKeyPolicy: {
uniqueKeys: [
{
paths: [
'/phoneNumber'
]
}
]
}
}
options: {
throughput: throughput
}
}
}
output location string = location
output name string = database.name
output resourceGroupName string = resourceGroup().name
output resourceId string = database.id
В файле Bicep определены эти ресурсы Azure:
Microsoft.DocumentDB/databaseAccounts: создайте учетную запись Azure Cosmos DB.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases: создание базы данных Azure Cosmos DB.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/container: создание контейнера Azure Cosmos DB.
Внимание
Поставщик Microsoft.DocumentDB/databaseAccounts
Azure Resource Manager поддерживает то же имя в течение многих лет. Это гарантирует, что шаблоны, написанные лет назад, по-прежнему совместимы с тем же поставщиком, даже если имя службы и вложенных служб развивались.
Развертывание BICEP-файла
Сохраните файл Bicep с именем main.bicep на локальном компьютере.
Разверните файл Bicep с помощью Azure CLI или Azure PowerShell.
az group create --name exampleRG --location eastus az deployment group create --resource-group exampleRG --template-file main.bicep --parameters primaryRegion=<primary-region> secondaryRegion=<secondary-region>
Примечание.
Замените <первичный регион основным регионом> реплики для учетной записи Azure Cosmos DB, например WestUS. Замените <дополнительный регион дополнительным регионом> вторичной реплики для учетной записи Azure Cosmos DB, например EastUS.
После завершения развертывания должно отобразиться сообщение о том, что развертывание успешно выполнено.
Проверка развертывания
Используйте портал Azure, Azure CLI или Azure PowerShell для получения списка ресурсов, развернутых в группе ресурсов.
az resource list --resource-group exampleRG
Очистка ресурсов
Если вы планируете продолжить работу с последующими краткими руководствами и статьями, эти ресурсы можно не удалять. Чтобы удалить группу ресурсов и ее ресурсы, используйте портал Azure, Azure CLI или Azure PowerShell.
az group delete --name exampleRG
Следующие шаги
В этом кратком руководстве вы создали учетную запись Azure Cosmos DB, базу данных и контейнер с помощью файла Bicep и проверили развертывание. Дополнительные сведения об Azure Cosmos DB и Bicep см. в указанных ниже статьях.
- Ознакомьтесь с обзором Azure Cosmos DB.
- Дополнительные сведения о Bicep см. в этой статье.
- Если вы планируете ресурсы для миграции в Azure Cosmos DB, Для планирования ресурсов можно использовать сведения об имеющемся кластере базы данных.
- Если вам известно только количество виртуальных ядер и серверов в существующем кластере баз данных, прочитайте об оценке единиц запроса на основе этих данных.
- Если вам известна стандартная частота запросов для текущей рабочей нагрузки базы данных, ознакомьтесь со статьей о расчете единиц запросов с помощью планировщика ресурсов Azure Cosmos DB.