Identificare le API di Azure Cosmos DB
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 per PostgreSQL è l'opzione PostgreSQL distribuita in Azure. 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 | |
---|---|---|---|
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:
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')