Skip to main content

Il database è il fondamento su cui poggia l’architettura delle applicazioni moderne. Non è solo un repository centrale per i dati, ma è il componente chiave che permette di acquisire, elaborare e trasformare le informazioni essenziali per il funzionamento del software.
Scegliere la tipologia giusta di database è quindi essenziale non solo per garantire prestazioni elevate alle proprie applicazioni, ma anche per assicurare loro scalabilità, resilienza e flessibilità nel lungo periodo.
In questo articolo vedremo la differenza tra database relazionali e database non relazionali e analizzeremo i diversi tipi di database NoSQL.

Database relazionali, alla base delle applicazioni di business

Com’è noto, i database relazionali (o database SQL) sono la tipologia più diffusa e vengono impiegati da decenni all’interno delle applicazioni informatiche. Alcuni volti noti di questo mondo, come MySQL, Microsoft SQL Server e PostgreSQL, sono tutti database relazionali, o meglio dei Relational Database Management Systems o RDBMS.

La caratteristica di punta dei DB relazionali è l’adozione di uno schema fisso, basato su tabelle, per definire entità e relazioni. Ogni tabella è un’entità, ovvero una rappresentazione di un oggetto (cliente, ordine, prodotto…), le sue colonne sono gli attributi e le righe sono i singoli record, ossia le istanze specifiche di quell’entità. Le relazioni tra le tabelle vengono gestite tramite chiavi primarie e chiavi esterne, che permettono di collegare entità differenti mantenendo l’integrità, l’accuratezza e la coerenza dei dati.

Il modello relazionale, che risale agli anni ’70, permette di gestire con efficacia transazioni complesse, supportando un’ampia gamma di applicazioni aziendali, tra cui quelle core come l’ERP, i CRM o i MES nel mondo delle operation.

Database non relazionali nell’era dei Big Data

I database non relazionali (o database NoSQL), dal canto loro, sono nati per rispondere alle (nuove) esigenze di flessibilità, scalabilità e prestazioni imposte dalla crescita esponenziale dei dati e dalle architetture applicative moderne e distribuite.

I database non relazionali nascono agli albori del nuovo millennio come conseguenza di due fenomeni: l’abbattimento di costo dello storage e l’esigenza di gestire, da parte delle applicazioni, molteplici tipologie di dati non strutturati senza bisogno di definire in anticipo rigidi schemi di dati. In particolare, quattro esigenze hanno condotto al cambio di paradigma:

1

Supporto per dati non strutturati e semi-strutturati

Molte applicazioni moderne devono gestire dati eterogenei e non strutturati (documenti, file multimediali, JSON). A differenza del modello classico, i database non relazionali offrono flessibilità nel trattare dati dinamici e non strutturati.
2

Schema di dati flessibile

È l’elemento che più di ogni altro differenzia le due tipologie di database. In quelli relazionali, ogni modifica alla struttura del database (come aggiungere una colonna) richiede modifiche allo schema e può impattare sulle prestazioni del sistema. Nei database NoSQL, invece, non c’è uno schema rigido, e per questo possono essere aggiunti nuovi campi o modificati quelli esistenti senza impatti di natura sistemica.
3

Altissime prestazioni

Per query complesse su grandi volumi di dati, le performance dei database relazionali possono degradare in modo significativo. I database NoSQL sono invece ottimizzati per operazioni ad alte prestazioni, gestendo migliaia di richieste al secondo o anche di più.
4

Esigenza di scalabilità orizzontale

I database relazionali tendono a scalare in modo verticale, ovvero aumentando la potenza del singolo server, ma con l’aumento esponenziale nel volume dei dati questo diventa costoso e inefficiente. I database NoSQL, invece, sono progettati per scalare orizzontalmente, distribuendo i dati su più server e consentendo la gestione di volumi enormi di informazioni in modo efficiente.

I diversi tipi di database NoSQL

L’assenza di uno schema di dati vincolante ha dato vita a diverse tipologie di database non relazionali, ciascuna ottimizzata per specifiche esigenze applicative e tipi di dati.

Database a documenti

