È importante notare che i relational database vengono creati e gestiti utilizzando uno schema fisso. Uno schema fisso significa che tutti i dati inseriti nel database devono essere allineati con precisione agli standard di formattazione predefiniti, il che limita i tipi di strutture di dati che i relational database possono archiviare. Ad esempio, i relational database non sono in grado di elaborare dati non strutturati (ad esempio, informazioni che hanno un formato incoerente e non sono allineate a un modello di dati preimpostato), ma sono eccellenti nel supportare informazioni transazionali o finanziarie che includono dati strutturati o tipi di dati semi-strutturati (ad esempio, dati che hanno un formato coerente e si allineano a un modello di dati preimpostato).
Esempi di database SQL
Esistono diversi esempi di database SQL, tra cui:
- Oracle: Oracle Database è un RDBMS (Relational Database Management System) sviluppato e commercializzato da Oracle Corporation ed è uno dei sistemi di database aziendali più utilizzati al mondo.
- MySQL: MySQL è un RDBMS open source comunemente usato per creare e amministrare database. Sviluppato e distribuito da Oracle Corporation, MySQL è noto per la facilità d'uso, l'ampio supporto della community e l'affidabilità.
- Nota: un'alternativa open source a MySQL si chiama MariaDB, progettata come sostituto di MySQL dopo l'acquisizione di MySQL da parte di Oracle Corporation.
- PostgreSQL: PostgreSQL è un ORDBMS (Object-Relational Database Management System) open source noto per le sue funzionalità avanzate e ricche che estendono le capacità di SQL. Sviluppato nell'ambito del progetto POSTGRES presso l'Università della California a Berkeley, PostgreSQL offre funzionalità conformi a ACID che archiviano e scalano in modo sicuro carichi di lavoro di dati complicati (PostgreSQL.org 2024).
- MSSQL: MSSQL, acronimo di Microsoft SQL Server, è un RDBMS sviluppato da Microsoft. Questa piattaforma di database viene comunemente utilizzata in ambienti aziendali di grandi dimensioni per supportare l'elaborazione di transazioni ad alto volume, la business intelligence e le applicazioni di analytics.
- SQLite: a differenza di altri esempi in questo elenco, SQLite è in realtà una libreria software che fornisce un RDBMS. A differenza degli altri RDBMS presenti in questo elenco, SQLite è serverless, autonomo e non richiede alcuna configurazione. Questo perché è incorporato all'interno dell'applicazione che usa SQLite e, di conseguenza, non necessita di un server separato.
È importante notare che anche altri tipi di database possono stabilire relazioni tra i dati. Nel caso di database tabulari normalizzati (ad esempio database SQL o relational database), queste relazioni vengono espresse utilizzando chiavi esterne o tabelle di intersezione. Nel caso di DBMS (Database Management Systems) come MongoDB (ad esempio, un database NoSQL), queste relazioni vengono stabilite incorporando o facendo riferimento ai dati.
NoSQL (Not only Structured Query Language)
Che cos'è NoSQL?
NoSQL, che sta per Not only SQL, è un approccio al sistema di gestione dei database utilizzato per inserire, archiviare e recuperare dati non strutturati e dati semi-strutturati all'interno di un database. Ciò significa che i dati che non possono essere analizzati o contati tramite relational database tradizionali (ad esempio SQL) possono rimanere nel loro formato nativo ed essere inseriti in un database NoSQL. Il motivo per cui si chiama NoSQL è sottolineare che questi database possono gestire modelli di dati non tabulari e non relazionali e supportare linguaggi di query simili a SQL.
Che cosa sono i dati non strutturati?
I dati non strutturati sono dati che non hanno un modello di dati predefinito o un'organizzazione coerente. Inoltre, i dati non strutturati, come i post sui social media, possono aggiornarsi e cambiare rapidamente, mentre i dati strutturati, come le transazioni bancarie, hanno un tasso di variazione molto più basso. Esempi di dati non strutturati includono immagini, file audio, video e mappe.
Che cos'è un database NoSQL?
I database NoSQL sono database che utilizzano uno schema flessibile che ospita dati non strutturati e dati semi-strutturati, utilizzando anche un metodo di archiviazione dei dati non tabulare.
L'uso di uno schema flessibile consente ai database NoSQL di inserire dati non strutturati nel loro formato nativo (ad esempio, .txt, .JPG, MP3), cosa non possibile con i database SQL a causa del requisito che tutti i dati siano allineati a un formato predefinito. Inoltre, quando i database NoSQL archiviano dati, vengono utilizzati modelli di dati flessibili in modo che i file di dati non strutturati possano avere strutture di dati diverse ed essere comunque archiviati all'interno della stessa collection.
Per saperne di più, segui il nostro tutorial sui database NoSQL.
Tipi di database NoSQL
Esistono diversi tipi di database NoSQL, tra cui:
- Database di documento: i database di documento, talvolta denominati database orientati agli oggetti, memorizzano i dati in documenti simili agli oggetti JSON (JavaScript Object Notation), sebbene non siano archivi JSON. Usano i driver restituiti dagli oggetti nativi al linguaggio di programmazione usato dallo sviluppatore senza bisogno di un mappatore relazionale di oggetti (ORM). Ogni documento stesso viene trattato come un record e può contenere valori tra cui numeri, matrici, oggetti, stringhe o persino caratteri booleani. Inoltre, è possibile includere coppie chiave-valore, documenti nidificati o altri dati strutturati. Un fornitore popolare di questi database NoSQL è MongoDB.
- Database chiave-valore: i database chiave-valore raccolgono, recuperano e archiviano i dati come raggruppamenti di coppie chiave-valore. Ciò significa che ogni record di dati è rappresentato da una chiave unica e da un valore associato. La chiave viene utilizzata per recuperare il valore corrispondente dal database. Per esempio, in un database chiave-valore di interior design, una chiave potrebbe essere "colore" e il valore potrebbe essere "viola". I fornitori più diffusi di questi sistemi di database NoSQL includono AWS e ScyllaDB.
- Archivi a famiglie di colonne: i database a famiglie di colonne organizzano i dati in colonne anziché in righe, il che è utile quando si lavora con set di dati ampi e scarsi in profondità. Infatti, gli archivi a famiglie di colonne sono talvolta chiamati "archivi a colonne larghe". Negli archivi a famiglie di colonne, ogni riga ha un diverso set di colonne, e le colonne vengono poi raggruppate in "famiglie". Questi modelli di dati sono utili quando si lavora con insiemi di dati di grandi dimensioni che beneficiano della scalabilità orizzontale per ottimizzare le prestazioni. I fornitori più diffusi di questi database NoSQL includono Apache Cassandra e HBase.
- Database a grafo: i database a grafo archiviano i dati in nodi e archi. I nodi in genere archiviano informazioni su persone, luoghi e cose mentre gli archi archiviano informazioni sulle relazioni tra i nodi. I database a grafo sono strumenti eccellenti per l'interrogazione di strutture grafiche (ad esempio, social network, gerarchie). I fornitori più diffusi di questi database NoSQL includono Neo4j, AWS e Kibana.
Differenze chiave tra database NoSQL e SQL
Sebbene i database NoSQL e SQL offrano funzionalità preziose, è importante comprendere le principali differenze tra loro.
Modello di archiviazione del database
La differenza tra i sistemi di database NoSQL e SQL per quanto riguarda l'archiviazione dei dati è netta. Nello specifico, i database SQL memorizzano i dati in tabelle contenenti righe e colonne, mentre i sistemi NoSQL memorizzano i dati utilizzando metodi diversi a seconda del tipo di dati non strutturati inseriti (ad esempio, documenti JSON, coppie chiave-valore, raggruppamenti di famiglie, nodi/archi di grafici).
Tipo di dati
Mentre i database NoSQL, a volte indicati come non-relational database, sono in grado di inserire, archiviare e recuperare dati non strutturati, i database SQL (ad esempio, i relational database tradizionali) no. I database SQL sono solo in grado di inserire, archiviare e recuperare dati strutturati. Ciò è dovuto alla differenza tra gli schemi SQL e NoSQL utilizzati.
Schemi
I database SQL si basano su uno schema di dati rigoroso e predefinito con cui i dati da inserire devono essere allineati. Tuttavia, i database NoSQL utilizzano schemi flessibili che consentono loro di inserire i dati nei vari formati nativi.
Scalabilità
È importante che gli amministratori di database pianifichino la crescita e l'espansione dei propri sistemi di database: questo è un altro chiaro punto di differenziazione tra database NoSQL e SQL.