Guia de início rápido: criar um Azure Cosmos DB e um contêiner usando o Bicep
APLICA-SE A: NoSQL
O Azure Cosmos DB é o banco de dados NoSQL rápido da Microsoft com APIs abertas para qualquer escala. Você pode usar o Azure Cosmos DB para criar e consultar rapidamente bancos de dados de chave/valor, bancos de dados de documentos e bancos de dados de gráficos. Sem um cartão de crédito ou uma assinatura do Azure, você pode configurar uma conta gratuita Experimente o Azure Cosmos DB. Este guia de início rápido se concentra no processo de implantação de um arquivo Bicep para criar um banco de dados do Azure Cosmos DB e um contêiner dentro desse banco de dados. Mais tarde, você pode armazenar dados nesse contêiner.
O Bicep é uma linguagem específica do domínio que utiliza sintaxe declarativa para implementar recursos do Azure. Fornece sintaxe concisa, segurança de tipos fiável e suporte para reutilização de código. O Bicep oferece a melhor experiência de criação para suas soluções de infraestrutura como código no Azure.
Pré-requisitos
Uma assinatura do Azure ou uma conta de avaliação gratuita do Azure Cosmos DB.
- Se não tiver uma subscrição do Azure, crie uma conta gratuita do Azure antes de começar.
Revise o arquivo Bicep
O arquivo Bicep usado neste início rápido é de Modelos de Início Rápido do 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
Três recursos do Azure são definidos no arquivo Bicep:
Microsoft.DocumentDB/databaseAccounts: crie uma conta do Azure Cosmos DB.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases: crie um banco de dados do Azure Cosmos DB.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers: crie um contêiner do Azure Cosmos DB.
Importante
O provedor do Azure Resource Manager, Microsoft.DocumentDB/databaseAccounts
, mantém o mesmo nome há muitos anos. Isso garante que os modelos escritos anos atrás ainda sejam compatíveis com o mesmo provedor, mesmo que o nome do serviço e os subserviços tenham evoluído.
Implantar o arquivo Bicep
Salve o arquivo Bicep como main.bicep em seu computador local.
Implante o arquivo Bicep usando a CLI do Azure ou o 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>
Nota
Substitua <a região> primária pela região de réplica primária da conta do Azure Cosmos DB, como WestUS. Substitua <a região> secundária pela região de réplica secundária da conta do Azure Cosmos DB, como EastUS.
Quando a implantação terminar, você verá uma mensagem indicando que a implantação foi bem-sucedida.
Validar a implementação
Use o portal do Azure, a CLI do Azure ou o Azure PowerShell para listar os recursos implantados no grupo de recursos.
az resource list --resource-group exampleRG
Clean up resources (Limpar recursos)
Se você planeja continuar trabalhando com guias de início rápido e tutoriais subsequentes, convém deixar esses recursos no lugar. Quando não for mais necessário, use o portal do Azure, a CLI do Azure ou o Azure PowerShell para excluir o grupo de recursos e seus recursos.
az group delete --name exampleRG
Próximos passos
Neste início rápido, você criou uma conta do Azure Cosmos DB, um banco de dados e um contêiner usando um arquivo Bicep e validou a implantação. Para saber mais sobre o Azure Cosmos DB e o Bicep, continue nos artigos abaixo.
- Leia uma visão geral do Azure Cosmos DB.
- Saiba mais sobre o Bicep.
- Tentando fazer o planejamento de capacidade para uma migração para o Azure Cosmos DB? Você pode usar informações sobre seu cluster de banco de dados existente para planejamento de capacidade.
- Se tudo o que você sabe é o número de vCores e servidores em seu cluster de banco de dados existente, leia sobre como estimar unidades de solicitação usando vCores ou vCPUs.
- Se você souber as taxas de solicitação típicas para sua carga de trabalho de banco de dados atual, leia sobre como estimar unidades de solicitação usando o planejador de capacidade do Azure Cosmos DB.