Funzionalità multimodello
Si applica a: database SQL di Azure Istanza gestita di SQL di Azure database SQL in Fabric
I database multimodello consentono di archiviare e usare i dati rappresentati in più formati di dati, ad esempio dati relazionali, grafi, documenti JSON/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 general purpose. 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 un'ampia gamma di 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 se non si desidera 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.
- Se si vuole usare il linguaggio Transact-SQL per eseguire query e analizzare i dati relazionali e NoSQL, integrare tali dati con strumenti e applicazioni che possono usare il linguaggio SQL.
- Se si vogliono applicare funzionalità del database, ad esempio tecnologie in memoria, è possibile 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.
Nelle sezioni seguenti, è possibile trovare altre informazioni sulle funzionalità multimodello più importanti di Azure SQL.
Nota
È possibile usare espressioni di percorso JSON, espressioni XQuery/XPath, funzioni spaziali ed espressioni query-grafo nella stessa query Transact-SQL per accedere ai dati archiviati nel database. Qualsiasi strumento o linguaggio di programmazione in grado di eseguire query Transact-SQL può usare quell'interfaccia di query per accedere ai dati multimodello. Questa è la differenza principale rispetto ai database multimodello, come ad esempio Azure Cosmos DB che fornisce API specializzate per diversi modelli di dati.
Funzionalità del grafo
Il database SQL di Azure offre funzionalità di database a grafo per modellare le relazioni molti a molti nel 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 di connessione (ad esempio, Mi piace o amici).
Ecco alcune funzionalità che rendono univoco un database a grafo:
- Gli archi sono entità di prima classe in un database a grafo. Possono avere attributi o proprietà associati.
- Un singolo arco può collegare 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 del grafo e le funzionalità di query del grafo sono integrate in Transact-SQL e usufruiscono dei vantaggi dell'uso di SQL Server come sistema fondamentale di gestione dei database. Le funzionalità del grafico usano query Transact-SQL standard migliorate con l'operatore MATCH
del grafico per eseguire query sui dati pertinenti.
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 scelta può basarsi sui seguenti fattori:
- È necessario modellare dati gerarchici in cui un solo nodo può avere più elementi padre, per cui 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
Il database SQL di Azure consente di analizzare ed eseguire query sui dati rappresentati in formato JavaScript Object Notation (JSON) e di 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 viceversa. È 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 usato per scambiare dati nelle moderne applicazioni Web e per dispositivi mobili. JSON è usato anche per archiviare 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 opzioni sono:
- JSON_MODIFY: consente di aggiornare il valore all'interno del testo JSON.
- OPENJSON: per query e analisi più avanzate, la funzione OPENJSON può trasformare un array di oggetti JSON in un set di righe. È possibile eseguire qualsiasi query SQL sul set di risultati restituito.
- FOR JSON: consente di formattare i dati archiviati nelle tabelle relazionali come testo JSON.
Per altre informazioni, vedere l'articolo su come Usare i dati JSON.
In alcuni scenari specifici è possibile usare i modelli di documento invece dei modelli relazionali:
- L'elevata normalizzazione dello schema non conferisce vantaggi significativi poiché si accede contemporaneamente a tutti i campi di oggetti, oppure non si aggiornano mai le parti normalizzate degli oggetti. Tuttavia, il modello normalizzato aumenta la complessità delle query a causa del numero elevato di tabelle che è necessario unire per ottenere i dati.
- Si opera con applicazioni che usano documenti JSON come modelli di dati o di comunicazione in modo nativo e non si desidera introdurre livelli aggiuntivi che vadano a trasformare i dati relazionali in JSON e viceversa.
- È necessario semplificare il modello di dati denormalizzando le tabelle figlio o i modelli Entità-Oggetto-Valore.
- È necessario caricare o esportare i dati archiviati in formato JSON senza uno strumento aggiuntivo che analizzi 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 integrato e specializzato e funzioni di query che elaborano dati XML.
Il database di SQL Server offre una potente piattaforma per lo sviluppo di applicazioni complete per la gestione di dati semistrutturati. Il Supporto per XML è integrato in tutti i componenti del database e include i seguenti elementi:
- È possibile archiviare in modo nativo i valori XML in una colonna di tipo di dati xml che può essere tipizzata in base a una raccolta di schemi XML o lasciata non tipizzata. È possibile indicizzare la colonna XML.
- È possibile specificare una query XQuery sui dati XML archiviati in colonne e variabili di tipo XML. È possibile usare le funzionalità di XQuery in qualsiasi query Transact-SQL che acceda a qualsiasi 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 in massa di dati XML.- È possibile trasformare i dati relazionali in formato XML.
In alcuni scenari specifici è possibile usare i modelli di documento invece dei modelli relazionali:
- L'elevata normalizzazione dello schema non conferisce vantaggi significativi poiché si accede contemporaneamente a tutti i campi di oggetti, oppure non si aggiornano mai le parti normalizzate degli oggetti. Tuttavia, il modello normalizzato aumenta la complessità delle query a causa del numero elevato di tabelle che è necessario unire per ottenere i dati.
- Si opera con applicazioni che usano documenti XML come modelli di dati o di comunicazione in modo nativo e non si desidera introdurre livelli aggiuntivi che vadano a trasformare i dati relazionali in JSON e viceversa.
- È necessario semplificare il modello di dati denormalizzando le tabelle figlio o i modelli Entità-Oggetto-Valore.
- È necessario caricare o esportare i dati archiviati in formato XML senza uno strumento aggiuntivo che analizzi i dati.
Funzionalità spaziali
I dati spaziali rappresentano informazioni sulla posizione fisica e sulla forma degli oggetti geometrici. Questi oggetti possono essere punti oppure oggetti più complessi, come ad esempio paesi, 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 geography rappresenta i dati in un sistema di coordinate terrestri.
Le funzionalità spaziali in Azure SQL consentono di archiviare dati geometrici e geografici. Azure SQL consente di analizzare ed eseguire query sui dati rappresentati in formato JSON e di esportare i dati relazionali come testo JSON tramite gli oggetti spaziali. Questi oggetti spaziali includono Point, LineString e Polygon. Il database SQL di Azure fornisce inoltre indici spaziali specializzati che possono essere usati 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 hanno tipi o strutture specializzati che supportano le coppie chiave-valore, poiché le strutture di 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é del tipo nvarchar(max)
. Se il valore è un documento JSON, è possibile usare un vincolo CHECK
per verificare 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 soltanto schematica per ottenere prestazioni migliori.
Vedere Come bwin sta usando OLTP in memoria di SQL Server 2016 per ottenere prestazioni e ridimensionamento senza precedenti per un esempio di come il modello relazionale può essere usato in modo efficace nella pratica come soluzione per coppia chiave-valore. 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 i seguenti articoli: