Articles

Microsoft SQL Server vs. Oracle: lo stesso, ma diverso?

Posted on
Condividi su FacebookTweet about this on TwitterCondividi su LinkedIn
Scritto da Josh Stansfieldil 13 marzo, 2014
Condividi su FacebookTweet su TwitterCondividi su LinkedIn

Ci sono molti diversi sistemi di gestione di database relazionali (RDBMS). Probabilmente avete sentito parlare di Microsoft Access, Sybase e MySQL, ma i due più popolari e ampiamente utilizzati sono Oracle e MS SQL Server. Anche se ci sono molte somiglianze tra le due piattaforme, ci sono anche una serie di differenze chiave. In questo blog, ne esaminerò alcune in particolare, nelle aree del loro linguaggio di comando, come gestiscono il controllo delle transazioni e la loro organizzazione degli oggetti del database.

Linguaggio

Forse la differenza più evidente tra i due RDBMS è il linguaggio che usano. Anche se entrambi i sistemi usano una versione di Structured Query Language, o SQL, MS SQL Server usa Transact SQL, o T-SQL, che è un’estensione di SQL originariamente sviluppato da Sybase e usato da Microsoft. Oracle, nel frattempo, usa PL/SQL, o linguaggio procedurale/SQL. Entrambi sono diversi “sapori” o dialetti di SQL ed entrambi i linguaggi hanno sintassi e capacità 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. A mio modesto parere, PL/SQL è complesso e potenzialmente più potente, mentre T-SQL è molto più semplice e facile da usare.

Controllo delle transazioni

Un’altra delle maggiori differenze tra Oracle e MS SQL Server è il controllo delle transazioni. Per gli scopi di questo articolo, una transazione può essere definita come un gruppo di operazioni o compiti che dovrebbero essere trattati come una singola unità. Per esempio, un insieme di query SQL che modificano i record che devono essere aggiornati tutti allo stesso tempo, dove (per esempio) un mancato aggiornamento di un singolo record tra l’insieme dovrebbe comportare che nessuno dei record venga aggiornato. Per impostazione predefinita, MS SQL Server eseguirà e impegnerà ogni comando/task individualmente, e sarà difficile o impossibile annullare le modifiche se si incontrano errori lungo il percorso. Per raggruppare correttamente le istruzioni, il comando “BEGIN TRANSACTION” viene usato per dichiarare l’inizio di una transazione, e alla fine viene usato un’istruzione COMMIT. L’istruzione COMMIT scriverà i dati modificati sul disco e terminerà la transazione. All’interno di una transazione, ROLLBACK scarterà tutti i cambiamenti fatti all’interno del blocco della transazione. Se usato correttamente con la gestione degli errori, il ROLLBACK permette un certo grado di protezione contro la corruzione dei dati. Dopo che un COMMIT è stato emesso, non è possibile eseguire il rollback oltre il comando COMMIT.

In Oracle, d’altra parte, ogni nuova connessione al database è trattata come una nuova transazione. Mentre le query vengono eseguite e i comandi vengono emessi, i cambiamenti vengono fatti solo in memoria e nulla viene impegnato fino a quando non viene data un’esplicita istruzione COMMIT (con alcune eccezioni relative ai comandi DDL, che includono commit “impliciti”, e vengono impegnati immediatamente). Dopo il COMMIT, il prossimo comando emesso essenzialmente inizia una nuova transazione, e il processo ricomincia. Questo fornisce una maggiore flessibilità e aiuta anche nel controllo degli errori, dato che nessuna modifica viene commessa su disco finché il DBA non emette esplicitamente il comando per farlo.

Organizzazione degli oggetti del database

L’ultima differenza che voglio discutere è come l’RDBMS organizza gli oggetti del database. MS SQL Server organizza tutti gli oggetti, come tabelle, viste e procedure, per nomi di database. Gli utenti sono assegnati a un login a cui è concesso l’accesso al database specifico e ai suoi oggetti. Inoltre, in SQL Server ogni database ha un file disco privato e non condiviso sul server. In Oracle, tutti gli oggetti del database sono raggruppati da schemi, che sono un sottoinsieme di oggetti del database e tutti gli oggetti del database sono condivisi tra tutti gli schemi e gli utenti. Anche se è tutto condiviso, ogni utente può essere limitato a certi schemi e tabelle tramite ruoli e permessi.

In breve, sia Oracle che SQL Server sono opzioni RDBMS potenti. Anche se ci sono un certo numero di differenze nel modo in cui funzionano “sotto il cofano”, entrambi possono essere utilizzati in modi più o meno equivalenti. Nessuno dei due è oggettivamente migliore dell’altro, ma alcune situazioni possono essere più favorevoli ad una scelta particolare. In entrambi i casi, Segue può supportare questi sistemi e aiutarvi a dare consigli su come migliorare, aggiornare o mantenere la vostra infrastruttura chiave mission-critical per assicurarvi di potervi concentrare sul vostro business.

Hai bisogno di aiuto? Contattateci

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *