SQL è il modo più preferito per coinvolgere i database relazionali per quanto riguarda le query. Resta inteso che gli utenti avrebbero lavorato con database relazionali come MySQL e PostgreSQL che utilizzano la funzione di query SQL. In generale, SQL è facile da capire e quindi è diventato ampiamente utilizzato soprattutto nei database relazionali.
Tuttavia, SQL è piuttosto complesso quando si tenta di coinvolgere un'ampia serie di documenti in un database. In poche parole, non è destinato ai database di documenti poiché presenta una serie di battute d'arresto. Ad esempio, non è possibile interrogare facilmente i documenti di array incorporati o piuttosto sarà necessario progettare un sottoprogramma per iterare e filtrare i dati restituiti per fornire i risultati richiesti. Di conseguenza, ciò comporterà un incremento della durata dell'esecuzione. Ma avere una buona comprensione di SQL fornirà un terreno migliore per interagire con MongoDB da un certo punto piuttosto che iniziare da zero.
In questo blog utilizzeremo il programma Studio 3T per mostrare le varie query di join SQL e come riprogettarle in query MongoDB per ottenere prestazioni migliori. Il programma può essere scaricato da questo link.
Collegamento di SQL a MongoDB
Esistono diversi driver o meglio interfacce attraverso le quali è possibile utilizzare SQL per comunicare con MongoDB, ad esempio ODBC. ODBC sta per Open Database Connectivity. Si tratta semplicemente di un'interfaccia che consente alle applicazioni di accedere ai dati nei sistemi di gestione dei database utilizzando SQL come processo standard di accesso a tali dati. Viene fornito con un ulteriore vantaggio di interoperabilità per cui una singola applicazione può accedere a più sistemi di gestione di database.
In questo blog, produrremo e testeremo il codice da SQL e quindi lo ottimizzeremo tramite un editor di aggregazione per produrre una query MongoDB.
Mappatura del grafico da SQL a MongoDB
Prima di entrare in molti dettagli, dobbiamo comprendere le relazioni di base tra questi 2 database, in particolare le parole chiave nel concetto di query.
Terminologia e concetti
SQL | MongoDB |
---|---|
Tabella Riga Colonna Join di tabelle | Raccolta Documento BSON Campo $lookup |
La chiave primaria in SQL definisce una colonna univoca che sostanzialmente dispone le righe in ordine di tempo record. D'altra parte, la chiave primaria in MongoDB è un campo univoco per contenere un documento e garantire che i campi indicizzati non memorizzino valori duplicati.
Multiplenines Diventa un DBA MongoDB - Portare MongoDB in produzioneScopri cosa devi sapere per distribuire, monitorare, gestire e ridimensionare MongoDBScarica gratuitamenteCorrelazione tra SQL e MongoDB
Diciamo che abbiamo i dati di uno studente e vogliamo registrare questi dati sia nel database SQL che in MongoDB. Possiamo definire un semplice oggetto studente come:
{
name: ‘James Washington’,
age: 15,
grade: A,
Score: 10.5
}
Nella creazione di una tabella SQL, dobbiamo definire i nomi delle colonne e il tipo di dati mentre in MongoDB verrà creata automaticamente una raccolta durante il primo inserimento.
La tabella seguente ci aiuterà a capire come alcune delle istruzioni SQL possono essere scritte in MongoDB.
Istruzione dello schema SQL | Istruzioni dello schema MongoDB |
---|---|
Per inserire un documento nel database | Possiamo definire un progetto di schema utilizzando alcuni moduli come mangusta e definire i campi come un oggetto piuttosto che inserire un documento direttamente per mostrare la correlazione. L'ID archiviato principale verrà generato automaticamente durante l'inserimento di un documento. Inserimento di un nuovo documento per creare la collezione |
Utilizzo dell'istruzione ADD per aggiungere una nuova colonna alla tabella esistente. | La struttura dei documenti di raccolta non è ben definita e quindi aggiorna i documenti a livello di documento utilizzando updateMany() |
Per eliminare una colonna (unità) | Per eliminare un campo (unità) |
Per eliminare un tavolo studenti | Per eliminare gli studenti della raccolta |
Istruzione SQL Select | MongoDB trova dichiarazioni |
---|---|
Seleziona tutte le righe | Seleziona tutti i documenti |
Per restituire solo colonne specifiche. | Per restituire solo campi specifici. Per impostazione predefinita, il campo _id viene restituito se non diversamente specificato nel processo di proiezione. L'impostazione di _id:0 significa che solo il documento restituito avrà solo il nome e i valori dell'oggetto voto. |
Per selezionare righe specifiche con un valore di colonna corrispondente. | Per selezionare documenti specifici con un valore di campo corrispondente. |
Selezione di righe con una colonna i cui valori hanno alcuni caratteri come valore del criterio fornito | Selezione di documenti con un campo i cui valori hanno alcuni caratteri come valore del criterio fornito |
Per restituire le righe in ordine crescente utilizzando la chiave primaria. | Per restituire i documenti in ordine crescente utilizzando la chiave primaria |
Raggruppare le righe restituite in base a una colonna (voto) | Raggruppare i documenti restituiti in base a un campo (grado) |
Limitare il numero di righe restituite e saltarne alcune | Limitare il numero di documenti restituiti e saltare le righe |
Un'opzione essenziale è sapere come viene eseguita la nostra query, quindi utilizzare il metodo di spiegazione. | |
Istruzione di aggiornamento SQL | Dichiarazioni di aggiornamento MongoDB |
---|---|
Aggiorna la colonna del voto per gli studenti la cui età è uguale o superiore a 15 anni | Qui utilizziamo alcuni operatori come $gt, $lt e $lte. |
Incremento di alcuni valori di colonna | |
Istruzione di eliminazione SQL | MongoDB rimuove le istruzioni |
---|---|
Per eliminare tutte le righe | Per eliminare tutti i documenti. |
Per eliminare una riga specifica in cui una colonna ha un valore specifico. | |
Questa tabella di mappatura di esempio ti consentirà di comprendere meglio ciò che impareremo nel prossimo argomento.
SQL e Studio 3T
Studio 3T è uno dei programmi disponibili che aiuta a connettere SQL e MongoDB. Ha una funzione di query SQL per migliorarne una per manipolare SQL. La query viene interpretata nella shell Mongo per produrre un semplice codice di query nell'equivalente del linguaggio MongoDB. Oltre a eseguire semplici query, l'applicazione Studio 3T ora può eseguire join.
Per i nostri dati di esempio sopra, dopo aver collegato il database in Studio 3T, possiamo utilizzare la finestra SQL per trovare il documento che corrisponde ai nostri criteri, ad esempio:
SELECT * FROM students WHERE name LIKE 'James%';
Se hai un documento con il campo del nome impostato sul valore James, verrà restituito. Allo stesso modo, se fai clic sulla scheda del codice della query, ti verrà presentata una finestra con il codice MongoDB equivalente. Per la dichiarazione sopra, avremo:
db.getCollection("students").find(
{
"name" : /^James.*$/i
}
);
Riepilogo
A volte potresti volere un modo rapido per interagire con MongoDB dalla conoscenza che hai su SQL. Abbiamo appreso alcune somiglianze di codice di base tra SQL e il suo equivalente in MongoDB. Inoltre, alcuni programmi come Studio 3T dispongono di strumenti ben consolidati per convertire la query SQL in un linguaggio equivalente a MongoDB e ottimizzare questa query per ottenere risultati migliori. Bene, per la maggior parte di noi, questo sarà un ottimo strumento per semplificare il nostro lavoro e garantire che qualsiasi codice abbiamo alla fine sia ottimale per le prestazioni del nostro database. Nella parte 2 di questo blog, impareremo a conoscere SQL INNER JOIN in MongoDB.