I database alimentano quasi tutte le piattaforme digitali del pianeta:dai siti Web, ai blog, ai social media, ai servizi di streaming. La maggior parte degli utenti finali conosce database come MySQL come strumento per archiviare i dati. Questa è una descrizione abbastanza accurata, sebbene fondamentale, di cosa sia un database. Tuttavia, sono molto di più.
I diversi tipi di database
Il termine generale database spesso confonde due componenti separati e distinti:il database e il Database Management System (DBMS). Il database memorizza i dati e il DBMS è lo strumento, o insieme di strumenti, che utilizzi per gestire i dati. Il DBMS è affrontato qui, perché comprende gli strumenti che consentono agli amministratori di database di comunicare con il database in modo che possano gestirlo e governarlo completamente.
I sistemi di gestione dei database sono suddivisi in tre livelli:
- Cliente :effettua richieste tramite la riga di comando o una schermata della GUI utilizzando query SQL valide.
- Server :Responsabile di tutte le funzionalità logiche del server.
- Archiviazione :Gestisce l'archiviazione dei dati.
All'interno di questi livelli sono presenti strumenti come un gestore di thread, un linguaggio di query, un parser, un ottimizzatore, una cache di query, un buffer, una cache di metadati di tabella e una cache di chiavi. Questi elementi si uniscono per creare un potente sistema per amministratori, utenti e software da utilizzare per archiviare e recuperare dati.
Un aspetto cruciale del DBMS è il linguaggio di query. Questo è il linguaggio speciale utilizzato per interagire con un database. È un linguaggio molto particolare e va utilizzato secondo le specifiche stabilite dal DBMS. Alcuni DBMS hanno i loro linguaggi di query proprietari, ma i più popolari sono:
- SQL - Structured Query Language è uno dei linguaggi di query più utilizzati sul mercato ed è utilizzato da MS SQL e MySQL.
- XQuery - Utilizza il formato file XML per estrarre e manipolare i dati.
- OQL - Object Query Language è il linguaggio predefinito per i database orientati agli oggetti che vengono spesso utilizzati nei casi d'uso dei Big Data.
- SQL/XML - Una combinazione di SQL e XQuery e supporta istruzioni SQL su dati XML.
- GraphQL - Un linguaggio open source in grado di lavorare con le API e anche un runtime che può essere utilizzato per query sui dati esistenti.
- LINQ - Language Integrated Query estrae ed elabora i dati da varie fonti, come documenti XML e database relazionali.
Database relazionali e non relazionali
I DBMS utilizzano due tipi principali di database:relazionale e non relazionale. La distinzione tra questi due è importante, in quanto aiutano a definire il miglior caso d'uso per un database.
Un database relazionale è un database che memorizza le informazioni in tabelle contenenti dati correlati. Ciò che dà il nome a un database relazionale è che le relazioni possono essere stabilite tra due o più tabelle. Le relazioni mettono in correlazione righe appartenenti a due tabelle diverse in una terza tabella. I database relazionali vengono utilizzati al meglio quando i dati in essi contenuti non cambiano spesso e quando l'accuratezza dei dati è fondamentale.
I database non relazionali (chiamati anche database NoSQL) archiviano le loro informazioni in una forma non tabellare. Al contrario, i database non relazionali archiviano i dati in modelli di dati, di cui i quattro tipi più comuni sono:
- Orientato ai documenti - i dati vengono archiviati come documenti JSON.
- Valore-chiave - i dati sono memorizzati in coppie di chiavi.
- Grafico - i dati sono archiviati in una struttura nodo-edge-nodo.
- Colonna ampia - i dati sono archiviati in formato tabellare con colonne flessibili che possono variare da riga a riga.
Poiché memorizzano i dati in questo modo, i database non relazionali sono molto più flessibili. Possono memorizzare un'ampia varietà di diversi tipi di dati. Questo li rende ideali quando è necessario archiviare enormi quantità di dati complessi, come quando si lavora con applicazioni Big Data.
Cosa cercare in un database
La prima domanda da porsi è:"Dovrei usare un database relazionale o non relazionale?" È meglio utilizzare un database relazionale per le istanze che richiedono ACID (Atomicità, Coerenza, Isolamento, Durabilità) conformità, accuratezza dei dati, normalizzazione e semplicità, ma non richiedono scalabilità, flessibilità e prestazioni elevate. Un buon esempio di caso d'uso di un database relazionale è un sito Web dinamico basato su database come WordPress.
D'altra parte, un database non relazionale viene utilizzato al meglio quando la flessibilità, la velocità e la scalabilità dei dati sono cruciali. Un buon esempio di caso d'uso di database non relazionale è un'app basata su cloud che dipende da una scalabilità massiccia.
Otto database popolari
Questo elenco degli otto database più popolari è suddiviso in 4 database relazionali e 4 non relazionali.
Database relazionali
I seguenti sono i database relazionali più diffusi oggi sul mercato.
Oracolo
Il database Oracle è stato originariamente sviluppato nel 1977, il che lo rende il database più vecchio dell'elenco. A partire da gennaio 2022, Oracle detiene il primo posto come sistema di gestione di database relazionali più utilizzato al mondo (con un punteggio di Statista di 1266,89).
Oracle Database è disponibile in cinque edizioni:
- Impresa - include tutte le funzionalità DBMS e l'opzione Oracle Real Application Clusters per l'elevata disponibilità.
- Personale - include tutte le funzionalità, meno l'opzione Oracle Real Application Clusters.
- Standard - include funzionalità di base.
- Espresso - versione limitata leggera e gratuita sia per Windows che per Linux.
- Oracle Lite - per casi di utilizzo di dispositivi mobili.
Il motivo principale per cui Oracle Database detiene il primo posto nella quota di mercato è che è uno dei database relazionali più scalabili. Raggiunge questo suddividendo la sua architettura tra il logico e il fisico. In questo modo, la posizione dei dati diventa irrilevante e trasparente, il che consente una struttura più modulare che può essere modificata senza influire sul database stesso. Costruendo Oracle Database in questo modo, è possibile condividere le risorse per ottenere una rete di dati molto più flessibile.
Alcune delle caratteristiche distintive di Oracle Database includono:
- Real Application Clustering (RAC) e portabilità che rendono possibile la scalabilità senza perdere prestazioni e coerenza dei dati.
- Memorizzazione efficiente nella cache.
- Partizionamento altamente performante, che consente di suddividere tabelle più grandi in numerosi pezzi.
- Backup a caldo, a freddo e incrementali tramite lo strumento Recovery Manager.
- Strumenti per controllare l'accesso e l'utilizzo dei dati.
I vantaggi di Oracle Database includono:
- Utilizza il linguaggio di query SQL.
- Alte prestazioni.
- Portatile (può funzionare su quasi 20 protocolli di rete e numerose piattaforme hardware).
- Instance Caging consente di eseguire la gestione di più database da un unico server.
- Numerose edizioni per adattarsi al meglio alla tua attività e/o caso d'uso.
- Clustering per scalabilità, bilanciamento del carico, ridondanza e prestazioni.
- Ripristino non riuscito tramite lo strumento RMAN (Recovery Manager).
- Supporto PL/SQL.
Gli svantaggi di Oracle Database includono:
- Proprietario - Oracle non è open source.
- Complessità - È uno dei database relazionali più complessi sul mercato.
- Costo - Oracle Database può essere fino a 10 volte più costoso di MS SQL.
Scopri come utilizzare Oracle Database Express Edition con Linode.
MySQL
MySQL è uno dei database relazionali open source più popolari sul mercato. Secondo DB-Engines, MySQL è al secondo posto, dietro Oracle Database, tra i database più utilizzati sul mercato.
Rilasciato nel maggio 1995, MySQL è maturo e affidabile. È una delle opzioni più affidabili disponibili. Scritto in C e C++, MySQL funziona su Linux, Solaris, macOS, Windows e FreeBSD ed è concesso in licenza sotto GPLv2.
MySQL è un database relazionale e non si ridimensiona nella misura di un database non relazionale, ma supporta il multi-threading, che consente di ridimensionarlo in modo tale da poter gestire fino a oltre 50 milioni di righe con un file predefinito limite di dimensione di 4 GB, con un limite teorico di 8 TB.
Alcune delle caratteristiche distintive di MySQL includono:
Sicurezza - Utilizza un solido livello di sicurezza dei dati per proteggere i dati sensibili e tutte le password sono crittografate.Roll-back - Consente il rollback delle transazioni.Memoria efficiente - Ha una perdita di memoria molto bassa.Produttivo - Utilizza trigger, stored procedure e visualizzazioni per una maggiore produttività.Partizionamento - Supporta il partizionamento per migliorare le prestazioni di database molto grandi.GUI - La GUI di MySQL Workbench gestisce il database.
I vantaggi dell'utilizzo di MySQL includono:
- Gratuito - questo è un database open source gratuito che può essere installato su tutte le istanze del server di cui hai bisogno.
- Familiarità - MySQL utilizza il linguaggio di query SQL, quindi gli amministratori di database che hanno familiarità con il linguaggio sono aggiornati in pochissimo tempo con questo DBMS. MySQL segue anche la tipica architettura client/struttura.
- Velocità - È uno dei database relazionali più veloci, grazie a un motore di archiviazione unico.
- Integrazione - MySQL gode dell'integrazione in migliaia di applicazioni di terze parti, come sistemi di blogging, CRM, HRM, ERP e molti altri tipi di applicazioni.
Scopri come installare un'istanza MySQL su un server Linode.
Microsoft SQL Server
Microsoft SQL Server è il DBMS sviluppato da Microsoft. Questo database è una soluzione proprietaria, ma può essere installato sia su Linux che su Windows. MS SQL Server è stato rilasciato per la prima volta il 24 aprile 1989 e ora è offerto in cinque diverse edizioni:
- Standard - Funzionalità di base richieste per la maggior parte delle applicazioni.
- Web - Opzione a basso costo che differisce dall'edizione standard in termini di memoria massima consentita per il pool di buffer e capacità di calcolo massima.
- Impresa - Supporta un'ampia gamma di funzionalità di data warehouse e include funzionalità avanzate come compressione dei dati, sicurezza avanzata e supporto per dimensioni dei dati maggiori.
- Sviluppatore - Progettato per gli sviluppatori e include la possibilità di creare procedure, funzioni e viste archiviate.
- Espresso - Limitato a individui o piccole organizzazioni e non include nessuna delle funzionalità avanzate.
MS SQL Server funziona con il linguaggio di query SQL e utilizza il sistema operativo SQL Server (SQLOS), che gestisce la memoria e le risorse di I/O, i lavori e l'elaborazione dei dati.
I vantaggi di Microsoft SQL Server includono:
- Supporto nativo per Visual Studio - Il supporto per la programmazione dei dati è integrato in Visual Studio, quindi gli amministratori di database possono creare, visualizzare e modificare schemi di database.
- Servizio di ricerca full-text - Consente la ricerca di query basate su parole.
- Supporto per più versioni - Consente l'installazione di più versioni di MS SQL Server su una macchina.
- Installazione semplice - Può essere installato con un solo clic.
- Ripristino e recupero dati - Strumenti integrati per il recupero dei dati.
- Supporto - MS SQL Server ha una vasta comunità di utenti con molto aiuto e supporto disponibili da varie fonti.
Gli svantaggi di MS SQL sono pochi ma dovrebbero essere presi in considerazione da chiunque stia pensando di adottare questa piattaforma di database. Tali svantaggi includono:
- Prezzi costosi e confusi.
- Interfaccia utente scadente.
- Concede solo un controllo parziale sui database.
PostgreSQL
PostgreSQL (chiamato anche Postgres) è un altro sistema di gestione di database gratuito e open source che originariamente fungeva da successore del database Ingres. PostgreSQL si definisce "il database relazionale open source più avanzato al mondo" e attualmente detiene una quota di mercato del 14,70% per i database relazionali.
Rilasciato nel 1996, PostgreSQL gode di un ciclo di sviluppo molto attivo e di una vasta comunità di supporto. Ciò che distingue PostgreSQL dagli altri database relazionali open source è che si tratta di un sistema di gestione di database relazionale a oggetti, il che significa che è simile a un database relazionale, ma utilizza un modello di database orientato agli oggetti.
PostgreSQL è basato sul catalogo, quindi consente agli utenti di definire tipi di dati, tipi di indici e linguaggi funzionali, rendendolo più estensibile rispetto ad altri database relazionali.
Alcune delle caratteristiche distintive di PostgreSQL includono:
- Conformità agli ACIDI.
- Altamente simultanea.
- Include il supporto NoSQL
- Supporto per schemi e linguaggi di query per oggetti, classi, ereditarietà e sovraccarico di funzioni.
- Espressione di tabella comune (i risultati temporanei di una query utilizzata nel contesto di una query più ampia).
- Partizionamento dichiarativo (che riduce la quantità di lavoro richiesta per partizionare i dati).
- Ricerca full-text.
- Supporto per il sistema informativo geografico/sistema di riferimento spaziale (per acquisire, archiviare, controllare e visualizzare i dati relativi alle posizioni sulla superficie terrestre).
- Supporto JSON.
- Replica logica (che è un metodo per replicare oggetti dati in base a una chiave primaria).
I vantaggi di PostgreSQL sono:
- Ideale per operazioni di dati complesse e ad alto volume.
- Altamente personalizzabile tramite plugin e utilizzo di funzioni personalizzate scritte in C, C++ e Java.
- Controllo della concorrenza multi-versione (una tecnica avanzata per migliorare le prestazioni del database in un ambiente multiutente).
- Non sono necessari blocchi di lettura, quindi offre una maggiore scalabilità rispetto ad altri database relazionali.
- Multipiattaforma (disponibile per BSD, Linux, macOS, Solaris e Windows).
Per quanto riguarda gli svantaggi, PostgreSQL ne soffre alcuni, come:
- Più complicato di MySQL.
- Più lento di MySQL.
- Non è un modo semplice per migrare i dati da altri RDBMS.
- Compressione dati scarsa.
- Ridimensionamento orizzontale complicato.
- Supporto per il clustering scarso.
- Nessun supporto integrato per l'apprendimento automatico.
Consulta la nostra guida su come installare PostgreSQL su un server Ubuntu 20.04 per ulteriori informazioni.
Database non relazionali
Le sezioni seguenti trattano i database non relazionali più diffusi oggi sul mercato.
Redis
Redis è un archivio di strutture dati in memoria utilizzato come database NoSQL distribuito con valori chiave. Redis sta per Server dizionario remoto e utilizza un archivio chiave-valore avanzato che include una durabilità opzionale. Redis viene spesso definito un server di struttura dati perché le chiavi possono contenere stringhe, hash, elenchi, set e set ordinati.
Redis è un database volatile in memoria, che lo rende una buona opzione per i sistemi con una grande quantità di dati caldi. Redis archivia i dati nella cache, il che rende la lettura/scrittura più veloce e i dati sempre altamente disponibili.
Le caratteristiche che rendono eccezionale Redis includono:
- Minima complessità rispetto ad altri database NoSQL.
- Leggero e non richiede dipendenze esterne.
- Funziona in tutti gli ambienti POSIX.
- Supporto per la replica sincrona, non bloccante, master/slave per un'elevata disponibilità.
- Sistema di memorizzazione nella cache basato su valori-chiave mappato, paragonabile a memcached.
- Nessuna regola rigida per la definizione di schemi o tabelle.
- Supporto per più modelli o tipi di dati.
- Supporto per lo sharding.
- Può essere utilizzato insieme ad altri database per ridurre il carico e aumentare le prestazioni.
I vantaggi dell'utilizzo di Redis includono:
- Consente di memorizzare coppie chiave-valore fino a 512 MB.
- Utilizza il proprio meccanismo di hashing.
- Grazie alla replica dei dati, la cache Redis resiste ai guasti e fornisce comunque un servizio ininterrotto.
- Tutti i linguaggi di programmazione più diffusi lo supportano.
- Supporta l'inserimento di enormi quantità di dati nella sua cache.
- Grazie al suo ingombro ridotto, può essere installato su hardware Raspberry Pi e ARM.
Gli svantaggi dell'utilizzo di Redis includono quanto segue:
- Tutti i tuoi dati devono stare nella memoria e non puoi gestire più dati di quanta ne hai.
- Non esiste un linguaggio di query o supporto per l'algebra relazionale.
- Offre solo due opzioni per la persistenza (istantanee e file di solo accodamento).
- Funzioni di sicurezza di base.
- Funziona solo su un core della CPU in modalità single-thread, quindi la scalabilità richiede diverse istanze di Redis.
Consulta la nostra guida su come installare e configurare Redis su un server Ubuntu 20.04 per ulteriori informazioni.
MongoDB
MongoDB è un database NoSQL open source orientato ai documenti, incentrato sull'archiviazione di dati ad alto volume. MongoDB è considerato senza schema, quindi non impone una struttura particolare ai documenti contenuti in una raccolta. Rilasciato originariamente nel 2009, questo database NoSQL utilizza documenti simili a JSON con schemi opzionali e può essere installato in locale o completamente gestito nel cloud. MongoDB è considerato un ottimo candidato per i big data e può essere utilizzato da organizzazioni di tutte le dimensioni.
Le caratteristiche che contraddistinguono MongoDB includono:
- Supporta le ricerche su campi, intervalli e espressioni regolari.
- Ottiene un'elevata disponibilità con i set di repliche.
- Supporta lo sharding.
- Può essere utilizzato come file system (chiamato GridFS).
- Supporta la pipeline, la funzione di riduzione della mappa e i metodi di aggregazione a scopo singolo.
- JavaScript supportato all'interno delle query.
- Supporta raccolte di dimensioni fisse, denominate raccolte limitate.
- È possibile creare indici per migliorare le prestazioni di ricerca.
- Consente di eseguire operazioni su dati raggruppati per un singolo risultato o per un risultato calcolato.
I vantaggi del database MongoDB includono:
- Supporta un linguaggio di query espressivo.
- Non è necessario dedicare tempo alla progettazione di uno schema di database perché è privo di schema.
- Flessibile e performante.
- Supporta l'efficienza geospaziale.
- Supporta più transizioni ACID di documenti.
- Non richiede SQL injection.
- Può essere integrato rapidamente con Hadoop.
- Open-source e gratuito.
Gli svantaggi del database MongoDB includono:
- Richiede una grande quantità di memoria, soprattutto durante il ridimensionamento.
- Limite di archiviazione dei documenti di dati di 16 MB.
- Limite di 100 livelli di nidificazione dei dati.
- Non supporta le transazioni.
- Unire i documenti è complicato.
- Può essere lento se gli indici non vengono utilizzati correttamente.
- Poiché le relazioni non sono ben definite, possono portare a dati duplicati.
Consulta la nostra guida sui casi d'uso di MongoDB per ulteriori informazioni.
Apache Cassandra
Apache Cassandra è un sistema di gestione di database NoSQL open source distribuito. È progettato per gestire grandi quantità di dati su server di base. Cassandra è stato originariamente sviluppato all'interno di Facebook per potenziare la funzione di ricerca dell'indice della piattaforma. Nel luglio 2008, Facebook ha aperto Cassandra tramite Google Code e nel marzo 2009 è diventato ufficialmente un progetto Apache Incubator.
Le caratteristiche che contraddistinguono Cassandra includono:
- I nodi distribuiti hanno tutti lo stesso ruolo, quindi non esiste un singolo punto di errore.
- Supporta sia la replica che la replica multi-data center.
- Il throughput in lettura/scrittura aumenta in modo lineare man mano che vengono aggiunte macchine per ottenere un'elevata scalabilità.
- I dati si replicano automaticamente su più nodi distribuiti.
- La disponibilità e la tolleranza della partizione sono più importanti della coerenza, classificandolo così come un sistema AP (all'interno del teorema CAP).
- Supporta l'integrazione di Hadoop con il supporto di MapReduce.
- Include il proprio linguaggio di query, Cassandra Query Language.
I vantaggi di Apache Cassandra includono:
- La scalabilità elastica consente di ridimensionare Cassandra in base alle esigenze senza tempi di inattività.
- Segue un'architettura peer-to-peer, quindi gli errori sono rari rispetto alle configurazioni master-slave.
- Quattro metodi chiave di analisi dei dati, tra cui integrazione basata su Solr, analisi batch (con integrazione Hadoop), analisi esterna (con l'aiuto di Hadoop e Cloudera/Hortonworks).
- Analisi quasi in tempo reale.
- Supporto per più data center e cloud ibrido.
- I dati possono essere archiviati come dati strutturati, semi-strutturati o non strutturati.
Gli svantaggi di Apache Cassandra includono:
- Supporto ACID limitato.
- La latenza può essere un problema a causa della grande quantità di I/O.
- I dati sono modellati in base alle query, anziché alla struttura, il che può comportare la duplicazione delle informazioni memorizzate numerose volte.
- Nessun supporto per l'adesione o la subquery.
- Sebbene le scritture siano veloci, le letture possono essere lente.
- Documentazione ufficiale limitata.
Consulta le nostre guide suApache Cassandra per saperne di più.
CouchDB
CouchDB è il nostro ultimo database NoSQL open source orientato ai documenti. Questo particolare strumento memorizza i dati nei documenti JSON e utilizza JavaScript come linguaggio di query con l'aiuto di MapReduce. CouchDB abbraccia il Web accedendo ai documenti tramite HTTP. Una volta acceduti, questi documenti possono essere interrogati, combinati e trasformati con JavaScript. Questo database NoSQL è perfettamente adatto sia per applicazioni web che mobili, grazie alle trasformazioni dei documenti in tempo reale e alle notifiche di modifica in tempo reale.
Le caratteristiche che contraddistinguono CouchDB includono:
- Replica del database su più istanze del server.
- Indicizzazione e recupero rapidi.
- Interfaccia simile a REST.
- Più librerie semplificano l'utilizzo della lingua preferita.
- La GUI basata su browser gestisce dati, autorizzazioni e configurazioni.
- Supporto per la replica.
- Segue tutte le caratteristiche delle proprietà ACID.
- Autenticazione e supporto per le sessioni.
- Sicurezza a livello di database.
- Supporto integrato per Map/reduce (modello per l'elaborazione e la generazione di big data set con un algoritmo distribuito parallelo).
I vantaggi dell'utilizzo di CouchDB includono:
- Possibilità di archiviare lo stesso documento in più istanze di database.
- Gli oggetti serializzati possono essere archiviati come dati non strutturati nei documenti JSON.
- Archiviazione dati ridondante. Può replicare e sincronizzarsi con i browser, tramite PouchDB.
- Supporto per lo sharding e il clustering.
- La replica da master a master consente il backup continuo.
Gli svantaggi di CouchDB includono:
- Più lento di alcuni database NoSQL.
- Richiede molte spese generali.
- Le query arbitrarie sono costose.
- Le visualizzazioni temporanee su enormi set di dati sono lente.
- Nessun supporto per le transazioni.
- La replica di database di grandi dimensioni non è affidabile.
Consulta la nostra guida sull'uso di CouchDB 2.0 su Ubuntu 20.04 per ulteriori informazioni.
Conclusione
Indipendentemente dal progetto su cui stai lavorando, c'è un database che si adatta perfettamente alle tue esigenze. Sia che tu stia sviluppando un piccolo sito web dinamico che dipende da alti livelli di coerenza dei dati, dove useresti un database relazionale, o un'app che si ridimensionerà a proporzioni enormi, dove useresti un database non relazionale, hai opzioni. Con Linode, puoi lavorare con qualsiasi di questi database per archiviare efficacemente i tuoi dati e interagire con le tue applicazioni. È importante, tuttavia, sapere esattamente di cosa ha bisogno la tua app da un database prima di selezionare quale. Fare la scelta sbagliata e riorganizzare potrebbe essere costoso.