Gestire le risorse di Azure Cosmos DB for Apache Cassandra usando Bicep
SI APPLICA A: Cassandra
Questo articolo illustra come usare Bicep per distribuire e gestire gli account, i keyspace e le tabelle di Azure Cosmos DB for Apache Cassandra.
Questo articolo illustra gli esempi di Bicep per gli account dell'API per Cassandra. Sono disponibili esempi di Bicep anche per le API per SQL, Gremlin, MongoDB, e Table.
Importante
- I nomi degli account sono limitati a 44 caratteri, tutti in minuscolo.
- Per modificare i valori di velocità effettiva, ridistribuire il modello con UR/s aggiornati.
- Quando si aggiungono o si rimuovono posizioni in un account Azure Cosmos DB, non è possibile modificare contemporaneamente altre proprietà. Queste operazioni devono essere eseguite separatamente.
Per creare una qualsiasi delle risorse di Azure Cosmos DB che seguono, copiare l’esempio seguente in un nuovo file bicep. È possibile creare opzionalmente un file di parametri da utilizzare quando si distribuiscono più istanze della stessa risorsa con nomi e valori diversi. Esistono molti modi per distribuire modelli di Azure Resource Manager, tra cui l'interfaccia della riga di comando di Azure, Azure PowerShell e Cloud Shell.
API per Cassandra con velocità effettiva con provisioning di scalabilità automatica
Creare un account Azure Cosmos DB in due aree con le opzioni per la coerenza e il failover, con un keyspace e una tabella configurati per la velocità effettiva a scalabilità automatica.
@description('Cosmos DB account name, max length 44 characters')
param accountName string = 'cassandra-${uniqueString(resourceGroup().id)}'
@description('Location for the Cosmos DB account.')
param location string = resourceGroup().location
@description('The primary replica region for the Cosmos DB account.')
param primaryRegion string
@description('The secondary replica region for the 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 = 'Eventual'
@minValue(10)
@maxValue(1000000)
@description('Max stale requests. Required for BoundedStaleness. Valid ranges, Single Region: 10 to 2,147,483,647. Multi Region: 100,000 to 2,147,483,647.')
param maxStalenessPrefix int = 100000
@minValue(5)
@maxValue(86400)
@description('Max lag time (seconds). Required for BoundedStaleness. Valid ranges, Single Region: 5 to 84,600. Multi Region: 300 to 86,400.')
param maxIntervalInSeconds int = 300
@allowed([
true
false
])
@description('Enable system managed failover for regions')
param systemManagedFailover bool = true
@description('The name for the Cassandra Keyspace')
param keyspaceName string
@description('The name for the Cassandra table')
param tableName string
@minValue(1000)
@maxValue(1000000)
@description('Maximum autoscale throughput for the Cassandra table')
param autoscaleMaxThroughput int = 1000
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@2022-05-15' = {
name: toLower(accountName)
location: location
kind: 'GlobalDocumentDB'
properties: {
capabilities: [
{
name: 'EnableCassandra'
}
]
consistencyPolicy: consistencyPolicy[defaultConsistencyLevel]
locations: locations
databaseAccountOfferType: 'Standard'
enableAutomaticFailover: systemManagedFailover
}
}
resource keyspace 'Microsoft.DocumentDB/databaseAccounts/cassandraKeyspaces@2022-05-15' = {
name: '${account.name}/${keyspaceName}'
properties: {
resource: {
id: keyspaceName
}
}
}
resource table 'Microsoft.DocumentDb/databaseAccounts/cassandraKeyspaces/tables@2022-05-15' = {
name: '${keyspace.name}/${tableName}'
properties: {
resource: {
id: tableName
schema: {
columns: [
{
name: 'loadid'
type: 'uuid'
}
{
name: 'machine'
type: 'uuid'
}
{
name: 'cpu'
type: 'int'
}
{
name: 'mtime'
type: 'int'
}
{
name: 'load'
type: 'float'
}
]
partitionKeys: [
{
name: 'machine'
}
{
name: 'cpu'
}
{
name: 'mtime'
}
]
clusterKeys: [
{
name: 'loadid'
orderBy: 'asc'
}
]
}
}
options: {
autoscaleSettings: {
maxThroughput: autoscaleMaxThroughput
}
}
}
}
API per Gremlin con velocità effettiva con provisioning standard
Creare un account Azure Cosmos DB in due aree con le opzioni per la coerenza e il failover, con un keyspace e una tabella configurati per la velocità effettiva standard.
@description('Cosmos DB account name, max length 44 characters')
param accountName string = 'cassandra-${uniqueString(resourceGroup().id)}'
@description('Location for the Cosmos DB account.')
param location string = resourceGroup().location
@description('The primary region for the Cosmos DB account.')
param primaryRegion string
@description('The secondary region for the 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 2,147,483,647. Multi Region: 100,000 to 2,147,483,647.')
param maxStalenessPrefix int = 100000
@minValue(5)
@maxValue(86400)
@description('Max lag time (seconds). 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 Cassandra Keyspace')
param keyspaceName string
@description('The name for the Cassandra table')
param tableName string
@minValue(400)
@maxValue(1000000)
@description('The throughput for Cassandra table')
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@2022-05-15' = {
name: toLower(accountName)
location: location
kind: 'GlobalDocumentDB'
properties: {
capabilities: [
{
name: 'EnableCassandra'
}
]
consistencyPolicy: consistencyPolicy[defaultConsistencyLevel]
locations: locations
databaseAccountOfferType: 'Standard'
enableAutomaticFailover: systemManagedFailover
}
}
resource keyspace 'Microsoft.DocumentDB/databaseAccounts/cassandraKeyspaces@2022-05-15' = {
name: '${account.name}/${keyspaceName}'
properties: {
resource: {
id: keyspaceName
}
}
}
resource table 'Microsoft.DocumentDb/databaseAccounts/cassandraKeyspaces/tables@2022-05-15' = {
name: '${keyspace.name}/${tableName}'
properties: {
resource: {
id: tableName
schema: {
columns: [
{
name: 'loadid'
type: 'uuid'
}
{
name: 'machine'
type: 'uuid'
}
{
name: 'cpu'
type: 'int'
}
{
name: 'mtime'
type: 'int'
}
{
name: 'load'
type: 'float'
}
]
partitionKeys: [
{
name: 'machine'
}
{
name: 'cpu'
}
{
name: 'mtime'
}
]
clusterKeys: [
{
name: 'loadid'
orderBy: 'asc'
}
]
}
options: {
throughput: throughput
}
}
}
}
Passaggi successivi
Altre risorse:
- Documentazione di Bicep
- Installare gli strumenti Bicep