Il mondo dei grandi dati si sta espandendo ogni secondo. Le aziende grandi e piccole stanno lottando per gestire le informazioni sotto il loro comando. Questi dati includono cifre di vendita, statistiche di campagne di marketing, preferenze e comportamenti dei clienti e altro ancora. Nascosti in questi dati ci sono molte intuizioni potenzialmente preziose che possono aiutare la vostra azienda e i vostri dipendenti ad avere prestazioni migliori.
Secondo un sondaggio del 2016 di HubSpot, l’organizzazione media ora supervisiona 163 terabyte di informazioni. È uno spazio sufficiente per archiviare 40.000 lungometraggi su DVD.
Per le aziende che crescono e scalano, trovare il modo migliore per gestire in modo efficiente queste informazioni è una sfida. La maggior parte delle grandi imprese ha tradizionalmente memorizzato i propri dati in un sistema di gestione di database relazionali (RDBMS).
Microsoft SQL Server e Oracle Database sono due delle opzioni più popolari e collaudate per la gestione di database relazionali nelle grandi imprese. Poiché sono entrambe alternative molto forti, fare la scelta tra SQL Server e Oracle non è sempre facile. Avrete bisogno di un’analisi approfondita delle capacità di ciascuno, così come dei vostri obiettivi e bisogni come organizzazione.
In questo articolo, andremo oltre tutto ciò che dovete sapere quando confrontate Oracle vs. SQL Server. Inizieremo con una panoramica dei database relazionali, e poi discuteremo i fatti su entrambe le alternative e i pro e i contro del loro utilizzo.
Cos’è un RDBMS?
Diversi tipi di database hanno i loro metodi per organizzare e collegare le informazioni. Un sistema di gestione di database relazionali (RDBMS) utilizza il concetto di database relazionali per gestire i dati.
I database relazionali sono database che organizzano le informazioni in tabelle con colonne e righe. Gli esperti di big data si riferiscono a questo approccio come al “modello relazionale”. Avete già una buona idea di come sia il modello relazionale. Excel non ha le prestazioni e la sofisticazione di un vero database relazionale. Eppure, come un database relazionale, Excel usa righe e colonne per memorizzare informazioni in tabelle.
Esempio: Database degli studenti universitari
Diciamo che vuoi memorizzare i dati sugli studenti di una particolare università. Questi dati includono il loro nome e le informazioni di contatto, così come le classi che stanno frequentando.
Ci sono diversi modi di organizzare le informazioni secondo il modello relazionale. Per esempio, una tabella potrebbe contenere le informazioni personali degli studenti. Si potrebbe anche avere una tabella per ogni classe offerta all’università.
La tabella “Studenti” avrà colonne come:
- nome
- cognome
- data di nascita
- indirizzo
- numero di telefono
- studente_ID
Ogni colonna può contenere solo un tipo di dati specificato, come una stringa, un intero o una data. Ogni riga della tabella contiene le informazioni di un diverso studente.
Supponiamo anche di avere una tabella “Geologia101”. Questa tabella contiene informazioni su tutti gli studenti che stanno seguendo il corso di Geologia 101.
Nota che gli studenti possono avere lo stesso nome e cognome, ma non lo stesso numero ID. Questo significa che dovremmo usare il campo “student_ID” per identificare univocamente gli studenti, non i loro nomi.
Oltre alla colonna “student_ID”, la tabella “Geology101” potrebbe anche avere colonne per i risultati degli esami degli studenti, i punteggi dei compiti e il voto finale.
SQL
Quasi tutti i sistemi di gestione di database relazionali usano SQL (Structured Query Language), un linguaggio specifico per memorizzare, accedere e manipolare le informazioni memorizzate nei database relazionali.
Le query SQL sono comandi che ottengono informazioni da un database relazionale. In generale, le query SQL di base usano tre clausole: SELECT, FROM, e WHERE.
- SELECT specifica le colonne che vuoi ricevere nei risultati.
- FROM specifica la tabella che si vuole interrogare.
- WHERE specifica le condizioni che ogni voce della tabella deve soddisfare per apparire nei risultati.
Supponiamo che vogliate gli ID di tutti gli studenti iscritti a Geologia 101 che hanno ricevuto un voto inferiore a C al primo esame intermedio. La query SQL corrispondente sarebbe come:
SELECT student_ID
FROM Geology101
WHERE midterm1 < 70;
Questa query cerca la colonna “midterm1” nel database “Geology101” per trovare le voci che sono meno di 70 (es.e., un voto inferiore a C). Quindi restituisce la voce corrispondente nella stessa riga sotto la colonna “student_ID”.
Se invece volete tutte le informazioni su tutti gli studenti iscritti all’università, potete usare la semplice query SQL:
SELECT *
FROM Students;
La parola chiave asterisco * seleziona tutti i campi nel database. Notate che la clausola WHERE è opzionale in questo esempio.
Base di dati relazionali vs. non relazionali
I database relazionali sono il paradigma più comune per organizzare grandi quantità di informazioni. Tuttavia, non sono affatto l’unico.
I “database non relazionali” (chiamati anche database NoSQL) organizzano i dati in un modo diverso dalle tradizionali righe e colonne di un database relazionale. Possono prendere la forma di chiavi e valori, grafici, documenti, o diversi altri paradigmi.
I database relazionali sono tipicamente capaci di lavorare solo con dati strutturati. Si tratta di informazioni che sono state ordinatamente organizzate in campi discreti e standardizzati.
I database non relazionali, invece, eccellono nel lavorare con dati semi-strutturati. Queste sono informazioni che non sono organizzate in campi o record. Tuttavia, i dati semi-strutturati contengono ancora un certo grado di gerarchia in modo da poter capire le relazioni tra le diverse voci.
Quando si scalano i database a decine o centinaia di server, i database non relazionali tendono ad avere prestazioni migliori. Nel frattempo, i database relazionali sono semplici e familiari, e funzionano bene per la maggior parte delle situazioni.
Alcuni dei più popolari database non relazionali sono:
- MongoDB
- Apache Cassandra
- Apache HBase
- Redis
- Neo4j
Intanto, i quattro database relazionali più popolari sono:
- Microsoft SQL Server
- Oracle Database
- MySQL
- IBM DB2
Nel resto di questo pezzo, analizzeremo i pro e i contro di due di questi database relazionali: SQL Server e Oracle Database.
Cos’è SQL Server?
Microsoft SQL Server è un RDBMS sviluppato da Microsoft. Rilasciato per la prima volta nel 1989, SQL Server è ora disponibile in più di una dozzina di edizioni e gusti diversi, ognuno adatto a un diverso scopo e caso d’uso. Le quattro edizioni principali di SQL Server 2017 sono:
- Enterprise Edition: Include il motore di database principale di SQL Server e i servizi aggiuntivi. SQL Server 2017 Enterprise può supportare database grandi fino a 524 petabyte (524 milioni di gigabyte), utilizzare un numero illimitato di core del processore e accedere alla quantità di memoria consentita dal sistema operativo.
- Edizione Standard: Include il motore di database principale e i servizi indipendenti. SQL Server 2017 Standard può supportare database grandi fino a 524 petabyte, utilizzare fino a 24 core di processore e accedere fino a 128 gigabyte di memoria per istanza per la dimensione del buffer pool. L’edizione Standard manca di alcune caratteristiche avanzate dell’edizione Enterprise, come la Transparent Data Encryption e l’alta disponibilità avanzata.
- Edizione Express: Include il motore di database di base online. SQL Server 2017 Express può supportare database grandi fino a 10 gigabyte, utilizzare fino a 4 core di processore e accedere fino a 1410 megabyte di memoria per istanza per la dimensione del buffer pool. Mancano anche caratteristiche come l’alta disponibilità, l’integrazione dei dati e la business intelligence.
- Developer Edition: Include le stesse caratteristiche e funzionalità della Enterprise Edition, ma limitata dalla licenza del software solo per scopi di sviluppo e test.
Ognuna di queste quattro edizioni è per un pubblico diverso. SQL Server Enterprise è per le organizzazioni di grandi dimensioni, ad alta potenza e guidate dai dati, mentre SQL Server Standard è per le organizzazioni con esigenze di dati meno intense.
Entrambe le edizioni Express e Developer sono gratuite. Tuttavia, hanno limitazioni significative che le rendono poco convenienti come soluzione a lungo termine per la maggior parte delle organizzazioni.
Come uno dei prodotti di punta di Microsoft, SQL Server ha ricevuto aggiornamenti costanti e attenzione nel corso degli anni. Le recenti aggiunte alla piattaforma includono nuove capacità per il tuning delle prestazioni, l’analisi operativa in tempo reale, l’analisi dei big data, la visualizzazione dei dati e il supporto per il cloud ibrido.
Cos’è Oracle Database?
Oracle Database è un RDBMS sviluppato da Oracle. Come SQL Server, Oracle Database è disponibile in quattro edizioni separate destinate a diversi casi d’uso:
- Enterprise Edition (EE): Oracle Database Enterprise Edition è per le grandi aziende che hanno bisogno di una grande quantità di prestazioni, sicurezza, disponibilità e scalabilità dalla loro infrastruttura di database. EE permette alle aziende di sviluppare applicazioni web ad alta potenza, applicazioni di elaborazione delle transazioni online (OLTP) e data warehouse.
- Standard Edition 2 (SE2): Secondo Oracle, SE2 “include tutte le caratteristiche necessarie per sviluppare applicazioni per gruppi di lavoro, a livello di reparto e Web”. SE2 è in gran parte destinato alle piccole e medie imprese, come SQL Server Standard Edition.
- Personal Edition (PE): La Personal Edition è per l’uso da parte di un singolo utente su una singola macchina, ed è disponibile solo su Windows. La PE include tutte le funzionalità dell’Enterprise Edition, tranne l’opzione Oracle Real Application Clusters.
- Express Edition (XE): Infine, Express Edition è una versione entry-level gratuita di Oracle Database. Puoi facilmente aggiornare XE alle altre versioni elencate sopra. XE può memorizzare fino a 4 gigabyte di dati, utilizzare 1 gigabyte di memoria e usare solo 1 CPU.
La maggior parte delle aziende che scelgono Oracle Database vorranno usare EE o SE2. Per aiutarvi a prendere la vostra decisione, le caratteristiche qui sotto sono alcune di quelle disponibili in EE ma non presenti in SE2:
- Replicazione avanzata per la replica unidirezionale e multi-master dei dati in un sistema distribuito
- Compressione avanzata per migliorare le prestazioni e ridurre l’ingombro dello storage
- Oracle Data Guard per l’alta disponibilità, la protezione dei dati, e disaster recovery
- Computing parallelo per le scansioni degli indici, la ricostruzione degli indici e il recupero dei backup &
Come SQL Server, Oracle Database si è innovato negli ultimi anni per tenere il passo con le richieste dei clienti di elaborare i big data. Oracle Database è facile da integrare con gli altri software aziendali di Oracle: contabilità, pianificazione delle risorse aziendali (ERP), gestione delle relazioni con i clienti (CRM), ecc.
SQL Server vs. Oracle Database: Pro, contro e differenze
Discuteremo ora alcuni dei più importanti punti di distinzione tra SQL Server e Oracle. Questo vi aiuterà a prendere la decisione finale giusta per la vostra situazione.
Dipendenza dalla piattaforma
Come prodotto Microsoft, SQL Server è stato tradizionalmente disponibile solo per il sistema operativo Windows. Tuttavia, a partire da SQL Server 2017, la piattaforma è ora disponibile anche su Linux. Notate che se volete usare una versione precedente di SQL Server, dovrete usarla con Windows.
Oracle, nel frattempo, ha una lunga storia di supporto sia per Windows che per Linux. Oracle Database è disponibile anche per altri sistemi operativi basati su Unix come Oracle Solaris, IBM AIX e HP-UX. Tuttavia, né Oracle né SQL Server supportano Mac OS X.
User Base
Per decenni, Oracle ha avuto una migliore scalabilità e sicurezza di SQL Server, rendendolo più adatto alle grandi imprese. Inoltre, SQL Server era disponibile solo per Windows, lasciando gli utenti Linux fuori al freddo.
Questa percezione si è evoluta negli ultimi anni. Sia Oracle che SQL Server hanno rilasciato versioni enterprise e standard mature della loro piattaforma, sia per Windows che per Linux.
La maggior parte degli analisti sarebbero d’accordo sul fatto che Oracle ha ancora un leggero vantaggio su Microsoft in termini di caratteristiche di base del database e funzionalità all’avanguardia. Tuttavia, queste capacità extra hanno un lato negativo. Oracle è tipicamente più complesso da gestire, ha una curva di apprendimento più alta, e costa di più da mantenere.
Linguaggio
Sia Oracle che SQL Server hanno il loro “dialetto” del linguaggio SQL che estende le funzionalità di base di SQL. Oracle usa PL/SQL (Procedural Language/SQL), mentre SQL Server usa T-SQL (Transact-SQL).
Come tale, gli amministratori di database specializzati in Oracle, o in SQL Server, “parlano” una versione leggermente diversa di SQL. PL/SQL e T-SQL hanno ciascuno le proprie caratteristiche, abilità e sintassi distinte.
Le principali differenze tra PL/SQL e T-SQL sono come i due linguaggi gestiscono le variabili, le stored procedure e le funzioni incorporate. PL/SQL permette anche agli utenti di raggruppare le procedure in pacchetti, cosa che non è possibile con T-SQL.
Sintassi e schema
Usare Oracle e SQL Server “sembra diverso” non solo a causa del sapore di SQL, ma anche per le molte variazioni nella loro sintassi e nello schema. Per esempio, poiché DATE è una parola riservata in Oracle ma non in SQL Server, è perfettamente legale avere una colonna chiamata DATE in SQL Server (ma non in Oracle).
Inoltre, molti tipi di dati che sono gli stessi sotto il cappuccio hanno nomi diversi in SQL Server e Oracle. Per esempio, il tipo INTEGER in SQL Server e il tipo NUMBER(10) in Oracle hanno gli stessi scopi.
Queste differenze sono principalmente cosmetiche, ma importanti se state pianificando una migrazione da una piattaforma all’altra. Per vedere una lista completa delle differenze nella sintassi, nei tipi di dati e nello schema, potete controllare questa pagina sul sito di Oracle.
Controllo delle transazioni
Il controllo delle transazioni è un altro importante punto di partenza tra Oracle e SQL Server. In un database relazionale, una transazione è una singola unità di lavoro che può contenere più operazioni o compiti. Per non causare discrepanze nei dati, il database deve applicare o annullare tutte le operazioni della transazione. Una singola operazione fallita causerà il fallimento dell’intera transazione.
Per esempio, quando i clienti trasferiscono denaro tra i loro conti correnti e di risparmio, il trasferimento dovrebbe essere una singola transazione. Questa transazione consiste di tre operazioni:
- Rimozione del denaro dal conto corrente
- Aggiunta del denaro al conto di risparmio
- Registrazione del trasferimento nel registro bancario
Se una di queste operazioni fallisce, il database deve annullare l’intera transazione in modo che il saldo del conto del cliente sia corretto.
SQL Server esegue le operazioni in una transazione in modo sequenziale e individuale. Questo rende difficile o addirittura impossibile il rollback della transazione se si verifica un errore a metà strada. Il comando BEGIN TRANSACTION dichiara l’inizio di una transazione, e il comando COMMIT dichiara la fine. I rollback non sono possibili oltre la dichiarazione COMMIT più recente.
In Oracle, comunque, ogni nuova connessione al database è una nuova transazione. Per la maggior parte dei casi d’uso, il database effettua i cambiamenti in memoria e li impegna solo con un’esplicita dichiarazione COMMIT. Questo è più flessibile e permette un maggiore controllo manuale degli errori.
Prezzo e costo totale
Molto di SQL Server contro Oracle è una questione di opinioni, ma ciò che non è in discussione è il confronto dei prezzi. Le licenze di SQL Server sono significativamente più economiche di Oracle.
Secondo una stima, un server con 4 CPU e 4 core per CPU costerebbe 380.000 dollari con Oracle, ma solo 114.000 dollari con SQL Server. I costi aumentano ancora di più con le caratteristiche extra come il partizionamento delle tabelle, la compressione dei dati e l’elaborazione analitica online (OLAP).
Mentre il prezzo di listino può essere più basso su SQL Server, si dovrebbe anche considerare il costo totale di proprietà durante la vita del database. Questo include considerazioni come il supporto, la manutenzione e la produttività durante l’uso quotidiano.
In questo senso, Oracle sembra vincere, secondo uno studio di Oracle Database 11g e Microsoft SQL Server 2015. Gli amministratori di database qualificati possono eseguire funzioni tipiche il 41% più rapidamente in Oracle che in SQL Server.
Questi risparmi di tempo si sommano nel tempo. Lo stesso studio stima che i miglioramenti di Oracle alla produttività dei DBA possono far risparmiare alle aziende fino a 33.000 dollari per DBA all’anno.
Pensieri finali
Negli anni e nei decenni precedenti, la domanda Oracle vs. SQL Server era più facile da rispondere. Con più caratteristiche e maggiore complessità, Oracle era meglio per le grandi imprese che avevano bisogno di alte prestazioni. SQL Server era meglio per le organizzazioni che non volevano andare a tutto campo.
Tuttavia, le linee stanno cominciando a confondersi con le nuove versioni sia di SQL Server che di Oracle. Sia Oracle che SQL Server sono scelte eccellenti e mature per la gestione di database relazionali.
Alla fine, si dovrebbe scegliere lo strumento giusto per il lavoro in termini di configurazione tecnologica esistente, set di abilità interne, budget, fornitori e clienti. Avete bisogno di consigli sulla questione Oracle vs. SQL Server? Contattate un partner esperto di database che può aiutarvi a dare il giusto consiglio.
Di SQLBot
SQLBot.co offre agli sviluppatori & professionisti della BI un semplicissimo bot SQL Slack & strumento di reporting via email. Inserisci il tuo SQL e ottieni immediatamente un report on-demand in Slack o report programmati in Slack o via email. Provalo oggi stesso.
0 commenti