È una tipologia molto diffusa e viene adottata, per esempio, da MongoDB e CouchDB. Qui, i dati sono memorizzati sotto forma di documenti in formato JSON, BSON o XML; ogni documento è un’unità autonoma, può avere una struttura diversa e può essere modificato senza impattare sulla struttura del database. I database a documenti (o database orientati ai documenti) offrono inoltre potenti meccanismi di indicizzazione e di query.

Database a grafo

Questa tipologia (moderna) di database (es, Neo4j) memorizza i dati di un grafo di conoscenza, rappresenta le entità come nodi e le relazioni come archi. È un modello perfetto per rappresentare reti complesse di connessioni tra le entità; non a caso, l’applicazione per eccellenza sono i social network.

Database wide-column

I database wide-column sono appositamente progettati per gestire grandi volumi di dati, organizzati in colonne flessibili. A differenza dei database relazionali, dove lo schema è rigido e uniforme per tutte le righe, in quelli wide column le colonne possono variare, a livello di nome e anche di formato, da riga a riga all’interno della stessa tabella. Questa caratteristica li rende efficienti per gestire dati in costante evoluzione e per eseguire operazioni di lettura e scrittura su larga scala. Un esempio di database wide column è Apache Cassandra.

Database key-value

Questi database, che rappresentano la forma concettualmente più semplice di NoSQL, memorizzano i dati come coppie chiave-valore, offrendo un accesso estremamente veloce e semplificato alle informazioni. Sono ideali per applicazioni di caching e per la memorizzazione delle informazioni sulla sessione utente (es, carrelli dell’eCommerce). Un esempio di database key-value è Redis.

Database NoSQL: una risorsa indispensabile, ma anche una sfida

Nel corso degli anni, i database non relazionali sono diventati una risorsa indispensabile per le aziende, ovvero per i loro team IT.

La crescente complessità dell’application modernization, l’esplosione dei volumi e della varietà dei dati, nonché le esigenze di scalabilità pressoché illimitata hanno reso in molti casi i database NoSQL una necessità piuttosto che un’opzione. Si pensi a tutto il mondo dell’eCommerce, alle piattaforme documentali e di gestione dei contenuti o alle infinite applicazioni afferenti all’universo dell’Internet of Things. Senza dimenticare, cosa tutt’altro che secondaria, l’universo dei Big Data, della Data Science e degli analytics, che richiedono l’elaborazione e l’analisi di grandi volumi di dati e traggono vantaggio dalle doti di scalabilità e dalle elevate prestazioni di questi database.

Sfruttare appieno le potenzialità di un database NoSQL è comunque una sfida non indifferente. Questi, infatti, richiedono competenze specialistiche per assicurare la flessibilità e la scalabilità per cui sono nati; per esempio, la progettazione del modello di dati e l’ottimizzazione delle query richiedono esperienza, e lo stesso si può dire per la configurazione, il dimensionamento e la gestione dell’infrastruttura sottostante. Questa deve essere configurata per garantire alta affidabilità, resilienza e performance di altissimo livello, perché il database potrebbe supportare le applicazioni (core) su cui si basa il business dell’azienda.

Anche in questo caso, affidarsi a un partner esperto è una soluzione strategica. Un servizio gestito di un database non relazionale si farebbe infatti carico della configurazione dell’infrastruttura, della gestione dei cluster e, soprattutto, andrebbe a garantire performance allineate a quelle dell’applicazione sovrastante. Tutto ciò, inoltre, permetterebbe ai team IT di concentrarsi esclusivamente sullo sviluppo, sull’ottimizzazione e sull’aggiornamento delle applicazioni, contribuendo direttamente al vantaggio competitivo dell’azienda.

Sfrutta al massimo il potenziale dei tuoi dati in modo flessibile e scalabile, con il servizio gestito basato su MongoDB: QUIMONGO

Paolo Varalta

Autore Paolo Varalta

Amo l'automazione, il monitoraggio e la documentazione. In Intesys Networking mi occupo di definire e implementare i vari servizi gestiti offerti dall'azienda e di aiutare le aziende ad approcciare il Cloud e le tematiche di sicurezza.

Altri post di Paolo Varalta
CONTATTACI