Funzionalità a più modelli di database SQL di Azure e Istanza gestita di SQL

Si applica a:database SQL di Azure Istanza gestita di SQL di Azure

I database a più modelli consentono di archiviare e usare dati in più formati, ad esempio dati relazionali, grafici, documenti JSON o XML, dati spaziali e coppie chiave-valore.

La famiglia di prodotti SQL di Azure usa un modello relazionale che offre prestazioni ottimali per un'ampia gamma di applicazioni per utilizzo generico. Tuttavia, i prodotti SQL di Azure come database SQL di Azure e Istanza gestita di SQL non sono limitati ai dati relazionali. Consentono di usare formati non relazionali strettamente integrati nel modello relazionale.

Prendere in considerazione l'uso delle funzionalità a più modelli di Azure SQL nei casi seguenti:

  • Sono disponibili alcune informazioni o strutture più adatte ai modelli NoSQL e non si vuole usare un database NoSQL separato.
  • La maggior parte dei dati è adatta a un modello relazionale ed è necessario modellare alcune parti dei dati in uno stile NoSQL.
  • Si vuole usare il linguaggio Transact-SQL per eseguire query e analizzare i dati relazionali e NoSQL e quindi integrare tali dati con strumenti e applicazioni che possono usare il linguaggio SQL.
  • Si vogliono applicare funzionalità del database, ad esempio tecnologie in memoria, per migliorare le prestazioni dell'analisi o l'elaborazione delle strutture di dati NoSQL. È possibile usare la replica transazionale o le repliche leggibili per creare copie dei dati e scaricare alcuni carichi di lavoro analitici dal database primario.

Le sezioni seguenti descrivono le funzionalità più importanti di Azure SQL per più modelli.

Nota

È possibile usare espressioni JSONPath, espressioni XQuery/XPath, funzioni spaziali ed espressioni di query del grafo nella stessa query Transact-SQL per accedere a tutti i dati archiviati nel database. Qualsiasi strumento o linguaggio di programmazione in grado di eseguire query Transact-SQL può anche usare tale interfaccia di query per accedere ai dati multimodelli. Questa è la differenza principale rispetto ai database multimodelli, ad esempio Azure Cosmos DB, che forniscono API specializzate per i modelli di dati.

Funzionalità del grafo

I prodotti SQL di Azure offrono funzionalità di database a grafo per modellare relazioni molti-a-molti in un database. Un grafo è una raccolta di nodi (o vertici) e archi (o relazioni). Un nodo rappresenta un'entità, ad esempio una persona o un'organizzazione. Un bordo rappresenta una relazione tra i due nodi che si connette ( ad esempio, mi piace o amici).

Ecco alcune funzionalità che rendono univoco un database a grafo:

  • I bordi sono entità di prima classe in un database a grafo. Possono avere attributi o proprietà associati.
  • Un singolo arco può connettere in modo flessibile più nodi in un database a grafo.
  • È possibile esprimere facilmente criteri di ricerca e query di navigazione a più hop.
  • È possibile esprimere facilmente chiusura transitiva e query polimorfiche.

Le relazioni dei gragrafi e le funzionalità di query del grafo sono integrate in Transact-SQL e ricevono i vantaggi derivanti dall'uso del motore di database di SQL Server come sistema di gestione di database di base. Le funzionalità di Graph usano query Transact-SQL standard migliorate con l'operatore graph per eseguire query sui dati del grafo MATCH .

Un database relazionale può ottenere qualsiasi risultato possibile per un database a grafo. Tuttavia, un database a grafo può rendere più semplice esprimere determinate query. La decisione di sceglierne una rispetto all'altra può essere basata sui fattori seguenti:

  • È necessario modellare i dati gerarchici in cui un nodo può avere più elementi padre, quindi non è possibile usare il tipo di dati hierarchyId.
  • L'applicazione ha relazioni molti-a-molti complesse. Man mano che l'applicazione evolve, vengono aggiunte nuove relazioni.
  • È necessario analizzare relazioni e dati interconnessi.
  • Si vogliono usare condizioni di ricerca T-SQL specifiche del grafo, ad esempio SHORTEST_PATH.

