Identifiera Azure Cosmos DB-API:er

Slutförd

Azure Cosmos DB är Microsofts fullständigt hanterade och serverlösa distribuerade databas för program av valfri storlek eller skala, med stöd för både relationsbaserade och icke-relationella arbetsbelastningar. Utvecklare kan skapa och migrera program snabbt med hjälp av sina önskade öppen källkod databasmotorer, inklusive PostgreSQL, MongoDB och Apache Cassandra. När du etablerar en ny Cosmos DB-instans väljer du den databasmotor som du vill använda. Valet av motor beror på många faktorer, inklusive vilken typ av data som ska lagras, behovet av att stödja befintliga program och färdigheterna hos de utvecklare som arbetar med datalagret.

Azure Cosmos DB för NoSQL

Azure Cosmos DB for NoSQL är Microsofts interna icke-relationstjänst för att arbeta med dokumentdatamodellen. Den hanterar data i JSON-dokumentformat, och trots att det är en NoSQL-datalagringslösning använder den SQL-syntax för att arbeta med data.

En SQL-fråga för en Azure Cosmos DB-databas som innehåller kunddata kan se ut ungefär så här:

SELECT *
FROM customers c
WHERE c.id = "joe@litware.com"

Resultatet av den här frågan består av ett eller flera JSON-dokument, enligt följande:

{
   "id": "joe@litware.com",
   "name": "Joe Jones",
   "address": {
        "street": "1 Main St.",
        "city": "Seattle"
    }
}

Azure Cosmos DB för MongoDB

MongoDB är en populär öppen källkod databas där data lagras i BSON-format (Binary JSON). Med Azure Cosmos DB for MongoDB kan utvecklare använda MongoDB-klientbibliotek och kod för att arbeta med data i Azure Cosmos DB.

MongoDB Query Language (MQL) använder en kompakt, objektorienterad syntax där utvecklare använder objekt för att anropa metoder. Följande fråga använder till exempel sökmetoden för att fråga produktsamlingen i db-objektet:

db.products.find({id: 123})

Resultatet av den här frågan består av JSON-dokument, ungefär så här:

{
   "id": 123,
   "name": "Hammer",
   "price": 2.99
}

Azure Cosmos DB för PostgreSQL

Azure Cosmos DB for PostgreSQL är det distribuerade PostgreSQL-alternativet i Azure. Azure Cosmos DB for PostgreSQL är en intern PostgreSQL, globalt distribuerad relationsdatabas som automatiskt fragmenterar data som hjälper dig att skapa mycket skalbara appar. Du kan börja skapa appar på en servergrupp med en enda nod, på samma sätt som med PostgreSQL var som helst. När appens skalbarhets- och prestandakrav växer kan du sömlöst skala till flera noder genom att distribuera dina tabeller på ett transparent sätt. PostgreSQL är ett relationsdatabashanteringssystem (RDBMS) där du definierar relationstabeller med data, till exempel kan du definiera en tabell med produkter som den här:

ProductID ProductName Pris
123 Hammare 2.99
162 Skruvmejsel 3.49

Du kan sedan fråga den här tabellen för att hämta namnet och priset på en specifik produkt med hjälp av SQL så här:

SELECT ProductName, Price 
FROM Products
WHERE ProductID = 123;

Resultatet av den här frågan skulle innehålla en rad för produkt 123, så här:

ProductName Pris
Hammare 2.99

Azure Cosmos DB för tabell

Azure Cosmos DB for Table används för att arbeta med data i nyckelvärdestabeller som liknar Azure Table Storage. Det ger större skalbarhet och prestanda än Azure Table Storage. Du kan till exempel definiera en tabell med namnet Kunder så här:

PartitionKey RowKey Name Email
1 123 Joe Jones joe@litware.com
1 124 Samir Nadoy samir@northwind.com

Du kan sedan använda tabell-API:et via en av de språkspecifika SDK:erna för att göra anrop till tjänstslutpunkten för att hämta data från tabellen. Följande begäran returnerar till exempel raden som innehåller posten för Samir Nadoy i föregående tabell:

https://endpoint/Customers(PartitionKey='1',RowKey='124')

Azure Cosmos DB för Apache Cassandra

Azure Cosmos DB för Apache Cassandra är kompatibelt med Apache Cassandra, som är en populär öppen källkod databas som använder en kolumnfamiljelagringsstruktur. Kolumnfamiljer är tabeller som liknar dem i en relationsdatabas, med undantag för att det inte är obligatoriskt för varje rad att ha samma kolumner.

Du kan till exempel skapa en tabell med anställda så här:

ID Name Ansvarig
1 Sue Smith
2 Ben Chan Sue Smith

Cassandra stöder en syntax baserad på SQL, så ett klientprogram kan hämta posten för Ben Chan så här:

SELECT * FROM Employees WHERE ID = 2

Azure Cosmos DB för Apache Gremlin

Azure Cosmos DB för Apache Gremlin används med data i en grafstruktur. där entiteter definieras som hörn som bildar noder i ansluten graf. Noder är anslutna med kanter som representerar relationer, så här:

Ett diagram som visar anställda och avdelningar och anslutningarna mellan dem

Exemplet i bilden visar två typer av hörn (anställd och avdelning) och kanter som ansluter dem (medarbetaren "Ben" rapporterar till medarbetaren "Sue" och båda anställda arbetar på avdelningen "Maskinvara").

Gremlin-syntaxen innehåller funktioner för att arbeta med hörn och kanter, så att du kan infoga, uppdatera, ta bort och fråga efter data i diagrammet. Du kan till exempel använda följande kod för att lägga till en ny anställd med namnet Alice som rapporterar till medarbetaren med ID 1 (Sue)

g.addV('employee').property('id', '3').property('firstName', 'Alice')
g.V('3').addE('reports to').to(g.V('1'))

Följande fråga returnerar alla anställdas hörn i ordning efter ID.

 g.V().hasLabel('employee').order().by('id')