Databases, containers en items in Azure Cosmos DB

VAN TOEPASSING OP: Nosql MongoDB Cassandra Gremlin Tabel

Azure Cosmos DB is een volledig beheerd platform als een service (PaaS). Als u Azure Cosmos DB wilt gaan gebruiken, maakt u een Azure Cosmos DB-account in een Azure-resourcegroep in uw abonnement. Maak vervolgens databases en containers binnen het account.

Uw Azure Cosmos DB-account bevat een unieke DNS-naam (Domain Name System). U kunt de DNS-naam beheren met behulp van veel hulpprogramma's, waaronder:

  • Azure Portal
  • Azure Resource Manager-sjablonen
  • Bicep-sjablonen
  • Azure PowerShell
  • Azure CLI
  • Azure Management SDK's
  • Azure REST API

Voor het repliceren van uw gegevens en doorvoer in meerdere Azure-regio's, kunt u Azure-regio's op elk gewenst moment aan uw account toevoegen en verwijderen. U kunt uw account zo configureren dat er één regio of meerdere schrijfregio's zijn. Zie Een Azure Cosmos DB-account beheren met behulp van Azure Portal voor meer informatie. U kunt ook het standaardconsistentieniveau voor een account configureren.

Elementen in een Azure Cosmos DB-account

Op dit moment kunt u maximaal 50 Azure Cosmos DB-accounts maken onder een Azure-abonnement. U kunt deze limiet verhogen door een ondersteuningsaanvraag in te dienen.

U kunt een vrijwel onbeperkte hoeveelheid gegevens en ingerichte doorvoer beheren met één Azure Cosmos DB-account. Als u uw gegevens en ingerichte doorvoer wilt beheren, maakt u een of meer databases in uw account en maakt u vervolgens een of meer containers om uw gegevens op te slaan.

In de volgende afbeelding ziet u de hiërarchie van elementen in een Azure Cosmos DB-account.

Diagram of the hierarchy of an Azure Cosmos DB account, including an account, database, and container.

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

Diagram of the relationship between a container and items, including sibling entities such as stored procedures, user-defined functions, and triggers.

Azure Cosmos DB-databases

In Azure Cosmos DB is een database vergelijkbaar met een naamruimte. Een database is gewoon een groep containers. In de volgende tabel ziet u hoe een database wordt toegewezen aan verschillende API-specifieke entiteiten:

Azure Cosmos DB-entiteit API voor NoSQL API voor Apache Cassandra API voor MongoDB API voor Apache Gremlin API voor Table
Azure Cosmos DB-database Database Keyspace Database Database Niet van toepassing

Notitie

Met API voor tabelaccounts worden tabellen in Azure Cosmos DB gemaakt op accountniveau om de compatibiliteit met Azure Table Storage te behouden.

Azure Cosmos DB-containers

Een Azure Cosmos DB-container is waar gegevens worden opgeslagen. In tegenstelling tot de meeste relationele databases, die omhoog worden geschaald met grotere grootten van virtuele machines, wordt Azure Cosmos DB uitgeschaald.

Gegevens worden opgeslagen op een of meer servers die partities worden genoemd. Als u partities wilt vergroten, verhoogt u de doorvoer of groeien ze automatisch naarmate de opslag toeneemt. Deze relatie biedt een vrijwel onbeperkte hoeveelheid doorvoer en opslag voor een container.

Wanneer u een container maakt, moet u een partitiesleutel opgeven. De partitiesleutel is een eigenschap die u selecteert uit uw items om Azure Cosmos DB te helpen de gegevens efficiënt over partities te verdelen. Azure Cosmos DB gebruikt de waarde van deze eigenschap om gegevens te routeren naar de juiste partitie die moet worden geschreven, bijgewerkt of verwijderd. U kunt ook de partitiesleutel in de WHERE component in query's gebruiken om efficiënt gegevens op te halen.

Het onderliggende opslagmechanisme voor gegevens in Azure Cosmos DB wordt een fysieke partitie genoemd. Fysieke partities kunnen een doorvoerhoeveelheid hebben van maximaal 10.000 aanvraageenheden per seconde en ze kunnen maximaal 50 GB aan gegevens opslaan. Azure Cosmos DB abstraheert dit partitioneringsconcept met een logische partitie, die maximaal 20 GB aan gegevens kan opslaan.

