Condividi tramite


Scegliere un'API in Azure Cosmos DB

SI APPLICA A: NoSQL MongoDB Cassandra Gremlin Tabella PostgreSQL

Azure Cosmos DB è un database NoSQL, relazionale e vettoriale completamente gestito per lo sviluppo di app moderne. Azure Cosmos DB solleva gli utenti dalle attività di amministrazione dei database occupandosi automaticamente della gestione, degli aggiornamenti e dell'applicazione di patch. nonché della gestione della capacità con opzioni di scalabilità automatica e serverless convenienti che rispondono alle esigenze dell'applicazione in termini di capacità per soddisfare la richiesta.

API in Azure Cosmos DB

Azure Cosmos DB offre più API di database, tra cui NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin e Table. Usando queste API, è possibile modellare i dati reali usando documenti, coppie chiave-valore, grafo e modelli di dati della famiglia di colonne. Queste API consentono alle applicazioni di considerare il Azure Cosmos DB come se fosse costituito da diverse altre tecnologie di database, senza il sovraccarico della gestione, e con approcci di scalabilità. Azure Cosmos DB consente di usare gli ecosistemi, gli strumenti e le competenze già disponibili per la modellazione dei dati ed eseguire query con le varie API.

Tutte le API offrono scalabilità automatica di archiviazione e velocità effettiva, flessibilità e garanzie di prestazioni. Non esiste un'API migliore ed è possibile scegliere una delle API per compilare l'applicazione. Questo articolo consente di scegliere un'API in base ai requisiti del carico di lavoro e del team.

Considerazioni relative alla scelta di una API

L'API per NoSQL è nativa di Azure Cosmos DB.

Le API per MongoDB, PostgreSQL, Cassandra, Gremlin e Table implementano il protocollo wire dei motori di database open source. Queste API sono più appropriate se le condizioni seguenti sono vere:

  • Se si dispone di applicazioni MongoDB, PostgreSQL Cassandra o Gremlin
  • Se non si vuole riscrivere l'intero livello di accesso ai dati
  • Se si vuole usare l'ecosistema di sviluppatori open source, i driver client, le competenze e le risorse per il database
  • Per usare le funzionalità di base di Azure Cosmos DB, ad esempio:
    • Distribuzione globale
    • Scalabilità elastica dell'archiviazione e della velocità effettiva
    • Prestazioni elevate su larga scala
    • Bassa latenza
    • Possibilità di eseguire carichi di lavoro transazionali e analitici
    • Piattaforma completamente gestita
  • Se si sviluppano app modernizzate in un ambiente multicloud

È possibile compilare nuove applicazioni con queste API o eseguire la migrazione dei dati esistenti. Per eseguire le app migrate, modificare la stringa di connessione dell'applicazione e continuare l'esecuzione come prima. Quando si esegue la migrazione di app esistenti, assicurarsi di valutare il supporto delle funzionalità di queste API.

In base al carico di lavoro, è necessario scegliere l'API adatta alle esigenze. L'immagine seguente mostra un diagramma di flusso su come scegliere l'API corretta durante la creazione di nuove app o la migrazione di app esistenti ad Azure Cosmos DB:

Diagramma dell'albero delle decisioni per scegliere un'API in Azure Cosmos DB.

Diagramma dell'albero delle decisioni per scegliere un'API in Azure Cosmos DB. Metà del diagramma illustra il numero di carichi di lavoro di database open source esistenti che possono usare le API corrispondenti per Azure Cosmos DB. L'altra metà del diagramma illustra come le nuove applicazioni possono usare l'API per NoSQL o usare le competenze esistenti con le API per i database open source.

API per NoSQL

L'API Azure Cosmos DB per NoSQL archivia i dati in formato documento. Offre la migliore esperienza end-to-end con controllo completo sull'interfaccia, sul servizio e sulle librerie client dell'SDK. Tutte le nuove funzionalità che vengono introdotte in Azure Cosmos DB sono prima di tutto disponibili negli account API per NoSQL. Gli account NoSQL forniscono supporto per l'esecuzione di query sugli elementi usando la sintassi SQL (Structured Query Language), uno dei linguaggi di query più noti e diffusi per eseguire query su oggetti JSON. Per altre informazioni, vedere il modulo di training API di Azure Cosmos DB per NoSQL e Introduzione alle query SQL.

Se si esegue la migrazione da altri database, ad esempio Oracle, DynamoDB, HBase e così via, e se si vogliono usare le tecnologie modernizzate per compilare le app, l'API per NoSQL è l'opzione consigliata. L'API per NoSQL supporta l'analisi e offre l'isolamento delle prestazioni tra carichi di lavoro operativi e analitici.

API per MongoDB

L'API Azure Cosmos DB per MongoDB archivia i dati in una struttura di documenti tramite il formato BSON. È compatibile con il protocollo di collegamento MongoDB; tuttavia, non usa alcun codice nativo correlato a MongoDB. L'API per MongoDB è un'ottima scelta se si vuole usare l'ecosistema e le competenze MongoDB più ampi, senza compromettere l'uso delle funzionalità di Azure Cosmos DB.

Tra le funzionalità offerte da Azure Cosmos DB non è necessario trovare compromessi per:

  • Scalabilità
  • Disponibilità elevata
  • Replica geografica
  • Più posizioni di scrittura
  • Gestione automatica e trasparente delle partizioni
  • Replica trasparente tra archivi operativi e analitici

