Capire i database SQL e NoSQL e i differenti modelli di database

21 febbraio 2014 MySQL

Introduzione

Da tempo immemore, una delle risorse dei computer assolutamente necessaria e della quale si ha più bisogno, è la memoria. Anche se gli aspetti tecnici e l’implementazione possono differire, la maggior parte dei computer sono dotati dell’hardware necessario per elaborare le informazioni e memorizzarle in maniera sicura per poterle utilizzare in futuro in caso di necessità.

Nel mondo odierno, è quasi impossibile pensare ad una qualsiasi applicazione che non faccia uso di questa capacità delle macchine, siano esse server, personal computer o dispositivi palmari. Dai semplici giochi agli strumenti usati dalle imprese, inclusi i siti web, determinati tipi di dato vengono elaborati, registrati e recuperati durante ogni operazione.

I sistemi di gestione di basi di dati (DBMS) sono il software di alto livello che, tramite le interfacce di programmazione di basso livello dette API (Application Programming Interfaces), si occupano di tali operazioni. Per aiutare a risolvere vari tipi di problemi, da decenni sono stati sviluppati nuovi tipi di DBMS (ad esempio di tipo relazionale, NoSQL, ecc), assieme alle applicazioni che li implementano (ad esempio MySQL, PostgreSQL, MongoDB, Redis, ecc).

In questo articolo di DigitalOcean, andremo oltre i principi fondamentali delle basi di dati e dei sistemi di gestione di database. Impareremo la logica che che sta dietro al funzionamento dei diversi database e a ciò che li distingue.

Glossario

1. Sistemi di gestione di basi di dati

2. Modelli di basi di dati

  1. Il modello relazionale
  2. L’approccio privo di modelli (NoSQL)
  1. Sistemi di gestione di basi di dati relazionali
  2. I sistemi di basi di dati NoSQL

4. Un confronto tra DBMS SQL e No-SQL

Sistemi di gestione di basi di dati

“DBMS” è un termine generico che si riferisce a tutta una sorta di strumenti completamente diversi tra loro (ad esempio programmi per computer o librerie embedded), che per lo più lavorano in modo diverso e tutto loro. Queste applicazioni si occupano di gestire o di assistere in maniera importante la gestione della raccolta di informazioni. Dal momento che le informazioni (o i dati) sono disponibili in varie forme e dimensioni, a partire dalla seconda metà del 21° secolo sono stati sviluppati decine di DBMS insieme a tonnellate di applicazioni per database, al fine di aiutare a risolvere le diverse esigenze di programmazione e di informatizzazione.

I DBMS si basano su modelli di database: strutture definite per la gestione dei dati. Ogni nuovo DBMS e le applicazioni create per realizzare i suoi metodi, lavorano ognuno in maniera molto differente per quanto riguarda le definizioni delle operazioni di memorizzazione e recupero di tali informazioni.

Anche se esistono un gran numero di soluzioni che implementano differenti DBMS, ogni periodo storico ha visto una quantità relativamente esigua di quelle scelte che sono diventate molto popolari rapidamente e che sono rimaste in uso per maggior tempo; la scelta che probabilmente è stata la più predominante degli ultimi due decenni (o anche più) sono i sistemi di gestione di basi di dati relazionali (RDBMS).

Modelli di basi di dati

Ogni DBMS implementa un modello di database diverso al fine di strutturare logicamente i dati da gestire. Questi modelli sono il primo passo e il più grande fattore che determinerà il modo in cui funzionerà un’applicazione per database e di come questa gestirà le informazioni di cui si occuperà.

Ci sono parecchi differenti tipi di modelli di database che forniscono i mezzi di strutturazione dei dati in maniera chiara e precisa; il più famoso di questi modelli è probabilmente quello relazionale.

Anche se il modello relazionale ed i database relazionali sono estremamente potenti e flessibili quando il programmatore sa come usarli, sono venute a galla diverse problematiche o caratteristiche che queste soluzioni non hanno mai realmente risolto.

