Condividi tramite


Database, contenitori ed elementi in Azure Cosmos DB

SI APPLICA A: NoSQL MongoDB Cassandra Gremlin Tabella

Azure Cosmos DB è una piattaforma completamente gestita distribuita come servizio (PaaS). Per iniziare a usare Azure Cosmos DB, creare un account Azure Cosmos DB in un gruppo di risorse di Azure nella sottoscrizione. Si creano quindi database e contenitori all'interno dell'account.

L’account Azure Cosmos DB contiene un nome Domain Name System (DNS) univoco. È possibile gestire il nome DNS usando molti strumenti, tra cui:

  • Portale di Azure
  • Modelli di Gestione risorse di Azure
  • modelli Bicep
  • Azure PowerShell
  • Interfaccia della riga di comando di Azure
  • SDK di gestione di Azure
  • API REST di Azure

Per replicare i dati e la velocità effettiva tra più aree di Azure, è possibile aggiungere e rimuovere aree di Azure all'account in qualsiasi momento. È possibile configurare l'account in modo da avere una o più aree di scrittura. Per altre informazioni, vedere Gestire un account di Azure Cosmos DB con il portale di Azure. È anche possibile configurare il livello di coerenza predefinito su un account.

Elementi in un account Azure Cosmos DB

Attualmente è possibile creare un massimo di 50 account Azure Cosmos DB in una sottoscrizione di Azure. È possibile aumentare questo limite facendo una richiesta di supporto.

È possibile gestire una quantità virtualmente illimitata di dati e di unità elaborate supportate per il provisioning con un singolo account Azure Cosmos DB. Per gestire i dati e la velocità effettiva con provisioning, creare uno o più database nel proprio account, e quindi creare uno o più contenitori per archiviare i dati.

L'immagine seguente mostra la gerarchia degli elementi in un account Azure Cosmos DB.

Diagramma della gerarchia di un account Azure Cosmos DB, che include un account, un database e un contenitore.

L'immagine seguente mostra la gerarchia di entità in un account di Azure Cosmos DB.

Diagramma della relazione tra un contenitore e gli elementi, incluse entità di pari livello, ad esempio stored procedure, funzioni definite dall'utente e trigger.

Database di Azure Cosmos DB

In Azure Cosmos DB un database è simile a uno spazio dei nomi. Un database è semplicemente un gruppo di contenitori. La tabella seguente illustra il mapping di un database a varie entità specifiche dell'API:

Entità Azure Cosmos DB API per NoSQL API per Apache Cassandra API per MongoDB API per Apache Gremlin API per Table
Database Azure Cosmos DB Database Keyspace Database Database Non applicabile

Nota

Con l'API per gli account Tabella, per gestire la compatibilità con Tabelle di Archiviazione di Azure, le tabelle in Azure Cosmos DB vengono create a livello di account.

Contenitore Azure Cosmos DB

Un contenitore di Azure Cosmos DB è la posizione in cui vengono archiviati i dati. A differenza della maggior parte dei database relazionali, che aumentano le dimensioni delle macchine virtuali, Azure Cosmos DB esegue automaticamente il ridimensionamento.

I dati vengono archiviati in uno o più server denominati partizioni. Per aumentare le partizioni, aumentare la velocità effettiva o aumentare automaticamente man mano che aumentano le risorse di archiviazione. Questa relazione fornisce una quantità virtualmente illimitata di velocità effettiva e archiviazione per un contenitore.

Quando si crea un contenitore, è necessario specificare una chiave di partizione. La chiave di partizione è una proprietà selezionata dagli elementi per consentire ad Azure Cosmos DB di distribuire i dati in modo efficiente tra le partizioni. Azure Cosmos DB usa il valore di questa proprietà per instradare i dati alla partizione appropriata da scrivere, aggiornare o eliminare. È inoltre possibile usare la chiave di partizione nella clausola WHERE nelle query per un recupero efficiente dei dati.

Il meccanismo di archiviazione sottostante per i dati in Azure Cosmos DB è denominato partizione fisica. Le partizioni fisiche possono avere una velocità effettiva fino a 10.000 unità richiesta al secondo e possono archiviare fino a 50 GB di dati. Azure Cosmos DB astrae questo concetto di partizionamento con una partizione logica, che può archiviare fino a 20 GB di dati.

Le partizioni logiche consentono al servizio di offrire maggiore elasticità e una migliore gestione dei dati nelle partizioni fisiche sottostanti man mano che vengono aggiunte più partizioni. Per altre informazioni sul partizionamento e sulle chiavi di partizione, vedere Partizionamento o ridimensionamento orizzontale in Azure Cosmos DB.

Quando si crea un contenitore, si configura la velocità effettiva in una delle modalità seguenti:

Nota

Non è possibile passare dalla velocità effettiva dedicata a quella condivisa e viceversa. I contenitori creati in un database con velocità effettiva condivisa non possono essere aggiornati in modo da avere una velocità effettiva dedicata. Per modificare un contenitore dalla velocità effettiva condivisa a quella dedicata, è necessario creare un nuovo contenitore e copiarvi i dati. La funzionalità di copia del contenitore in Azure Cosmos DB può semplificare questo processo.

I contenitori sono indipendenti dallo schema. Gli elementi all'interno di un contenitore possono avere schemi arbitrari o entità diverse, purché convidano la stessa chiave di partizione. Ad esempio, un contenitore può contenere un elemento o un documento con informazioni sul profilo cliente, insieme a uno o più elementi o documenti che rappresentano tutti gli ordini di vendita del cliente. È possibile inserire informazioni simili per tutti i clienti nello stesso contenitore.

Per impostazione predefinita, tutti i dati aggiunti a un contenitore vengono indicizzati automaticamente senza richiedere l'indicizzazione esplicita. È possibile personalizzare l'indicizzazione di un contenitore configurandone i criteri di indicizzazione.

