Share via


Verzameling maken

Met de Create Collection bewerking wordt een nieuwe verzameling in een database gemaakt.

Notitie

Deze API-referentieartikelen laten zien hoe u resources maakt met behulp van de Azure Cosmos DB-gegevensvlak-API. Met de gegevensvlak-API kunt u basisopties configureren, zoals indexeringsbeleid en partitiesleutels, net als met Cosmos DB SDK's. Als u volledige functieondersteuning nodig hebt voor alle Azure Cosmos DB-resources, raden we u aan de Cosmos DB-resourceprovider te gebruiken.

Aanvraag

Methode Aanvraag-URI Beschrijving
POST https://{databaseaccount}.documents.azure.com/dbs/{db-id}/colls {databaseaccount} is de naam van het Azure Cosmos DB-account dat is gemaakt onder uw abonnement. {db-id} kan de id of de _rid waarde voor de database zijn.

Kopteksten

Zie Algemene Azure Cosmos DB REST-aanvraagheaders voor headers die worden gebruikt door alle Azure Cosmos DB-aanvragen.

Bij het samenstellen van de gehashte handtekening voor het hoofdsleuteltoken moet het ResourceType 'colls' zijn. De ResourceId moet zijn dbs/{db-id}, waarbij {db-id} de id of de _rid waarde van de database kan zijn.

Eigenschap Vereist Type Beschrijving
x-ms-offer-throughput Optioneel Aantal De gebruiker heeft handmatige doorvoer (RU/s) opgegeven voor de verzameling, uitgedrukt in eenheden van 100 aanvraageenheden per seconde. Het minimum is 400 tot 1.000.000 (of hoger door een verhoging van de limiet aan te vragen).

Er moet slechts één van x-ms-offer-throughput of x-ms-cosmos-offer-autopilot-settings worden opgegeven. Deze headers kunnen niet samen worden opgegeven.
x-ms-cosmos-offer-autopilot-settings Optioneel JSON De gebruiker heeft het maximum aantal RU/s voor automatisch schalen opgegeven. De waarde is een JSON met de eigenschap maxThroughput. Bijvoorbeeld: {"maxThroughput": 4000}.

Er moet slechts één van x-ms-offer-throughput of x-ms-cosmos-offer-autopilot-settings worden opgegeven. Deze headers kunnen niet samen worden opgegeven.

Wanneer automatische schaalaanpassing wordt gebruikt, is een partitionKey-definitie vereist.
x-ms-offer-type Optioneel Tekenreeks Dit is een verouderde header voor vooraf gedefinieerde prestatieniveaus S1, S2 en S3 die buiten gebruik zijn gesteld. Het wordt aanbevolen om handmatige doorvoer of automatische schaalaanpassing te gebruiken, zoals hierboven wordt beschreven.

Hoofdtekst

Eigenschap Vereist Type Beschrijving
id Vereist Tekenreeks De door de gebruiker gegenereerde unieke naam voor de verzameling. Geen twee verzamelingen kunnen dezelfde id's hebben. Het is een tekenreeks die niet meer dan 255 tekens mag bevatten.
indexingPolicy Optioneel Object Deze waarde wordt gebruikt om het indexeringsbeleid te configureren. Standaard wordt de indexering automatisch uitgevoerd voor alle documentpaden binnen de verzameling.
partitionKey Vereist Object Deze waarde wordt gebruikt om de partitiesleutel te configureren die moet worden gebruikt voor het partitioneren van gegevens in meerdere partities.

Als u een grote partitiesleutel wilt gebruiken, geeft u versie 2 op in de eigenschap partitionKey.

Als de REST API-versie 2018-12-31 of hoger is, moet de verzameling een partitionKey-definitie bevatten. In versies ouder dan 2018-12-31 kan een verouderde niet-gepartitioneerde verzameling met handmatige doorvoer worden gemaakt door de definitie partitionKey weg te laten en ervoor te zorgen dat de doorvoer tussen 400 - 10.000 RU/s ligt. Voor de beste prestaties en schaalbaarheid is het raadzaam om altijd een partitiesleutel in te stellen.

