Datenbanken, Container und Elemente in Azure Cosmos DB

GILT FÜR: NoSQL MongoDB Cassandra Gremlin Tabelle

Azure Cosmos DB ist eine vollständig verwaltete Plattform in Form eines Diensts (Platform-as-a-Service, PaaS). Als ersten Schritt zur Nutzung von Azure Cosmos DB erstellen Sie in Ihrem Abonnement in einer Ressourcengruppe ein Azure Cosmos DB-Konto. Erstellen Sie anschließend Datenbanken und Container innerhalb des Kontos.

Ihr Azure Cosmos DB-Konto enthält einen eindeutigen DNS-Namen (Domain Name System). Sie können den DNS-Namen mithilfe verschiedener Tools verwalten, darunter:

  • Azure-Portal
  • Azure-Ressourcen-Manager-Vorlagen
  • Bicep-Vorlagen
  • Azure PowerShell
  • Azure CLI
  • Azure Management SDKs
  • Azure-REST-API

Sie können Ihrem Konto jederzeit Azure-Regionen hinzufügen oder Azure-Regionen daraus entfernen, um Ihre Daten und Ihren Durchsatz über mehrere Azure-Regionen hinweg zu replizieren. Ihr Konto kann mit einer einzelnen Schreibregion oder mit mehreren Schreibregionen konfiguriert werden. Weitere Informationen finden Sie unter Verwalten eines Azure Cosmos DB-Kontos im Azure-Portal. Sie können auch die Standardkonsistenzebene eines Kontos konfigurieren.

Elemente in einem Azure Cosmos DB-Konto

Derzeit können unter einem Azure-Abonnement bis zu 50 Azure Cosmos DB-Konten erstellt werden. Sie können diesen Grenzwert über eine Supportanfrage erhöhen.

Sie können mit einem einzelnen Azure Cosmos DB-Konto eine nahezu unbegrenzte Menge an Daten und bereitgestelltem Durchsatz verwalten. Zum Verwalten Ihrer Daten und Ihres bereitgestellten Durchsatzes können Sie in Ihrem Konto mindestens eine Datenbank und dann mindestens einen Container zum Speichern Ihrer Daten erstellen.

Die folgende Abbildung zeigt die Hierarchie von Elementen in einem Azure Cosmos DB-Konto:

Diagramm: Hierarchie eines Azure Cosmos DB-Kontos, einschließlich eines Kontos, einer Datenbank und eines Containers.

Die folgende Abbildung zeigt die Hierarchie von Entitäten in einem Azure Cosmos DB-Konto:

Diagramm: Beziehung zwischen einem Container und Elementen, einschließlich gleichgeordneter Entitäten wie gespeicherte Prozeduren, UDFs und Trigger.

Azure Cosmos DB-Datenbanken

In Azure Cosmos DB ist eine Datenbank ähnlich wie ein Namespace. Eine Datenbank ist einfach eine Gruppe von Containern. In der folgenden Tabelle ist dargestellt, wie eine Datenbank verschiedenen API-spezifischen Entitäten zugeordnet wird:

Azure Cosmos DB-Entität API für NoSQL API für Apache Cassandra API für MongoDB API für Apache Gremlin API für Table
Azure Cosmos DB-Datenbank Datenbank Keyspace Datenbank Datenbank Nicht zutreffend

Hinweis

Mit Konten vom Typ „API für Table“ werden in Azure Cosmos DB Tabellen auf Kontoebene erstellt, um die Kompatibilität mit Azure Table Storage zu bewahren.

Azure Cosmos DB-Container

Ein Azure Cosmos DB-Container ist der Ort, an dem Daten gespeichert werden. Im Gegensatz zu den meisten relationalen Datenbanken, die durch die Vergrößerung virtueller Computer hochskaliert werden, wird Azure Cosmos DB aufskaliert.

Daten werden auf einem oder mehreren Servern gespeichert, die als Partitionen bezeichnet werden. Um Partitionen zu erhöhen, können Sie den Durchsatz erhöhen, oder die Partitionen wachsen automatisch, wenn der Speicher zunimmt. Durch diese Beziehung wird eine nahezu unbegrenzte Menge an Durchsatz und Speicher für einen Container bereitgestellt.

Beim Erstellen eines Containers müssen Sie einen Partitionsschlüssel angeben. Der Partitionsschlüssel ist eine Eigenschaft, die Sie aus Ihren Elementen auswählen, damit Azure Cosmos DB die Daten effizient auf Partitionen verteilen kann. Der Wert dieser Eigenschaft wird dann von Azure Cosmos DB verwendet, um Daten zum Schreiben, Aktualisieren oder Löschen an die entsprechende Partition weiterzuleiten. Der Partitionsschlüssel kann auch in der WHERE-Klausel in Abfragen für effizienten Datenabruf verwendet werden.

