Inicio rápido: Creación de una base de datos de Azure Cosmos DB y un contenedor con Bicep
SE APLICA A: NoSQL
Azure Cosmos DB es la base de datos NoSQL rápida de Microsoft con API abiertas para cualquier escala. Puede usar Azure Cosmos DB para crear y consultar rápidamente las bases de datos de grafos, documentos y de claves y valores. Puede configurar una cuenta gratuita de Azure Cosmos DB de prueba sin una tarjeta de crédito o una suscripción de Azure. Este inicio rápido se centra en el proceso de implementar un archivo de Bicep para crear una base de datos de Azure Cosmos DB y un contenedor en ella. Posteriormente, puede almacenar datos en este contenedor.
Bicep es un lenguaje específico de dominio (DSL) que usa una sintaxis declarativa para implementar recursos de Azure. Brinda sintaxis concisa, seguridad de tipos confiable y compatibilidad con la reutilización de código. Bicep ofrece la mejor experiencia de creación para sus soluciones de infraestructura como código en Azure.
Requisitos previos
Una suscripción a Azure o una cuenta de evaluación gratuita de Azure Cosmos DB.
- Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
Revisión del archivo de Bicep
El archivo de Bicep usado en este inicio rápido forma parte de las plantillas de inicio rápido de 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
En el archivo de Bicep, se definen tres recursos de Azure:
Microsoft.DocumentDB/databaseAccounts: creación de una cuenta de Azure Cosmos DB.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases: creación de una base de datos de Azure Cosmos DB.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers: creación de un contenedor de Azure Cosmos DB.
Importante
El proveedor de Azure Resource Manager, Microsoft.DocumentDB/databaseAccounts
, ha mantenido el mismo nombre durante muchos años. Esto garantiza que las plantillas escritas hace años siguen siendo compatibles con el mismo proveedor, incluso cuando el nombre del servicio y los subservicios han evolucionado.
Implementación del archivo de Bicep
Guarde el archivo de Bicep como main.bicep en el equipo local.
Implemente el archivo de Bicep mediante la CLI de Azure 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
Reemplace <primary-region> por la región de la réplica principal para la cuenta de Azure Cosmos DB, por ejemplo, WestUS. Reemplace <secondary-region> por la región de la réplica secundaria para la cuenta de Azure Cosmos DB; por ejemplo, EastUS.
Una vez finalizada la implementación, debería mostrarse un mensaje indicando que la implementación se realizó correctamente.
Validación de la implementación
Use los Azure Portal, CLI de Azure o Azure PowerShell para enumerar los recursos implementados en el grupo de recursos.
az resource list --resource-group exampleRG
Limpieza de recursos
Si planea seguir trabajando en otros inicios rápidos y tutoriales, considere la posibilidad de dejar estos recursos activos. Cuando ya no los necesite, use Azure Portal, la CLI de Azure o Azure PowerShell para eliminar el grupo de recursos y sus recursos.
az group delete --name exampleRG
Pasos siguientes
En este inicio rápido, ha creado una cuenta, una base de datos y un contenedor de Azure Cosmos DB usando un archivo de Bicep y ha validado la implementación. Para obtener más información sobre Azure Cosmos DB y Bicep, continúe con los artículos siguientes.
- Lea una introducción a Azure Cosmos DB.
- Obtenga más información sobre Bicep.
- ¿Intenta planear la capacidad de una migración a Azure Cosmos DB? Para ello, puede usar información sobre el clúster de bases de datos existente.
- Si lo único que sabe es el número de núcleos virtuales y servidores del clúster de bases de datos, lea este artículo sobre cómo calcular las unidades de solicitud usando núcleos virtuales o vCPU.
- Si conoce las tasas de solicitudes típicas de la carga de trabajo de base de datos actual, lea sobre la estimación de unidades de solicitud mediante la herramienta de planeamiento de capacidad de Azure Cosmos DB.