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 gebruiken, moet u in eerste instantie een Azure Cosmos-account maken in uw Azure-resourcegroep in het vereiste abonnement, en vervolgens databases, containers en items daar onder. In dit artikel worden de Azure Cosmos DB resourcemodel en verschillende entiteiten in de hiërarchie van het resourcemodel beschreven.
Het Azure Cosmos-account is de fundamentele eenheid van wereldwijde distributie en hoge beschikbaarheid. Uw Azure Cosmos-account bevat een unieke DNS-naam en u kunt een account beheren met behulp van de Azure Portal of de Azure CLI, of met behulp van andere taalspecifieke SDK's. Zie Uw Azure Cosmos-account beheren voor meer informatie. Voor het wereldwijd distribueren van uw gegevens en doorvoer over meerdere Azure-regio's kunt u Op elk moment Azure-regio's aan uw account toevoegen en verwijderen. U kunt uw account configureren voor één regio of meerdere schrijfregio's. Zie Azure-regio's toevoegen aan en verwijderen uit 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 fundamentele eenheid voor schaalbaarheid. U kunt vrijwel onbeperkte inrichtende doorvoer (RU/s) en opslag in een container hebben. Azure Cosmos DB container transparant partitioneert met behulp van de logische partitiesleutel die u opgeeft om uw inrichtende doorvoer en opslag elastisch 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 een ondersteuningsaanvraag). Eén Azure Cosmos-account kan vrijwel een onbeperkte hoeveelheid gegevens en inrichtende doorvoer beheren. Als u uw gegevens en inrichtende doorvoer wilt beheren, kunt u een of meer Azure Cosmos-databases maken onder uw account. Binnen 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:
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-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 toegevoegd aan 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 |
Notitie
Wanneer Table-API-accounts maakt, wordt er automatisch een standaarddatabase gemaakt in uw Azure Cosmos-account wanneer u uw eerste tabel maakt.
Bewerkingen op een Azure Cosmos-database
U kunt communiceren 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 keyspace toegevoegd) | Yes | NA | NA |
| Database lezen | Ja | Ja | Ja (database is aan een keyspace toegevoegd) | Yes | NA | NA |
| Nieuwe database maken | Ja | Ja | Ja (database is aan een keyspace toegevoegd) | Yes | NA | NA |
| Database bijwerken | Ja | Ja | Ja (database is aan een keyspace toegevoegd) | Yes | NA | NA |
Azure Cosmos-containers
Een Azure Cosmos-container is de schaalbaarheidseenheid voor zowel inrichtende doorvoer als opslag. Een container wordt horizontaal gepartitiefd en vervolgens gerepliceerd in meerdere regio's. De items die u aan de container toevoegt, worden automatisch gegroepeerd in logische partities, die worden gedistribueerd over fysieke partities, op basis van de partitiesleutel. De doorvoer van een container wordt gelijkmatig verdeeld over de fysieke partities. Zie Partition data (Gegevens partitioneren) voor meer informatie over partitionering en partitiesleutels.
Wanneer u een container maakt, configureert u doorvoer in een van de volgende modi:
Toegewezen doorvoermodus: de doorvoer die is ingericht voor een container, is exclusief gereserveerd voor die container en wordt door de SLA's gebruikt. Zie Doorvoer inrichten voor een container voor meer informatie.
Modus voor gedeelde inrichtende doorvoer: deze containers delen de inrichtende doorvoer met de andere containers in dezelfde database (met uitzondering van containers die zijn geconfigureerd met toegewezen inrichtende doorvoer). Met andere woorden, de inrichtende doorvoer op de database wordt gedeeld tussen alle gedeelde doorvoercontainers. Zie Doorvoer inrichten voor een database voor meer informatie.
Notitie
U kunt gedeelde en toegewezen doorvoer alleen configureren bij het maken van de database en container. Als u wilt overschakelen van de modus voor toegewezen doorvoer naar de modus voor gedeelde doorvoer (of omgekeerd) nadat de container is gemaakt, moet u een nieuwe container maken en de gegevens naar de nieuwe container migreren. U kunt de gegevens migreren met behulp van Azure Cosmos DB functie voor het wijzigen van de feed.
Een Azure Cosmos-container kan elastisch worden geschaald, of u nu containers maakt met behulp van toegewezen of gedeelde 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 expliciet index- of schemabeheer. U kunt het indexeringsgedrag aanpassen door het indexeringsbeleid voor een container te configureren.
U kunt een Time to Live (TTL) instellen voor geselecteerde items in een container of voor de hele container om deze items op een goede manier van het systeem te verwijderen. Azure Cosmos DB worden de items automatisch verwijderd wanneer ze verlopen. Het garandeert ook dat een query die wordt uitgevoerd op de container, de verlopen items niet binnen een vaste grens retourneerd. Zie Configure TTL on your container (TTL configureren op uw container) voor meer informatie.
U kunt de wijzigingsfeed gebruiken om u te abonneren op het bewerkingenlogboek dat wordt beheerd voor elke logische partitie van uw container. De wijzigingenfeed bevat het logboek van alle updates die op de container worden uitgevoerd, samen met de voor- en na-afbeeldingen van de items. Zie Reactieve toepassingen bouwen met behulp van de wijzigingsfeed voor meer informatie. U kunt de retentieduur voor de wijzigingsfeed ook configureren met behulp van het beleid voor de wijzigingsfeed in de container.
U kunt opgeslagen procedures, triggers, door de gebruiker gedefinieerde functies (UF'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 met waarden worden gemaakt 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 |
Notitie
Zorg er bij het maken van containers voor dat u niet twee containers met dezelfde naam maakt, maar een ander casing- of casing-patroon. Dat komt doordat sommige onderdelen van het Azure-platform niet casegevoelig zijn en dit kan leiden tot verwarring/aanrijding van telemetrie en acties op containers met dergelijke namen.
Eigenschappen van een Azure Cosmos-container
Een Azure Cosmos-container heeft een set door het systeem gedefinieerde eigenschappen. Afhankelijk van de API die u gebruikt, zijn sommige eigenschappen mogelijk niet direct zichtbaar. In de volgende tabel wordt de lijst met door het systeem gedefinieerde eigenschappen beschreven:
| Door het systeem gedefinieerde eigenschap | Door het systeem gegenereerd of door de gebruiker configureerbaar | Doel | SQL-API | Cassandra-API | Azure Cosmos DB-API voor MongoDB | Gremlin-API | Tabel-API |
|---|---|---|---|---|---|---|---|
| _rid | Door het systeem gegenereerd | Unieke id van container | Ja | Nee | Nee | Nee | Nee |
| _etag | Door het systeem gegenereerd | Entiteitstag die wordt gebruikt voor optimistisch gelijktijdigheidsbeheer | Ja | Nee | Nee | Nee | Nee |
| _Ts | Door het systeem gegenereerd | Laatst bijgewerkte tijdstempel van de container | Ja | Nee | Nee | Nee | Nee |
| _Zelf | Door het systeem gegenereerd | Adresseerbare URI van de container | Ja | Nee | Nee | Nee | Nee |
| id | Door de gebruiker configureerbaar | Door de gebruiker gedefinieerde unieke naam van de container | Ja | Ja | Ja | Ja | Ja |
| indexingPolicy | Door de gebruiker configureerbaar | Biedt de mogelijkheid om het indexpad, het indextype en de indexmodus te wijzigen | Ja | Nee | Nee | Nee | Ja |
| TimeToLive | Door de gebruiker configureerbaar | Biedt de mogelijkheid om items na een bepaalde periode automatisch te verwijderen uit een container. Zie voor meer informatie Time to Live. | Ja | Nee | Nee | Nee | Ja |
| changeFeedPolicy | Door de gebruiker configureerbaar | Wordt gebruikt om wijzigingen in items in een container te lezen. Zie Feed wijzigen voor meer informatie. | Ja | Nee | Nee | Nee | Ja |
| uniqueKeyPolicy | Door de gebruiker configureerbaar | Wordt gebruikt om de uniekheid van een of meer waarden in een logische partitie te garanderen. 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 welke API 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:
| Cosmos-entiteit | 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 mogelijk niet direct beschikbaar.
| Door het systeem gedefinieerde eigenschap | Door het systeem gegenereerd of door de gebruiker configureerbaar | Doel | SQL-API | Cassandra-API | Azure Cosmos DB-API voor MongoDB | Gremlin-API | Tabel-API |
|---|---|---|---|---|---|---|---|
| _rid | Door het systeem gegenereerd | Unieke id van het item | Ja | Nee | Nee | Nee | Nee |
| _etag | Door het systeem gegenereerd | Entiteitstag die wordt gebruikt voor optimistisch gelijktijdigheidsbeheer | Ja | Nee | Nee | Nee | Nee |
| _Ts | Door het systeem gegenereerd | Tijdstempel van de laatste update van het item | Ja | Nee | Nee | Nee | Nee |
| _Zelf | Door het systeem gegenereerd | Adresseerbare URI van het item | Ja | Nee | Nee | Nee | Nee |
| id | Ofwel | Door de gebruiker gedefinieerde unieke naam in een logische partitie. | Ja | Ja | Ja | Ja | Ja |
| Willekeurige door de gebruiker gedefinieerde eigenschappen | Door de gebruiker gedefinieerde routes | Door de gebruiker gedefinieerde eigenschappen die worden weergegeven in een api-eigen weergave (inclusief JSON, BSON en CQL) | Ja | Ja | Ja | Ja | Ja |
Notitie
De uniekheid van id de eigenschap wordt alleen afgedwongen binnen elke logische partitie. Meerdere documenten kunnen dezelfde eigenschap hebben id 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:
- Zie de learn-module Azure Cosmos DB SQL API voor meer informatie.
- Uw Azure Cosmos-account beheren
- Wereldwijde distributie
- Consistentieniveaus
- VNET-service-eindpunt voor uw Azure Cosmos-account
- IP-firewall voor uw Azure Cosmos-account
- Azure-regio's toevoegen aan en verwijderen uit uw Azure Cosmos-account
- Azure Cosmos DB SLA's