Créer un conteneur avec le magasin analytique activé

Effectué

Après avoir activé Azure Synapse Link dans un compte Azure Cosmos DB, vous pouvez créer ou mettre à jour un conteneur avec prise en charge d’un magasin analytique.

Un magasin analytique est un magasin basé sur des colonnes dans le même conteneur qu’un magasin opérationnel basé sur des lignes. Un processus de synchronisation automatique synchronise les modifications du magasin opérationnel avec le magasin analytique, à partir de l’endroit où il peut être interrogé sans entraîner de surcharge de traitement dans le magasin opérationnel.

Types de schémas de magasin analytique

À mesure que les données du magasin opérationnel sont synchronisées avec le magasin analytique, le schéma est mis à jour dynamiquement pour refléter la structure des documents en cours de synchronisation. Le comportement spécifique de cette maintenance de schéma dynamique dépend du type de schéma de magasin analytique configuré pour le compte Azure Cosmos DB. Deux types de représentation de schéma sont pris en charge :

  • Bien défini : type de schéma par défaut pour un compte Azure Cosmos DB for NoSQL.
  • Fidélité totale : type de schéma par défaut (et le seul pris en charge) pour un compte Azure Cosmos DB for MongoDB.

Le magasin analytique reçoit des données JSON du magasin opérationnel et les organise dans une structure basée sur des colonnes. Dans un schéma bien défini, la première occurrence non null d’un champ JSON détermine le type de données de ce champ. Les occurrences suivantes du champ qui ne sont pas compatibles avec le type de données attribué ne sont pas ingérées dans le magasin analytique.

Considérez par exemple les deux documents JSON suivants :

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

Le premier document détermine que le champ productID est une valeur numérique (entier). Lorsque le deuxième document est trouvé, son champ productID a une valeur de chaîne et n’est donc pas importé dans le magasin analytique. Le document et le reste de son champ sont importés, mais le champ incompatible est supprimé. Les colonnes suivantes représentent les données dans le magasin analytique :

productID ProductName
123 Widget
Wotsit

Dans un schéma de fidélité totale, le type de données est ajouté à chaque instance du champ, avec de nouvelles colonnes créées si nécessaire. Cela permet au magasin analytique de contenir plusieurs occurrences d’un champ, chacune avec un type de données différent, comme indiqué dans le tableau suivant :

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

Notes

Pour plus d’informations, consultez Qu’est-ce que le magasin analytique d’Azure Cosmos DB ?

Activation de la prise en charge du magasin analytique dans un conteneur

Vous pouvez activer la prise en charge du magasin analytique lors de la création d’un conteneur ou pour un conteneur existant. Pour activer la prise en charge du magasin analytique, vous pouvez accéder au portail Azure, ou utiliser Azure CLI ou Azure PowerShell à partir d’une ligne de commande ou d’un script.

Utilisation du portail Azure

Pour activer la prise en charge du magasin analytique lors de la création d’un conteneur dans le portail Azure, sélectionnez l’option Activé pour Magasin analytique, comme illustré ici :

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

Vous pouvez également activer la prise en charge du magasin analytique pour un conteneur existant dans la page Azure Synapse Link dans la section Intégrations de la page de votre compte Cosmos DB, comme illustré ici :

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.

Utilisation de l’interface de ligne de commande Azure (CLI)

Pour utiliser Azure CLI pour activer la prise en charge du magasin analytique dans un conteneur Azure Cosmos DB for NoSQL, exécutez la commande az cosmosdb sql container create (pour créer un conteneur) ou az cosmosdb sql container update (pour configurer un conteneur existant) avec le paramètre --analytical-storage-ttl, en affectant une durée de rétention pour les données analytiques. La spécification d’un paramètre -analytical-storage-ttl de -1 permet une conservation permanente des données analytiques. Par exemple, la commande suivante crée un conteneur nommé my-container avec prise en charge du magasin analytique.

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

Pour un compte Azure Cosmos DB pour MongoDB, vous pouvez utiliser la commande ou az cosmosdb mongodb collection create ou az cosmosdb mongodb collection update avec le paramètre --analytical-storage-ttl. Pour un compte Azure Cosmos DB for Apache Gremlin, utilisez la commande az cosmosdb gremlin graph create ou az cosmosdb gremlin graph update avec le paramètre --analytical-storage-ttl.

Utilisation de Microsoft Azure PowerShell

Pour utiliser Azure PowerShell pour activer la prise en charge du magasin analytique dans un conteneur Azure Cosmos DB for NoSQL, exécutez la cmdlet New-AzCosmosDBSqlContainer (pour créer un conteneur) ou Update-AzCosmosDBSqlContainer (pour configurer un conteneur existant) avec le paramètre -AnalyticalStorageTtl, en affectant une durée de rétention pour les données analytiques. La spécification d’un paramètre -AnalyticalStorageTtl de -1 permet une conservation permanente des données analytiques. Par exemple, la commande suivante crée un conteneur nommé my-container avec prise en charge du magasin analytique.

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

Pour un compte d’API Azure Cosmos DB for MongoDB, utilisez la cmdlet New-AzCosmosDBMongoDBCollection ou Update-AzCosmosDBMongoDBCollection avec le paramètre -AnalyticalStorageTtl.

Considérations relatives à l’activation de la prise en charge du magasin analytique

La prise en charge du magasin analytique ne peut pas être désactivée sans supprimer le conteneur. Si vous définissez la valeur de la durée de vie du magasin analytique sur 0 ou sur null, vous désactivez effectivement le magasin analytique en arrêtant de synchroniser les nouveaux éléments entre lui et le magasin opérationnel et en supprimant les éléments déjà synchronisés à partir du magasin analytique. Après avoir défini cette valeur sur 0, vous ne pouvez pas réactiver la prise en charge du magasin analytique dans le conteneur.