‫Istruttore: Proprio come nelle
‫sezioni precedenti, prima di immergerci in una
‫nuova tecnologia, impariamo effettivamente di cosa si tratta.
‫Quindi, in questo caso, impariamo cos'è effettivamente MongoDB, come
‫funziona e una rapida panoramica
‫di come si confronta con i database più tradizionali.
‫E cominciamo con una semplice panoramica.
‫Quindi MongoDB è ovviamente un database, ed
‫è un cosiddetto database NoSQL.
‫Ora alcune persone dicono anche No S Q
‫L, ma io continuerò a dire "nessun seguito", va bene?
‫Ora, l'altro tipo di database, che
‫è un po' più tradizionale, è il database
‫relazionale, a cui viene spesso confrontato NoSQL.
‫Ad ogni modo, in Mongo, che possiamo anche dire al posto
‫di MongoDB, ogni database può contenere una o più raccolte.
‫Quindi, se in realtà provieni da
‫uno di questi sistemi di database relazionali più tradizionali,
‫puoi pensare a una raccolta come a una tabella di dati.
‫Quindi, ogni raccolta può contenere una
‫o più strutture di dati chiamate documenti e,
‫ancora, in un database relazionale,
‫un documento sarebbe una riga in una tabella.
‫Quindi ogni documento contiene i dati
‫su una singola entità, ad esempio, un
‫post sul blog o un utente o una recensione, o
‫qualsiasi altra cosa.
‫Hai capito il punto, vero?
‫Ora la raccolta è come la struttura padre
‫che contiene tutte queste entità.
‫Ad esempio, una raccolta di blog per tutti i
‫post, una raccolta di utenti o una raccolta di recensioni.
‫E puoi anche vedere qui che il
‫documento ha un formato dati che assomiglia molto a JSON, il
‫che renderà il nostro lavoro
‫molto più semplice quando inizieremo a gestire questi documenti.
‫E ovviamente ne parleremo molto in seguito,
‫ma per ora impariamo a conoscere le caratteristiche principali di Mongo.
‫Quindi, secondo il sito Web di MongoDB,
‫MongoDB è un database di documenti con la scalabilità
‫e la flessibilità che desideri
‫e con le query e l'indicizzazione di cui hai bisogno.
‫Ora, sembra un po' esagerato, quindi
‫proviamo a capire cosa significa in realtà.
‫Quindi, come abbiamo visto prima, MongoDB è un database basato su documenti, quindi
‫memorizza i dati in documenti che
‫sono strutture dati accoppiate a valori di campo come JSON.
‫Quindi, di nuovo, memorizza i dati in questi documenti
‫anziché nelle righe in
‫una tabella come nei database relazionali tradizionali.
‫Si tratta quindi di un database
‫NoSQL e non relazionale.
‫Inoltre, MongoDB ha una scalabilità integrata, che semplifica la
‫distribuzione dei dati su più macchine
‫man mano che le tue app
‫ottengono sempre più
‫utenti e iniziano a generare una tonnellata di dati.
‫Quindi, qualunque cosa tu faccia, MongoDB ti renderà
‫molto facile crescere.
‫Successivamente, un'altra grande caratteristica di MongoDB è
‫la sua grande flessibilità.
‫Quindi non è necessario definire uno schema di dati del documento prima
‫di riempirlo con i dati, il
‫che significa che ogni documento può avere un numero e
‫un tipo di campi diversi.
‫E possiamo anche cambiare questi campi in ogni momento.
‫E tutto questo è davvero
‫in linea con alcune situazioni aziendali del mondo
‫reale, e quindi può diventare piuttosto utile.
‫MongoDB è anche un sistema di database molto performante.
‫Grazie a funzionalità come i modelli di dati
‫incorporati, l'indicizzazione, lo sharding, i documenti flessibili
‫di cui abbiamo già parlato, la duplicazione nativa e
‫molto altro ancora.
‫E non è necessario che tu sappia tutto
‫questo, ovviamente, ma è sicuramente bello sapere che MongoDB è altamente performante
‫se ne abbiamo bisogno.
‫Infine, volevo solo aggiungere che MongoDB
‫è un database gratuito
‫e open source, pubblicato con licenza SSPL.
‫Quindi, in sintesi, possiamo dire che MongoDB è
‫un ottimo sistema di
‫database per costruire molti tipi di applicazioni
‫web moderne, scalabili e flessibili.
‫E infatti, Mongo è probabilmente il database più utilizzato
‫senza JS, quindi è perfetto per noi
‫da utilizzare in questo corso.
‫Ok, ora parliamo un po'
‫più a fondo di questi documenti e, tornando
‫all'esempio dei post del nostro blog dall'inizio,
‫questa potrebbe essere una rappresentazione molto semplice
‫di un documento di un singolo post, giusto?
‫E ora, solo per fare un confronto,
‫ecco come potrebbero apparire esattamente gli
‫stessi dati come una riga in un database relazionale come
‫MySQL, o anche in un foglio di calcolo Excel, se
‫sei più abituato a questo.
‫Quindi, come ho detto un
‫po' prima, MongoDB utilizza un formato dati simile a
‫JSON per l'archiviazione dei dati chiamato BSON.
‫Sembra sostanzialmente uguale a JSON, ma è
‫digitato, il che significa che
‫tutti i valori avranno un tipo di dati come
‫stringa, booleano, data e insegnante, doppio oggetto o altro.
‫Impareremo tutto su questo più avanti in pratica.
‫Quindi ciò significa che tutti i documenti
‫MongoDB verranno effettivamente
‫digitati, che è diverso da JSON, va bene?
‫Ora, proprio come JSON, anche questi documenti BSON avranno
‫campi e i dati vengono archiviati
‫in coppie chiave-valore.
‫D'altra parte, in un database
‫relazionale, ogni campo è chiamato colonna.
‫Quindi anche qui puoi
‫vedere come questi database organizzano i dati in strutture di
‫tabelle mentre i nostri dati JSON sono molto più flessibili.
‫Prendiamo ad esempio il
‫campo tag, dove in realtà
‫abbiamo un array, quindi abbiamo fondamentalmente più valori per un campo, giusto?
‫Quindi MongoDB, spazio e DV in questo caso.
‫Ma nei database relazionali, ciò non è realmente consentito.
‫Non possiamo avere più valori in un
‫campo, quindi dovremmo effettivamente trovare soluzioni alternative per
‫questo che potrebbero comportare
‫più lavoro e più complicazioni complessive.
‫Ora un'altra caratteristica estremamente importante in MongoDB è
‫il concetto di documenti incorporati, che
‫è, ancora una volta, qualcosa che non è
‫presente nei database relazionali.
‫Quindi, nel nostro campo
‫dei commenti qui, abbiamo un array che contiene tre oggetti.
‫Uno per ogni
‫documento e ognuno di essi
‫potrebbe effettivamente essere il proprio documento, giusto?
‫Quindi immagina di avere una raccolta di
‫commenti che conteneva una serie di documenti di commento.
‫Ognuno di loro potrebbe effettivamente apparire esattamente così,
‫quindi con un autore e con il
‫testo del commento,
‫ma invece di farlo, includiamo questi commenti direttamente nel documento
‫del post del blog, quindi in altre parole, incorporiamo i
‫documenti dei commenti direttamente nel documento postale.
‫Quindi questo processo di incorporamento, o
‫denormalizzazione come possiamo anche chiamarlo, consiste fondamentalmente nell'includere,
‫quindi, nell'incorporare alcuni dati correlati in
‫un unico documento.
‫In questo esempio, i commenti sono correlati al post
‫e quindi sono inclusi nello stesso documento.
‫E questo rende un database più performante in
‫alcune situazioni perché in questo modo può essere
‫più facile leggere tutti
‫i dati di cui abbiamo bisogno tutti in una volta.
‫E questo è qualcosa di cui parleremo molto quando impareremo
‫a modellare i dati, ma
‫per ora spero che questo abbia ancora senso per te.
‫Ora, l'opposto dell'incorporamento o della denormalizzazione, è la
‫normalizzazione, ed è così che i dati vengono sempre modellati
‫nei database relazionali.
‫Quindi, in tal caso, non è possibile incorporare dati
‫e quindi la soluzione
‫è creare una tabella completamente nuova
‫per i commenti e quindi unire le tabelle
‫facendo riferimento al campo ID della tabella dei commenti.
‫Ora non useremo database relazionali in questo
‫corso, ma credo che sia comunque importante conoscere
‫le differenze se vuoi
‫diventare un buon sviluppatore di back-end.
‫Ad ogni modo, e ora solo
‫per finire, altre due cose sui documenti BSON.
‫Innanzitutto, la dimensione massima per ogni
‫documento è attualmente di 16 MB, ma potrebbe aumentare in futuro.
‫E in secondo luogo, ogni documento contiene un ID univoco,
‫che funge da chiave primaria di quel documento.
‫Viene generato automaticamente con il tipo di dati ID oggetto
‫ogni volta che c'è un
‫nuovo documento, quindi non dobbiamo preoccuparcene.
‫Va bene, e questa dovrebbe essere una panoramica abbastanza breve
‫per iniziare e
‫per utilizzare effettivamente MongoDB dalla prossima lezione in poi.
‫Quindi, andiamo avanti ora.