Meer informatie over het kiezen van een goede partitiesleutel.

Voorbeeld van nettolading van hoofdtekst

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

  }  
}  
  

Antwoord

Verzameling maken retourneert de gemaakte verzameling als antwoordtekst.

Kopteksten

Zie Algemene Azure Cosmos DB REST-antwoordheaders voor headers die worden geretourneerd door alle Azure Cosmos DB-antwoorden.

Statuscodes

De volgende tabel bevat algemene statuscodes die door deze bewerking worden geretourneerd. Zie HTTP-statuscodes voor een volledige lijst met statuscodes.

HTTP-statuscode Beschrijving
201 Gemaakt De bewerking is geslaagd.
400 Ongeldige aanvraag De JSON-hoofdtekst is ongeldig. Controleer of er accolades of aanhalingstekens ontbreken.
409 Conflict De id die voor de nieuwe verzameling is opgegeven, is overgenomen door een bestaande verzameling.
404 met de substatuscode 1013 De bewerking voor het maken van de verzameling wordt nog uitgevoerd.

Als er een time-outuitzondering optreedt bij het maken van een verzameling, voert u een leesbewerking uit om te controleren of de verzameling is gemaakt. De leesbewerking genereert een uitzondering totdat het maken van de verzameling is voltooid. Als de leesbewerking een uitzondering genereert met statuscode 404 en substatuscode 1013, betekent dit dat de bewerking voor het maken van de verzameling nog steeds wordt uitgevoerd. Voer de leesbewerking opnieuw uit totdat u 200- of 201-statuscodes krijgt. Deze codes laten u weten dat de verzameling is gemaakt.

Hoofdtekst

Eigenschap Beschrijving
id Het is de unieke naam die de nieuwe verzameling aangeeft.
_Ontdoen Het is een door het systeem gegenereerde eigenschap. De resource-id (_rid) is een unieke id die ook hiërarchisch is voor de resourcestack van het resourcemodel. Deze wordt intern gebruikt voor de plaatsing en navigatie van de machtigingsresource.
_Ts Het is een door het systeem gegenereerde eigenschap. Hiermee geeft u de laatst bijgewerkte tijdstempel van de resource op. De waarde is een tijdstempel.
_Zelf Het is een door het systeem gegenereerde eigenschap. Dit is de unieke adresseerbare URI voor de resource.
_etag Het is een door het systeem gegenereerde eigenschap die de resource-etag vertegenwoordigt die is vereist voor optimistisch gelijktijdigheidsbeheer.
_Doc Het is een door het systeem gegenereerde eigenschap die het adresseerbare pad van de documentresource aangeeft.
_sprocs Het is een door het systeem gegenereerde eigenschap die het adresseerbare pad van de resource opgeslagen procedures (sprocs) specificeert.
_Triggers Het is een door het systeem gegenereerde eigenschap die het adresseerbare pad van de triggers-resource aangeeft.
_udfs Het is een door het systeem gegenereerde eigenschap die het adresseerbare pad van de door de gebruiker gedefinieerde functiesresource (udfs) specificeert.
_Conflicten Het is een door het systeem gegenereerde eigenschap die het adresseerbare pad van de conflictresource aangeeft. Tijdens een bewerking op een resource in een verzameling kunnen gebruikers, als er een conflict optreedt, de conflicterende resources inspecteren door een GET uit te voeren op het conflicterende URI-pad.
indexingPolicy Dit zijn de indexeringsbeleidsinstellingen voor verzameling.
partitionKey Dit zijn de configuratie-instellingen voor partitionering voor verzameling.

Eigenschappen onder Opgenomen paden

