Auflistung erstellen
Der Create Collection
Vorgang erstellt eine neue Auflistung in einer Datenbank.
Hinweis
In diesen API-Referenzartikeln wird gezeigt, wie Ressourcen mithilfe der Azure Cosmos DB-Datenebenen-API erstellt werden. Mit der Datenebenen-API können Sie grundlegende Optionen wie Indizierungsrichtlinie und Partitionsschlüssel wie bei Cosmos DB SDKs konfigurieren. Wenn Sie vollständige Featureunterstützung für alle Azure Cosmos DB-Ressourcen benötigen, empfiehlt es sich, den Cosmos DB-Ressourcenanbieter zu verwenden.
Anforderung
Methode | Anforderungs-URI | BESCHREIBUNG |
---|---|---|
POST | https://{databaseaccount}.documents.azure.com/dbs/{db-id}/colls | {databaseaccount} ist der Name des Azure Cosmos DB-Kontos, das unter Ihrem Abonnement erstellt wurde. {db-id} kann entweder die ID oder der _rid Wert für die Datenbank sein. |
Header
Informationen zu Headern, die von allen Azure Cosmos DB-Anforderungen verwendet werden, finden Sie unter Allgemeine Azure Cosmos DB-REST-Anforderungsheader .
Beim Erstellen der Hashsignatur für das master Schlüsseltokens sollte der ResourceType "colls" sein. Die ResourceId sollte sein dbs/{db-id}
, wobei {db-id} entweder die ID oder der _rid Wert der Datenbank sein kann.
Eigenschaft | Erforderlich | type | BESCHREIBUNG |
---|---|---|---|
x-ms-offer-throughput | Optional | Number | Der vom Benutzer angegebene manuelle Durchsatz (RU/s) für die Sammlung, ausgedrückt in Einheiten von 100 Anforderungseinheiten pro Sekunde. Das Minimum beträgt 400 bis 1.000.000 (oder höher durch Anfordern einer Grenzwerterhöhung). Es muss nur einer von x-ms-offer-throughput oder x-ms-cosmos-offer-autopilot-settings angegeben werden. Diese Header können nicht zusammen angegeben werden. |
x-ms-cosmos-offer-autopilot-settings | Optional | JSON | Der vom Benutzer angegebene automatische Skalierung max. RU/s. Der Wert ist ein JSON-Code mit der Eigenschaft maxThroughput . Beispiel: {"maxThroughput": 4000} .Es muss nur einer von x-ms-offer-throughput oder x-ms-cosmos-offer-autopilot-settings angegeben werden. Diese Header können nicht zusammen angegeben werden. Wenn die automatische Skalierung verwendet wird, ist eine partitionKey-Definition erforderlich. |
x-ms-offer-type | Optional | String | Hierbei handelt es sich um einen Legacyheader für vordefinierte Leistungsstufen S1, S2 und S3, die eingestellt wurden. Es wird empfohlen, entweder den manuellen Durchsatz oder den automatischen Skalierungsdurchsatz zu verwenden, wie oben beschrieben. |
Body
Eigenschaft | Erforderlich | type | BESCHREIBUNG |
---|---|---|---|
id | Erforderlich | String | Der vom Benutzer generierte eindeutige Name für die Sammlung. Keine zwei Sammlungen können dieselben IDs aufweisen. Es ist eine Zeichenfolge, die nicht mehr als 255 Zeichen sein darf. |
indexingPolicy | Optional | Object | Dieser Wert wird zur Konfigurierung der Indizierungsrichtlinie verwendet. Die Indizierung erfolgt standardmäßig automatisch für alle Dokumentenpfade innerhalb der Auflistung. |
partitionKey | Erforderlich | Object | Dieser Wert wird verwendet, um den Partitionsschlüssel für die Partitionierung von Daten in mehrere Partitionen zu konfigurieren. Um einen großen Partitionsschlüssel zu verwenden, geben Sie die Version 2 in der partitionKey-Eigenschaft an. Wenn die REST-API-Version 2018-12-31 oder höher ist, muss die Auflistung eine partitionKey-Definition enthalten. In Versionen, die älter als 2018-12-31 sind, kann eine nicht partitionierte Legacysammlung mit manuellem Durchsatz erstellt werden, indem die partitionKey-Definition weggelassen und sichergestellt wird, dass der Durchsatz zwischen 400 und 10.000 RU/s liegt. Um eine optimale Leistung und Skalierbarkeit zu erzielen, wird empfohlen, immer einen Partitionsschlüssel festzulegen. Erfahren Sie, wie Sie einen guten Partitionsschlüssel auswählen. |
Beispielnutzlast für den Text
{
"id": "testcoll",
"indexingPolicy": {
"automatic": true,
"indexingMode": "Consistent",
"includedPaths": [
{
"path": "/*",
"indexes": [
{
"dataType": "String",
"precision": -1,
"kind": "Range"
}
]
}
]
},
"partitionKey": {
"paths": [
"/AccountNumber"
],
"kind": "Hash",
"Version": 2
}
}
Antwort
Create Collection gibt die erstellte Auflistung als Antworttext zurück.
Header
Informationen zu Headern, die von allen Azure Cosmos DB-Antworten zurückgegeben werden, finden Sie unter Allgemeine Azure Cosmos DB-REST-Antwortheader .
Statuscodes
In der folgenden Tabelle sind die allgemeinen Statuscodes aufgeführt, die von diesem Vorgang zurückgegeben werden. Eine vollständige Liste der status Codes finden Sie unter HTTP-Statuscodes.
HTTP-Statuscode | BESCHREIBUNG |
---|---|
201 – Erstellt | Der Vorgang wurde durchgeführt. |
400 – Ungültige Anforderung | Der JSON-Text ist ungültig. Überprüfen Sie, ob geschweifte Klammern oder Anführungszeichen fehlen. |
409 – Konflikt | Die für die neue Sammlung bereitgestellte ID wurde von einer vorhandenen Sammlung übernommen. |
404 mit einem Unter-status Code von 1013 | Der Vorgang zum Erstellen der Sammlung wird noch ausgeführt. |
Wenn beim Erstellen einer Sammlung eine Timeoutausnahme auftritt, führen Sie einen Lesevorgang aus, um zu überprüfen, ob die Sammlung erfolgreich erstellt wurde. Der Lesevorgang gibt eine Ausnahme zurück, bis der Vorgang zum Erstellen der Sammlung erfolgreich war. Wenn der Lesevorgang eine Ausnahme mit status Code 404 und unter status Code 1013 auslöst, bedeutet dies, dass der Vorgang zum Erstellen der Sammlung noch ausgeführt wird. Wiederholen Sie den Lesevorgang, bis Sie 200- oder 201-status-Codes erhalten. Diese Codes informieren Sie darüber, dass die Sammlung erfolgreich erstellt wurde.
Body
Eigenschaft | BESCHREIBUNG |
---|---|
id | Es ist der eindeutige Name, der die neue Sammlung identifiziert. |
_los | Es handelt sich um eine vom System generierte Eigenschaft. Die Ressourcen-ID (_rid) ist ein eindeutiger Bezeichner, der auch gemäß dem Ressourcenstapel für das Ressourcenmodell hierarchisch ist. Sie wird intern für die Platzierung und Navigation der Berechtigungsressource verwendet. |
_Ts | Es handelt sich um eine vom System generierte Eigenschaft. Sie gibt den zuletzt aktualisierten Zeitstempel der Ressource an. Der Wert ist ein Zeitstempel. |
_Selbst | Es handelt sich um eine vom System generierte Eigenschaft. Es handelt sich um den eindeutigen, adressierbaren URI für die Ressource. |
_Etag | Es handelt sich um eine vom System generierte Eigenschaft, die das Ressourcen-Etag darstellt, das für die Steuerung der optimistischen Parallelität erforderlich ist. |
_Doc | Es handelt sich um eine vom System generierte Eigenschaft, die den adressierbaren Pfad der Dokumentressource angibt. |
_sprocs | Es handelt sich um eine vom System generierte Eigenschaft, die den adressierbaren Pfad der Ressource gespeicherte Prozeduren (Sprocs) angibt. |
_Trigger | Es handelt sich um eine vom System generierte Eigenschaft, die den adressierbaren Pfad der Triggerressource angibt. |
_Udfs | Es handelt sich um eine vom System generierte Eigenschaft, die den adressierbaren Pfad der benutzerdefinierten Funktionsressource (udfs) angibt. |
_Konflikte | Es handelt sich um eine vom System generierte Eigenschaft, die den adressierbaren Pfad der Konfliktressource angibt. Wenn während eines Vorgangs für eine Ressource in einer Auflistung ein Konflikt auftritt, können Benutzer Ressourcen überprüfen, die einen Konflikt verursachen, indem sie einen GET-Aufruf für den URI-Pfad des Konflikts ausführen. |
indexingPolicy | Dies sind die Indizierungsrichtlinieneinstellungen für die Sammlung. |
partitionKey | Dies sind die Partitionierungskonfigurationseinstellungen für die Sammlung. |
Eigenschaften unter Eingeschlossene Pfade
Eigenschaft | BESCHREIBUNG |
---|---|
path | Pfad, für den das Indizierungsverhalten gilt. Indexpfade beginnen mit dem Stamm (/) und enden in der Regel mit dem Fragezeichen-Operator (?), der angibt, dass es mehrere mögliche Werte für das Präfix gibt. Für SELECT * FROM Families F WHERE F.familyName = "Andersen" müssen Sie z. B. einen Indexpfad für /familyName/? in der Indexrichtlinie der Sammlung. Indexpfade können auch das Platzhalterzeichen * verwenden, um das Verhalten für Pfade rekursiv unter dem Präfix anzugeben. Beispielsweise kann „/payload/*“ dazu verwendet werden, um sämtliche Elemente unter der payload-Eigenschaft von der Indizierung auszuschließen. |
dataType | Dies ist der Datentyp, auf den das Indizierungsverhalten angewendet wird. Kann String, Number, Point, Polygon oder LineString sein. Booleane und NULL-Werte werden automatisch indiziert |
kind | Der Indextyp. Hashindizes sind für Gleichheitsvergleiche nützlich, während Bereichsindizes für Gleichheit, Bereichsvergleiche und Sortierung nützlich sind. Räumliche Indizes sind für räumliche Abfragen nützlich. |
precision | Die Genauigkeit des Indexes. Kann entweder auf -1 für maximale Genauigkeit oder zwischen 1-8 für Zahl und 1-100 für String festgelegt werden. Gilt nicht für dieDatentypen Point, Polygon und LineString . |
Eigenschaften unter Ausgeschlossene Pfade
Eigenschaft | BESCHREIBUNG |
---|---|
path | Pfad, der von der Indizierung ausgeschlossen ist. Indexpfade beginnen mit dem Stamm (/) und enden in der Regel mit dem Platzhalteroperator *. Beispielsweise kann „/payload/*“ dazu verwendet werden, um sämtliche Elemente unter der payload-Eigenschaft von der Indizierung auszuschließen. |
Eigenschaften unter Partitionsschlüssel
Eigenschaft | BESCHREIBUNG |
---|---|
Pfade | Ein Array von Pfaden, mit denen Daten innerhalb der Sammlung partitioniert werden können. Pfade dürfen keinen Wildcard oder einen nachgestellten Schrägstrich enthalten. Beispielsweise wird die JSON-Eigenschaft "AccountNumber" als "/AccountNumber" angegeben. Das Array darf nur einen einzelnen Wert enthalten. |
kind | Der algorithmus, der für die Partitionierung verwendet wird. Nur Hash wird unterstützt. |
version | Ein optionales Feld, wenn der Standardwert nicht angegeben ist, ist 1. Um den großen Partitionsschlüssel zu verwenden, legen Sie die Version auf 2 fest. Informationen zu großen Partitionsschlüsseln finden Sie im Artikel Erstellen von Sammlungen mit großen Partitionsschlüsseln . |
Beispielantworttext
{
"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/"
}
Beispiel 1
Im folgenden Beispiel wird eine Auflistung mit einem manuellen Durchsatz von 400 RU/s erstellt.
x-ms-offer-throughput
header wird verwendet, um den Durchsatzwert (RU/s) festzulegen. Sie akzeptiert eine Zahl mit dem Mindestwert 400, die um Einheiten von 100 erhöht wird.
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/"
}
Beispiel 2
Im folgenden Beispiel wird eine Auflistung mit einem automatisch skaliertem maximalen Durchsatz von 4000 RU/s erstellt (sie wird zwischen 400 und 4000 RU/s skaliert).
x-ms-cosmos-offer-autopilot-settings
header wird verwendet, um den maxThroughput
Wert festzulegen, bei dem es sich um den wert für die automatische Skalierung von max RU/s handelt. Sie akzeptiert eine Zahl mit mindestens 4000, die um Einheiten von 1000 erhöht wird. Wenn die automatische Skalierung verwendet wird, ist eine Partitionsschlüsseldefinition erforderlich, wie im folgenden Beispiel gezeigt:
Hinweis
Informationen zum Aktivieren der automatischen Skalierung für eine vorhandene Datenbank oder Sammlung oder zum Wechsel von der automatischen Skalierung zum manuellen Durchsatz finden Sie im Artikel Ersetzen eines Angebots.
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
}
}