Partager via


Créer une collection

L’opération Create Collection crée une collection dans une base de données.

Notes

Ces articles de référence sur les API montrent comment créer des ressources à l’aide de l’API de plan de données Azure Cosmos DB. Avec l’API de plan de données, vous pouvez configurer des options de base telles que la stratégie d’indexation et les clés de partition, comme vous le pouvez avec les SDK Cosmos DB. Si vous avez besoin d’une prise en charge complète des fonctionnalités pour toutes les ressources Azure Cosmos DB, nous vous recommandons d’utiliser le fournisseur de ressources Cosmos DB.

Requête

Méthode URI de demande Description
POST https://{databaseaccount}.documents.azure.com/dbs/{db-id}/colls Le {databaseaccount} est le nom du compte Azure Cosmos DB créé sous votre abonnement. {db-id} peut être l’ID ou la valeur _rid de la base de données.

En-têtes

Consultez En-têtes de requête REST Azure Cosmos DB courants pour les en-têtes utilisés par toutes les requêtes Azure Cosmos DB.

Lors de la construction de la signature hachée pour le jeton de clé master, le ResourceType doit être « colls ». ResourceId doit être dbs/{db-id}, où {db-id} peut être l’ID ou la valeur _rid de la base de données.

Propriété Obligatoire Type Description
x-ms-offer-throughput Facultatif Number L’utilisateur a spécifié un débit manuel (RU/s) pour la collection exprimée en unités de 100 unités de requête par seconde. Le minimum est de 400 à 1 000 000 (ou plus en demandant une augmentation de la limite).

Un seul de x-ms-offer-throughput ou x-ms-cosmos-offer-autopilot-settings doit être spécifié. Ces en-têtes ne peuvent pas être spécifiés ensemble.
x-ms-cosmos-offer-autopilot-settings Facultatif JSON L’utilisateur a spécifié la mise à l’échelle automatique max RU/s. La valeur est un JSON avec la propriété maxThroughput. Par exemple : {"maxThroughput": 4000}.

Un seul de x-ms-offer-throughput ou x-ms-cosmos-offer-autopilot-settings doit être spécifié. Ces en-têtes ne peuvent pas être spécifiés ensemble.

Lorsque la mise à l’échelle automatique est utilisée, une définition partitionKey est requise.
x-ms-offer-type Facultatif String Il s’agit d’un en-tête hérité pour les niveaux de performances prédéfinis S1, S2 et S3 qui ont été supprimés. Il est recommandé d’utiliser le débit manuel ou de mise à l’échelle automatique, comme décrit ci-dessus.

body

Propriété Obligatoire Type Description
id Obligatoire String Nom unique généré par l’utilisateur pour la collection. Deux collections ne peuvent pas avoir les mêmes ID. Il s’agit d’une chaîne qui ne doit pas comporter plus de 255 caractères.
indexingPolicy Facultatif Object Cette valeur est utilisée pour configurer la stratégie d'indexation. Par défaut, l'indexation est automatique pour tous les chemins d'accès de documents dans la collection.
partitionKey Obligatoire Object Cette valeur est utilisée pour configurer la clé de partition à utiliser pour le partitionnement des données en plusieurs partitions.

Pour utiliser une clé de partition volumineuse, spécifiez la version 2 dans la propriété partitionKey.

Si la version de l’API REST est 2018-12-31 ou ultérieure, la collection doit inclure une définition partitionKey . Dans les versions antérieures à 2018-12-31, une collection héritée non partitionnée avec un débit manuel peut être créée en omettant la définition partitionKey et en veillant à ce que le débit se situe entre 400 et 10 000 RU/s. Pour optimiser les performances et la scalabilité, il est recommandé de toujours définir une clé de partition.

Découvrez comment choisir une bonne clé de partition.

Exemple de charge utile du corps

{  
  "id": "testcoll",  
  "indexingPolicy": {  
    "automatic": true,  
    "indexingMode": "Consistent",  
    "includedPaths": [  
      {  
        "path": "/*",  
        "indexes": [  
          {  
            "dataType": "String",  
            "precision": -1,  
            "kind": "Range"  
          }  
        ]  
      }  
    ]  
  },  
  "partitionKey": {  
    "paths": [  
      "/AccountNumber"  
    ],  
    "kind": "Hash",
     "Version": 2

  }  
}  
  