Met logische partities kan de service meer elasticiteit bieden en beter beheer van gegevens op de onderliggende fysieke partities wanneer u meer partities toevoegt. Zie Partitioneren en horizontaal schalen in Azure Cosmos DB voor meer informatie over partitionering en partitiesleutels.

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

  • Toegewezen doorvoer: de doorvoer op een container is exclusief gereserveerd voor die container. Er zijn twee soorten toegewezen doorvoer: standaard en automatische schaalaanpassing. Zie Standaarddoorvoer (handmatig) inrichten voor een Azure Cosmos DB-container voor meer informatie.

  • Gedeelde doorvoer: Doorvoer wordt opgegeven op databaseniveau en vervolgens gedeeld met maximaal 25 containers in de database. Delen van doorvoer sluit containers uit die zijn geconfigureerd met hun eigen toegewezen doorvoer.

    Gedeelde doorvoer kan een goede optie zijn wanneer alle containers in de database vergelijkbare aanvragen en opslagbehoeften hebben, of wanneer u geen voorspelbare prestaties voor de gegevens nodig hebt. Zie Standaarddoorvoer (handmatig) inrichten voor een database in Azure Cosmos DB voor meer informatie.

Notitie

U kunt niet schakelen tussen toegewezen en gedeelde doorvoer. Containers die u in een gedeelde doorvoerdatabase hebt gemaakt, kunnen niet worden bijgewerkt om toegewezen doorvoer te hebben. Als u een container wilt wijzigen van gedeelde naar toegewezen doorvoer, moet u een nieuwe container maken en gegevens kopiëren. De functie voor het kopiëren van containers in Azure Cosmos DB kan dit proces eenvoudiger maken.

Containers zijn schemaneutraal. Items in een container kunnen willekeurige schema's of verschillende entiteiten hebben, zolang ze dezelfde partitiesleutel delen. Een container kan bijvoorbeeld een item of document bevatten met klantprofielgegevens, samen met een of meer items of documenten die alle verkooporders van de klant vertegenwoordigen. U kunt vergelijkbare informatie voor alle klanten in dezelfde container plaatsen.

Standaard worden alle gegevens die u aan een container toevoegt, automatisch geïndexeerd zonder expliciete indexering. U kunt de indexering voor een container aanpassen door het indexeringsbeleid te configureren.

Om de prestaties te voorkomen, kunt u een time to live (TTL) instellen voor geselecteerde items in een container of op de hele container om deze items automatisch op de achtergrond te verwijderen met ongebruikte doorvoer. Zelfs als verlopen gegevens niet worden verwijderd, worden deze echter niet weergegeven in leesbewerkingen. Zie Time to Live configureren in Azure Cosmos DB voor meer informatie.

Azure Cosmos DB biedt een ingebouwde mogelijkheid voor het vastleggen van gegevens van wijzigingen, ook wel wijzigingenfeed genoemd. U kunt deze gebruiken om u te abonneren op alle wijzigingen in gegevens in uw container.

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

Elk document in een container moet een id eigenschap hebben die uniek is binnen de eigenschapswaarde van een logische sleutel voor die container. U kunt deze combinatie van eigenschappen gebruiken om een unieke beperking binnen een container te bieden, zonder dat u er expliciet een hoeft te definiëren.

U kunt ook een unieke sleutelbeperking opgeven voor uw Azure Cosmos DB-container die een of meer eigenschappen gebruikt. Een unieke sleutelbeperking zorgt voor de uniekheid van een of meer waarden per logische partitiesleutel. Als u een container maakt met behulp van een uniek sleutelbeleid, kunt u geen nieuwe of bijgewerkte items maken met waarden die de waarden dupliceren die door de unieke sleutelbeperking worden opgegeven.

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

Azure Cosmos DB-entiteit API voor NoSQL API voor Cassandra API voor MongoDB API voor Gremlin API voor Table
Azure Cosmos DB-container Container Tabel Verzameling Grafiek Tabel

Notitie

Zorg ervoor dat u niet twee containers met dezelfde naam maar een andere behuizing maakt. Sommige onderdelen van het Azure-platform zijn niet hoofdlettergevoelig en dit soort naamgeving kan leiden tot verwarring of botsing van diagnostische gegevens en acties op containers.