Di recente, hanno rapidamente iniziato a guadagnare popolarità una serie di vari sistemi e applicazioni chiamati database NoSQL. Essi promettono di risolvere tali problemi e offrono alcune funzionalità aggiuntive molto interessanti. Il funzionamento di questi sistemi per basi di dati, tramite l’eliminazione dello stile rigorosamente strutturato della memorizzazione dei dati definito nel modello relazionale, si attua offrendo un modo di modellare le informazioni molto più libero, fornendo così grande flessibilità e semplicità. Tutto ciò nonostante il fatto che questi sistemi ed applicazioni abbiano i loro problemi, alcuni gravi in ​​considerazione della importante e indispensabile natura che hanno i dati.

Il modello relazionale

Introdotto nel 1970, il modello relazionale offre un modo adeguato, dal punto di vista matematico, di strutturare, memorizzare ed usare i dati. Il modello relazionale amplia il precedente concetto del modello flat, del modello a network, ecc. con l’introduzione del concetto di relazione. Le relazioni hanno il vantaggio di raggruppare e memorizzare i dati come collezioni di vincoli per mezzo di tabelle di dati contenenti le informazioni in maniera strutturata (ad esempio il nome e l’indirizzo di una persona), messe in relazione con i diversi input assegnando un valore agli attributi (ad esempio il numero IDentificativo di una persona) .

Grazie a decenni di ricerca e sviluppo, i DBMS che implementano il modello relazionale funzionano in maniera estremamente efficiente ed affidabile. In combinazione con la lunga esperienza dei programmatori e degli amministratori di database che lavorano con questi strumenti, l’utilizzo dei database relazionali è diventato la scelta delle applicazioni mission-critical, le quali non possono permettersi la perdita di alcuna informazione, in qualsiasi situazione, soprattutto a causa di difetti o gotchas.

Nonostante la loro rigorosa natura nel dare forma e gestire i dati, i database relazionali possono diventare estremamente flessibili e hanno molto da offrire, a costo di impegnarsi un po’.

L’approccio privo di modelli (NoSQL)

Il modo in cui NoSQL struttura i dati consiste nello sbarazzarsi di questi vincoli e quindi liberarsi di ciò che si intende per memorizzazione, consultazione e utilizzo delle informazioni. I database NoSQL, utilizzando un approccio di tipo non strutturato (o “strutturato al volo”), hanno lo scopo di eliminare le limitazioni delle relazioni rigorose; offrono diversi modi per memorizzare ed operare sui dati per un uso efficiente in specifici casi (ad esempio l’archiviazione full-text dei documenti).

Sistemi di gestione di basi di dati popolari

Questo articolo avrà come obiettivo farvi conoscere i paradigmi di alcune tra le soluzioni per i database più popolari e frequentemente utilizzate. Anche se è difficile giungere ad una conclusione basandosi sui numeri, si può chiaramente stimare che per la maggior parte dei casi, ci si troverà di fronte ad un DBMS relazionale o ad un relativamente recente DBMS NoSQL. Prima di iniziare a capire le differenze tra le diverse implementazioni di ognuno di questi sistemi, vediamo cosa si nasconde sotto il cofano.

Sistemi di gestione di basi di dati relazionali

I sistemi di basi di dati relazionali prendono il nome dal modello che implementano: il modello relazionale, di cui si è discusso in precedenza. Al momento, e ancora per un bel po’ di tempo, sono e saranno la scelta più comune per la memorizzazione di dati in modo affidabile e sicuro; e sono anche efficienti.

I sistemi di gestione di basi di dati relazionali richiedono degli schemi definiti e chiaramente prefissati, che non devono essere confusi con la specifica definizione che PostgreSQL usa per questo termine, al fine di poter accogliere i dati. Questi formati definiti dall’utente modellano il modo in cui i dati vengono memorizzati ed utilizzati. Gli schemi sono molto simili a tabelle con le colonne, che rappresentano il numero ed il tipo di informazioni che appartengono ad ogni record; le righe rappresentano gli inserimenti.

