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:
Die folgende Abbildung zeigt die Hierarchie von Entitäten in einem Azure Cosmos DB-Konto:
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:
Dedizierter Durchsatz: Der Durchsatz für einen Container ist ausschließlich für diesen Container reserviert. Es gibt zwei Arten von dediziertem Durchsatz: „Standard“ und „Autoskalierung“. Weitere Informationen finden Sie unter Bereitstellen von Standarddurchsatz (manuell) für einen Azure Cosmos DB-Container: API für NoSQL.
Gemeinsam genutzter Durchsatz: Durchsatz wird auf Datenbankebene angegeben und dann mit bis zu 25 Containern innerhalb der Datenbank geteilt. Container, die mit ihrem eigenen dedizierten Durchsatz konfiguriert wurden, werden von der gemeinsamen Nutzung von Durchsatz ausgeschlossen.
Gemeinsam genutzter Durchsatz kann eine gute Option sein, wenn alle Container in der Datenbank ähnliche Anforderungen und einen ähnlichen Speicherbedarf haben oder wenn Sie keine planbare Leistung für die Daten benötigen. Weitere Informationen finden Sie unter Bereitstellen von Standarddurchsatz (manuell) für eine Datenbank in Azure Cosmos DB: API für NoSQL.
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 |