Identificare le API di Azure Cosmos DB

Completato

Azure Cosmos DB è il database distribuito completamente gestito e serverless di Microsoft per applicazioni di qualsiasi dimensione o scala, con supporto per carichi di lavoro relazionali e non relazionali. Gli sviluppatori possono creare applicazioni ed eseguirne rapidamente la migrazione usando i motori di database open source preferiti, tra cui PostgreSQL, MongoDB e Apache Cassandra. Quando si esegue il provisioning di una nuova istanza di Cosmos DB, selezionare il motore di database da usare. La scelta del motore dipende da molti fattori, tra cui il tipo di dati da archiviare, la necessità di supportare applicazioni esistenti e le competenze degli sviluppatori che lavorano con l'archivio dati.

Azure Cosmos DB for NoSQL

Azure Cosmos DB for NoSQL è il servizio nativo non relazionale di Microsoft per l'uso del modello di dati del documento. Gestisce i dati in formato documento JSON e, nonostante sia una soluzione di archiviazione dati NoSQL, usa la sintassi SQL per lavorare con i dati.

Una query SQL per un database Azure Cosmos DB contenente i dati dei clienti potrebbe essere simile alla seguente:

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

Il risultato di questa query è costituito da uno o più documenti JSON, come illustrato di seguito:

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

Azure Cosmos DB for MongoDB

MongoDB è un database open source popolare in cui i dati vengono archiviati in formato JSON binario (BSON). Azure Cosmos DB for MongoDB consente agli sviluppatori di usare il codice e le librerie client di MongoDB per lavorare con i dati in Azure Cosmos DB.

Il linguaggio di query MongoDB (MQL) usa una sintassi compatta e orientata agli oggetti in cui gli sviluppatori usano oggetti per chiamare metodi. Ad esempio, la query seguente usa il metodo find per eseguire query sulla raccolta products nell'oggetto db:

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

I risultati di questa query sono costituiti da documenti JSON, simili a questo:

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

Azure Cosmos DB for PostgreSQL

Azure Cosmos DB for PostgreSQL è un database relazionale nativo di PostgreSQL distribuito a livello globale che partiziona automaticamente i dati per consentire di creare app altamente scalabili. È possibile iniziare a creare app in un gruppo di server a nodo singolo con la stessa procedura usata altrove per PostgreSQL. Man mano che aumentano i requisiti di scalabilità e prestazioni dell'app, è possibile passare facilmente a più nodi distribuendo in modo trasparente le tabelle. PostgreSQL è un sistema di gestione di database relazionali (RDBMS) in cui si definiscono tabelle relazionali di dati. Ad esempio, è possibile definire una tabella di prodotti come quella seguente:

ProductID ProductName Price
123 Martello 2.99
162 Screwdriver 3.49

È quindi possibile eseguire una query su questa tabella per recuperare il nome e il prezzo di un prodotto specifico usando SQL come illustrato di seguito:

SELECT ProductName, Price 
FROM Products
WHERE ProductID = 123;

I risultati di questa query conterranno una riga per il prodotto 123, come illustrato di seguito:

ProductName Price
Martello 2.99

Azure Cosmos DB for Table

Azure Cosmos DB for Table viene usato per lavorare con i dati nelle tabelle di coppie chiave-valore, analogamente all'archiviazione tabelle di Azure. Offre maggiore scalabilità e prestazioni superiori rispetto all'archiviazione tabelle di Azure. Ad esempio, è possibile definire una tabella denominata Customers come questa:

PartitionKey RowKey Nome E-mail
1 123 Joe Jones joe@litware.com
1 124 Samir Nadoy samir@northwind.com

È quindi possibile usare l'API Tabella tramite uno degli SDK specifici del linguaggio per effettuare chiamate all'endpoint servizio per recuperare i dati dalla tabella. Ad esempio, la richiesta seguente restituisce la riga contenente il record per Samir Nadoy nella tabella precedente:

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

Azure Cosmos DB for Apache Cassandra

Azure Cosmos DB for Apache Cassandra è compatibile con Apache Cassandra, che è un popolare database open source che usa una struttura di archiviazione a famiglia di colonne. Le famiglie di colonne sono tabelle simili a quelle di un database relazionale, con l'eccezione che non è obbligatorio per ogni riga avere le stesse colonne.

Ad esempio, è possibile creare una tabella Employees come illustrato di seguito:

ID Nome Manager
1 Sue Smith
2 Ben Chan Sue Smith

Cassandra supporta una sintassi basata su SQL, quindi un'applicazione client potrebbe recuperare il record per Ben Chan come indicato di seguito:

SELECT * FROM Employees WHERE ID = 2

Azure Cosmos DB for Apache Gremlin

Azure Cosmos DB for Apache Gremlin viene usata con i dati in una struttura a grafo in cui le entità sono definite come vertici che formano nodi nel grafo connesso. I nodi sono connessi da archi che rappresentano relazioni, come illustrato di seguito:

Grafico che mostra i dipendenti e i reparti e le connessioni tra loro

L'esempio nell'immagine mostra due tipi di vertice (dipendente e reparto) e gli archi che li connettono (il dipendente "Ben" segnala al dipendente "Sue" ed entrambi i dipendenti lavorano nel reparto "Hardware").

La sintassi Gremlin include funzioni per operare su vertici e archi, consentendo di inserire, aggiornare, eliminare ed eseguire query sui dati nel grafico. Ad esempio, è possibile usare il codice seguente per aggiungere un nuovo dipendente denominato Alice che segnala al dipendente con ID 1 (Sue).

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

La query seguente restituisce tutti i vertici di dipendente, in ordine di ID.

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