Eigenschap Beschrijving
path Pad waarop het indexeringsgedrag van toepassing is. Indexpaden beginnen met de hoofdmap (/) en eindigen meestal met de jokertekenoperator vraagteken (?), wat aangeeft dat er meerdere mogelijke waarden zijn voor het voorvoegsel. Als u bijvoorbeeld SELECT * FROM Families F WAAR F.familyName = "Andersen" wilt gebruiken, moet u een indexpad voor /familyName/? in het indexbeleid van de verzameling.

Indexpaden kunnen ook de operator * met jokertekens gebruiken om het gedrag voor paden recursief op te geven onder het voorvoegsel. /payload/* kan bijvoorbeeld worden gebruikt om alles onder de nettoladingeigenschap uit te sluiten van indexering.
Datatype Dit is het gegevenstype waarop het indexeringsgedrag wordt toegepast. Dit kan tekenreeks, getal, punt, veelhoek of lijntekenreeks zijn. Booleaanse waarden en null-waarden worden automatisch geïndexeerd
Soort Het type index. Hash-indexen zijn handig voor gelijkheidsvergelijkingen, terwijl bereikindexen handig zijn voor gelijkheid, bereikvergelijkingen en sorteren. Ruimtelijke indexen zijn handig voor ruimtelijke query's.
Precisie De precisie van de index. Kan worden ingesteld op -1 voor maximale precisie of tussen 1-8 voor Getal en 1-100 voor Tekenreeks. Niet van toepassing op gegevenstypen Punt, Veelhoek en Lijntekenreeks .

Eigenschappen onder Uitgesloten paden

Eigenschap Beschrijving
path Pad dat is uitgesloten van indexering. Indexpaden beginnen met de hoofdmap (/) en eindigen meestal met de jokertekenoperator *. /payload/* kan bijvoorbeeld worden gebruikt om alles onder de nettoladingeigenschap uit te sluiten van indexering.

Eigenschappen onder Partitiesleutel

Eigenschap Beschrijving
Paden Een matrix met paden waarmee gegevens in de verzameling kunnen worden gepartitioneerd. Paden mogen geen jokerteken of slash bevatten. De JSON-eigenschap 'AccountNumber' is bijvoorbeeld opgegeven als '/AccountNumber'. De matrix mag slechts één waarde bevatten.
Soort Het algoritme dat wordt gebruikt voor partitionering. Alleen hash wordt ondersteund.
version Een optioneel veld, indien niet opgegeven, is de standaardwaarde 1. Als u de grote partitiesleutel wilt gebruiken, stelt u de versie in op 2. Zie het artikel Verzamelingen maken met grote partitiesleutels voor meer informatie over grote partitiesleutels.

Voorbeeld van antwoordtekst

{  
  "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/"  
}  
  

Voorbeeld 1

In het volgende voorbeeld wordt een verzameling gemaakt met een handmatige doorvoer van 400 RU/s. x-ms-offer-throughput header wordt gebruikt om de waarde voor doorvoer (RU/s) in te stellen. Het accepteert een getal met een minimumwaarde van 400 dat wordt verhoogd met eenheden van 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/"  
}  
  

Voorbeeld 2

In het volgende voorbeeld wordt een verzameling gemaakt met een maximale doorvoer voor automatische schaalaanpassing van 4000 RU/s (deze schaalt tussen 400 - 4000 RU/s). x-ms-cosmos-offer-autopilot-settings header wordt gebruikt om de maxThroughput waarde in te stellen. Dit is de waarde voor het maximum aantal RU/s voor automatisch schalen. Het accepteert een getal met een minimum van 4000 dat wordt verhoogd met eenheden van 1000. Wanneer automatische schaalaanpassing wordt gebruikt, is een definitie van een partitiesleutel vereist, zoals wordt weergegeven in het volgende voorbeeld:

Notitie

Als u automatische schaalaanpassing wilt inschakelen voor een bestaande database of verzameling, of wilt overschakelen van automatische schaalaanpassing naar handmatige doorvoer, raadpleegt u het artikel Een aanbieding vervangen.

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
  }  
}  
  

Zie ook