È possibile usare le app MongoDB esistenti con l'API per MongoDB cambiando semplicemente la stringa di connessione. È possibile spostare qualsiasi dato esistente usando strumenti MongoDB nativi, ad esempio mongodump e mongorestore o usando lo strumento Migrazione del database di Azure. Gli strumenti, ad esempio la shell MongoDB, MongoDB Compasse Robo3T, possono eseguire query e usare i dati come fanno con MongoDB nativo. Per altre informazioni, vedere l'articolo API per MongoDB.

Api per PostgreSQL

Azure Cosmos DB for PostgreSQL è un servizio gestito per l'esecuzione di PostgreSQL su qualsiasi scala, con la superpotenza open source Citus delle tabelle distribuite. Archivia i dati in un singolo nodo o distribuiti in una configurazione a più nodi.

Azure Cosmos DB for PostgreSQL è basato su PostgreSQL nativo, anziché su un fork PostgreSQL, e consente di scegliere le versioni principali del database supportate dalla community di PostgreSQL. È ideale per l'avvio in un database a nodo singolo con indicizzazione avanzata, funzionalità geospaziali e supporto JSONB. In un secondo momento, se sono necessarie prestazioni maggiori, è possibile aggiungere nodi al cluster senza tempi di inattività.

Se si sta cercando un database relazionale open source gestito con prestazioni elevate e replica geografica, Azure Cosmos DB for PostgreSQL è la scelta consigliata. Per altre informazioni, vedere l'Introduzione ad Azure Cosmos DB for PostgreSQL.

API per Apache Cassandra

L'API Azure Cosmos DB per Cassandra archivia i dati in uno schema orientato alle colonne. Apache Cassandra offre un approccio altamente distribuito e con scalabilità orizzontale per l'archiviazione di grandi volumi di dati offrendo allo stesso tempo un approccio flessibile a uno schema orientato alle colonne. L'API per Cassandra in Azure Cosmos DB si allinea a questa filosofia di approccio ai database NoSQL distribuiti. Questa API per Cassandra è un protocollo wire compatibile con Apache Cassandra nativo. È consigliabile prendere in considerazione l'API per Cassandra per trarre vantaggio dall'elasticità e dalla natura completamente gestita di Azure Cosmos DB e usare ancora la maggior parte delle funzionalità native di Apache Cassandra, degli strumenti e dell'ecosistema. Questa natura completamente gestita significa nell'API per Cassandra rende non necessario gestire il sistema operativo, la macchina virtuale Java, Il Garbage Collector, le prestazioni di lettura/scrittura, i nodi, i cluster e così via.

È possibile usare i driver client Apache Cassandra per connettersi all'API per Cassandra. L'API per Cassandra consente di interagire con i dati tramite Cassandra Query Language (CQL) e strumenti come la shell CQL, i driver client Cassandra con cui si ha già familiarità. L'API per Cassandra supporta attualmente solo scenari OLTP. Usando l'API per Cassandra, è anche possibile usare le funzionalità univoche di Azure Cosmos DB, ad esempio feed di modifiche. Per altre informazioni, vedere l'articolo API per Cassandra. Per altre informazioni se si ha già familiarità con Apache Cassandra, ma non si ha familiarità con Azure Cosmos DB, vedere Come adattarsi all'API per Cassandra.

API per Apache Gremlin

L'API Azure Cosmos DB per Gremlin consente agli utenti di eseguire query sui grafi e di archiviare i dati come bordi e vertici.

Usare l'API per Gremlin per gli scenari seguenti:

  • Coinvolgimento di dati dinamici
  • Coinvolgimento di dati con relazioni complesse
  • Coinvolgimento di dati troppo complessi per essere modellati con database relazionali
  • Se si vuole usare l'ecosistema e le competenze Gremlin esistenti

L'API per Gremlin combina la potenza degli algoritmi di database a grafo con un'infrastruttura gestita altamente scalabile. Questa API offre una soluzione univoca e flessibile ai problemi di dati comuni associati alla mancanza di flessibilità o approcci relazionali. L'API per Gremlin attualmente supporta solo scenari OLTP.

L'API per Gremlin si basa sul framework di graph computing Apache TinkerPop. L'API per Gremlin usa lo stesso linguaggio di query Graph per inserire ed eseguire query sui dati. Usa la strategia di partizione di Azure Cosmos DB per eseguire le operazioni di lettura/scrittura dal motore di database Graph. L'API per Gremlin include un supporto per il protocollo wire con Gremlin open source, quindi è possibile usare gli SDK Gremlin open source per compilare l'applicazione. L'API per Gremlin funziona anche con Apache Spark e GraphFrames per scenari di grafi analitici complessi. Per altre informazioni, vedere l'articolo API per Gremlin.

API per Table

L'API Azure Cosmos DB per Table archivia i dati in formato chiave/valore. Se attualmente si usa l'archiviazione tabelle di Azure, è possibile che vengano riscontrate alcune limitazioni in termini di latenza, scalabilità, velocità effettiva, distribuzione globale, gestione degli indici, prestazioni di query ridotte. API per Table supera queste limitazioni ed è la scelta consigliata per eseguire la migrazione dell'app se si vogliono sfruttare i vantaggi di Azure Cosmos DB. L'API per Table supporta solo scenari OLTP.

Le applicazioni scritte per l'archiviazione tabelle di Azure possono eseguire la migrazione all'API per la tabella con piccole modifiche al codice e sfruttare le funzionalità Premium. Per altre informazioni, vedere l'articolo API per tabella.

Pianificazione della capacità durante la migrazione dei dati

Si sta tentando di pianificare la capacità per una migrazione ad Azure Cosmos DB for NoSQL o MongoDB da un cluster di database esistente? È possibile usare le informazioni del cluster di database esistente per la pianificazione della capacità.