Con così tanti database sul mercato, le guerre mentali sono iniziate ed è il momento giusto per capire la differenza e l’importanza dei primi 3 database relazionali sul mercato – Microsoft SQL Server, Oracle PL/SQL, e MySQL. I sistemi di gestione di database relazionali sono attualmente diventati la spina dorsale dell’industria e con così tante opzioni disponibili, è difficile capire quale scegliere.
I sistemi di gestione di database relazionali sono stati introdotti nel 1980. Questo articolo si concentra sull’esplorazione della storia e delle caratteristiche di tre RDBMS popolari nel settore: Microsoft SQL Server, Oracle e MySQL. Microsoft SQL Server e Oracle sono i software commerciali, MySQL è l’RDBMS open-source.
Oracle è stata la prima azienda a far uscire RDBMS per uso commerciale negli anni ’80. A metà degli anni ’90, Microsoft è entrata nel mercato con SQL Server come serio concorrente di Oracle. MySQL, d’altra parte, è stato originariamente sviluppato e distribuito come un software open-source. MySQL è stato rilasciato per la prima volta nel 1995, e la versione per windows è stata rilasciata nel 1998. Nel 2008, è stato acquisito da SUN e successivamente da Oracle.
Il linguaggio – Cuore della comunicazione
La spina dorsale di qualsiasi RDBMS è il linguaggio utilizzato per eseguire le query e questo è il modo in cui le loro prestazioni e l’implementazione sono influenzate. Anche se tutti e tre i sistemi di gestione di database usano una versione di Structured Query Language, o SQL. Microsoft SQL Server usa Transact-SQL, o T-SQL, che è un’estensione di SQL originariamente sviluppato da Sybase e usato da Microsoft. Mentre Oracle, nel frattempo, usa PL/SQL, o Procedural Language/SQL.
Entrambi sono diversi “sapori” o dialetti di SQL ed entrambi i linguaggi hanno sintassi e capacità leggermente diverse. La differenza principale tra i due linguaggi è come gestiscono le variabili, le stored procedure e le funzioni integrate. PL/SQL in Oracle può anche raggruppare le procedure in pacchetti, cosa che non può essere fatta in MS SQL Server. PL/SQL può essere un po’ più complesso e potenzialmente più potente, mentre T-SQL è molto più semplice e facile da implementare.
MySQL, d’altra parte, usa la versione leggera di T-SQL e combina anche un linguaggio procedurale che si riferisce strettamente a SQL/PSM. Tuttavia gli oggetti di codice memorizzati di MySQL sono vicini agli standard ANSI, ma di nuovo, non hanno l’ampiezza e la profondità di T-SQL, l’estensione proprietaria di Microsoft e Sybase di SQL.
Controllo della transazione
Si può dire che una transazione è un gruppo di operazioni che vengono eseguite come una singola unità. Per esempio, se l’utente sta cercando di eseguire alcune query SQL, allora o vengono eseguite tutte o nessuna. Questa è una delle maggiori differenze tra Oracle e MS SQL Server in riferimento al controllo delle transazioni.
Per default, MS SQL Server eseguirà e commetterà ogni comando/attività individualmente, e sarà difficile o impossibile fare il rollback delle modifiche se ci sono errori lungo il percorso. Il comando “BEGIN TRANSACTION” è usato per raggruppare correttamente le dichiarazioni e dichiarare l’inizio di una transazione, e una dichiarazione COMMIT può essere usata alla fine. L’istruzione COMMIT scriverà i dati modificati sul disco e terminerà la transazione. All’interno di una transazione, ROLLBACK scarterà qualsiasi cambiamento fatto all’interno del blocco della transazione. Dopo che un COMMIT è stato emesso, non è possibile fare rollback oltre il comando COMMIT.
In Oracle, ogni nuova connessione al database è considerata una nuova transazione. Mentre le query vengono eseguite e i comandi vengono emessi, i cambiamenti vengono fatti solo nella memoria del database e rimangono nella cache. Nulla viene impegnato fino a quando non viene data un’esplicita dichiarazione COMMIT. Dopo il COMMIT, il prossimo comando emesso essenzialmente inizia una nuova transazione, e il processo inizia di nuovo. Questo fornisce una maggiore flessibilità e aiuta anche nel controllo degli errori, dato che nessuna modifica viene commessa su disco fino a quando il comando COMMIT viene esplicitamente eseguito.
Nel caso di MySQL, il supporto delle transazioni è facilmente compatibile con InnoDB. InnoDB è un motore di archiviazione per MySQL e per default è disponibile con MySQL. Fornisce le caratteristiche standard delle transazioni ACID-compliant, insieme al supporto delle chiavi esterne.
Organizzazione degli oggetti del database
L’organizzazione degli oggetti del database è anche un grande differenziatore in questi 3 database. MS SQL Server organizza tutti gli oggetti, come tabelle, viste e procedure, per nomi di database. Gli utenti di MS SQL sono assegnati a un login, a cui è concesso l’accesso a specifici database e anche ai suoi oggetti. In Microsoft SQL Server, ogni database ha un file disco privato e non condiviso sul server.
Mentre in Oracle, tutti gli oggetti del database sono raggruppati per schemi. Gli schemi non sono altro che le strutture del database che sono un sottoinsieme di oggetti del database. Tutti gli oggetti del database sono condivisi tra tutti gli schemi e gli utenti. Anche se è tutto condiviso, i ruoli e i permessi per ogni utente sono definiti e lo stesso può essere limitato a certi schemi e tabelle.
In breve, tutti e tre, MySQL, Oracle e SQL Server sono potenti opzioni RDBMS. Anche se ci sono una serie di altre differenze nel modo in cui funzionano “sotto il cofano” e implementati, possono essere utilizzati in modo quasi equivalente. Ognuno può essere usato con obiettivi diversi in ambienti diversi. Lo scopo può essere lo stesso, ma l’implementazione varia.