Criar um banco de dados e contêiner para o Azure Cosmos DB - API para NoSQL
APLICA-SE A: NoSQL
Nota
Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.
Este exemplo requer o Azure PowerShell Az 5.4.0 ou posterior. Execute Get-Module -ListAvailable Az
para ver quais versões estão instaladas.
Se você precisar instalar, consulte Instalar o módulo do Azure PowerShell.
Execute Connect-AzAccount para entrar no Azure.
Script de exemplo
Esse script cria uma conta do Azure Cosmos DB para API para NoSQL em duas regiões com consistência de nível de sessão, um banco de dados e um contêiner com uma chave de partição, política de indexação personalizada, política de chave exclusiva, TTL, taxa de transferência dedicada e o último gravador ganha a política de resolução de conflitos com um caminho de resolução de conflitos personalizado que será usado quando multipleWriteLocations=true
.
# Reference: Az.CosmosDB | https://docs.microsoft.com/powershell/module/az.cosmosdb
# --------------------------------------------------
# Purpose
# Create Cosmos SQL API account, database, and container with dedicated throughput,
# indexing policy with include, exclude, and composite paths, unique key, and conflict resolution
# --------------------------------------------------
Function New-RandomString{Param ([Int]$Length = 10) return $(-join ((97..122) + (48..57) | Get-Random -Count $Length | ForEach-Object {[char]$_}))}
# --------------------------------------------------
$uniqueId = New-RandomString -Length 7 # Random alphanumeric string for unique resource names
$apiKind = "Sql"
# --------------------------------------------------
# Variables - ***** SUBSTITUTE YOUR VALUES *****
$locations = @()
$locations += New-AzCosmosDBLocationObject -LocationName "East Us" -FailoverPriority 0 -IsZoneRedundant 0
$locations += New-AzCosmosDBLocationObject -LocationName "West Us" -FailoverPriority 1 -IsZoneRedundant 0
$resourceGroupName = "myResourceGroup" # Resource Group must already exist
$accountName = "cosmos-$uniqueId" # Must be all lower case
$consistencyLevel = "Session"
$tags = @{Tag1 = "MyTag1"; Tag2 = "MyTag2"; Tag3 = "MyTag3"}
$databaseName = "myDatabase"
$containerName = "myContainer"
$containerRUs = 400
$partitionKeyPath = "/myPartitionKey"
$indexPathIncluded = "/*"
$compositeIndexPaths1 = @(
@{ Path = "/myCompositePath1"; Order = "ascending" };
@{ Path = "/myCompositePath2"; Order = "descending" }
)
$compositeIndexPaths2 = @(
@{ Path = "/myCompositePath3"; Order = "ascending" };
@{ Path = "/myCompositePath4"; Order = "descending" }
)
$indexPathExcluded = "/myExcludedPath/*"
$uniqueKeyPath = "/myUniqueKeyPath"
$conflictResolutionPath = "/myResolutionPath"
$ttlInSeconds = 120 # Set this to -1 (or don't use it at all) to never expire
# --------------------------------------------------
Write-Host "Creating account $accountName"
$account = New-AzCosmosDBAccount -ResourceGroupName $resourceGroupName `
-LocationObject $locations -Name $accountName -ApiKind $apiKind -Tag $tags `
-DefaultConsistencyLevel $consistencyLevel `
-EnableAutomaticFailover:$true
Write-Host "Creating database $databaseName"
$database = New-AzCosmosDBSqlDatabase -ParentObject $account -Name $databaseName
$uniqueKey = New-AzCosmosDBSqlUniqueKey -Path $uniqueKeyPath
$uniqueKeyPolicy = New-AzCosmosDBSqlUniqueKeyPolicy -UniqueKey $uniqueKey
$compositePath1 = @()
ForEach ($compositeIndexPath in $compositeIndexPaths1) {
$compositePath1 += New-AzCosmosDBSqlCompositePath `
-Path $compositeIndexPath.Path `
-Order $compositeIndexPath.Order
}
$compositePath2 = @()
ForEach ($compositeIndexPath in $compositeIndexPaths2) {
$compositePath2 += New-AzCosmosDBSqlCompositePath `
-Path $compositeIndexPath.Path `
-Order $compositeIndexPath.Order
}
$includedPathIndex = New-AzCosmosDBSqlIncludedPathIndex -DataType String -Kind Range
$includedPath = New-AzCosmosDBSqlIncludedPath -Path $indexPathIncluded -Index $includedPathIndex
$indexingPolicy = New-AzCosmosDBSqlIndexingPolicy `
-IncludedPath $includedPath `
-CompositePath @($compositePath1, $compositePath2) `
-ExcludedPath $indexPathExcluded `
-IndexingMode Consistent -Automatic $true
# Conflict resolution policies only apply in multi-master accounts.
# Included here to show custom resolution path.
$conflictResolutionPolicy = New-AzCosmosDBSqlConflictResolutionPolicy `
-Type LastWriterWins -Path $conflictResolutionPath
Write-Host "Creating container $containerName"
$container = New-AzCosmosDBSqlContainer `
-ParentObject $database -Name $containerName `
-Throughput $containerRUs -IndexingPolicy $indexingPolicy `
-PartitionKeyKind Hash -PartitionKeyPath $partitionKeyPath `
-UniqueKeyPolicy $uniqueKeyPolicy `
-ConflictResolutionPolicy $conflictResolutionPolicy `
-TtlInSeconds $ttlInSeconds
Limpar a implementação
Depois de executar o script de exemplo, pode ser utilizado o seguinte comando para remover o grupo de recursos e todos os recursos associados ao mesmo.
Remove-AzResourceGroup -ResourceGroupName "myResourceGroup"
Explicação do script
Este script utiliza os seguintes comandos. Cada comando na tabela liga à documentação específica do comando.
Comando | Notas |
---|---|
BD do Cosmos para o Azure | |
Novo-AzCosmosDBAccount | Cria uma conta do Azure Cosmos DB. |
New-AzCosmosDBSqlDatabase | Cria um Banco de Dados SQL do Azure Cosmos DB. |
Novo-AzCosmosDBSqlUniqueKey | Cria um objeto PSSqlUniqueKey usado como parâmetro para New-AzCosmosDBSqlUniqueKeyPolicy. |
New-AzCosmosDBSqlUniqueKeyPolicy | Cria um objeto PSSqlUniqueKeyPolicy usado como parâmetro para New-AzCosmosDBSqlContainer. |
New-AzCosmosDBSqlCompositePath | Cria um objeto PSCompositePath usado como parâmetro para New-AzCosmosDBSqlIndexingPolicy. |
New-AzCosmosDBSqlIncludedPathIndex | Cria um objeto PSIndexes usado como parâmetro para New-AzCosmosDBSqlIncludedPath. |
New-AzCosmosDBSqlIncludedPath | Cria um objeto PSIncludedPath usado como parâmetro para New-AzCosmosDBSqlIndexingPolicy. |
New-AzCosmosDBSqlIndexingPolicy | Cria um objeto PSSqlIndexingPolicy usado como parâmetro para New-AzCosmosDBSqlContainer. |
New-AzCosmosDBSqlConflictResolutionPolicy | Cria um objeto PSSqlConflictResolutionPolicy usado como parâmetro para New-AzCosmosDBSqlContainer. |
New-AzCosmosDBSqlContainer | Cria um novo contêiner SQL do Azure Cosmos DB. |
Grupos de Recursos do Azure | |
Remove-AzResourceGroup | Elimina um grupo de recursos, incluindo todos os recursos aninhados. |
Próximos passos
Para obter mais informações sobre o Azure PowerShell, veja Documentação do Azure PowerShell.