Criar um contêiner habilitado para repositório analítico

Concluído

Depois de habilitar o Link do Azure Synapse 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 coluna no 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 para o repositório analítico; de onde ele pode ser consultado sem incorrer em sobrecarga de processamento no repositório operacional.

Tipos de esquema de repositório analítico

Conforme 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 dinâmica de esquema 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 for NoSQL.
  • Fidelidade total: o tipo de esquema padrão (e o único compatível) para uma conta do Azure Cosmos DB for MongoDB.

O repositório analítico recebe dados JSON do repositório operacional e os organiza em uma estrutura baseada em coluna. Em um esquema bem definido, a primeira ocorrência não nula de um campo JSON determina o tipo de dados desse 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 seguintes dois documentos JSON:

{"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, o respectivo 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 do campo dele são importados, mas o campo incompatível é removido. As seguintes colunas representam os dados no repositório analítico:

productID productName
123 Widget
Wotsit

Em um esquema de fidelidade total, o tipo de dados é acrescentado a cada instância do campo e novas colunas são 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 seguinte tabela:

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

Observação

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

Habilitar o suporte ao repositório analítico em um contêiner

Você pode habilitar o suporte ao repositório analítico ao criar um 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 usar a CLI do Azure ou o Azure PowerShell, de uma linha de comando ou em um script.

Usando o portal do Azure

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

Captura de tela mostrando a opção do repositório analítico ao criar um contêiner no portal do Azure.

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

Captura de tela mostrando a página do Link do Azure Synapse no portal do Azure, com um contêiner existente selecionado e o botão “Habilitar Link do Synapse em seu contêiner” habilitado.

Usando 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 for NoSQL, execute o comando az cosmosdb sql container create (para criar um contêiner) ou o comando az cosmosdb sql container update (para configurar um contêiner existente) com o parâmetro --analytical-storage-ttl, atribuindo um tempo de retenção para dados analíticos. Especificar um parâmetro -analytical-storage-ttl com o valor -1 permite a retenção permanente de dados analíticos. Por exemplo, o comando a seguir cria um contêiner chamado my-container com suporte a 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 for MongoDB, você pode usar o comando az cosmosdb mongodb collection create ou az cosmosdb mongodb collection update com o parâmetro --analytical-storage-ttl. Para uma conta do Azure Cosmos DB for Apache Gremlin, use o comando az cosmosdb gremlin graph create ou az cosmosdb gremlin graph update com o parâmetro --analytical-storage-ttl.

Usando o PowerShell do Azure

Para usar o Azure PowerShell para habilitar o suporte ao repositório analítico em um contêiner do Azure Cosmos DB for NoSQL, execute o cmdlet New-AzCosmosDBSqlContainer (para criar um contêiner) ou o cmdlet Update-AzCosmosDBSqlContainer (para configurar um contêiner existente) com o parâmetro -AnalyticalStorageTtl, atribuindo um tempo de retenção para dados analíticos. Especificar um parâmetro -AnalyticalStorageTtl com o valor -1 permite a retenção permanente de dados analíticos. Por exemplo, o comando a seguir cria um contêiner chamado my-container com suporte a 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 da API do Azure Cosmos DB for MongoDB, use o cmdlet New-AzCosmosDBMongoDBCollection ou Update-AzCosmosDBMongoDBCollection com o parâmetro -AnalyticalStorageTtl.

Considerações sobre como habilitar o suporte a repositório analítico

O suporte a repositório analítico não pode ser desabilitado sem a exclusão do contêiner. Configurar o valor de TTL do repositório analítico como 0 ou null desabilita efetivamente o repositório analítico ao não sincronizar mais novos itens do repositório operacional e excluir itens já sincronizados do repositório analítico. Depois de definir esse valor como 0, você não poderá reabilitar o suporte o repositório analítico no contêiner.