Azure Cosmos DB-resourcemodel

VAN TOEPASSING OP: SQL API Cassandra API Gremlin API Table API Azure Cosmos DB API voor MongoDB

Azure Cosmos DB is een volledig beheerd platform-as-a-service (PaaS). Als u Azure Cosmos DB wilt gaan gebruiken, moet u in eerste instantie een Azure Cosmos-account maken in uw Azure-resourcegroep in het vereiste abonnement en vervolgens databases, containers, items er onder. In dit artikel worden het Azure Cosmos DB-resourcemodel en de verschillende entiteiten in de resourcemodelhiërarchie beschreven.

Het Azure Cosmos-account is de basiseenheid van globale distributie en hoge beschikbaarheid. Uw Azure Cosmos-account bevat een unieke DNS-naam en u kunt een account beheren via de Azure-portal of de Azure CLI, of met andere taalspecifieke SDK's. Zie voor meer informatie hoe u uw Azure Cosmos-account beheert. Voor het wereldwijd distribueren van uw gegevens en doorvoer over meerdere Azure-regio's, kunt u Azure-regio's op elk moment aan uw account toevoegen en verwijderen. U kunt uw account zo configureren dat er één regio of meerdere schrijfregio's zijn. Zie Azure-regio's toevoegen en verwijderen aan uw account voor meer informatie. U kunt het standaardconsistentieniveau voor een account configureren.

Elementen in een Azure Cosmos-account

Een Azure Cosmos-container is de basiseenheid voor schaalbaarheid. U kunt vrijwel onbeperkte inrichtende doorvoer (RU/s) en opslag op een container hebben. Azure Cosmos DB partities uw container transparant met behulp van de logische partitietoets die u opgeeft om de inrichtende doorvoer en opslag op een flexibele manier te schalen.

Op dit moment kunt u maximaal 50 Azure Cosmos-accounts maken onder een Azure-abonnement (dit is een zachte limiet die kan worden verhoogd via ondersteuningsaanvraag). Eén Azure Cosmos-account kan een onbeperkte hoeveelheid gegevens en inrichtende doorvoer vrijwel beheren. Als u uw gegevens en de inrichtende doorvoer wilt beheren, kunt u een of meer Azure Cosmos-databases maken onder uw account en in die database kunt u een of meer containers maken. In de volgende afbeelding ziet u de hiërarchie van elementen in een Azure Cosmos-account:

Hierarchy of an Azure Cosmos account

Nadat u een account hebt gemaakt onder uw Azure-abonnement, kunt u de gegevens in uw account beheren door databases, containers en items te maken.

In de volgende afbeelding ziet u de hiërarchie van verschillende entiteiten in een Azure Cosmos DB-account:

Azure Cosmos account entities

Azure Cosmos-databases

U kunt een of meer Azure Cosmos-databases maken onder uw account. Een database is vergelijkbaar met een naamruimte. Een database is de beheereenheid voor een set Azure Cosmos-containers. In de volgende tabel ziet u hoe een database wordt toegesneden op verschillende API-specifieke entiteiten:

Azure Cosmos-entiteit SQL API Cassandra API Azure Cosmos DB API voor MongoDB Gremlin-API Tabel-API
Azure Cosmos-database Database Keyspace Database Database NA

Opmerking

Wanneer u de eerste tabel maakt met Tabel API-accounts, wordt automatisch een standaarddatabase gemaakt in uw Azure Cosmos-account.

Bewerkingen in een Azure Cosmos-database

U kunt werken met een Azure Cosmos-database met Azure Cosmos-API's, zoals beschreven in de volgende tabel:

Bewerking Azure CLI SQL API Cassandra API Azure Cosmos DB API voor MongoDB Gremlin-API Tabel-API
Alle databases opsnoemen Ja Ja Ja (database is aan een sleutelruimte toegesneden) Ja NA NA
Database lezen Ja Ja Ja (database is aan een sleutelruimte toegesneden) Ja NA NA
Nieuwe database maken Ja Ja Ja (database is aan een sleutelruimte toegesneden) Ja NA NA
Database bijwerken Ja Ja Ja (database is aan een sleutelruimte toegesneden) Ja NA NA

Azure Cosmos-containers

Een Azure Cosmos-container is de schaalbaarheidseenheid voor zowel de inrichting van de doorvoer als de opslag. Een container wordt horizontaal verdeeld en vervolgens gerepliceerd in meerdere regio's. De items die u aan de container toevoegt, worden automatisch gegroepeerd in logische partities, die zijn verdeeld over fysieke partities, op basis van de partitietoets. De doorvoer op een container is gelijkmatig verdeeld over de fysieke partities. Zie Partitiegegevens voor meer informatie over partitionerings- en partitietoetsen.