Funzionalità JSON

Nei prodotti AZURE SQL è possibile analizzare ed eseguire query sui dati rappresentati in formato JSON (JavaScript Object Notation) ed esportare i dati relazionali come testo JSON. JSON è una funzionalità di base del motore di database di SQL Server.

Le funzionalità JSON consentono di inserire documenti JSON in tabelle, trasformare i dati relazionali in documenti JSON e trasformare i documenti JSON in dati relazionali. È possibile usare il linguaggio Transact-SQL standard migliorato con funzioni JSON per l'analisi dei documenti. È anche possibile usare indici non cluster, indici columnstore o tabelle ottimizzate per la memoria per ottimizzare le query.

JSON è un formato di dati diffuso per lo scambio di dati in applicazioni Web e per dispositivi mobili moderne. JSON viene usato anche per l'archiviazione di dati semistrutturati nei file di log o nei database NoSQL. Molti servizi Web REST restituiscono risultati formattati come testo JSON oppure accettano dati formattati come JSON.

La maggior parte dei servizi di Azure dispone di endpoint REST che restituiscono o usano JSON. Questi servizi includono Ricerca cognitiva di Azure, Archiviazione di Azure e Azure Cosmos DB.

Se si dispone di testo JSON, è possibile estrarre dati da JSON o verificare che JSON sia formattato correttamente usando le funzioni predefinite JSON_VALUE, JSON_QUERY e ISJSON. Le altre funzioni sono:

  • JSON_MODIFY: consente di aggiornare i valori all'interno del testo JSON.
  • OPENJSON: può trasformare una matrice di oggetti JSON in un set di righe per query e analisi più avanzate. È possibile eseguire qualsiasi query SQL sul set di risultati restituito.
  • FOR JSON: consente di formattare i dati archiviati nelle tabelle relazionali come testo JSON.

Diagram that illustrates JSON functions.

Per altre informazioni, vedere Come usare i dati JSON.

È possibile usare i modelli di documento anziché i modelli relazionali in alcuni scenari specifici:

  • La normalizzazione elevata dello schema non offre vantaggi significativi perché si accede a tutti i campi degli oggetti contemporaneamente o non si aggiornano mai parti normalizzate degli oggetti. Tuttavia, il modello normalizzato aumenta la complessità delle query perché è necessario unire un numero elevato di tabelle per ottenere i dati.
  • Si usano applicazioni che usano in modo nativo documenti JSON per la comunicazione o i modelli di dati e non si vogliono introdurre più livelli che trasformano i dati relazionali in JSON e viceversa.
  • È necessario semplificare il modello di dati denormalizzando le tabelle figlio o i modelli Entity-Object-Value.
  • È necessario caricare o esportare i dati archiviati in formato JSON senza uno strumento aggiuntivo che analizza i dati.

Funzionalità XML

Le funzionalità XML consentono di archiviare e indicizzare i dati XML nel database e usare operazioni XQuery o XPath native per usare i dati XML. I prodotti SQL di Azure hanno un tipo di dati XML specializzato e funzioni di query che elaborano dati XML.

Il motore di database di SQL Server offre una potente piattaforma per lo sviluppo di applicazioni per la gestione di dati semistrutturati. Il supporto per XML è integrato in tutti i componenti del motore di database e include:

  • Possibilità di archiviare i valori XML in modo nativo in una colonna di tipo dati XML che può essere tipizzata in base a una raccolta di XML Schema o non tipizzata. È possibile indicizzare la colonna XML.
  • Possibilità di specificare una query XQuery sui dati XML archiviati in colonne e variabili del tipo XML. È possibile usare le funzionalità XQuery in qualsiasi query Transact-SQL che accede a un modello di dati usato nel database.
  • Indicizzazione automatica di tutti gli elementi nei documenti XML tramite l'indice XML primario. In alternativa, è possibile specificare i percorsi esatti che devono essere indicizzati usando l'indice XML secondario.
  • OPENROWSET, che consente il caricamento bulk di dati XML.
  • Possibilità di trasformare i dati relazionali in formato XML.

