Een Cosmos DB-exemplaar maken

Voltooid

In deze les leert u meer over Azure Cosmos DB en hoe deze gegevens ordent. U ziet hoe u Visual Studio Code gebruikt om Azure Cosmos DB-databases en -containers te maken en te onderhouden.

Wat is Azure Cosmos DB?

Azure Cosmos DB is een cloudservice waarmee documentdatabases worden geïmplementeerd. De gegevens in een document moeten voldoen aan de JSON-syntaxis. Een JSON-document kan eigenschappen, subdocumenten en documentmatrices bevatten.

{
    "id": "08225A9E-F2B3-4FA3-AB08-8C70ADD6C3C2",
    "partitionKey": "Bikes",
    "name": "Touring-1000 Blue, 50",
    "description": "The product called \"Touring-1000 Blue, 50\"",
    "price": 2384.0700000000002,
    "inventory": [
        { "location": "Dallas", "inventory": 96 },
        { "location": "Seattle", "inventory": 85 }
      ]
}

In tegenstelling tot een tabel in een relationele database, volgen documenten in een Azure Cosmos DB geen vooraf gedefinieerd schema. Hierdoor kan de database verschillende documenten met verschillende vormen en grootten bevatten. U kunt bijvoorbeeld uiteenlopende informatie over verschillende klanten opslaan in dezelfde database. Misschien kunt u een volledige adresgeschiedenis vastleggen als een matrix voor een klant. U kunt ook aanvullende gegevens vastleggen, zoals hun kredietwaardigheid.

De Azure Cosmos DB-cloudservice is ingedeeld als een hiërarchie. Bovenaan ziet u een Azure Cosmos DB-account (uw resource). Het Azure Cosmos DB-account is de beveiligingseenheid voor een set databases. Het Azure Cosmos DB-account geeft de locatie van de databases op, samen met de beveiligingsgegevens die nodig zijn voor toegang tot deze databases. Binnen een account maakt u een of meer databases. In elke database maakt u een of meer containers. U slaat documenten op in containers.

Conceptual image of parent-child relationship of account, database, and container in Cosmos D B.

Cosmos DB-containers en partitiesleutels

Elke container is ingedeeld als een reeks partities. Partities komen ruwweg overeen met de fysieke bestanden op schijf. Een grote partitie heeft mogelijk een bestand, maar meerdere kleine partities kunnen in één bestand worden gecombineerd. Elk document heeft een partitiesleutel met de partitie waartoe het document behoort. U kunt partitionering gebruiken om gerelateerde documenten samen op te slaan en de toegang tot gegevens te optimaliseren.

In het volgende voorbeeld ziet u een JSON-document waarin productgegevens worden opgeslagen als onderdeel van de Contoso-toepassing . Omdat deze gegevens afkomstig zijn van een ander systeem, zijn de id's al geconfigureerd als GUID's. In uw eigen container kunt u uw id meenemen of toestaan dat Cosmos DB er een opgeeft. Wanneer u een nieuw document invoegt, moet u de id en de partitiesleutel opgeven (als u partitiesleutels gebruikt).

{
    "id": "08225A9E-F2B3-4FA3-AB08-8C70ADD6C3C2",
    "categoryName": "Bikes, Touring Bikes",
    "sku": "BK-T79U-50",
    "name": "Touring-1000 Blue, 50",
    "description": "The product called \"Touring-1000 Blue, 50\"",
    "price": 2384.0700000000002,
    "tags": [
        {
            "_id": "27B7F8D5-1009-45B8-88F5-41008A0F0393",
            "name": "Tag-61"
        }
    ],
    "inventory": [
        { "location": "Dallas", "inventory": 96 },
        { "location": "Seattle", "inventory": 85 },
        { "location": "Boston", "inventory": 4 },
        { "location": "Miami", "inventory": 12 },
        { "location": "San Diego", "inventory": 58 }
      ]
}

Het Contoso-bedrijf heeft besloten om de categorienaam, categoryName, als partitiesleutel te gebruiken, omdat dit een enigszins gelijkmatige distributie van documenten in de container mogelijk maakt. Het partitiesleutelveld wordt ingesteld voor de container wanneer de container wordt gemaakt. Voor elk nieuw document dat in de container is ingevoegd, wordt de partitiesleutel opgenomen als onderdeel van het JSON-document. In het bovenstaande voorbeeld zijn de minimale vereisten voor een correct gevormd document de unieke id en als partitiesleutel, id en categoryName. Als u een gegevensset van een ander systeem meeneemt en de unieke id wilt behouden om verbinding te maken met andere systemen, kunt u ervoor kiezen om het id veld te gebruiken of Cosmos DB toe te staan een nieuwe unieke id te maken en uw id kan worden opgeslagen in een afzonderlijke eigenschapsnaam.

Notitie

Azure Cosmos DB voegt een aantal eigen velden toe aan uw documenten. Veel van deze velden worden gebruikt voor interne doeleinden en mogen in de meeste gevallen niet rechtstreeks worden gewijzigd. De uitzondering is een veld met de naam id. Azure Cosmos DB gebruikt dit veld om het document in de database te identificeren en elk document moet een unieke id hebben.

Azure Cosmos DB-doorvoerkosten