Wanneer u een container maakt, configureert u de doorvoer in een van de volgende modi:

  • Speciale inrichtende doorvoermodus:de doorvoer die is ingericht op een container, is uitsluitend gereserveerd voor die container en wordt gebacked door de SLA's. Zie How to provision throughput on a container(Doorvoer inrichten op een container) voor meer informatie.

  • Shared provisioned throughput mode:Deze containers delen de inrichtende doorvoer met de andere containers in dezelfde database (met uitzondering van containers die zijn geconfigureerd met speciale inrichtende doorvoer). Met andere woorden, de inrichtende doorvoer in de database wordt gedeeld tussen alle containers met gedeelde doorvoer. Zie How to provision throughput on a database (Doorvoerinrichten in een database) voor meer informatie.

Opmerking

U kunt alleen gedeelde en toegewezen doorvoer configureren wanneer u de database en container maakt. Als u wilt overschakelen van de speciale doorvoermodus naar de gedeelde doorvoermodus (en omgekeerd) nadat de container is gemaakt, moet u een nieuwe container maken en de gegevens migreren naar de nieuwe container. U kunt de gegevens migreren met behulp van de feedfunctie Voor wijziging van Azure Cosmos DB.

Een Azure Cosmos-container kan elastisch worden geschaald, of u nu containers maakt met behulp van speciale of gedeelde inrichtende doorvoermodi.

Een container is een schema-agnostische container met items. Items in een container kunnen willekeurige schema's hebben. Een item dat een persoon vertegenwoordigt en een item dat een auto vertegenwoordigt, kan bijvoorbeeld in dezelfde container worden geplaatst. Standaard worden alle items die u aan een container toevoegt, automatisch geïndexeerd zonder dat u expliciet index- of schemabeheer nodig hebt. U kunt het indexeringsgedrag aanpassen door het indexeringsbeleid voor een container te configureren.

U kunt Time to Live (TTL) instellen op geselecteerde items in een container of voor de hele container om deze items sierlijk uit het systeem te verwijderen. Azure Cosmos DB verwijdert de items automatisch wanneer ze verlopen. Het garandeert ook dat een query die op de container wordt uitgevoerd, de verlopen items niet binnen een vaste gebonden waarde retourneerd. Zie TTL configureren op uw container voor meer informatie.

U kunt de feed wijzigen gebruiken om u te abonneren op het bewerkingenlogboek dat wordt beheerd voor elke logische partitie van uw container. De feed Wijzigen bevat het logboek van alle updates die op de container zijn uitgevoerd, samen met de voor- en naafbeeldingen van de items. Zie Reactieve toepassingen maken met behulp van feed wijzigen voor meer informatie. U kunt ook de bewaarduur voor de wijzigingsfeed configureren met behulp van het feedbeleid wijzigen in de container.

