Database relazionali e non
La maggior parte dei progetti software si basa sull’utilizzo di uno o più database, ovvero contenitori di dati a cui il programma può accedere per salvare o richiedere informazioni. Ogni informazione salvata nel database può essere connessa ad altre e letta in qualsiasi momento tramite query, richieste da parte del programma al database. Ad oggi sono presenti due diversi tipi di database: i database relazionali (SQL) ed i database non relazionali (noSQL). Queste due categorie differiscono principalmente dalla struttura in cui i dati vengono salvati.
In questo articolo spiegheremo le principali caratteristiche di queste due tipologie ed i casi d’uso più comuni per entrambe.
Database relazionali (SQL)
I database relazionali sono caratterizzati dall’utilizzo di tabelle per il salvataggio dei dati, strutture fisse e ben organizzate. Questa tipologia di database è perfetta infatti quando si ha a che fare con informazioni ben delimitate e strutturate, facilmente riconducibili a tabelle. I database SQL risultano fondamentali quando è indispensabile garantire la massima integrità sui dati e tutte le proprietà ACID, ovvero:
- Atomicità una transazione (piccolo insieme di azioni che il database deve eseguire) deve essere assimilabile ad un’unità atomica. Viene eseguita solamente se tutte le azioni che la compongono sono correttamente eseguite, altrimenti fallisce e ritorna al punto iniziale.
- Consistenza il database deve sempre rimanere in uno stato coerente. Ogni transazione deve infatti iniziare e finire in uno stato consistente.
- Isolamento Nessuna transazione può influenzare l’esistenza di qualsiasi altra transazione. In un sistema di database in cui più di una transazione viene eseguita in parallelo, tutte le transazioni verranno eseguite in modo sequenziale come un’unica transizione del sistema.
- Durabilità: dopo che una transazione è stata conclusa con esito positivo, il suo risultato deve essere persistente anche in caso di errori di sistema.
Tra i database relazionali più utilizzati troviamo per esempio SQL server, sviluppato da Microsoft, e PostgreSQL. In molti dei nostri progetti utilizziamo proprio queste tecnologie, che permettono di mantenere grandi moli di dati al sicuro e di richiederli in modo veloce ed efficiente.
Database non relazionali (noSQL)
I database noSQL si distinguono dai precedenti nel modo in cui i dati vengono salvati. Le tabelle sono infatti sostituite da strutture dati differenti e più flessibili. Tra i più comuni database non relazionali troviamo i seguenti:
I database non relazionali sono perfetti quando si cerca maggior flessibilità e scalabilità, questo però a discapito di alcune proprietà ACID, sempre presenti nei DB SQL. Ad oggi sono presenti moltissimi tool che forniscono questa tecnologia, tra i più conosciuti vi sono sicuramente Azure Cosmos DB, di Microsoft, e MongoDB.
I due tipi di database appena descritti non sono mutualmente esclusivi, possono infatti essere usati all’interno dello stesso progetto. La scelta del DB si basa sulle esigenze specifiche del software che si sta sviluppando ed è una decisione da valutare coerentemente con gli sviluppi previsti per il progetto. Il team di esperti di Atobit può aiutarti a gestire passo passo tutto il tuo progetto e la scelta del database e strutture adeguate.