Criar um contêiner habilitado para armazenamento analítico
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:
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:
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 az cosmosdb sql container create
comando (para configurar um contêiner existente) com o --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 az cosmosdb mongodb collection create
comando ou az cosmosdb mongodb collection update
com o --analytical-storage-ttl
parâmetro. Para uma conta do Azure Cosmos DB para Apache Gremlin, use o az cosmosdb gremlin graph create
comando ou az cosmosdb gremlin graph update
com o --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 New-AzCosmosDBSqlContainer
(para configurar um contêiner existente) com o -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 New-AzCosmosDBMongoDBCollection
cmdlet ou Update-AzCosmosDBMongoDBCollection
com o -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.