بداية سريعة: إنشاء Azure Cosmos DB وحاوية باستخدام قالب ARM

ينطبق على: NoSQL

قاعدة بيانات Azure المخصصةهي قاعدة بيانات NoSQL السريعة من Microsoft مع واجهات برمجة تطبيقات مفتوحة لأي سعة. يمكنك استخدام Azure Cosmos DB لإنشاء قواعد بيانات المفتاح / القيمة والاستعلام عنها بسرعة وقواعد بيانات المستندات وقواعد بيانات الرسم البياني. بدون بطاقة ائتمان أو اشتراك Azure، يمكنك إعداد حساب تجربة Azure Cosmos DB مجاني. يركز هذا التشغيل السريع على عملية نشر قالب Azure Resource Manager (قالب ARM) لإنشاء قاعدة بيانات Azure Cosmos DB وحاوية داخل قاعدة البيانات هذه. يمكنك لاحقًا تخزين البيانات في هذه الحاوية.

قالب Azure Resource Manager هو ملف JavaScript Object Notation (JSON) الذي يحدد البنية الأساسية والتكوين لمشروعك. يستخدم القالب عبارات توضيحية. يمكنك وصف النشر المقصود دون كتابة تسلسل أوامر البرمجة لإنشاء النشر.

إذا كانت بيئتك تلبي المتطلبات الأساسية وكنت معتاداً على استخدام قوالب "ARM"، فحدد زر "Deploy to Azure". سيتم فتح القالب في مدخل Azure.

زر لنشر قالب Resource Manager إلى Azure.

المتطلبات الأساسية

اشتراك Azure أو حساب تجريبي مجاني من Azure Cosmos DB

مراجعة القالب

يُعدّ النموذج المستخدم في هذا التشغيل السريع مأخوذاً من قوالب التشغيل السريع من 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'))]"
    }
  }
}

تُعرّف ثلاثة موارد لـ Azure في القالب:

هام

يحتفظ موفر Microsoft.DocumentDB/databaseAccountsAzure Resource Manager بنفس الاسم لسنوات عديدة. وهذا يضمن أن القوالب المكتوبة منذ سنوات لا تزال متوافقة مع نفس الموفر حتى مع تطور اسم الخدمة والخدمات الفرعية.

يمكن العثور على المزيد من نماذج قالب Azure Cosmos DB في معرض قوالب التشغيل السريع.

نشر القالب

  1. حدد الصورة التالية لتسجيل الدخول إلى Azure وفتح قالب. ينشئ القالب حساب Azure Cosmos DB وقاعدة بيانات وحاوية.

    زر لنشر قالب Resource Manager إلى Azure.

  2. حدد القيم التالية أو أدخلها.

     قالب ARM، تكامل Azure Cosmos DB، نشر المدخل

    ما لم يتم تحديده، استخدم القيم الافتراضية لإنشاء موارد Azure Cosmos DB.

    • الاشتراك: «select an Azure subscription».
    • مجموعة الموارد: حدد Create new، وأدخل اسمًا فريدًا لـ resourceGroup، ثم انقر فوق OK.
    • الموقع: حدد موقعًا. على سبيل المثال، وسط الولايات المتحدة.
    • اسم الحساب: أدخل اسما لحساب Azure Cosmos DB. يجب أن تكون فريدة من نوعها على مستوى العالم.
    • الموقع: أدخل موقعا تريد إنشاء حساب Azure Cosmos DB فيه. يمكن أن يكون حساب Azure Cosmos DB في نفس موقع مجموعة الموارد.
    • المنطقة الأساسية: منطقة النسخة المتماثلة الأساسية لحساب Azure Cosmos DB.
    • المنطقة الثانوية: منطقة النسخ المتماثلة الثانوية لحساب Azure Cosmos DB.
    • مستوى التناسق الافتراضي: مستوى التناسق الافتراضي لحساب Azure Cosmos DB.
    • بادئة ماكس ستالنس: الحد الأقصى من الطلبات القديمة. مطلوب لـ BoundedStaleness.
    • أقصى فترة بالثواني: أقصى فترة تأخير. مطلوب لـ BoundedStaleness.
    • اسم قاعدة البيانات: اسم قاعدة بيانات Azure Cosmos DB.
    • اسم الحاوية: اسم حاوية Azure Cosmos DB.
    • الإنتاجية: إنتاجية الحاوية، الحد الأدنى لقيمة الإنتاج هو 400 وحدة طلب/ثانية.
    • أوافق على الشروط والأحكام المذكورة أعلاه: حدد.
  3. حدد شراء. بعد نشر حساب Azure Cosmos DB بنجاح، تحصل على إعلام:

    قالب ARM، تكامل Azure Cosmos DB، نشر إعلام المدخل

يُستخدم مدخل Microsoft Azure لنشر القالب. بالإضافة إلى بوابة Azure، يمكنك أيضًا استخدام Azure PowerShell، Azure CLI, and REST API. لمعرفة طرق النشر الأخرى، راجع نشر القوالب.

التحقُّق من صحة عملية النشر

يمكنك إما استخدام مدخل Microsoft Azure للتحقق من حساب Azure Cosmos DB وقاعدة البيانات والحاوية أو استخدام البرنامج النصي Azure CLI أو Azure PowerShell التالي لسرد البيانات السرية التي تم إنشاؤها.

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

تنظيف الموارد

إذا كنت تخطط لمواصلة العمل بالبدايات السريعة والبرامج التعليمية اللاحقة، فقد ترغب في ترك هذه الموارد في مكانها. عند عدم الحاجة، احذف مجموعة الموارد، التي تحذف حساب Azure Cosmos DB والموارد ذات الصلة. لحذف مجموعة الموارد باستخدام Azure CLI أو Azure PowerShell:

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

الخطوات التالية

في هذا التشغيل السريع، قمت بإنشاء حساب Azure Cosmos DB وقاعدة بيانات وحاوية باستخدام قالب ARM والتحقق من صحة النشر. لمعرفة المزيد حول Azure Cosmos DB وAzure Resource Manager، تابع إلى المقالات أدناه.