Erstellen einer Cosmos DB-Instanz
In dieser Lerneinheit erfahren Sie mehr über Azure Cosmos DB und wie damit Daten organisiert werden. Es wird gezeigt, wie Sie Azure Cosmos DB-Datenbanken und -Container mit Visual Studio Code erstellen und verwalten.
Was ist Azure Cosmos DB?
Azure Cosmos DB ist ein Clouddienst, der Dokumentdatenbanken implementiert. Die Daten in einem Dokument müssen der JSON-Syntax entsprechen. Ein JSON-Dokument kann Eigenschaften, Unterdokumente und Arrays von Dokumenten enthalten.
{
"id": "08225A9E-F2B3-4FA3-AB08-8C70ADD6C3C2",
"partitionKey": "Bikes",
"name": "Touring-1000 Blue, 50",
"description": "The product called \"Touring-1000 Blue, 50\"",
"price": 2384.0700000000002,
"inventory": [
{ "location": "Dallas", "inventory": 96 },
{ "location": "Seattle", "inventory": 85 }
]
}
Im Gegensatz zu einer Tabelle in einer relationalen Datenbank entsprechen die Dokumente in einer Azure Cosmos DB-Instanz keinem vordefinierten Schema. Dadurch können in der Datenbank verschiedene Dokumente mit unterschiedlichen Formen und Größen gespeichert werden. Beispielsweise können Sie in derselben Datenbank unterschiedliche Informationen zu verschiedenen Kunden speichern. Sie können z. B. für einen Kunden einen kompletten Adressverlauf als Array aufzeichnen. Sie können zusätzliche Informationen aufzeichnen, z. B. die Kreditwürdigkeit des Kunden.
Der Azure Cosmos DB-Clouddienst ist hierarchisch organisiert. Ganz oben befindet sich ein Azure Cosmos DB-Konto (Ihre Ressource). Das Azure Cosmos DB-Konto ist das Sicherheitselement für eine Gruppe von Datenbanken. Das Azure Cosmos DB-Konto gibt den Speicherort der Datenbanken und die Sicherheitsinformationen an, die für den Zugriff auf diese Datenbanken erforderlich sind. Sie erstellen in einem Konto eine oder mehrere Datenbanken. Sie erstellen in jeder Datenbank einen oder mehrere Container. Dokumente werden in Containern gespeichert.
Cosmos DB-Container und Partitionsschlüssel
Jeder Container besteht aus mehreren Partitionen. Partitionen entsprechen ungefähr den physischen Dateien auf dem Datenträger. Für eine große Partition kann eine eigene Datei verwendet werden, mehrere kleine Partitionen können jedoch in einer einzigen Datei zusammengefasst werden. Jedes Dokument verfügt über einen Partitionsschlüssel, der die Partition definiert, zu der er gehört. Die Partitionierung ermöglicht es, verwandte Dokumente zusammen zu speichern und den Zugriff auf die Daten zu optimieren.
Im folgenden Beispiel wird ein JSON-Dokument gezeigt, in dem im Rahmen der Contoso-Anwendung Produktinformationen gespeichert werden. Da diese Daten aus einem anderen System stammen, sind die IDs bereits als GUIDs konfiguriert. In Ihrem eigenen Container können Sie Ihre ID einbringen oder Cosmos DB deren Bereitstellung gestatten. Wenn Sie ein neues Dokument einfügen, müssen Sie die ID und den Partitionsschlüssel angeben (falls Sie Partitionsschlüssel verwenden).
{
"id": "08225A9E-F2B3-4FA3-AB08-8C70ADD6C3C2",
"categoryName": "Bikes, Touring Bikes",
"sku": "BK-T79U-50",
"name": "Touring-1000 Blue, 50",
"description": "The product called \"Touring-1000 Blue, 50\"",
"price": 2384.0700000000002,
"tags": [
{
"_id": "27B7F8D5-1009-45B8-88F5-41008A0F0393",
"name": "Tag-61"
}
],
"inventory": [
{ "location": "Dallas", "inventory": 96 },
{ "location": "Seattle", "inventory": 85 },
{ "location": "Boston", "inventory": 4 },
{ "location": "Miami", "inventory": 12 },
{ "location": "San Diego", "inventory": 58 }
]
}
Das Unternehmen Contoso hat beschlossen, den Kategorienamen (categoryName) als Partitionsschlüssel zu verwenden, da dies eine einigermaßen gleichmäßige Verteilung von Dokumenten im Container ermöglicht. Das Partitionsschlüsselfeld für den Container wird bei dessen Erstellung festgelegt. Für jedes neue Dokument, das in den Container eingefügt wird, ist der Partitionsschlüssel als Teil des JSON-Dokuments enthalten. Im Beispiel oben sind die Mindestanforderungen für ein korrekt gebildetes Dokument die eindeutige ID und der Partitionsschlüssel, id
und categoryName
. Wenn Sie ein Dataset aus einem anderen System einbringen und dessen eindeutige ID beibehalten möchten, um eine Verbindung mit anderen Systemen herzustellen, können Sie das Feld id
verwenden oder Cosmos DB das Erstellen einer neuen eindeutigen id
gestatten. Ihre ID könnte dann in einem separaten Eigenschaftsnamen gespeichert werden.
Hinweis
Azure Cosmos DB fügt Ihren Dokumenten einige eigene Felder hinzu. Viele dieser Felder werden für interne Zwecke verwendet, und in den meisten Fällen sollten Sie sie nicht direkt ändern. Die Ausnahme ist ein Feld namens id. Azure Cosmos DB verwendet dieses Feld zum Identifizieren des Dokuments in der Datenbank, und jedes Dokument muss über eine eindeutige id verfügen.
Kosten des Azure Cosmos DB-Durchsatzes
Azure Cosmos DB verwaltet die Leistung und Abrechnung von Datenbanken mithilfe von Anforderungseinheiten pro Sekunde (RU/s). Diese Maßeinheit stellt die zugrunde liegenden physischen Ressourcen dar, die zum Erbringen der erforderlichen Leistung bereitgestellt werden müssen. Wenn Sie eine Datenbank oder einen Container erstellen, geben Sie die Anzahl der zuzuweisenden RU/s an. Es fallen entsprechende Gebühren an.
Die Kosten für einen Punktlesevorgang (das Abrufen eines einzelnen Elements anhand seiner ID und seines Partitionsschlüsselwerts) für ein Element von 1 KB betragen 1 Anforderungseinheit (oder 1 RU). Allen anderen Datenbankvorgängen werden analog dazu ebenfalls Kosten in RUs zugewiesen. Unabhängig davon, welche API Sie für die Interaktion mit Ihrem Azure Cosmos DB-Container verwenden, werden die Kosten immer in RUs gemessen. Unabhängig davon, ob es sich bei dem Datenbankvorgang um einen Schreib-, Lese- oder Abfragevorgang handelt, werden die Kosten immer in RUs gemessen.
Wenn Sie 400 RUs/Sek. bereitstellen und eine Abfrage im Wert von 40 RUs ausgeben, können 10 solcher Abfragen pro Sekunde ausgegeben werden. Jede Anforderung, die darüber hinausgeht, wird ratenbegrenzt (d. h. sie überschreitet das Limit der Ratenbegrenzung und wird nicht ausgeführt). Sie müssen die Anforderung wiederholen. Beim Einsatz von Clienttreibern unterstützen diese die automatische Wiederholungslogik.
Um Ihre RU/s so gering wie möglich zu halten, sollten Sie Folgendes beachten:
Object | Überlegungen |
---|---|
Dokumentgröße | Ein größeres Dokument in KBs erhöht die Anzahl von RUs. |
Dokumentindizierung | Eine leistungsfähige Indizierung kann die Anzahl von RUs verringern. |
Anzahl der Dokumenteigenschaften | Wenn Sie alle Eigenschaften indizieren, erhöht die Verwendung von mehr Eigenschaften die Anzahl von RUs. Selektives Indizieren von Schlüsseleigenschaften erfordert weniger RUs. |
Datenkonsistenz | Starke Konsistenzebenen und die Konsistenzebene „begrenzte Veraltung“ verbrauchen mehr RUs als andere lockere Konsistenzebenen. |
Typ von Dokumentlesevorgängen | Punktlesevorgänge mithilfe von ID und Partitionsschlüssel eines Elements benötigen deutlich weniger RUs als Abfragen. |
Abfragemuster | Die Komplexität einer Abfrage wirkt sich auf die Anzahl verbrauchter RUs aus. |
Verwenden von Skripts | Gespeicherte Prozeduren, Trigger und benutzerdefinierte Funktionen verbrauchen RUs zusätzlich zu den Abfragen innerhalb dieser Skripts. |
Zugriff auf Cosmos DB
Azure Cosmos DB bietet die folgenden Möglichkeiten zum Herstellen einer Verbindung mit Cosmos DB:
- Visual Studio Code
- JavaScript-SDKs (und SDKs anderer Sprachen)
- Azure-Portal
- Azure CLI
- PowerShell
- REST-API
Azure Cosmos DB-APIs
Azure Cosmos DB unterstützt mehrere programmgesteuerte APIs. Diese APIs entsprechen so genau wie möglich den APIs, die von anderen üblichen NoSQL-Datenbanken verwendet werden. Dies soll die Migration dieser Datenbanken zu Azure Cosmos DB erleichtern, ohne dass Entwickler ein neues Paradigma erlernen oder wesentliche Änderungen an ihren Anwendungen vornehmen müssen. Derzeit werden folgende APIs unterstützt:
- Core (SQL)
- MongoDB
- Cassandra
- Gremlin (eine gängige Graphdatenbank-API)
- Azure Table Storage
Die Core-API (SQL) ist eine Variante der Sprache SQL, die von den meisten Managementsystemen für relationale Datenbanken verwendet wird. Es gibt Einschränkungen und Anpassungen bei der Behandlung von Gruppen schemaloser Dokumente anstelle von Tabellen.
Verwalten von Azure Cosmos DB mithilfe von Visual Studio Code
Wenn Sie Visual Studio Code als Entwicklungsumgebung verwenden, können Sie die Azure Databases-Erweiterung zum Erstellen von Azure Cosmos DB-Datenbanken und -Anwendungen installieren.
Sie installieren die Erweiterung aus dem Marketplace der Erweiterungen für Visual Studio Code. Nachdem Sie die Databases-Erweiterung installiert haben, verwenden Sie den Azure-Explorer (UMSCHALT + ALT + A), um die Cosmos DB-Erweiterung zu nutzen.
Verwalten von Cosmos DB über den Azure-Explorer
Die Databases-Erweiterung im Azure-Explorer von Visual Studio Code bietet eine grafische Benutzeroberfläche, die in Visual Studio Code integriert ist. Mithilfe der Erweiterung können Sie Azure Cosmos DB-Konten, -Datenbanken, -Container und -Dokumente erstellen, löschen und verwalten.
Zugreifen auf das Konto im Portal
Die Erweiterung bietet zudem einfachen Zugriff auf alle Funktionen für Cosmos DB, indem sie das Öffnen Ihres Kontos im Azure-Portal ermöglicht. Sie können darauf zugreifen, wenn Sie mit der rechten Maustaste auf Ihr Konto klicken und Im Portal öffnen auswählen.
Das Portal bietet Zugriff auf alle Konfigurationen für Ihre Cosmos DB-Instanz und den Daten-Explorer für Ihre Datenbanken und Container. Mit dem Daten-Explorer können Sie Daten einfügen, aktualisieren, löschen und abfragen.