È possibile usare i modelli di documento anziché i modelli relazionali in alcuni scenari specifici:

  • La normalizzazione elevata dello schema non offre vantaggi significativi perché si accede a tutti i campi degli oggetti contemporaneamente o non si aggiornano mai parti normalizzate degli oggetti. Tuttavia, il modello normalizzato aumenta la complessità delle query perché è necessario unire un numero elevato di tabelle per ottenere i dati.
  • Si usano applicazioni che usano documenti XML in modo nativo per la comunicazione o i modelli di dati e non si vogliono introdurre più livelli che trasformano i dati relazionali in JSON e viceversa.
  • È necessario semplificare il modello di dati denormalizzando le tabelle figlio o i modelli Entity-Object-Value.
  • È necessario caricare o esportare i dati archiviati in formato XML senza uno strumento aggiuntivo che analizza i dati.

Funzionalità spaziali

I dati spaziali rappresentano informazioni sulla posizione fisica e sulla forma degli oggetti. Questi oggetti possono essere posizioni di punti o oggetti più complessi, ad esempio paesi/aree geografiche, strade o laghi.

Azure SQL supporta due tipi di dati spaziali:

  • Il tipo geometria rappresenta i dati in un sistema di coordinate Euclideo (piano).
  • Il tipo geografia rappresenta i dati in un sistema di coordinate terrestri.

Le funzionalità spaziali in Azure SQL consentono di archiviare dati geometrici e geografici. È possibile usare gli oggetti spaziali in SQL di Azure per analizzare ed eseguire query sui dati rappresentati in formato JSON ed esportare i dati relazionali come testo JSON. Questi oggetti spaziali includono Point, LineString e Polygon. Azure SQL offre anche indici spaziali specializzati che è possibile usare per migliorare le prestazioni delle query spaziali.

Il supporto spaziale è una funzionalità di base del motore di database di SQL Server.

Coppie chiave-valore

I prodotti SQL di Azure non dispongono di tipi o strutture specializzati che supportano coppie chiave-valore, perché le strutture chiave-valore possono essere rappresentate in modo nativo come tabelle relazionali standard:

CREATE TABLE Collection (
  Id int identity primary key,
  Data nvarchar(max)
)

È possibile personalizzare questa struttura chiave-valore per soddisfare le esigenze senza alcun vincolo. Ad esempio, il valore può essere un documento XML anziché il nvarchar(max) tipo . Se il valore è un documento JSON, è possibile usare un CHECK vincolo che verifica la validità del contenuto JSON. È possibile inserire un numero qualsiasi di valori correlati a una chiave nelle colonne aggiuntive. Ad esempio:

  • Aggiungere colonne calcolate e indici per semplificare e ottimizzare l'accesso ai dati.
  • Definire la tabella come tabella ottimizzata per la memoria e solo schema per ottenere prestazioni migliori.

Per un esempio di come un modello relazionale può essere usato in modo efficace come soluzione di coppia chiave-valore in pratica, vedere Come bwin usa SQL Server 2016 OLTP in memoria per ottenere prestazioni e scalabilità senza precedenti. In questo case study bwin ha usato un modello relazionale per la soluzione di memorizzazione nella cache ASP.NET per ottenere 1,2 milioni di batch al secondo.

Passaggi successivi

Le funzionalità multimodello sono le principali funzionalità del motore di database di SQL Server condivise tra i prodotti SQL di Azure. Per altre informazioni su queste funzionalità, vedere questi articoli: