Guia de início rápido: criar um Azure Cosmos DB e um contêiner usando um modelo ARM
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 modelo do Azure Resource Manager (modelo ARM) 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.
Um modelo do Azure Resource Manager é um arquivo JSON (JavaScript Object Notation) que define a infraestrutura e a configuração do seu projeto. O modelo utiliza sintaxe declarativa. Você descreve a implantação pretendida sem escrever a sequência de comandos de programação para criar a implantação.
Se o seu ambiente cumpre os pré-requisitos e se está familiarizado com a utilização de modelos ARM, selecione o botão Implementar no Azure. O modelo será aberto no portal do 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.
-
Você pode experimentar o Azure Cosmos DB gratuitamente, sem uma assinatura do Azure e sem necessidade de compromisso. Como alternativa, você pode criar uma conta de camada gratuita do Azure Cosmos DB, com os primeiros 1000 RU/s e 25 GB de armazenamento gratuitamente. Você também pode usar o emulador do Azure Cosmos DB com um URI de
https://localhost:8081
. Para obter a chave a ser usada com o emulador, consulte Autenticando solicitações.
Rever o modelo
O modelo utilizado neste início rápido pertence aos Modelos de Início Rápido do Azure.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.26.54.24096",
"templateHash": "7578513359154607542"
}
},
"parameters": {
"accountName": {
"type": "string",
"defaultValue": "[format('sql-{0}', uniqueString(resourceGroup().id))]",
"metadata": {
"description": "Azure Cosmos DB account name, max length 44 characters"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for the Azure Cosmos DB account."
}
},
"primaryRegion": {
"type": "string",
"metadata": {
"description": "The primary region for the Azure Cosmos DB account."
}
},
"secondaryRegion": {
"type": "string",
"metadata": {
"description": "The secondary region for the Azure Cosmos DB account."
}
},
"defaultConsistencyLevel": {
"type": "string",
"defaultValue": "Session",
"allowedValues": [
"Eventual",
"ConsistentPrefix",
"Session",
"BoundedStaleness",
"Strong"
],
"metadata": {
"description": "The default consistency level of the Cosmos DB account."
}
},
"maxStalenessPrefix": {
"type": "int",
"defaultValue": 100000,
"minValue": 10,
"maxValue": 2147483647,
"metadata": {
"description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 2147483647. Multi Region: 100000 to 2147483647."
}
},
"maxIntervalInSeconds": {
"type": "int",
"defaultValue": 300,
"minValue": 5,
"maxValue": 86400,
"metadata": {
"description": "Max lag time (minutes). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400."
}
},
"systemManagedFailover": {
"type": "bool",
"defaultValue": true,
"allowedValues": [
true,
false
],
"metadata": {
"description": "Enable system managed failover for regions"
}
},
"databaseName": {
"type": "string",
"defaultValue": "myDatabase",
"metadata": {
"description": "The name for the database"
}
},
"containerName": {
"type": "string",
"defaultValue": "myContainer",
"metadata": {
"description": "The name for the container"
}
},
"throughput": {
"type": "int",
"defaultValue": 400,
"minValue": 400,
"maxValue": 1000000,
"metadata": {
"description": "The throughput for the container"
}
}
},
"variables": {
"consistencyPolicy": {
"Eventual": {
"defaultConsistencyLevel": "Eventual"
},
"ConsistentPrefix": {
"defaultConsistencyLevel": "ConsistentPrefix"
},
"Session": {
"defaultConsistencyLevel": "Session"
},
"BoundedStaleness": {
"defaultConsistencyLevel": "BoundedStaleness",
"maxStalenessPrefix": "[parameters('maxStalenessPrefix')]",
"maxIntervalInSeconds": "[parameters('maxIntervalInSeconds')]"
},
"Strong": {
"defaultConsistencyLevel": "Strong"
}
},
"locations": [
{
"locationName": "[parameters('primaryRegion')]",
"failoverPriority": 0,
"isZoneRedundant": false
},
{
"locationName": "[parameters('secondaryRegion')]",
"failoverPriority": 1,
"isZoneRedundant": false
}
]
},
"resources": [
{
"type": "Microsoft.DocumentDB/databaseAccounts",
"apiVersion": "2024-02-15-preview",
"name": "[toLower(parameters('accountName'))]",
"location": "[parameters('location')]",
"kind": "GlobalDocumentDB",
"properties": {
"consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
"locations": "[variables('locations')]",
"databaseAccountOfferType": "Standard",
"enableAutomaticFailover": "[parameters('systemManagedFailover')]",
"disableKeyBasedMetadataWriteAccess": true
}
},
{
"type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases",
"apiVersion": "2024-02-15-preview",
"name": "[format('{0}/{1}', toLower(parameters('accountName')), parameters('databaseName'))]",
"properties": {
"resource": {
"id": "[parameters('databaseName')]"
}
},
"dependsOn": [
"[resourceId('Microsoft.DocumentDB/databaseAccounts', toLower(parameters('accountName')))]"
]
},
{
"type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers",
"apiVersion": "2024-02-15-preview",
"name": "[format('{0}/{1}/{2}', toLower(parameters('accountName')), parameters('databaseName'), parameters('containerName'))]",
"properties": {
"resource": {
"id": "[parameters('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": "[parameters('throughput')]"
}
},
"dependsOn": [
"[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', toLower(parameters('accountName')), parameters('databaseName'))]"
]
}
],
"outputs": {
"location": {
"type": "string",
"value": "[parameters('location')]"
},
"name": {
"type": "string",
"value": "[parameters('databaseName')]"
},
"resourceGroupName": {
"type": "string",
"value": "[resourceGroup().name]"
},
"resourceId": {
"type": "string",
"value": "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', toLower(parameters('accountName')), parameters('databaseName'))]"
}
}
}
Três recursos do Azure são definidos no modelo:
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.
Mais exemplos de modelo do Azure Cosmos DB podem ser encontrados na galeria de modelos de início rápido.
Implementar o modelo
Selecione a imagem seguinte para iniciar sessão no Azure e abrir um modelo. O modelo cria uma conta do Azure Cosmos DB, um banco de dados e um contêiner.
Selecione ou introduza os seguintes valores.
A menos que seja especificado, use os valores padrão para criar os recursos do Azure Cosmos DB.
- Subscrição: selecione uma subscrição do Azure.
- Grupo de recursos: selecione Criar novo, insira um nome exclusivo para o grupo de recursos e clique em OK.
- Localização: selecione uma localização. Por exemplo, E.U.A. Central.
- Nome da conta: insira um nome para a conta do Azure Cosmos DB. Deve ser globalmente único.
- Local: insira um local onde você deseja criar sua conta do Azure Cosmos DB. A conta do Azure Cosmos DB pode estar no mesmo local que o grupo de recursos.
- Região primária: a região de réplica primária para a conta do Azure Cosmos DB.
- Região secundária: a região de réplica secundária para a conta do Azure Cosmos DB.
- Nível de consistência padrão: o nível de consistência padrão para a conta do Azure Cosmos DB.
- Max Staleness Prefix: Max solicitações obsoletas. Necessário para BoundedStaleness.
- Intervalo máximo em segundos: Tempo de atraso máximo. Necessário para BoundedStaleness.
- Nome do Banco de Dados: O nome do banco de dados do Azure Cosmos DB.
- Nome do contêiner: o nome do contêiner do Azure Cosmos DB.
- Taxa de transferência: A taxa de transferência para o contêiner, valor mínimo de taxa de transferência é 400 RU/s.
- Aceito os termos e condições acima apresentados: selecione.
Selecione Comprar. Depois que a conta do Azure Cosmos DB for implantada com êxito, você receberá uma notificação:
O portal do Azure é utilizado para implementar o modelo. Além do portal do Azure, você também pode usar o Azure PowerShell, a CLI do Azure e a API REST. Para aprender outros métodos de implantação, consulte Implantar modelos.
Validar a implementação
Você pode usar o portal do Azure para verificar a conta do Azure Cosmos DB, o banco de dados e o contêiner ou usar o seguinte script da CLI do Azure ou do Azure PowerShell para listar o segredo criado.
echo "Enter your Azure Cosmos DB account name:" &&
read cosmosAccountName &&
echo "Enter the resource group where the Azure Cosmos DB account exists:" &&
read resourcegroupName &&
az cosmosdb show -g $resourcegroupName -n $cosmosAccountName
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, exclua o grupo de recursos, que exclui a conta do Azure Cosmos DB e os recursos relacionados. Para excluir o grupo de recursos usando a CLI do Azure ou o Azure PowerShell:
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."
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 modelo ARM e validou a implantação. Para saber mais sobre o Azure Cosmos DB e o Azure Resource Manager, continue nos artigos abaixo.
- Leia uma visão geral do Azure Cosmos DB
- Saiba mais sobre o Azure Resource Manager
- Obter outros modelos do Azure Cosmos DB Resource Manager
- 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