U kunt opgeslagen procedures, triggers, door de gebruiker gedefinieerde functies (UDF's)en samenvoegprocedures voor uw container registreren.

U kunt een unieke sleutelbeperking opgeven voor uw Azure Cosmos-container. Door een uniek sleutelbeleid te maken, zorgt u ervoor dat een of meer waarden per logische partitiesleutel uniek zijn. Als u een container maakt met behulp van een uniek sleutelbeleid, kunnen er geen nieuwe of bijgewerkte items worden gemaakt met waarden die de waarden dupliceren die zijn opgegeven door de unieke sleutelbeperking. Zie Unieke sleutelbeperkingen voor meer informatie.

Een container is gespecialiseerd in API-specifieke entiteiten, zoals wordt weergegeven in de volgende tabel:

Azure Cosmos-entiteit SQL API Cassandra API Azure Cosmos DB API voor MongoDB Gremlin-API Tabel-API
Azure Cosmos-container Container Tabel Verzameling Graph Tabel

Opmerking

Bij het maken van containers moet u ervoor zorgen dat u geen twee containers met dezelfde naam maakt, maar een andere omhulsel. Dat komt omdat sommige delen van het Azure-platform niet case-sensitive zijn en dit kan leiden tot verwarring/botsing van telemetrie en acties op containers met dergelijke namen.

Eigenschappen van een Azure Cosmos-container

Een Azure Cosmos-container heeft een set systeem gedefinieerde eigenschappen. Afhankelijk van de API die u gebruikt, worden sommige eigenschappen mogelijk niet direct zichtbaar. In de volgende tabel wordt de lijst met door het systeem gedefinieerde eigenschappen beschreven:

Systeem gedefinieerde eigenschap Systeemge gegenereerd of door de gebruiker configureerbaar Doel SQL API Cassandra API Azure Cosmos DB API voor MongoDB Gremlin-API Tabel-API
_rid Systeem gegenereerd Unieke id van container Ja Nee Nee Nee Nee
_etag Systeem gegenereerd Entiteitstag die wordt gebruikt voor optimistisch gelijktijdigheidsbeheer Ja Nee Nee Nee Nee
_ts Systeem gegenereerd Laatst bijgewerkte tijdstempel van de container Ja Nee Nee Nee Nee
_self Systeem gegenereerd Adresseerbare URI van de container Ja Nee Nee Nee Nee
id Configureerbare gebruiker Door de gebruiker gedefinieerde unieke naam van de container Ja Ja Ja Ja Ja
indexeringBeleid Configureerbare gebruiker Biedt de mogelijkheid om het indexpad, indextype en indexmodus te wijzigen Ja Nee Nee Nee Ja
TimeToLive Configureerbare gebruiker Hiermee kunt u items na een bepaalde periode automatisch uit een container verwijderen. Zie Time to Live voor meer informatie. Ja Nee Nee Nee Ja
changeFeedPolicy Configureerbare gebruiker Wordt gebruikt om wijzigingen in items in een container te lezen. Zie Feed wijzigen voor meer informatie. Ja Nee Nee Nee Ja
uniqueKeyPolicy Configureerbare gebruiker Wordt gebruikt om de uniekheid van een of meer waarden in een logische partitie te waarborgen. Zie Unieke sleutelbeperkingen voor meer informatie. Ja Nee Nee Nee Ja

Bewerkingen op een Azure Cosmos-container

Een Azure Cosmos-container ondersteunt de volgende bewerkingen wanneer u een van de Azure Cosmos-API's gebruikt:

Bewerking Azure CLI SQL API Cassandra API Azure Cosmos DB API voor MongoDB Gremlin-API Tabel-API
Containers in een database opsnoemen Ja Ja Ja Ja NA NA
Een container lezen Ja Ja Ja Ja NA NA
Een nieuwe container maken Ja Ja Ja Ja NA NA
Een container bijwerken Ja Ja Ja Ja NA NA
Een container verwijderen Ja Ja Ja Ja NA NA

Azure Cosmos-items

Afhankelijk van de API die u gebruikt, kan een Azure Cosmos-item een document in een verzameling, een rij in een tabel of een knooppunt of rand in een grafiek vertegenwoordigen. In de volgende tabel ziet u de toewijzing van API-specifieke entiteiten aan een Azure Cosmos-item:

De entiteit Kosmos SQL API Cassandra API Azure Cosmos DB API voor MongoDB Gremlin-API Tabel-API
Azure Cosmos-item Item Rij Document Knooppunt of rand Item

Eigenschappen van een item

Elk Azure Cosmos-item heeft de volgende door het systeem gedefinieerde eigenschappen. Afhankelijk van de API die u gebruikt, zijn sommige api's mogelijk niet direct zichtbaar.

Systeem gedefinieerde eigenschap Systeemge gegenereerd of door de gebruiker configureerbaar Doel SQL API Cassandra API Azure Cosmos DB API voor MongoDB Gremlin-API Tabel-API
_rid Systeem gegenereerd Unieke id van het item Ja Nee Nee Nee Nee
_etag Systeem gegenereerd Entiteitstag die wordt gebruikt voor optimistisch gelijktijdigheidsbeheer Ja Nee Nee Nee Nee
_ts Systeem gegenereerd Tijdstempel van de laatste update van het item Ja Nee Nee Nee Nee
_self Systeem gegenereerd Adresseerbare URI van het item Ja Nee Nee Nee Nee
id Een van beide Door de gebruiker gedefinieerde unieke naam in een logische partitie. Ja Ja Ja Ja Ja
Willekeurige door de gebruiker gedefinieerde eigenschappen Door de gebruiker gedefinieerd Door gebruikers gedefinieerde eigenschappen die worden vertegenwoordigd in api-native representatie (inclusief JSON, BSON en CQL) Ja Ja Ja Ja Ja

Opmerking

Uniciteit van de id eigenschap wordt alleen afgedwongen binnen elke logische partitie. Meerdere documenten kunnen dezelfde eigenschap id hebben met verschillende partitiesleutelwaarden.

Bewerkingen op items

Azure Cosmos-items ondersteunen de volgende bewerkingen. U kunt een van de Azure Cosmos-API's gebruiken om de bewerkingen uit te voeren.

Bewerking Azure CLI SQL API Cassandra API Azure Cosmos DB API voor MongoDB Gremlin-API Tabel-API
Invoegen, Vervangen, Verwijderen, Upsert, Lezen Nee Ja Ja Ja Ja Ja

Volgende stappen

Meer informatie over het beheren van uw Azure Cosmos-account en andere concepten: