Domande frequenti su Azure Cosmos DB for NoSQL

SI APPLICA A: NoSQL

Come si inizia a sviluppare su Azure Cosmos DB for NoSQL?

Per prima cosa, è necessario iscriversi per ottenere una sottoscrizione di Azure. Dopo aver ottenuto una sottoscrizione di Azure, è possibile aggiungere un contenitore dell'API for NoSQL alla sottoscrizione di Azure.

Sono disponibili Software Development Kit (SDK) per .NET, Python, Node.js, JavaScript, Go e Java. Gli sviluppatori possono anche usare l'API REST per interagire con le risorse di Azure Cosmos DB da un'ampia gamma di piattaforme e linguaggi.

Sono disponibili esempi di Azure Cosmos DB for NoSQL per iniziare?

Vedere questi esempi di codice e modelli di avvio rapido per l'API for NoSQL:

Azure Cosmos DB for NoSQL supporta i dati senza schema?

Sì. L'API for NoSQL consente alle applicazioni di archiviare documenti JSON arbitrari come elementi senza hint o definizioni dello schema. I dati sono immediatamente disponibili per le query tramite il linguaggio di query Azure Cosmos DB for NoSQL.

Azure Cosmos DB for NoSQL supporta le transazioni ACID (atomicità, coerenza, isolamento, durabilità)?

Sì. L'API for NoSQL supporta le transazioni tra documenti espresse usando batch negli SDK o come trigger e stored procedure JavaScript. L'ambito delle transazioni è limitato a una singola partizione in ogni contenitore e le transazioni vengono eseguite con semantica ACID in modalità "tutto o niente", isolate dall'altro codice e le altre richieste utente eseguite contemporaneamente. Se si verificano eccezioni, viene eseguito il rollback dell'intera transazione.

Come si crea un database di Azure Cosmos DB for NoSQL?

È possibile creare database usando uno di questi strumenti:

Come si configurano le autorizzazioni e gli utenti nativi del database di Azure Cosmos DB for NoSQL?

È possibile creare utenti e autorizzazioni usando uno degli SDK di Azure Cosmos DB for NoSQL o l'API REST. Per altre informazioni, vedere configurare utenti e token delle risorse. La creazione di autorizzazioni tramite token delle risorse è consentita a livello di contenitore e dei relativi discendenti, ad esempio documenti e allegati. Di conseguenza, la creazione di un'autorizzazione a livello di database o di account non è attualmente consentita.

È possibile eseguire l'autenticazione in Azure Cosmos DB for NoSQL usando gli account Microsoft Entra ID esistenti?

Sì. Azure Cosmos DB supporta l'autenticazione di Microsoft Entra per gestire il servizio e le relative risorse (piano di controllo) e per eseguire dati, operazioni e query (piano dati). L'autenticazione del piano di controllo viene eseguita usando la funzionalità di controllo degli accessi in base al ruolo di Azure. È possibile usare un ruolo predefinito preconfigurato](../../role-based-access-control/built-in-roles.md) oppure è possibile creare un ruolo personalizzato. Con il controllo degli accessi in base al ruolo di Azure è possibile gestire account, database, contenitori e metadati. Il piano di controllo include operazioni tra cui, a titolo esemplificativo:

  • Creazione, sostituzione o eliminazione di database - Creazione, sostituzione o eliminazione di contenitori - Lettura o sostituzione della velocità effettiva di database - Lettura o sostituzione della velocità effettiva di contenitori. Per altre informazioni, vedere Controllo degli accessi in base al ruolo per il piano di controllo di Azure Cosmos DB. L'autenticazione del piano dati usa un'API personalizzata per l'implementazione del controllo degli accessi in base al ruolo nativo di NoSQL. Con questa implementazione nativa è anche possibile usare ruoli preconfigurati o personalizzati. Con il controllo degli accessi in base al ruolo nativo, è possibile eseguire query, gestire elementi o eseguire altre operazioni comuni. Il piano dati include operazioni tra cui, a titolo esemplificativo:
  • Creazione, sostituzione, aggiornamento o eliminazione di elementi - Applicazione di patch agli elementi - Esecuzione di query. Per altre informazioni, vedere Controllo degli accessi in base al ruolo per il piano dati di Azure Cosmos DB.

Azure Cosmos DB for NoSQL supporta il linguaggio di query SQL?

SQL (Structured Query Language) è un linguaggio usato in genere per eseguire query sui dati relazionali. L'API for NoSQL include un linguaggio di query NoSQL personalizzato derivato da SQL. Il linguaggio di query NoSQL include un subset del linguaggio di query SQL in genere associato a SQL Server insieme a varie ottimizzazioni specifiche di NoSQL. Il linguaggio di query NoSQL offre operatori gerarchici e relazionali avanzati e un'estendibilità tramite funzioni definite dall'utente basate su JavaScript. La grammatica JSON consente la modellazione di documenti JSON come alberi con nodi con etichetta, che vengono usati sia dalle tecniche di indicizzazione automatica di Azure Cosmos DB che dal dialetto di query SQL di Azure Cosmos DB. Per informazioni sull'uso di questo linguaggio di query, vedere Query NoSQL.

Azure Cosmos DB for NoSQL supporta le funzioni di aggregazione SQL?

L'API for NoSQL supporta l'aggregazione tramite funzioni di aggregazione, ad esempio: COUNT, MAX, AVG e SUM mediante il linguaggio di query NoSQL.

In che modo Azure Cosmos DB for NoSQL fornisce il controllo della concorrenza?

L'API for NoSQL supporta il controllo di concorrenza ottimistica tramite tag di entità HTTP o ETag. Ogni risorsa API for NoSQL ha un ETag, che viene impostato nel server ogni volta che un documento viene aggiornato. In tutti i messaggi di risposta sono inclusi l'intestazione ETag e il valore corrente. Gli ETag possono essere usati con l'intestazione If-Match per consentire al server di stabilire se una risorsa deve essere aggiornata. Il valore di If-Match è il valore ETag con cui eseguire il confronto. Se il valore ETag corrisponde al valore ETag del server, la risorsa verrà aggiornata. Se l'ETag non è aggiornato, il server rifiuta l'operazione con un codice di risposta di tipo "HTTP 412 - Precondizione non riuscita". Il client recupera quindi nuovamente la risorsa per acquisire il relativo valore ETag aggiornato. Inoltre, gli ETag possono essere usati con l'intestazione If-None-Match per stabilire se è necessario ripetere il recupero di una risorsa.

La maggior parte degli SDK dell'API for NoSQL include classi per gestire il controllo di concorrenza ottimistica.

Come è possibile eseguire inserimenti bulk in Azure Cosmos DB for NoSQL?

Usare la funzionalità di importazione bulk in .NET SDK o Java SDK per l'API for NoSQL per importare set di dati di grandi dimensioni. Questa funzionalità ottimizza la velocità effettiva di cui è stato effettuato provisioning per importare set di dati di grandi dimensioni.

In alternativa, usare Apache Spark per importare dati su larga scala usando Python o Scala.

Azure Cosmos DB for NoSQL supporta la memorizzazione nella cache dei collegamenti alle risorse?

Sì. Dato che Azure Cosmos DB for NoSQL è un servizio RESTful, i collegamenti alle risorse sono non modificabili e possono essere memorizzati nella cache. I client dell'API for NoSQL possono specificare un'intestazione "If-None-Match" per le letture su qualsiasi contenitore o documento di tipo risorsa e quindi aggiornare le copie locali in seguito alla modifica della versione del server.

È disponibile un'istanza locale di Azure Cosmos DB for NoSQL?

Sì. L'emulatore Azure Cosmos DB offre un'emulazione ultra fedele del servizio Azure Cosmos DB. Supporta funzionalità identiche ad Azure Cosmos DB in varie API. Questa funzionalità include il supporto per la creazione di elementi, l'esecuzione di query su elementi, il provisioning di contenitori e il ridimensionamento dei contenitori. È possibile sviluppare e testare applicazioni usando gli endpoint dell'emulatore. È quindi possibile distribuire le applicazioni in Azure su scala globale modificando la stringa di connessione dall'emulatore al servizio live.

Perché i valori a virgola mobile lunghi in un elemento di Azure Cosmos DB for NoSQL vengono arrotondati quando si usa Esplora dati nel portale?

Questa limitazione di Esplora dati è una limitazione di JavaScript. JavaScript usa numeri in formato a virgola mobile e doppia precisione come previsto dallo standard IEEE 754. Questo tipo di dati può contenere in modo sicuro solo numeri compresi tra -(253-1) e 253-1 (ovvero 9007199254740991).