Eigenschappen van een Azure Cosmos DB-container

Een Azure Cosmos DB-container heeft een set door het systeem gedefinieerde eigenschappen. Afhankelijk van de API die u gebruikt, worden sommige eigenschappen mogelijk niet rechtstreeks weergegeven. In de volgende tabel worden de door het systeem gedefinieerde eigenschappen beschreven:

Door het systeem gedefinieerde eigenschap Door het systeem gegenereerd of door de gebruiker geconfigureerd Doel API voor NoSQL API voor Cassandra API voor MongoDB API voor Gremlin API voor Table
_rid Door systeem gegenereerd Unieke id van een container. Ja No No No Nr.
_etag Door systeem gegenereerd Entiteitstag die wordt gebruikt voor optimistisch gelijktijdigheidsbeheer. Ja No No No Nr.
_ts Door systeem gegenereerd Laatst bijgewerkt tijdstempel van de container. Ja No No No Nr.
_self Door systeem gegenereerd Adresseerbare URI van de container. Ja No No No Nr.
id Door de gebruiker configureerbaar Naam van de container. Ja Ja Ja Ja Ja
indexingPolicy Door de gebruiker configureerbaar Beleid voor het bouwen van de index voor de container. Ja No Ja Ja Ja
TimeToLive Door de gebruiker configureerbaar Automatisch verwijderen van een item uit een container na een ingestelde periode. Zie Time to live voor meer informatie. Ja No No No Ja
changeFeedPolicy Door de gebruiker configureerbaar Beleid voor het lezen van wijzigingen in items in een container. Zie Wijzigingenfeed voor meer informatie. Ja No No No Ja
uniqueKeyPolicy Door de gebruiker configureerbaar Beleid voor het garanderen van de uniekheid van een of meer waarden in een logische partitie. Zie Beperkingen voor unieke sleutels voor meer informatie. Ja No No No Ja
AnalyticalTimeToLive Door de gebruiker configureerbaar Automatisch verwijderen van een item uit een container na een ingestelde periode, in de context van een analytische opslag. Zie Analytische opslag voor meer informatie. Ja No Ja No Nr.

Azure Cosmos DB-items

Afhankelijk van de API die u gebruikt, kunnen afzonderlijke gegevensentiteiten op verschillende manieren worden weergegeven:

Azure Cosmos DB-entiteit API voor NoSQL API voor Cassandra API voor MongoDB API voor Gremlin API voor Table
Azure Cosmos DB-item Artikel Rij Document Knooppunt of edge Artikel

Eigenschappen van een item

Elk Azure Cosmos DB-item heeft de volgende door het systeem gedefinieerde eigenschappen. Afhankelijk van de API die u gebruikt, zijn sommige mogelijk niet rechtstreeks beschikbaar.

Door het systeem gedefinieerde eigenschap Door het systeem gegenereerd of door de gebruiker gedefinieerd Doel API voor NoSQL API voor Cassandra DB-API voor MongoDB API voor Gremlin API voor Table
_rid Door systeem gegenereerd Unieke id van het item Ja No No No Nr.
_etag Door systeem gegenereerd Entiteitstag die wordt gebruikt voor optimistisch gelijktijdigheidsbeheer Ja No No No Nr.
_ts Door systeem gegenereerd Tijdstempel van de laatste update van het item Ja No No No Nr.
_self Door systeem gegenereerd Adresseerbare URI van het item Ja No No No Nr.
id Ofwel Door de gebruiker gedefinieerde unieke naam in een logische partitie Ja Ja Ja Ja Ja
Willekeurige door de gebruiker gedefinieerde eigenschappen Door gebruiker gedefinieerd Door de gebruiker gedefinieerde eigenschappen in api-systeemeigen weergave (inclusief JSON, BSON en CQL) Ja Ja Ja Ja Ja

Notitie

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

Bewerkingen op items

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

Operation API voor NoSQL API voor Cassandra API voor MongoDB API voor Gremlin API voor Table
Invoegen, vervangen, verwijderen, upsert, lezen Ja Ja Ja Ja Ja

Volgende stappen

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