Criar um contêiner habilitado para armazenamento analítico

Concluído

Depois de habilitar o Azure Synapse Link em uma conta do Azure Cosmos DB, você pode criar ou atualizar um contêiner com suporte para um repositório analítico.

Um repositório analítico é um repositório baseado em colunas dentro do mesmo contêiner que um repositório operacional baseado em linha. Um processo de sincronização automática sincroniza as alterações no repositório operacional com o repositório analítico, de onde pode ser consultado sem incorrer em sobrecarga de processamento no repositório operacional.

Tipos de esquema de armazenamento analítico

À medida que os dados do repositório operacional são sincronizados com o repositório analítico, o esquema é atualizado dinamicamente para refletir a estrutura dos documentos que estão sendo sincronizados. O comportamento específico dessa manutenção de esquema dinâmico depende do tipo de esquema de repositório analítico configurado para a conta do Azure Cosmos DB. Há suporte para dois tipos de representação de esquema:

  • Bem definido: o tipo de esquema padrão para uma conta do Azure Cosmos DB para NoSQL.
  • Fidelidade total: o tipo de esquema padrão (e apenas suportado) para uma conta do Azure Cosmos DB para MongoDB.

O repositório analítico recebe dados JSON do repositório operacional e os organiza em uma estrutura baseada em colunas. Em um esquema bem definido, a primeira ocorrência não nula de um campo JSON determina o tipo de dados para esse campo. As ocorrências subsequentes do campo que não são compatíveis com o tipo de dados atribuído não são ingeridas no repositório analítico.

Por exemplo, considere os dois documentos JSON a seguir:

{"productID": 123, "productName": "Widget"}
{"productID": "124", "productName": "Wotsit"}

O primeiro documento determina que o campo productID é um valor numérico (inteiro). Quando o segundo documento é encontrado, seu campo productID tem um valor de cadeia de caracteres e, portanto, não é importado para o repositório analítico. O documento e o restante de seu campo são importados, mas o campo incompatível é descartado. As colunas a seguir representam os dados no repositório analítico:

productID productName
123 Widget
Wotsit

Em um esquema de fidelidade total, o tipo de dados é anexado a cada instância do campo, com novas colunas criadas conforme necessário; permitindo que o repositório analítico contenha várias ocorrências de um campo, cada uma com um tipo de dados diferente, conforme mostrado na tabela a seguir:

productID.int32 productName.string productID.string
123 Widget
Wotsit 124

Nota

Para obter mais informações, consulte O que é o repositório analítico do Azure Cosmos DB?.

Habilitando o suporte de armazenamento analítico em um contêiner

Você pode habilitar o suporte ao repositório analítico ao criar um novo contêiner ou para um contêiner existente. Para habilitar o suporte ao repositório analítico, você pode usar o portal do Azure ou a CLI do Azure ou o Azure PowerShell em uma linha de comando ou em um script.

Utilizar o portal do Azure

Para habilitar o suporte ao repositório analítico ao criar um novo contêiner no portal do Azure, selecione a opção Ativado para Repositório Analítico, conforme mostrado aqui:

Screenshot showing the Analytical Store option when creating a new container in the Azure portal.

Como alternativa, você pode habilitar o suporte de armazenamento analítico para um contêiner existente na página Azure Synapse Link na seção Integrações da página para sua conta do Cosmos DB, conforme mostrado aqui:

Screenshot showing the Azure Synapse Link page in the Azure portal, with an existing container selected and the Enable Synapse Link on your container button enabled.

Com a CLI do Azure

Para usar a CLI do Azure para habilitar o suporte ao repositório analítico em um contêiner do Azure Cosmos DB para NoSQL, execute o comando (para criar um novo contêiner) ou az cosmosdb sql container update o comando (para configurar um contêiner existente) com o az cosmosdb sql container create --analytical-storage-ttl parâmetro, atribuindo um tempo de retenção para dados analíticos. A especificação de um -analytical-storage-ttl parâmetro de -1 permite a retenção permanente de dados analíticos. Por exemplo, o comando a seguir cria um novo contêiner chamado my-container com suporte ao repositório analítico.

az cosmosdb sql container create --resource-group my-rg --account-name my-cosmos-db --database-name my-db --name my-container --partition-key-path "/productID" --analytical-storage-ttl -1

Para uma conta do Azure Cosmos DB para MongoDB, você pode usar o comando ou az cosmosdb mongodb collection update com o az cosmosdb mongodb collection create --analytical-storage-ttl parâmetro. Para uma conta do Azure Cosmos DB para Apache Gremlin, use o comando ou az cosmosdb gremlin graph update com o az cosmosdb gremlin graph create --analytical-storage-ttl parâmetro.

Utilizar o Azure PowerShell

Para usar o Azure PowerShell para habilitar o suporte ao repositório analítico no contêiner n Azure Cosmos DB for NoSQL, execute o cmdlet (para criar um novo contêiner) ou Update-AzCosmosDBSqlContainer cmdlet (para configurar um contêiner existente) com o New-AzCosmosDBSqlContainer -AnalyticalStorageTtl parâmetro, atribuindo um tempo de retenção para dados analíticos. A especificação de um -AnalyticalStorageTtl parâmetro de -1 permite a retenção permanente de dados analíticos. Por exemplo, o comando a seguir cria um novo contêiner chamado my-container com suporte ao repositório analítico.

New-AzCosmosDBSqlContainer -ResourceGroupName "my-rg" -AccountName "my-cosmos-db" -DatabaseName "my-db" -Name "my-container" -PartitionKeyKind "hash" -PartitionKeyPath "/productID" -AnalyticalStorageTtl -1

Para uma conta de API do Azure Cosmos DB para MongoDB, use o cmdlet ou Update-AzCosmosDBMongoDBCollection com o New-AzCosmosDBMongoDBCollection -AnalyticalStorageTtl parâmetro.

Considerações para habilitar o suporte de armazenamento analítico

O suporte ao repositório analítico não pode ser desativado sem excluir o contêiner. Definir o valor TTL do repositório analítico como 0 ou nulo efetivamente desabilita o repositório analítico deixando de sincronizar novos itens com ele a partir do repositório operacional e excluindo itens já sincronizados do repositório analítico. Depois de definir esse valor como 0, não é possível reativar o suporte ao armazenamento analítico no contêiner.