Azure Cosmos DB maakt gebruik van het concept aanvraageenheden per seconde (RU/s) om de prestaties en facturering van databases te beheren. Met deze maateenheid worden de onderliggende fysieke resources geabstraheerd die moeten worden ingericht om aan de vereiste prestaties te voldoen. Wanneer u een database of container maakt, geeft u op hoeveel RU/s u wilt toewijzen. Hiervoor worden kosten in rekening gebracht.

De kosten voor het lezen van een punt (het ophalen van één item op basis van de id en de partitiesleutelwaarde) voor een item van 1 kB is 1 aanvraageenheid (of 1 RU). Aan alle overige databasebewerkingen worden op dezelfde manier kosten toegewezen in de vorm van RU's. Ongeacht welke API u gebruikt om met uw Azure Cosmos DB-container te communiceren - de kosten worden altijd gemeten in RU's. Of de databasebewerking nu een schrijf-, puntlees-of querybewerking is, de kosten worden altijd gemeten in RU/s.

Als u 400 RU/s inricht en een query uitvoert die 40 RU's kost, kunt u 10 dergelijke query's per seconde uitgeven. Elke aanvraag daarbuiten krijgt een frequentielimiet en u moet de aanvraag opnieuw proberen. Als u clientstuurprogramma's gebruikt, ondersteunen ze de logica voor automatisch opnieuw proberen.

Houd rekening met het volgende om uw RU/s zo laag mogelijk te houden:

Object Overwegingen
Documentgrootte Een groter document in KB's verhoogt de RU's.
Documentindexering Met performant indexeren kunnen RU's worden verlaagd.
Aantal documenteigenschappen Als u al uw eigenschappen indexeert, neemt het gebruik van meer eigenschappen de RU's toe. Selectief indexeren van sleuteleigenschappen vereist minder RU's.
Gegevensconsistentie Sterke en gebonden consistentieniveaus verbruiken meer RU's dan andere ontspannen consistentieniveaus.
Type documentleesbewerkingen Punten lezen met behulp van de id en partitiesleutelkosten van een item aanzienlijk minder RU's dan query's.
Querypatronen De complexiteit van een query is van invloed op het aantal RU's dat wordt verbruikt.
Scriptgebruik Opgeslagen procedures, triggers en door de gebruiker gedefinieerde functies verbruiken RU's naast de query's in deze scripts.

Toegang tot Cosmos DB

Azure Cosmos DB bevat de volgende manieren om verbinding te maken met Cosmos DB:

  • Visual Studio Code
  • Sdk's voor JavaScript (en andere taal)
  • Azure Portal
  • Azure CLI
  • PowerShell
  • REST-API

Azure Cosmos DB-API's

Azure Cosmos DB ondersteunt verschillende programmatische API's. Deze API's zijn vrijwel hetzelfde als de API's die worden gebruikt in andere bekende NoSQL-databases. Het is de bedoeling om vanuit deze databases een eenvoudig migratiepad naar Azure Cosmos DB te bieden, zonder dat ontwikkelaars een nieuw paradigma hoeven te leren of belangrijke wijzigingen moeten aanbrengen in hun toepassingen. De volgende API's worden momenteel ondersteund:

  • Core (SQL)
  • MongoDB
  • Cassandra
  • Gremlin (een DB-API voor algemene grafieken)
  • Azure-tabelopslag

De Core-API (SQL) is een variant van de SQL-taal die wordt gebruikt door de meeste relationele databasebeheersystemen. Er zijn beperkingen en aanpassingen voor het afhandelen van sets schemaloze documenten in plaats van tabellen.

Visual Studio Code gebruiken om Azure Cosmos DB te beheren

Wanneer u Visual Studio Code als uw ontwikkelomgeving gebruikt, kunt u de Azure Databases-extensie installeren om Azure Cosmos DB-databases en -toepassingen te bouwen.

Screenshot of the Azure Databases extension in Visual Studio Code marketplace

U installeert de extensie vanuit de extensiemarktplaats voor Visual Studio Code. Nadat u de Database-extensie hebt geïnstalleerd, gebruikt u Azure Explorer, Shift + Alt + A, om de Cosmos DB-extensie te gebruiken.

Cosmos DB beheren vanuit Azure Explorer

De databases-extensie biedt in Azure Explorer van Visual Studio Code een grafische gebruikersinterface die is geïntegreerd met Visual Studio Code. Met behulp van de extensie kunt u Azure Cosmos DB-accounts, -databases, -containers en -documenten maken, verwijderen en beheren.

Screenshot of the Azure Databases extension in Visual Studio Code as user right-clicks on the Documents node for a contextual menu to create a new document.

Toegangsaccount in portal

De extensie biedt ook eenvoudige toegang tot alle functionaliteit voor Cosmos DB door de mogelijkheid te bieden om uw account te openen in Azure Portal. U kunt dit openen wanneer u met de rechtermuisknop op uw account klikt en openen selecteert in de portal.

Screenshot of the Azure Databases extension in Visual Studio Code as user right-clicks on the account node to open account in Azure portal.

De portal biedt toegang tot alle configuraties voor uw Cosmos DB en Data Explorer voor uw databases en containers. Gebruik Data Explorer om uw gegevens in te voegen, bij te werken, te verwijderen en er query's op uit te voeren.

Screenshot of the Azure portal with the Data Explorer showing the query window open with a JSON document displayed.