Aracılığıyla paylaş


Hızlı Başlangıç: ARM şablonu 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 Azure Resource Manager şablonu (ARM şablonu) dağıtma işlemine odaklanılır. Verileri daha sonra bu kapsayıcıda depolayabilirsiniz.

Azure Resource Manager şablonu, projenizin altyapısını ve yapılandırmasını tanımlayan bir JavaScript Nesne Gösterimi (JSON) dosyasıdır. Bu şablonda, bildirim temelli sözdizimi kullanılır. Dağıtımı oluşturmak için programlama komutlarının sırasını yazmadan hedeflenen dağıtımınızı açıklarsınız.

Ortamınız önkoşulları karşılıyorsa ve ARM şablonlarını kullanma hakkında bilginiz varsa, Azure’a dağıtma düğmesini seçin. Şablon Azure portalda açılır.

Resource Manager şablonunu Azure'a dağıtma düğmesi.

Önkoşullar

Azure aboneliği veya ücretsiz Azure Cosmos DB deneme hesabı

Şablonu gözden geçirme

Bu hızlı başlangıçta kullanılan şablon Azure Hızlı Başlangıç Şablonlarından alınmıştır.

{
  "$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'))]"
    }
  }
}

Şablonda üç Azure kaynağı tanımlanır:

Önemli

Azure Resource Manager sağlayıcısı, Microsoft.DocumentDB/databaseAccountsuzun 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.

Hızlı başlangıç şablonu galerisinde daha fazla Azure Cosmos DB şablon örneği bulunabilir.

Şablonu dağıtma

  1. Aşağıdaki görüntüyü seçerek Azure'da oturum açıp bir şablon açın. Şablon bir Azure Cosmos DB hesabı, veritabanı ve kapsayıcı oluşturur.

    Resource Manager şablonunu Azure'a dağıtma düğmesi.

  2. Aşağıdaki değerleri seçin veya girin.

    ARM şablonu, Azure Cosmos DB tümleştirmesi, portalı dağıtma

    Belirtilmediği sürece, Azure Cosmos DB kaynaklarını oluşturmak için varsayılan değerleri kullanın.

    • Abonelik: Bir Azure aboneliği seçin.
    • Kaynak grubu: Yeni oluştur'u seçin, kaynak grubu için benzersiz bir ad girin ve tamam'a tıklayın.
    • Konum: Bir konum seçin. Örneğin Orta ABD.
    • Hesap Adı: Azure Cosmos DB hesabı için bir ad girin. Genel olarak benzersiz olmalıdır.
    • Konum: Azure Cosmos DB hesabınızı oluşturmak istediğiniz konumu girin. Azure Cosmos DB hesabı kaynak grubuyla aynı konumda olabilir.
    • Birincil Bölge: Azure Cosmos DB hesabının birincil çoğaltma bölgesi.
    • İkincil bölge: Azure Cosmos DB hesabının ikincil çoğaltma bölgesi.
    • Varsayılan Tutarlılık Düzeyi: Azure Cosmos DB hesabı için varsayılan tutarlılık düzeyi.
    • Maksimum Eskime Ön Eki: En fazla eski istek. BoundedStaleness için gereklidir.
    • Saniye cinsinden Maksimum Aralık: Maksimum gecikme süresi. BoundedStaleness için gereklidir.
    • Veritabanı Adı: Azure Cosmos DB veritabanının adı.
    • Kapsayıcı Adı: Azure Cosmos DB kapsayıcısının adı.
    • Aktarım hızı: Kapsayıcının aktarım hızı, en düşük aktarım hızı değeri 400 RU/sn'dir.
    • Yukarıda belirtilen hüküm ve koşulları kabul ediyorum: Seçin.
  3. Satın al'ı seçin. Azure Cosmos DB hesabı başarıyla dağıtıldıktan sonra bir bildirim alırsınız:

    ARM şablonu, Azure Cosmos DB tümleştirmesi, portal bildirimi dağıtma

Şablonu dağıtmak için Azure portalı kullanılır. Azure portalına ek olarak Azure PowerShell, Azure CLI ve REST API'yi de kullanabilirsiniz. Diğer dağıtım yöntemlerini öğrenmek için bkz . Şablonları dağıtma.

Dağıtımı doğrulama

Azure Cosmos DB hesabını, veritabanını ve kapsayıcıyı denetlemek için Azure portalını kullanabilir veya oluşturulan gizli diziyi listelemek için aşağıdaki Azure CLI veya Azure PowerShell betiğini kullanabilirsiniz.

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

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 silin; bu da Azure Cosmos DB hesabını ve ilgili kaynakları siler. Azure CLI veya Azure PowerShell kullanarak kaynak grubunu silmek için:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Sonraki adımlar

Bu hızlı başlangıçta ARM şablonu kullanarak bir Azure Cosmos DB hesabı, veritabanı ve kapsayıcı oluşturdunuz ve dağıtımı doğruladunuz. Azure Cosmos DB ve Azure Resource Manager hakkında daha fazla bilgi edinmek için aşağıdaki makalelere geçin.

  • Azure Cosmos DB'ye Genel Bakış
  • Azure Resource Manager hakkında daha fazla bilgi edinin
  • Diğer Azure Cosmos DB Resource Manager şablonlarını alma
  • 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 çekirdek veya vCPU 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