response

Create Collection retourne la collection créée sous la forme d’un corps de réponse.

En-têtes

Consultez En-têtes de réponse REST Azure Cosmos DB courants pour les en-têtes retournés par toutes les réponses Azure Cosmos DB.

Codes d’état

Le tableau suivant répertorie les codes d'état courants renvoyés par cette opération. Pour obtenir la liste complète des codes status, consultez Codes d’état HTTP.

Code d'état HTTP Description
201 Créé L'opération a réussi.
400 Demande incorrecte Le corps au format JSON n'est pas valide. Vérifiez qu'il ne manque pas d'accolades ou de guillemets.
409 Conflit L’ID fourni pour la nouvelle collection a été pris par une collection existante.
404 avec un code de sous-status de 1013 L’opération de création de collection est toujours en cours.

Si vous rencontrez une exception de délai d’expiration lors de la création d’une collection, exécutez une opération de lecture pour vérifier si la collection a été créée avec succès. L’opération de lecture lève une exception jusqu’à ce que l’opération de création de la collection aboutisse. Si l’opération de lecture lève une exception avec status code 404 et sous-status code 1013, cela signifie que l’opération de création de collection est toujours en cours. Réessayez l’opération de lecture jusqu’à ce que vous obteniez 200 ou 201 codes status, ces codes vous informent que la collection a été créée avec succès.

body

Propriété Description
id Il s’agit du nom unique qui identifie la nouvelle collection.
_Débarrasser Il s’agit d’une propriété générée par le système. L’ID de ressource (_rid) est un identificateur unique qui est également hiérarchique en fonction de la pile de ressources sur le modèle de ressource. Il est utilisé en interne pour le positionnement et la navigation dans la ressource d'autorisation.
_Ts Il s’agit d’une propriété générée par le système. Elle spécifie l'horodateur de la dernière mise à jour de la ressource. La valeur est un horodateur.
_self Il s’agit d’une propriété générée par le système. Il s'agit de l'URI adressable unique pour la ressource.
_Etag Il s’agit d’une propriété générée par le système qui représente l’etag de ressources requis pour le contrôle d’accès concurrentiel optimiste.
_Doc Il s’agit d’une propriété générée par le système qui spécifie le chemin d’accès adressable de la ressource documents.
_sprocs Il s’agit d’une propriété générée par le système qui spécifie le chemin d’accès adressable de la ressource de procédures stockées (sprocs).
_Déclenche Il s’agit d’une propriété générée par le système qui spécifie le chemin d’accès adressable de la ressource déclencheurs.
_Udf Il s’agit d’une propriété générée par le système qui spécifie le chemin d’accès adressable de la ressource de fonctions définies par l’utilisateur (udfs).
_Conflits Il s’agit d’une propriété générée par le système qui spécifie le chemin d’accès adressable de la ressource de conflits. Lors d'une opération sur une ressource au sein d'une collection, si un conflit se produit, les utilisateurs peuvent inspecter les ressources en conflit en exécutant une commande GET sur le chemin d'accès à l'URI des conflits.
indexingPolicy Il s’agit des paramètres de stratégie d’indexation pour la collection.
partitionKey Il s’agit des paramètres de configuration de partitionnement pour la collecte.

Propriétés sous Chemins inclus

Propriété Description
path Chemin auquel le comportement d’indexation s’applique. Les chemins d’index commencent par la racine (/) et se terminent généralement par l’opérateur générique de point d’interrogation (?), indiquant qu’il existe plusieurs valeurs possibles pour le préfixe. Par exemple, pour traiter SELECT * FROM Families F WHERE F.familyName = "Andersen", vous devez inclure un chemin d’index pour /familyName/? dans la stratégie d’index de la collection.

Les chemins d’index peuvent aussi utiliser l’opérateur générique * pour spécifier le comportement des chemins de manière récursive sous le préfixe. Par exemple, /payload/* permet d’exclure de l’indexation tout ce qui figure sous la propriété « payload ».
dataType Il s’agit du type de données auquel le comportement d’indexation est appliqué. Il peut s’agir de String, Number, Point, Polygon ou LineString. Les valeurs booléennes et null sont automatiquement indexées
kind Type de l'index. Les index de hachage sont utiles pour les comparaisons d’égalité, tandis que les index range sont utiles pour l’égalité, les comparaisons de plages et le tri. Les index spatiaux sont utiles pour les requêtes spatiales.
precision Précision de l’index. Peut être défini sur -1 pour une précision maximale ou entre 1 et 8 pour Nombre et 1-100 pour String. Non applicable aux types de données Point, Polygon etLineString .

Propriétés sous Chemins d’accès exclus

Propriété Description
path Chemin d’accès exclu de l’indexation. Les chemins d’index commencent par la racine (/) et se terminent généralement par l’opérateur générique * . Par exemple, /payload/* permet d’exclure de l’indexation tout ce qui figure sous la propriété « payload ».

Propriétés sous Clé de partition

Propriété Description
chemin d’accès Tableau de chemins d’accès à l’aide desquels les données de la collection peuvent être partitionnée. Les chemins ne doivent pas contenir de caractère générique ou de barre oblique de fin. Par exemple, la propriété JSON « AccountNumber » est spécifiée sous la forme « /AccountNumber ». Le tableau ne doit contenir qu’une seule valeur.
kind Algorithme utilisé pour le partitionnement. Seul le hachage est pris en charge.
version Champ facultatif, s’il n’est pas spécifié, la valeur par défaut est 1. Pour utiliser la clé de partition volumineuse, définissez la version sur 2. Pour en savoir plus sur les clés de partition volumineuses, consultez l’article création de collections avec une clé de partition volumineuse .

Exemple de corps de réponse

{  
  "id": "testcoll",  
  "indexingPolicy": {  
    "indexingMode": "consistent",  
    "automatic": true,  
    "includedPaths": [  
      {  
        "path": "/*",  
        "indexes": [  
          {  
            "kind": "Range",  
            "dataType": "String",  
            "precision": -1  
          },  
          {  
            "kind": "Range",  
            "dataType": "Number",  
            "precision": -1  
          }  
        ]  
      }  
    ],  
    "excludedPaths": []  
  },  
  "partitionKey": {  
    "paths": [  
      "/AccountNumber"  
    ],  
    "kind": "Hash",
    "Version": 2
  },  
  "_rid": "PD5DALigDgw=",  
  "_ts": 1459200611,  
  "_self": "dbs/PD5DAA==/colls/PD5DALigDgw=/",  
  "_etag": "\"00005900-0000-0000-0000-56f9a2630000\"",  
  "_docs": "docs/",  
  "_sprocs": "sprocs/",  
  "_triggers": "triggers/",  
  "_udfs": "udfs/",  
  "_conflicts": "conflicts/"  
}  
  

Exemple 1

L’exemple suivant crée une collection avec un débit manuel de 400 RU/s. x-ms-offer-throughput l’en-tête est utilisé pour définir la valeur de débit (RU/s). Il accepte un nombre avec une valeur minimale de 400 qui incrémente par unités de 100.

POST https://querydemo.documents.azure.com/dbs/testdb/colls HTTP/1.1  
x-ms-offer-throughput: 400  
x-ms.date: 04/20/2021
authorization: type%3dmaster%26ver%3d1.0%26sig%3dpDOKhfllik0BJijp5apzqHL%2bjtoFhsvdhAGE5F8%2bOiE%3d  
Cache-Control: no-cache  
User-Agent: contoso/1.0  
x-ms-version: 2015-12-16  
Accept: application/json  
Host: querydemo.documents.azure.com  
Content-Length: 235  
Expect: 100-continue  
  
{  
  "id": "testcoll",  
  "indexingPolicy": {  
    "automatic": true,  
    "indexingMode": "Consistent",  
    "includedPaths": [  
      {  
        "path": "/*",  
        "indexes": [  
          {  
            "dataType": "String",  
            "precision": -1,  
            "kind": "Range"  
          }  
        ]  
      }  
    ]  
  },  
  "partitionKey": {  
    "paths": [  
      "/AccountNumber"  
    ],  
    "kind": "Hash",
    "Version": 2
  }  
}  
  
HTTP/1.1 201 Created  
Cache-Control: no-store, no-cache  
Pragma: no-cache  
Transfer-Encoding: chunked  
Content-Type: application/json  
Server: Microsoft-HTTPAPI/2.0  
Strict-Transport-Security: max-age=31536000  
x-ms-last-state-change-utc: Mon, 28 Mar 2016 20:00:12.142 GMT  
etag: "00005900-0000-0000-0000-56f9a2630000"  
collection-partition-index: 0  
collection-service-index: 24  
x-ms-schemaversion: 1.1  
x-ms-alt-content-path: dbs/testdb  
x-ms-quorum-acked-lsn: 9  
x-ms-current-write-quorum: 3  
x-ms-current-replica-set-size: 4  
x-ms-request-charge: 4.95  
x-ms-serviceversion: version=1.6.52.5  
x-ms-activity-id: 05d0a3b5-4504-446a-96f4-bef3a3408595  
x-ms-session-token: 0:10  
Set-Cookie: x-ms-session-token#0=10; Domain=querydemo.documents.azure.com; Path=/dbs/PD5DAA==/colls/PD5DALigDgw=  
Set-Cookie: x-ms-session-token=10; Domain=querydemo.documents.azure.com; Path=/dbs/PD5DAA==/colls/PD5DALigDgw=  
x-ms-gatewayversion: version=1.6.52.5  
Date: Mon, 28 Mar 2016 21:30:12 GMT  
  
{  
  "id": "testcoll",  
  "indexingPolicy": {  
    "indexingMode": "consistent",  
    "automatic": true,  
    "includedPaths": [  
      {  
        "path": "/*",  
        "indexes": [  
          {  
            "kind": "Range",  
            "dataType": "String",  
            "precision": -1  
          },  
          {  
            "kind": "Range",  
            "dataType": "Number",  
            "precision": -1  
          }  
        ]  
      }  
    ],  
    "excludedPaths": []  
  },  
  "partitionKey": {  
    "paths": [  
      "/AccountNumber"  
    ],  
    "kind": "Hash"  
  },  
  "_rid": "PD5DALigDgw=",  
  "_ts": 1459200611,  
  "_self": "dbs/PD5DAA==/colls/PD5DALigDgw=/",  
  "_etag": "\"00005900-0000-0000-0000-56f9a2630000\"",  
  "_docs": "docs/",  
  "_sprocs": "sprocs/",  
  "_triggers": "triggers/",  
  "_udfs": "udfs/",  
  "_conflicts": "conflicts/"  
}  
  

Exemple 2

L’exemple suivant crée une collection avec un débit maximal de mise à l’échelle automatique de 4 000 RU/s (elle est mise à l’échelle entre 400 et 4 000 RU/s). x-ms-cosmos-offer-autopilot-settings l’en-tête est utilisé pour définir la maxThroughput valeur, qui est la valeur maximale ru/s de mise à l’échelle automatique. Il accepte un nombre avec un minimum de 4 000 qui incrémente par unités de 1000. Lorsque la mise à l’échelle automatique est utilisée, une définition de clé de partition est requise, comme illustré dans l’exemple suivant :

Notes

Pour activer la mise à l’échelle automatique sur une base de données ou une collection existante, ou passer de la mise à l’échelle automatique au débit manuel, consultez l’article Remplacer une offre.

POST https://querydemo.documents.azure.com/dbs/testdb/colls HTTP/1.1
x-ms-cosmos-offer-autopilot-settings: {"maxThroughput": 4000}
x-ms-date: Wed, 22 Jul 2020 22:17:39 GMT
authorization: type%3dmaster%26ver%3d1.0%26sig%3dpDOKhfllik0BJijp5apzqHL%2bjtoFhsvdhAGE5F8%2bOiE%3d
Cache-Control: no-cache  
User-Agent: contoso/1.0
x-ms-version: 2018-12-31
Accept: application/json  
Host: querydemo.documents.azure.com  
Content-Length: 235  
Expect: 100-continue  
  
{  
  "id": "testcoll",  
  "indexingPolicy": {  
    "automatic": true,  
    "indexingMode": "Consistent",  
    "includedPaths": [  
      {  
        "path": "/*",  
        "indexes": [  
          {  
            "dataType": "String",  
            "precision": -1,  
            "kind": "Range"  
          }  
        ]  
      }  
    ]  
  },  
  "partitionKey": {  
    "paths": [  
      "/AccountNumber"  
    ],  
    "kind": "Hash",
    "Version": 2
  }  
}  
  

Voir aussi