Quando gli sviluppatori pensano per la prima volta alla gestione dei dati o alla scelta di un database per la loro applicazione, la prima cosa che spesso viene in mente è —
— giusto, una tabella.
Poi impostano diverse tabelle per i diversi tipi di dati, come avere una tabella per gli utenti e un’altra per i prodotti, gli ordini, e così via. Con i dati distribuiti su diverse tabelle, sono destinati ad avere una relazione tra di loro. Pertanto, le tabelle avranno riferimenti agli elementi in altre tabelle tramite una chiave esterna. E infine, potrebbero finire per scegliere un database relazionale ogni volta per risolvere i loro problemi. Soprattutto quando si tratta di relazioni, l’idea di un database non relazionale potrebbe sembrare molto controintuitiva.
Ma il problema è — i dati non sono sempre piatti. I requisiti dei dati possono essere complessi e quando gli sviluppatori visualizzano i loro dati senza considerare i database, spesso non sono tabulari. Invece, possono apparire annidati, gerarchici o persino simili a grafi.
Non è necessario immaginare una tabella ogni volta che inizi a lavorare con i dati. Nelle applicazioni moderne, i dati devono spesso avere uno schema flessibile con tipi di dati complessi. Pertanto, appiattirli in una tabella potrebbe non essere sempre la scelta migliore. Inoltre, i database relazionali presentano anche le proprie limitazioni di scalabilità. Man mano che si scala, potresti dover preoccuparti dello sharding, che spesso richiede cambiamenti significativi a livello di applicazione.
Inserisci i database non relazionali, o più comunemente noti come NoSQL. Potresti perdere l’opportunità di estrarre tutto il potenziale del NoSQL se li hai evitati nelle tue scelte di progettazione. In questo articolo, definiamo rapidamente cos’è un database non relazionale e poi forniamo diverse scelte di database NoSQL per diversi problemi reali.
Verso la fine, parleremo anche dei vantaggi che i database NoSQL offrono rispetto a quelli relazionali e toccheremo anche i casi in cui un database relazionale è comunque la scelta migliore.
Database non relazionali, o NoSQL
In poche parole, questi database memorizzano i dati in un formato non tabellare. Esistono diversi tipi, ognuno costruito per scopi specifici e per il tipo di dati non strutturati che possono supportare. I più comuni sono:
- Database documentali: Memorizzano i dati in documenti simili a JSON
- Database chiave-valore: Memorizzano i dati con una struttura ‘chiave-valore’ per chiavi univoche.
- Database a grafo: Utilizzano nodi, archi e proprietà per rappresentare e memorizzare le relazioni tra i punti dati.
Altri tipi sono i database orientati alle colonne, in memoria e le serie temporali.
I diversi fornitori di database NoSQL offrono funzionalità come la creazione di indici su determinati campi, SDK amichevoli per lo sviluppatore, alta disponibilità, operazioni transazionali e la capacità di scalare facilmente il database su o giù.
Risolvere problemi reali con NoSQL
Vediamo alcuni esempi in cui risolviamo problemi della vita reale con i database NoSQL.
Costruzione di un’applicazione blog che supporta commenti e tag
I database documentali sono i migliori per tali sistemi di gestione dei contenuti. Ogni contenuto può essere un documento separato. Lo schema è flessibile e ciascun documento può contenere sub-collezioni. Puoi sfruttare le capacità di indicizzazione dei campi di array dei fornitori di database documentali per eseguire query complesse, ad esempio, recuperando tutti i blog con i relativi tag.
Piattaforme di social e professional networking
I database a grafo aiutano a definire relazioni complesse tra le persone. Trova facilmente amici di amici tramite ricerche a grafo.
Dati del sensore IoT
Utilizza dati in serie temporali per gestire enormi quantità di dati con timestamp provenienti da un dispositivo sensore.
Carrello della spesa
Utilizza un database chiave-valore, che offre alta concorrenza con letture e scritture veloci. Puoi anche utilizzare database chiave-valore per memorizzare le informazioni di sessione degli utenti e il carrello della spesa può essere un campo all’interno della sessione (per una singola sessione di acquisto).
Motori di raccomandazione
Utilizza database a grafo per mappare le relazioni tra utenti, prodotti e preferenze.
Dove NoSQL è superiore ai database relazionali
Ecco alcuni punti in cui i database NoSQL offrono vantaggi rispetto ai database relazionali:
- Produttività degli sviluppatori: I fornitori di database NoSQL offrono API e SDK progettati per lo sviluppo moderno delle applicazioni, consentendo prototipazione e sviluppo più rapidi.
- Scalabilità: I database NoSQL si scalano orizzontalmente (dove è sufficiente aggiungere più server o nodi), il che è economico e più facile da gestire rispetto alla scalabilità verticale richiesta dai database relazionali.
- Flessibilità: NoSQL offre uno schema flessibile, che è perfetto per lo sviluppo agile e per i requisiti delle applicazioni in evoluzione.
- Gestione dei dati nidificati: Spesso, i dati sono nidificati o gerarchici, come nei formati JSON o XML. I database NoSQL possono supportare questi formati, dove potrebbe essere necessaria una trasformazione complessa quando si utilizzano database relazionali per questi.
Dove i database relazionali mantengono un vantaggio
Di seguito sono riportati alcuni dei casi d’uso in cui i database relazionali rimangono rilevanti e rappresentano una buona scelta.
- Analisi e reporting: I database relazionali sono ottimizzati per query ad-hoc, aggregazioni e reporting. Per qualsiasi caso d’uso analitico e di reporting, i database relazionali sono ancora una scelta preferita.
- Uso intenso di relazioni e join: Sebbene sia possibile gestire e lavorare con relazioni anche con i database NoSQL, se la tua applicazione dipende fortemente dai join tra diversi set di dati, i database relazionali possono ancora essere una buona idea.
- Coerenza rispetto alla disponibilità: In scenari in cui la coerenza dei dati è più importante della disponibilità (ad esempio, nelle transazioni finanziarie), i database relazionali possono offrire maggiori garanzie.
E questo conclude il nostro articolo. Abbiamo esplorato cosa sono i database NoSQL e come affrontano le sfide reali nella gestione dei dati. I database NoSQL aprono un mondo di possibilità per le applicazioni moderne, dalla loro flessibilità nella gestione di strutture di dati complesse alle potenti funzionalità offerte dai fornitori. Per coloro che non hanno ancora provato il NoSQL, spero che questo vi ispiri a provare nel vostro prossimo progetto: potreste scoprire che è proprio ciò di cui avete bisogno.
Source:
https://dzone.com/articles/nosql-for-relational-minds