Negli ultimi 15 anni, le richieste nei confronti del moderno sviluppo di ap­pli­ca­zio­ni sono cambiate ra­di­cal­men­te: quantità di dati sempre maggiori devono essere ar­chi­via­te, elaborate e ag­gior­na­te in tempi sempre più rapidi. Per quanto riguarda la gestione di grandi quantità di dati, già da tempo i database NoSQL o non re­la­zio­na­li stanno facendo parlare di sé. Ma cos’è NoSQL in termini pratici? E quali vantaggi offre questo moderno approccio alle banche dati?

Cos’è di fatto NoSQL?

L’acronimo NoSQL significa “not only SQL”, e proprio in questo senso deve essere in­ter­pre­ta­to questo modello di banche dati: as­so­lu­ta­men­te non come una soluzione con­trap­po­sta, quanto piuttosto come un ar­ric­chi­men­to e un’utile in­te­gra­zio­ne dei tra­di­zio­na­li database SQL re­la­zio­na­li. I database NoSQL, infatti, superano i limiti dei sistemi re­la­zio­na­li, uti­liz­zan­do modelli di banche dati al­ter­na­ti­vi. Questo, tuttavia, non significa ne­ces­sa­ria­men­te che i sistemi SQL non vengano uti­liz­za­ti: esistono infatti anche numerose varianti miste in cui convivono entrambe le soluzioni e che vengono anch’esse comprese nella de­fi­ni­zio­ne generale di NoSQL.

Fino alla fine degli anni 2000, i database SQL rap­pre­sen­ta­va­no il non plus ultra del progresso ap­pli­ca­ti­vo. Altri approcci, come i database orientati agli oggetti, non hanno mai raggiunto una rilevanza pa­ra­go­na­bi­le in ragione della loro com­ples­si­tà di utilizzo. Un’al­ter­na­ti­va vera e propria si è con­cre­tiz­za­ta grazie allo sviluppo dei database NoSQL, che sono stati la risposta alle li­mi­ta­zio­ni e ai problemi delle banche dati re­la­zio­na­li. Queste ultime, infatti, spesso non sono in grado di sod­di­sfa­re le esigenze dei moderni sviluppi ap­pli­ca­ti­vi. A dif­fe­ren­za delle banche dati re­la­zio­na­li, i database NoSQL uti­liz­za­no in­no­va­zio­ni, come i server cloud, per offrire un modello di dati al­ter­na­ti­vo in cui possono essere ar­chi­via­ti ed elaborati mol­tis­si­mi dati di diverso tipo. Le strutture di dati così ottenute sono ef­fi­cien­ti e fles­si­bi­li e sono in grado di reagire ra­pi­da­men­te al mutamento delle esigenze.

I sistemi NoSQL vengono di frequente de­no­mi­na­ti sistemi ad archivi strut­tu­ra­ti, de­fi­ni­zio­ne che ne esplicita la dif­fe­ren­za so­stan­zia­le rispetto alle banche dati SQL re­la­zio­na­li: a dif­fe­ren­za di queste ultime, i database NoSQL non uti­liz­za­no schemi tabellari rigidi all’interno dei quali i dati devono essere definiti prima dell’ar­chi­via­zio­ne. I database NoSQL, infatti, fanno ricorso a metodi più fles­si­bi­li, che per­met­to­no di ag­giun­ge­re senza dif­fi­col­tà nuovi set di dati che si ag­gior­na­no di continuo nell’ap­pli­ca­zio­ne. Le soluzioni NoSQL sono pertanto adatte a essere uti­liz­za­te per l’ela­bo­ra­zio­ne di dati non strut­tu­ra­ti o anche sco­no­sciu­ti, cosa im­pen­sa­bi­le con una banca dati re­la­zio­na­le.

Come fun­zio­na­no i database NoSQL?

