DocumentDB SQL - Panoramica
DocumentDB è la più recente piattaforma di database di documenti NoSQL di Microsoft che viene eseguita su Azure. In questo tutorial, impareremo tutto sull'esecuzione di query sui documenti utilizzando la versione speciale di SQL supportata da DocumentDB.
Database di documenti NoSQL
DocumentDB è il più recente database di documenti NoSQL di Microsoft, tuttavia, quando diciamo database di documenti NoSQL, cosa intendiamo precisamente per NoSQL e database di documenti?
SQL significa Structured Query Language, che è un linguaggio di query tradizionale dei database relazionali. SQL è spesso equiparato ai database relazionali.
È davvero più utile pensare a un database NoSQL come un database non relazionale, quindi NoSQL significa davvero non relazionale.
Esistono diversi tipi di database NoSQL che includono archivi di valori chiave come:
- Archiviazione tabelle di Azure
- Negozi a colonne, come Cassandra
- Database di grafici, come NEO4
- Database di documenti, come MongoDB e Azure DocumentDB
Perché la sintassi SQL?
All'inizio può sembrare strano, ma in DocumentDB, che è un database NoSQL, interroghiamo usando SQL. Come accennato in precedenza, questa è una versione speciale di SQL radicata nella semantica JSON e JavaScript.
SQL è solo un linguaggio, ma è anche un linguaggio molto popolare, ricco ed espressivo. Quindi, sembra decisamente una buona idea usare un dialetto di SQL piuttosto che inventare un modo completamente nuovo di esprimere le query che avremmo bisogno di imparare se volessi estrarre i documenti dal tuo database.
SQL è progettato per database relazionali e DocumentDB è un database di documenti non relazionali. Il team di DocumentDB ha effettivamente adattato la sintassi SQL per il mondo non relazionale dei database di documenti, e questo è ciò che si intende con il rooting di SQL in JSON e JavaScript.
Il linguaggio si legge ancora come SQL familiare, ma la semantica è tutta basata su documenti JSON senza schema piuttosto che su tabelle relazionali. In DocumentDB, lavoreremo con i tipi di dati JavaScript piuttosto che con i tipi di dati SQL. Avremo familiarità con SELECT, FROM, WHERE e così via, ma i tipi JavaScript, che sono limitati a numeri e stringhe, oggetti, array, Boolean e null sono di gran lunga inferiori rispetto alla vasta gamma di tipi di dati SQL.
Allo stesso modo, le espressioni vengono valutate come espressioni JavaScript piuttosto che come una qualche forma di T-SQL. Ad esempio, in un mondo di dati denormalizzati, non abbiamo a che fare con le righe e le colonne, ma con documenti privi di schema con strutture gerarchiche che contengono array e oggetti nidificati.
Come funziona SQL?
Il team di DocumentDB ha risposto a questa domanda in diversi modi innovativi. Alcuni di loro sono elencati come segue:
Innanzitutto, supponendo che tu non abbia modificato il comportamento predefinito per indicizzare automaticamente ogni proprietà in un documento, puoi utilizzare la notazione puntata nelle tue query per navigare un percorso verso qualsiasi proprietà, non importa quanto profondamente possa essere annidata nel documento.
È inoltre possibile eseguire un'unione intra-documento in cui gli elementi della matrice annidata vengono uniti con il loro elemento padre all'interno di un documento in un modo molto simile al modo in cui viene eseguita un'unione tra due tabelle nel mondo relazionale.
Le tue query possono restituire documenti dal database così com'è, oppure puoi proiettare qualsiasi forma JSON personalizzata che desideri in base ai dati del documento che desideri.
SQL in DocumentDB supporta molti degli operatori comuni, tra cui:
Operazioni aritmetiche e bit per bit
Logica AND e OR
Uguaglianza e confronti di intervallo
Concatenazione di stringhe
Il linguaggio di query supporta anche una serie di funzioni integrate.