Azure Cosmos DB for MongoDB-erőforrások kezelése Azure Resource Manager-sablonok használatával
A KÖVETKEZŐKRE VONATKOZIK: MongoDB
Ebből a cikkből megtudhatja, hogyan használhat Azure Resource Manager-sablonokat a MongoDB-hez, adatbázisokhoz és gyűjteményekhez készült Azure Cosmos DB-fiókok üzembe helyezéséhez és kezeléséhez.
Ez a cikk példákat tartalmaz az Azure Cosmos DB csak a MongoDB-hez készült API-jára, és példákat talál más API-típusú fiókokra: Azure Resource Manager-sablonok használata Az Azure Cosmos DB API-jával Cassandra, Gremlin, SQL, Table cikkekhez.
Fontos
- A fióknevek legfeljebb 44 karakter hosszúságúak, amelyek mindegyike kisbetűs.
- Az átviteli sebesség értékeinek módosításához telepítse újra a sablont frissített RU/s értékekkel.
- Ha helyeket ad hozzá vagy távolít el egy Azure Cosmos DB-fiókhoz, nem módosíthatja egyidejűleg a többi tulajdonságot. Ezeket a műveleteket külön kell elvégezni.
Az alábbi Azure Cosmos DB-erőforrások létrehozásához másolja a következő példasablont egy új json-fájlba. Igény szerint létrehozhat egy json-paraméterfájlt, amelyet akkor használhat, ha ugyanazon erőforrás több példányát helyezi üzembe különböző névvel és értékekkel. Az Azure Resource Manager-sablonok üzembe helyezésének számos módja van, például az Azure Portal, az Azure CLI, az Azure PowerShell és a GitHub.
Azure Cosmos DB-fiók a MongoDB-hez automatikus skálázás kiosztott átviteli sebességgel
Ez a sablon létrehoz egy Azure Cosmos DB-fiókot a MongoDB API-hoz (3.2, 3.6, 4.0 és 4.2) két olyan gyűjteményrel, amelyek az adatbázis szintjén osztják meg az automatikus skálázási átviteli sebességet. Ez a sablon egykattintásos üzembe helyezéshez is elérhető az Azure Quickstart Templates Galleryben.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.6.18.56646",
"templateHash": "3095519724929260960"
}
},
"parameters": {
"accountName": {
"type": "string",
"defaultValue": "[toLower(format('mongodb-{0}', uniqueString(resourceGroup().id)))]",
"metadata": {
"description": "Cosmos DB account name"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for the Cosmos DB account."
}
},
"primaryRegion": {
"type": "string",
"metadata": {
"description": "The primary replica region for the Cosmos DB account."
}
},
"secondaryRegion": {
"type": "string",
"metadata": {
"description": "The secondary replica region for the Cosmos DB account."
}
},
"serverVersion": {
"type": "string",
"defaultValue": "4.2",
"allowedValues": [
"3.2",
"3.6",
"4.0",
"4.2"
],
"metadata": {
"description": "Specifies the MongoDB server version to use."
}
},
"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,
"maxValue": 2147483647,
"minValue": 10,
"metadata": {
"description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 1000000. Multi Region: 100000 to 1000000."
}
},
"maxIntervalInSeconds": {
"type": "int",
"defaultValue": 300,
"maxValue": 86400,
"minValue": 5,
"metadata": {
"description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400."
}
},
"databaseName": {
"type": "string",
"metadata": {
"description": "The name for the Mongo DB database"
}
},
"collection1Name": {
"type": "string",
"metadata": {
"description": "The name for the first Mongo DB collection"
}
},
"collection2Name": {
"type": "string",
"metadata": {
"description": "The name for the second Mongo DB collection"
}
},
"autoscaleMaxThroughput": {
"type": "int",
"defaultValue": 1000,
"maxValue": 1000000,
"minValue": 1000,
"metadata": {
"description": "Maximum throughput when using Autoscale Throughput Policy for the Database"
}
}
},
"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": "2021-10-15",
"name": "[parameters('accountName')]",
"location": "[parameters('location')]",
"kind": "MongoDB",
"properties": {
"consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
"locations": "[variables('locations')]",
"databaseAccountOfferType": "Standard",
"apiProperties": {
"serverVersion": "[parameters('serverVersion')]"
}
}
},
{
"type": "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases",
"apiVersion": "2021-10-15",
"name": "[format('{0}/{1}', parameters('accountName'), parameters('databaseName'))]",
"properties": {
"resource": {
"id": "[parameters('databaseName')]"
},
"options": {
"autoscaleSettings": {
"maxThroughput": "[parameters('autoscaleMaxThroughput')]"
}
}
},
"dependsOn": [
"[resourceId('Microsoft.DocumentDB/databaseAccounts', parameters('accountName'))]"
]
},
{
"type": "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections",
"apiVersion": "2021-10-15",
"name": "[format('{0}/{1}/{2}', parameters('accountName'), parameters('databaseName'), parameters('collection1Name'))]",
"properties": {
"resource": {
"id": "[parameters('collection1Name')]",
"shardKey": {
"user_id": "Hash"
},
"indexes": [
{
"key": {
"keys": [
"_id"
]
}
},
{
"key": {
"keys": [
"$**"
]
}
},
{
"key": {
"keys": [
"user_id",
"user_address"
]
},
"options": {
"unique": true
}
},
{
"key": {
"keys": [
"_ts"
],
"options": {
"expireAfterSeconds": 2629746
}
}
}
],
"options": {
"If-Match": "<ETag>"
}
}
},
"dependsOn": [
"[resourceId('Microsoft.DocumentDB/databaseAccounts/mongodbDatabases', parameters('accountName'), parameters('databaseName'))]"
]
},
{
"type": "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections",
"apiVersion": "2021-10-15",
"name": "[format('{0}/{1}/{2}', parameters('accountName'), parameters('databaseName'), parameters('collection2Name'))]",
"properties": {
"resource": {
"id": "[parameters('collection2Name')]",
"shardKey": {
"company_id": "Hash"
},
"indexes": [
{
"key": {
"keys": [
"_id"
]
}
},
{
"key": {
"keys": [
"$**"
]
}
},
{
"key": {
"keys": [
"company_id",
"company_address"
]
},
"options": {
"unique": true
}
},
{
"key": {
"keys": [
"_ts"
],
"options": {
"expireAfterSeconds": 2629746
}
}
}
],
"options": {
"If-Match": "<ETag>"
}
}
},
"dependsOn": [
"[resourceId('Microsoft.DocumentDB/databaseAccounts/mongodbDatabases', parameters('accountName'), parameters('databaseName'))]"
]
}
]
}
Azure Cosmos DB-fiók a MongoDB-hez standard kiosztott átviteli sebességgel
Ez a sablon létrehoz egy Azure Cosmos DB-fiókot a MongoDB API-hoz (3.2, 3.6, 4.0 és 4.2), két gyűjteményrel, amelyek 400 RU/s standard (manuális) átviteli sebességgel osztoznak az adatbázis szintjén. Ez a sablon egykattintásos üzembe helyezéshez is elérhető az Azure Quickstart Templates Galleryben.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.9.1.41621",
"templateHash": "6120132423365709425"
}
},
"parameters": {
"accountName": {
"type": "string",
"defaultValue": "[format('mongodb-{0}', uniqueString(resourceGroup().id))]",
"metadata": {
"description": "Cosmos DB account name"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for the Cosmos DB account."
}
},
"primaryRegion": {
"type": "string",
"metadata": {
"description": "The primary replica region for the Cosmos DB account."
}
},
"secondaryRegion": {
"type": "string",
"metadata": {
"description": "The secondary replica region for the Cosmos DB account."
}
},
"defaultConsistencyLevel": {
"type": "string",
"defaultValue": "Eventual",
"metadata": {
"description": "The default consistency level of the Cosmos DB account."
},
"allowedValues": [
"Eventual",
"ConsistentPrefix",
"Session",
"BoundedStaleness",
"Strong"
]
},
"serverVersion": {
"type": "string",
"defaultValue": "4.2",
"metadata": {
"description": "Specifies the MongoDB server version to use."
},
"allowedValues": [
"3.2",
"3.6",
"4.0",
"4.2"
]
},
"maxStalenessPrefix": {
"type": "int",
"defaultValue": 100000,
"metadata": {
"description": "Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 2147483647. Multi Region: 100000 to 2147483647."
},
"maxValue": 2147483647,
"minValue": 10
},
"maxIntervalInSeconds": {
"type": "int",
"defaultValue": 300,
"metadata": {
"description": "Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84600. Multi Region: 300 to 86400."
},
"maxValue": 86400,
"minValue": 5
},
"databaseName": {
"type": "string",
"metadata": {
"description": "The name for the Mongo DB database"
}
},
"sharedThroughput": {
"type": "int",
"defaultValue": 400,
"metadata": {
"description": "The shared throughput for the Mongo DB database, up to 25 collections"
},
"maxValue": 1000000,
"minValue": 400
},
"collection1Name": {
"type": "string",
"metadata": {
"description": "The name for the first Mongo DB collection"
}
},
"collection2Name": {
"type": "string",
"metadata": {
"description": "The name for the second Mongo DB collection"
}
},
"dedicatedThroughput": {
"type": "int",
"defaultValue": 400,
"metadata": {
"description": "The dedicated throughput for the orders collection"
},
"maxValue": 1000000,
"minValue": 400
}
},
"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": "2022-05-15",
"name": "[toLower(parameters('accountName'))]",
"location": "[parameters('location')]",
"kind": "MongoDB",
"properties": {
"consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
"locations": "[variables('locations')]",
"databaseAccountOfferType": "Standard",
"enableAutomaticFailover": true,
"apiProperties": {
"serverVersion": "[parameters('serverVersion')]"
},
"capabilities": [
{
"name": "DisableRateLimitingResponses"
}
]
}
},
{
"type": "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases",
"apiVersion": "2022-05-15",
"name": "[format('{0}/{1}', toLower(parameters('accountName')), parameters('databaseName'))]",
"properties": {
"resource": {
"id": "[parameters('databaseName')]"
},
"options": {
"throughput": "[parameters('sharedThroughput')]"
}
},
"dependsOn": [
"[resourceId('Microsoft.DocumentDB/databaseAccounts', toLower(parameters('accountName')))]"
]
},
{
"type": "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections",
"apiVersion": "2022-05-15",
"name": "[format('{0}/{1}/{2}', toLower(parameters('accountName')), parameters('databaseName'), parameters('collection1Name'))]",
"properties": {
"resource": {
"id": "[parameters('collection1Name')]",
"shardKey": {
"user_id": "Hash"
},
"indexes": [
{
"key": {
"keys": [
"_id"
]
}
},
{
"key": {
"keys": [
"$**"
]
}
},
{
"key": {
"keys": [
"product_name",
"product_category_name"
]
}
}
]
}
},
"dependsOn": [
"[resourceId('Microsoft.DocumentDB/databaseAccounts/mongodbDatabases', toLower(parameters('accountName')), parameters('databaseName'))]"
]
},
{
"type": "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections",
"apiVersion": "2022-05-15",
"name": "[format('{0}/{1}/{2}', toLower(parameters('accountName')), parameters('databaseName'), parameters('collection2Name'))]",
"properties": {
"resource": {
"id": "[parameters('collection2Name')]",
"shardKey": {
"company_id": "Hash"
},
"indexes": [
{
"key": {
"keys": [
"_id"
]
}
},
{
"key": {
"keys": [
"$**"
]
}
},
{
"key": {
"keys": [
"customer_id",
"order_id"
]
}
}
]
},
"options": {
"throughput": "[parameters('dedicatedThroughput')]"
}
},
"dependsOn": [
"[resourceId('Microsoft.DocumentDB/databaseAccounts/mongodbDatabases', toLower(parameters('accountName')), parameters('databaseName'))]"
]
}
]
}
Következő lépések
Íme néhány további erőforrás:
- Az Azure Resource Manager dokumentációja
- Azure Cosmos DB erőforrás-szolgáltatói séma
- Azure Cosmos DB rövid útmutatósablonok
- Az Azure Resource Manager gyakori üzembehelyezési hibáinak elhárítása
- Kapacitástervezést szeretne végezni az Azure Cosmos DB-be való migráláshoz? A kapacitástervezéshez használhatja a meglévő adatbázisfürt adatait.
- Ha csak annyit tud, hogy hány virtuális mag és kiszolgáló található a meglévő adatbázisfürtben, olvassa el a kérelemegységek becslését virtuális magok vagy vCPU-k használatával
- Ha ismeri az aktuális adatbázis számítási feladataira vonatkozó tipikus kérési arányokat, olvassa el a kérelemegységek becslését az Azure Cosmos DB kapacitástervezővel