Per evitare di influire sulle prestazioni, è possibile impostare una durata (TTL) per gli elementi selezionati in un contenitore o nell'intero contenitore per eliminare tali elementi in background con velocità effettiva inutilizzata. Tuttavia, anche se non vengono eliminati, i dati scaduti non vengono visualizzati in alcuna operazione di lettura. Per altre informazioni, vedere Configurazione del tempo di vita in Azure Cosmos DB.

Azure Cosmos DB offre una funzionalità predefinita per Change Data Capture denominata feed di modifiche. È possibile usarlo per sottoscrivere tutte le modifiche apportate ai dati all'interno del contenitore.

È possibile registrare stored procedure, trigger, funzioni definite dall'utente (UDF) e le procedure di tipo merge per il contenitore.

Ogni documento all'interno di un contenitore deve avere una proprietà id univoca all'interno del valore della proprietà di una chiave logica per tale contenitore. È possibile usare questa combinazione di proprietà per fornire un vincolo univoco all'interno di un contenitore, senza dover definirne uno in modo esplicito.

È anche possibile specificare un vincolo della chiave univoco nel contenitore di Azure Cosmos DB che usa una o più proprietà. Un vincolo di chiave univoca garantisce che uno o più valori siano univoci per ogni chiave di partizione logica. Se si crea un contenitore usando un criterio di chiave univoca, non è possibile creare elementi nuovi né aggiornarli con valori specificati dal vincolo di chiave univoca.

Un contenitore è specializzato in entità specifiche dell'API come illustrato nella tabella seguente:

Entità Azure Cosmos DB API per NoSQL API per Cassandra API per MongoDB API per Gremlin API per Table
Contenitore Azure Cosmos DB Contenitore Tabella Raccolta Grafico Tabella

Nota

Assicurarsi di non creare due contenitori con lo stesso nome ma maiuscole/minuscole diverse. Alcune parti della piattaforma Azure non fanno distinzione tra maiuscole e minuscole e questo tipo di denominazione può creare confusione o collisione tra i dati diagnostici e le azioni sui container.

Proprietà di un contenitore Azure Cosmos DB

Un contenitore Azure Cosmos DB dispone di un set di proprietà definite dal sistema. A seconda dell'API usata, alcune proprietà potrebbero non essere esposte direttamente. La tabella seguente illustra le proprietà definite dal sistema:

Proprietà definita dal sistema Generata dal sistema o configurabile dall'utente Scopo API per NoSQL API per Cassandra API per MongoDB API per Gremlin API per Table
_rid Generato dal sistema Identificatore univoco di un contenitore. No No No No
_etag Generato dal sistema Tag di entità usato per il controllo della concorrenza ottimistica. No No No No
_ts Generato dal sistema Ultimo indicatore orario aggiornato del contenitore. No No No No
_self Generato dal sistema URI indirizzabile del contenitore. No No No No
id Configurabile dall'utente Nome del contenitore.
indexingPolicy Configurabile dall'utente Criteri per compilare l'indice per il contenitore. No
TimeToLive Configurabile dall'utente Eliminazione automatica di un elemento da un contenitore dopo un periodo di tempo impostato. Per informazioni dettagliate, vedere Durata. No No No
changeFeedPolicy Configurabile dall'utente Criterio per leggere le modifiche apportate a elementi in un contenitore. Per informazioni dettagliate, vedere Feed di modifiche. No No No
uniqueKeyPolicy Configurabile dall'utente Criterio per garantire l'univocità di uno o più valori all'interno di una partizione logica. Per altre informazioni, vedere Vincoli di chiave univoca. No No No
AnalyticalTimeToLive Configurabile dall'utente Eliminazione automatica di un articolo da un contenitore dopo un periodo di tempo impostato, nel contesto di un archivio analitico. Per informazioni dettagliate, vedere Archivio analitico. No No No

Elementi di Azure Cosmos DB

A seconda dell'API usata, le singole entità di dati possono essere rappresentate in diversi modi:

Entità Azure Cosmos DB API per NoSQL API per Cassandra API per MongoDB API per Gremlin API per Table
Elemento Azure Cosmos DB Articolo Riga Documento Nodo o arco Articolo

Proprietà di un elemento

Ogni elemento Azure Cosmos DB dispone delle proprietà definite dal sistema seguenti. A seconda dell'API usata, alcune di queste potrebbero non essere esposte direttamente.

Proprietà definita dal sistema Generata dal sistema o definita dall'utente Scopo API per NoSQL API per Cassandra API DB per MongoDB API per Gremlin API per Table
_rid Generato dal sistema Identificatore univoco dell'elemento No No No No
_etag Generato dal sistema Tag di entità usato per il controllo della concorrenza ottimistica No No No No
_ts Generato dal sistema Indicatore orario dell'ultimo aggiornamento dell'elemento No No No No
_self Generato dal sistema URI indirizzabile dell'elemento No No No No
id Prima o dopo Nome univoco definito dall'utente in una partizione logica
Proprietà definite dall'utente arbitrarie Definiti dall'utente Proprietà definite dall'utente nella rappresentazione nativa dell'API (tra cui JSON, BSON e CQL)

Nota

L'univocità della proprietà id viene applicata all'interno di ogni partizione logica. Più documenti possono avere lo stesso valore proprietà id con valori di chiave di partizione diversi.

Operazioni sugli elementi

Gli elementi di Azure Cosmos DB supportano le operazioni seguenti. È possibile usare qualsiasi API di Azure Cosmos DB per eseguire le operazioni.

Operazione API per NoSQL API per Cassandra API per MongoDB API per Gremlin API per Table
Inserire, sostituire, eliminare, eseguire l'upsert, leggere