A dif­fe­ren­za delle banche dati re­la­zio­na­li basate su SQL, i database NoSQL non uti­liz­za­no per l’ar­chi­via­zio­ne dei dati tabelle tra­di­zio­na­li con righe e colonne. Anziché uti­liz­za­re le tabelle, or­ga­niz­za­no grandi quantità di dati con l’ausilio di tecniche fles­si­bi­li, ad esempio con documenti, grafici, coppie di valori e colonne. Perciò, i database NoSQL sono indicati per le ap­pli­ca­zio­ni che prevedono l’ela­bo­ra­zio­ne di grandi quantità di dati e che, pertanto, ri­chie­do­no strutture fles­si­bi­li. Poiché i sistemi NoSQL uti­liz­za­no hardware cluster e server cloud, le capacità vengono ripartite in modo uniforme e il database lavora senza dif­fi­col­tà anche in caso di un’elevata mole di dati. A dif­fe­ren­za delle banche dati re­la­zio­na­li, che all’aumentare della quantità di dati accusano ra­pi­da­men­te un calo di ef­fi­cien­za, i database NoSQL rap­pre­sen­ta­no una soluzione ef­fi­cien­te, fles­si­bi­le e scalabile anche in caso di un elevato volume di dati.

Una par­ti­co­la­ri­tà dei database NoSQL è inoltre la sca­la­bi­li­tà oriz­zon­ta­le. Le banche dati SQL re­la­zio­na­li sono scalate in direzione verticale e basano tutta la loro ef­fi­cien­za su un singolo server. Un in­cre­men­to della loro capacità passa ne­ces­sa­ria­men­te at­tra­ver­so l’in­ve­sti­men­to in un server più potente, il che, nel tempo, non solo è correlata a costi più elevati, ma limita anche le pos­si­bi­li­tà di sviluppo ap­pli­ca­ti­vo. Le soluzioni NoSQL ri­par­ti­sco­no ge­ne­ral­men­te i dati su diversi server. In caso di aumento della quantità di dati, è suf­fi­cien­te ag­giun­ge­re nuovi server. Questo fa sì che i database NoSQL siano in grado di me­mo­riz­za­re ed elaborare senza dif­fi­col­tà grandi volumi di dati, ca­rat­te­ri­sti­ca che li rende idonei so­prat­tut­to per le ap­pli­ca­zio­ni big data.

I quattro prin­ci­pa­li approcci NoSQL

I sistemi ad archivi strut­tu­ra­ti ri­nun­cia­no agli schemi rigidi delle loro con­tro­par­ti re­la­zio­na­li, di­ven­tan­do così soluzioni par­ti­co­lar­men­te indicate per le ap­pli­ca­zio­ni big data. A livello mondiale sono già di­spo­ni­bi­li numerosi database NoSQL di vario tipo (perlopiù open source ) che pre­sen­ta­no strutture diverse a seconda dello svi­lup­pa­to­re e dei requisiti. Sebbene non esistano regole uguali per tutti, i diversi approcci NoSQL possono essere suddivisi in quattro categorie prin­ci­pa­li.

Database orientati ai documenti

Nei database NoSQL orientati ai documenti, i dati vengono me­mo­riz­za­ti di­ret­ta­men­te in documenti con lunghezza variabile, ma non devono ne­ces­sa­ria­men­te essere strut­tu­ra­ti. A essi vengono associati dei co­sid­det­ti attributi o “tag” in base ai quali è possibile ef­fet­tua­re ricerche all’interno dei contenuti del documento. I database NoSQL orientati ai documenti sono par­ti­co­lar­men­te adatti per i sistemi di gestione dei contenuti e per i blog. Come formato dei dati viene at­tual­men­te uti­liz­za­to so­prat­tut­to il formato JSON (JavaScript Object Notation) che permette uno scambio veloce dei dati tra le ap­pli­ca­zio­ni.

Database a grafo

Un database a grafo crea delle relazioni tra i dati uti­liz­zan­do nodi e archi. At­tra­ver­so i nodi e i col­le­ga­men­ti tra di essi viene or­ga­niz­za­ta la rete di relazioni tra i dati. Nel caso di raccolte di dati con in­for­ma­zio­ni for­te­men­te correlate, i database a grafo NoSQL rag­giun­go­no pertanto pre­sta­zio­ni de­ci­sa­men­te migliori rispetto alle banche dati SQL re­la­zio­na­li. Questi database vengono uti­liz­za­ti so­prat­tut­to nell’ambito dei social media, ad esempio per rap­pre­sen­ta­re le relazioni tra follower su Twitter o Instagram.

Database key-value (chiave-valore)

Mentre le banche dati SQL re­la­zio­na­li uti­liz­za­no schemi e tabelle rigidi, i database chiave-valore ar­chi­via­no i dati sotto forma di coppie chiave-valore. Ai singoli valori vengono associate chiavi spe­ci­fi­che, laddove il set di dati stesso funge da chiave (key) e rap­pre­sen­ta un valore (value). La chiave co­sti­tui­sce al contempo un indice con il quale è possibile eseguire una ricerca all’interno del database. Le chiavi dei database chiave-valore NoSQL sono sempre univoche e sono as­si­mi­la­bi­li alle chiavi primarie delle banche dati re­la­zio­na­li.

Database orientati alle colonne

A dif­fe­ren­za dei modelli di banche dati re­la­zio­na­li, i sistemi di database orientati alle colonne ar­chi­via­no i set di dati non in righe, bensì in colonne. Questo rende possibili processi di lettura dati più brevi e un’elevata ef­fi­cien­za. Questo modello NoSQL viene utilizza so­prat­tut­to per il data mining e i programmi di analisi.

Vantaggi di NoSQL rispetto a SQL

A seconda della finalità dell’ap­pli­ca­zio­ne, NoSQL può offrire de­ter­mi­na­ti vantaggi rispetto alle classiche banche dati re­la­zio­na­li: laddove i sistemi SQL rag­giun­go­no ra­pi­da­men­te i loro limiti di capacità, come ad esempio nelle ap­pli­ca­zio­ni di ela­bo­ra­zio­ne di big data, i database NoSQL offrono modelli ad alta ef­fi­cien­za e scalabili, in grado di leggere ed elaborare enormi quantità di dati a gran­dis­si­ma velocità.

I database NoSQL ab­ban­do­na­no gli schemi rigidi dei sistemi SQL e puntano invece su modelli fles­si­bi­li, par­ti­co­lar­men­te adatti a elaborare grandi quantità di dati. Poiché ar­chi­via­no i dati su hardware cluster di­stri­bui­ti, sono meno esposti a guasti e de­ci­sa­men­te più economici rispetto all’in­stal­la­zio­ne di un unico potente server, le cui capacità vengono pun­tual­men­te esaurite rendendo ne­ces­sa­rio passare a un sistema con capacità superiore.