Alcuni popolari sistemi di gestione di basi di dati relazionali sono:

  • SQLite:

Un DBMS embedded molto potente.

  • MySQL:

L’RDBMS più popolare ed utilizzato più di frequente.

  • PostgreSQL:

L’RDBMS open source ad oggetti più avanzato e conforme allo standard SQL.

Nota: Per ulteriori informazioni sui DBMS NoSQL, controllate l’articolo di DigitalOcean sul tema: Un confronto tra DBMS NoSQL.

I sistemi di basi di dati NoSQL

I sistemi di basi di dati NoSQL non sono dotati di un modello come quello usato (o necessario) dalle soluzioni con strutture relazionali. Ci sono molte implementazioni, ognuna delle quali funziona in maniera molto diversa ed è adatta ad una specifica esigenza. Queste soluzioni senza schema permettono o la creazione di un numero illimitato di voci, o viceversa, soluzioni molto semplici ma estremamente efficaci come i pratici archivi basati su chiave/valore.

A differenza dei tradizionali database relazionali, con alcuni database NoSQL è possibile raggruppare assieme collezioni di dati, come con MongoDB. Questi archivi di documenti memorizzano ogni dato nel database, tutti assieme come un’unica raccolta (cioè documento). Questi documenti possono essere rappresentati come singoli oggetti di dati, in modo analogo a JSON e di essere ancora interrogabili a seconda degli attributi.

I database NoSQL non hanno un modo comune per interrogare i dati (cioè simile a SQL dei database relazionali) e ogni soluzione ha il proprio sistema di interrogazione.

Nota: Per ulteriori informazioni sugli RDBMS, controllate l’articolo di DigitalOcean sul tema: Un confronto tra DBMS relazionali.

Un confronto tra DBMS SQL e No-SQL

Al fine di raggiungere una più semplice e comprensibile conclusione, passiamo ad analizzare le differenze tra i DBMS SQL e  quelli No-SQL:

  • Struttura e tipi di dato memorizzati:

Per contenere i dati, i database relazionali (che usano SQL) richiedono una struttura con degli attributi definiti, a differenza dei database NoSQL che di solito consentono un libero flusso delle operazioni.

  • Esecuzione di query:

Indipendentemente dalla loro licenze, tutti i database relazionali implementano lo standard SQL in una certa misura, quindi possono essere interrogati utilizzando lo Structured Query Language (SQL). Ogni database NoSQL, d’altra parte, implementa un modo tutto suo per operare con i dati che gestisce.

  • Scalabilità:

Entrambe le soluzioni sono facili da scalare verticalmente (aumentando cioè le risorse di sistema). Tuttavia, essendo applicazioni più moderne (e più semplici), le soluzioni NoSQL offrono di solito mezzi grazie ai quali è molto più facile scalare orizzontalmente (cioè con la creazione di un cluster di più macchine).

  • Affidabilità:

Quando si tratta dell’affidabilità dei dati e della sicurezza che le transazioni effettuate siano garantite, i database SQL sono ancora la soluzione migliore.

  • Supporto:

I DBMS relazionali hanno una storia lunga decenni. Sono estremamente popolari e sono facili da trovare sia con supporto gratuito che a pagamento. Se si verificasse un problema, sarà quindi molto più facile da risolvere rispetto ai recenti, popolari, database NoSQL, soprattutto se la soluzione di tale problema è per natura molto complessa (ad esempio, MongoDB).

  • Conservazione di dati complessi ed esigenze nell’esecuzione di query:

Per natura, i database relazionali sono la soluzione di riferimento per l’esecuzione di query complesse e per le problematiche sulla conservazione dei dati. In questo campo eccellono e sono molto più efficienti.
Inserito da: O.S. Tezer

Traduzione dell’articolo https://www.digitalocean.com/community/tutorials/understanding-sql-and-nosql-databases-and-different-database-models Copyright © 2016 DigitalOcean™ Inc.

Facebooktwitterredditpinterestlinkedinmail

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

*