Hızlı Başlangıç: Bicep kullanarak Azure Cosmos DB ve kapsayıcı oluşturma
UYGULANANLAR: NoSQL
Azure Cosmos DB, Microsoft'un her ölçekte açık API'lere sahip hızlı NoSQL veritabanıdır. Anahtar/değer veritabanlarını, belge veritabanlarını ve graf veritabanlarını hızla oluşturmak ve sorgulamak için Azure Cosmos DB'yi kullanabilirsiniz. Kredi kartı veya Azure aboneliği olmadan ücretsiz bir Azure Cosmos DB'yi Deneyin hesabı ayarlayabilirsiniz. Bu hızlı başlangıçta, bir Azure Cosmos DB veritabanı ve bu veritabanı içinde bir kapsayıcı oluşturmak için bicep dosyası dağıtma işlemine odaklanılır. Verileri daha sonra bu kapsayıcıda depolayabilirsiniz.
Bicep, Azure kaynaklarını dağıtmak için bildirim temelli söz dizimi kullanan, etki alanına özgü bir dildir (DSL). Kısa sözdizimi, güvenilir tür güvenliği ve kod yeniden kullanımı için destek sağlar. Bicep, Azure'daki kod olarak altyapı çözümleriniz için en iyi yazma deneyimini sunar.
Önkoşullar
Azure aboneliği veya ücretsiz Azure Cosmos DB deneme hesabı.
- Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.
Bicep dosyasını gözden geçirme
Bu hızlı başlangıçta kullanılan Bicep dosyası Azure Hızlı Başlangıç Şablonları'ndan alınmıştı.
@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 dosyasında üç Azure kaynağı tanımlanır:
Microsoft.DocumentDB/databaseAccounts: Azure Cosmos DB hesabı oluşturun.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases: Azure Cosmos DB veritabanı oluşturun.
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers: Azure Cosmos DB kapsayıcısı oluşturun.
Önemli
Azure Resource Manager sağlayıcısı, Microsoft.DocumentDB/databaseAccounts
uzun yıllar aynı adı korumunu sürdürmüştür. Bu, yıllar önce yazılan şablonların hizmet adı ve alt hizmetler geliştikçe bile aynı sağlayıcıyla uyumlu olmasını sağlar.
Bicep dosyasını dağıtma
Bicep dosyasını main.bicep olarak yerel bilgisayarınıza kaydedin.
Azure CLI veya Azure PowerShell kullanarak Bicep dosyasını dağıtın.
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>
Not
birincil-bölge yerine Azure Cosmos DB hesabının birincil çoğaltma bölgesini (WestUS gibi) yazın<.> İkincil bölgeyi> Azure Cosmos DB hesabının EastUS gibi ikincil çoğaltma bölgesiyle değiştirin<.
Dağıtım tamamlandığında, dağıtımın başarılı olduğunu belirten bir ileti görmeniz gerekir.
Dağıtımı doğrulama
Kaynak grubundaki dağıtılan kaynakları listelemek için Azure portalını, Azure CLI'yı veya Azure PowerShell'i kullanın.
az resource list --resource-group exampleRG
Kaynakları temizleme
Sonraki hızlı başlangıçlar ve öğreticilerle çalışmaya devam etmek istiyorsanız, bu kaynakları yerinde bırakmak isteyebilirsiniz. Artık gerekli olmadığında, kaynak grubunu ve kaynaklarını silmek için Azure portalı, Azure CLI veya Azure PowerShell'i kullanın.
az group delete --name exampleRG
Sonraki adımlar
Bu hızlı başlangıçta Bicep dosyası kullanarak bir Azure Cosmos DB hesabı, veritabanı ve kapsayıcı oluşturdunuz ve dağıtımı doğruladunuz. Azure Cosmos DB ve Bicep hakkında daha fazla bilgi edinmek için aşağıdaki makalelere geçin.
- Azure Cosmos DB'ye Genel Bakış'a göz atın.
- Bicep hakkında daha fazla bilgi edinin.
- Azure Cosmos DB'ye geçiş için kapasite planlaması yapmaya mı çalışıyorsunuz? Kapasite planlaması için mevcut veritabanı kümeniz hakkındaki bilgileri kullanabilirsiniz.
- Tek bildiğiniz mevcut veritabanı kümenizdeki sanal çekirdek ve sunucu sayısıysa, sanal çekirdekleri veya vCPU'ları kullanarak istek birimlerini tahmin etme hakkında bilgi edinin.
- Geçerli veritabanı iş yükünüz için tipik istek oranlarını biliyorsanız Azure Cosmos DB kapasite planlayıcısı kullanarak istek birimlerini tahmin etme hakkında bilgi edinin.