Database SQL Database NoSQL
Tipologia Un database per tutte le ap­pli­ca­zio­ni Diversi modelli di database, ad esempio database orientati ai documenti, database a grafo, database chiave-valore e database a colonne
Ar­chi­via­zio­ne dei dati I singoli dati (ad esempio “titolo del libro”) vengono ar­chi­via­ti in righe all’interno di una tabella e associati a de­ter­mi­na­ti attributi (ad esempio “autore”, “anno di pub­bli­ca­zio­ne”, ecc.). I set di dati vengono ar­chi­via­ti in tabelle separate e rias­sem­bla­ti dal sistema in caso di query di ricerca complesse. I database NoSQL non uti­liz­za­no tabelle, ma a seconda del tipo fanno ricorso a documenti completi, chiavi-valori, grafi o colonne.
Schema Il tipo e la struttura dei dati vengono definiti in anticipo. Per ar­chi­via­re nuove in­for­ma­zio­ni è ne­ces­sa­rio mo­di­fi­ca­re l’intero database (e, a questo scopo, passare alla modalità offline). Fles­si­bi­le. I nuovi set di dati possono essere aggiunti im­me­dia­ta­men­te. I dati strut­tu­ra­ti, semi-strut­tu­ra­ti e non strut­tu­ra­ti possono essere ar­chi­via­ti insieme, non è ne­ces­sa­ria alcuna con­ver­sio­ne pre­li­mi­na­re.
Sca­la­bi­li­tà Sca­la­bi­li­tà verticale. Un solo server deve as­si­cu­ra­re le pre­sta­zio­ni dell’intero sistema di banca dati; questo determina un calo dell’ef­fi­cien­za in caso di grandi volumi di dati. Sca­la­bi­li­tà oriz­zon­ta­le. Ciascun am­mi­ni­stra­to­re può ag­giun­ge­re nuovi commodity server e server cloud; il database NoSQL invia i dati au­to­ma­ti­ca­men­te a tutti i server.
Modello di sviluppo Open source (ad esempio MySQL) oppure software a pagamento (Oracle Database) Open source o software a pagamento
Ca­rat­te­ri­sti­che ACID: Atomicity, Con­si­sten­cy, Isolation, Du­ra­bi­li­ty I database SQL offrono tutte le ca­rat­te­ri­sti­che ACID. Per poter mantenere la loro fles­si­bi­li­tà e la sca­la­bi­li­tà oriz­zon­ta­le, la maggior parte dei database NoSQL non supporta le tran­sa­zio­ni ACID. Al loro posto viene uti­liz­za­to il modello BASE (Basically Available, Soft State, Even­tual­ly Con­si­stant). Vale quindi il principio secondo cui la di­spo­ni­bi­li­tà è prio­ri­ta­ria rispetto alla coerenza.
Pre­sta­zio­ni In caso di elevato volume di dati, uti­liz­za­no degli indici. Per aumentare le pre­sta­zio­ni dei sistemi SQL, è ne­ces­sa­rio ot­ti­miz­za­re le query, gli indici e la struttura. Poiché uti­liz­za­no server cloud e hardware cluster, i database NoSQL offrono pre­sta­zio­ni net­ta­men­te superiori.
API Le richieste di ar­chi­via­zio­ne e richiamo dei dati vengono trasmesse con SQL (Struc­tu­red Query Language). I dati vengono ar­chi­via­ti e ri­chia­ma­ti at­tra­ver­so API basate su oggetti.

I database NoSQL sono nella maggior parte dei casi software open source li­be­ra­men­te di­spo­ni­bi­li per tutti gli utenti di internet. Questo sem­pli­fi­ca enor­me­men­te l’accesso: gli utenti possono infatti scaricare gra­tui­ta­men­te numerose ap­pli­ca­zio­ni NoSQL, imparare a uti­liz­zar­le e, in una prima fase, sfrut­tar­le anche solo come in­te­gra­zio­ne al proprio database SQL. I seguenti database NoSQL sono ormai am­pia­men­te affermati tra gli utenti:

Cassandra

Cassandra è un database NoSQL ot­ti­miz­za­to per l’ar­chi­via­zio­ne e l’ela­bo­ra­zio­ne di grandi set di dati.

CouchDB

Il database orientato ai documenti CouchDB sfrutta un’API HTTP/JSON estre­ma­men­te intuitiva e può essere uti­liz­za­to per qualunque ambito ap­pli­ca­ti­vo, dai big data alle ap­pli­ca­zio­ni mobili e web.

Neo4j

Il database Neo4j permette di integrare i dati nel database a grafo NoSQL basato su cloud. Ciò offre in­nan­zi­tut­to la pos­si­bi­li­tà di rap­pre­sen­ta­re gra­fi­ca­men­te le relazioni tra i singoli set di dati e in­di­vi­dua­re dei modelli.

Redis

Il database chiave-valore Redis è un co­sid­det­to database in-memory: archivia i dati di­ret­ta­men­te nella cache, rag­giun­gen­do così pre­sta­zio­ni ancora più elevate.

MongoDB

MongoDB è da anni uno dei database NoSQL più popolari. Il database, scritto nel lin­guag­gio di pro­gram­ma­zio­ne C++, è orientato ai documenti e memorizza le in­for­ma­zio­ni in formato BSON (Binary JSON).

Consiglio

Con Managed MongoDB di IONOS, puoi contare su un database NoSQL che cresce con il tuo carico di lavoro. Scala le tue esigenze in modo fles­si­bi­le e con­cen­tra­ti in­te­ra­men­te sulla va­lu­ta­zio­ne e sull’analisi dei tuoi dati.

Vai al menu prin­ci­pa­le