Der zugrunde liegende Speichermechanismus für Daten in Azure Cosmos DB wird als physische Partition bezeichnet. Physische Partitionen können über einen Durchsatz von bis zu 10.000 Anforderungseinheiten pro Sekunde verfügen und bis zu 50 GB Daten speichern. Azure Cosmos DB abstrahiert dieses Partitionierungskonzept mit einer logischen Partition, die bis zu 20 GB Daten speichern kann.

Logische Partitionen ermöglichen es dem Dienst, eine größere Flexibilität und bessere Verwaltung von Daten auf den zugrunde liegenden physischen Partitionen bereitzustellen, während Sie weitere Partitionen hinzufügen. Weitere Informationen zur Partitionierung und zu Partitionsschlüsseln finden Sie unter Partitionierung und horizontale Skalierung in Azure Cosmos DB.

Beim Erstellen eines Containers konfigurieren Sie den Durchsatz in einem der folgenden Modi:

Hinweis

Sie können nicht zwischen dediziertem und gemeinsam genutztem Durchsatz wechseln. Container, die in einer Datenbank mit gemeinsam genutztem Durchsatz erstellt wurden, können nicht aktualisiert werden, um dedizierten Durchsatz zu nutzen. Wenn Sie einen Container von gemeinsam genutztem Durchsatz auf dedizierten Durchsatz umstellen möchten, müssen Sie einen neuen Container erstellen und Daten in den Container kopieren. Das Feature zum Kopieren von Containern in Azure Cosmos DB kann diesen Prozess vereinfachen.

Container sind schemaunabhängig. Elemente in einem Container können beliebige Schemas oder verschiedene Entitäten haben, solange sie über den gleichen Partitionsschlüssel verfügen. Beispielsweise kann ein Container ein Element oder Dokument mit Kundenprofilinformationen sowie eines oder mehrere Elemente oder Dokumente enthalten, die alle Verkaufsaufträge des Kunden darstellen. Sie können ähnliche Informationen für alle Kunden im gleichen Container platzieren.

Standardmäßig werden alle einem Container hinzugefügten Daten automatisch indiziert, ohne eine explizite Indizierung zu erfordern. Sie können die Indizierung bei einem Container anpassen, indem Sie dessen Indizierungsrichtlinie konfigurieren.

Sie können eine Gültigkeitsdauer (Time To Live, TTL) für ausgewählte Elemente in einem Container oder für den gesamten Container festlegen, damit diese Elemente im Hintergrund mit ungenutztem Durchsatz gelöscht werden. Abgelaufene Daten tauchen jedoch auch dann nicht in Lesevorgängen auf, wenn sie nicht gelöscht werden. Weitere Informationen finden Sie unter Konfigurieren der Gültigkeitsdauer in Azure Cosmos DB.

Mit dem Änderungsfeed bietet Azure Cosmos DB eine integrierte Funktion für die Erfassung geänderter Daten (Change Data Capture). Damit können Sie alle Änderungen an Daten in Ihrem Container abonnieren.

Sie können gespeicherte Prozeduren, Trigger, benutzerdefinierte Funktionen (User-Defined Function, UDF) und Zusammenführungsprozeduren für Ihren Container registrieren.

Jedes Dokument innerhalb eines Containers muss über eine id-Eigenschaft verfügen, die innerhalb des Eigenschaftswerts eines logischen Schlüssels für diesen Container eindeutig ist. Sie können diese Kombination von Eigenschaften verwenden, um eine eindeutige Einschränkung innerhalb eines Containers bereitzustellen, ohne explizit eine Einschränkung definieren zu müssen.

Sie können auch eine Einschränkung für eindeutige Schlüssel in Ihrem Azure Cosmos DB-Container mit einer oder mehreren Eigenschaften angeben. Eine Einschränkung für eindeutige Schlüssel stellt die Eindeutigkeit von einem oder mehreren Werten pro logischem Partitionsschlüssel sicher. Wenn Sie einen Container mit einer Richtlinie für eindeutige Schlüssel erstellen, können Sie keine neuen oder aktualisierten Elemente mit Werten erstellen, die die durch die Einschränkung für eindeutige Schlüssel festgelegten Werte duplizieren.

Container werden API-spezifischen Entitäten zugeordnet, wie in der folgenden Tabelle zu sehen:

Azure Cosmos DB-Entität API für NoSQL API für Cassandra API für MongoDB API für Gremlin API für Table
Azure Cosmos DB-Container Container Tabelle Collection Graph Tabelle

Hinweis

Achten Sie darauf, dass Sie nicht zwei Container mit gleichem Namen, aber unterschiedlicher Groß-/Kleinschreibung erstellen. In einigen Komponenten der Azure-Plattform wird die Groß-/Kleinschreibung nicht beachtet. Daher können derartige Benennungen zu Verwechslungen oder Konflikten bei Diagnosedaten und Aktionen für Container führen.

Eigenschaften eines Azure Cosmos DB-Containers

Ein Azure Cosmos DB-Container enthält eine Menge von systemdefinierten Eigenschaften. Abhängig von der verwendeten API können einige Eigenschaften möglicherweise nicht direkt verfügbar gemacht werden. In der folgenden Tabelle werden die systemseitig definierten Eigenschaften beschrieben:

Systemseitig definierte Eigenschaft Vom System generiert oder vom Benutzer konfigurierbar Zweck API für NoSQL API für Cassandra API für MongoDB API für Gremlin API für Table
_rid Vom System generiert Eindeutiger Bezeichner eines Containers Ja Nr. Nr. Nr. No
_etag Vom System generiert Entitätstag zur Steuerung der optimistischen Nebenläufigkeit Ja Nr. Nr. Nr. No
_ts Vom System generiert Zuletzt aktualisierter Zeitstempel des Containers Ja Nr. Nr. Nr. No
_self Vom System generiert Adressierbarer URI des Containers Ja Nr. Nr. Nr. No
id Vom Benutzer konfigurierbar Der Name des Containers Ja Ja Ja Ja Ja
indexingPolicy Vom Benutzer konfigurierbar Richtlinie für die Erstellung des Index für den Container Ja Keine Ja Ja Ja
TimeToLive Vom Benutzer konfigurierbar Automatisches Löschen eines Elements aus einem Container nach einem festgelegten Zeitraum. Ausführliche Informationen finden Sie unter Gültigkeitsdauer (TTL) in Azure Cosmos DB. Ja Nr. Nr. Nein Ja
changeFeedPolicy Vom Benutzer konfigurierbar Richtlinie zum Lesen von Änderungen an Elementen in einem Container. Weitere Informationen finden Sie unter Änderungsfeed. Ja Nr. Nr. Nein Ja
uniqueKeyPolicy Vom Benutzer konfigurierbar Richtlinie zum Sicherstellen der Eindeutigkeit von Werten innerhalb einer logischen Partition Weitere Informationen finden Sie unter Einschränkungen für eindeutige Schlüssel. Ja Nr. Nr. Nein Ja
AnalyticalTimeToLive Vom Benutzer konfigurierbar Automatisches Löschen eines Elements aus einem Container nach einem festgelegten Zeitraum (im Kontext eines Analysespeichers). Weitere Details finden Sie unter Analysespeicher. Ja Keine Ja Nr. Nein

Azure Cosmos DB-Elemente

Abhängig von der verwendeten API können einzelne Datenentitäten auf unterschiedliche Weise dargestellt werden:

Azure Cosmos DB-Entität API für NoSQL API für Cassandra API für MongoDB API für Gremlin API für Table
Azure Cosmos DB-Element Element Zeile Dokument Knoten oder Edge Element

Eigenschaften eines Elements

Jedes Azure Cosmos DB-Element verfügt über die folgenden systemdefinierten Eigenschaften. Abhängig von der verwendeten API können einige davon möglicherweise nicht direkt verfügbar gemacht werden.

Systemseitig definierte Eigenschaft Vom System generiert oder vom Benutzer definiert Zweck API für NoSQL API für Cassandra API für MongoDB API für Gremlin API für Table
_rid Vom System generiert Eindeutiger Bezeichner des Elements Ja Nr. Nr. Nr. No
_etag Vom System generiert Entitätstag, das zur Steuerung der optimistischen Nebenläufigkeit genutzt wird Ja Nr. Nr. Nr. No
_ts Vom System generiert Zeitstempel der letzten Aktualisierung des Elements Ja Nr. Nr. Nr. No
_self Vom System generiert Adressierbarer URI des Elements Ja Nr. Nr. Nr. No
id Sowohl als auch Benutzerdefinierter eindeutiger Name innerhalb einer logischen Partition Ja Ja Ja Ja Ja
Beliebige benutzerdefinierte Eigenschaften Von Benutzer definiert Benutzerdefinierte Eigenschaften in einer API-nativen Darstellung (einschließlich JSON, BSON und CQL) Ja Ja Ja Ja Ja

Hinweis

Die Eindeutigkeit der Eigenschaft id wird innerhalb jeder logischen Partition erzwungen. Mehrere Dokumente können den gleichen id-Eigenschaftswert mit unterschiedlichen Partitionsschlüsselwerten besitzen.

Vorgänge in Entitäten

Azure Cosmos DB-Elemente unterstützen die folgenden Vorgänge. Sie können für die Vorgänge beliebige der Azure Cosmos DB-APIs verwenden.

Vorgang API für NoSQL API für Cassandra API für MongoDB API für Gremlin API für Table
Einfügen, Ersetzen, Löschen, Upsert, Lesen Ja Ja Ja Ja Ja