Articles

Microsoft SQL Server vs. Oracle: Hetzelfde, maar toch anders?

Posted on
Deel op FacebookTweet over dit op TwitterDeel op LinkedIn
Schreven door Josh Stansfieldop 13 maart, 2014
Deel op FacebookTweet hierover op TwitterDeel op LinkedIn

Er zijn veel verschillende relationele databasebeheersystemen (RDBMS). Je hebt waarschijnlijk wel gehoord van Microsoft Access, Sybase en MySQL, maar de twee populairste en meest gebruikte zijn Oracle en MS SQL Server. Hoewel er veel gelijkenissen zijn tussen de twee platformen, zijn er ook een aantal belangrijke verschillen. In deze blog zal ik er een aantal onder de loep nemen, met name op het gebied van hun commandotaal, hoe ze omgaan met transactiecontrole en hun organisatie van databaseobjecten.

Taal

Het meest voor de hand liggende verschil tussen de twee RDBMS is misschien wel de taal die ze gebruiken. Hoewel beide systemen een versie van Structured Query Language, of SQL, gebruiken, maakt MS SQL Server gebruik van Transact SQL, of T-SQL, een uitbreiding van SQL die oorspronkelijk door Sybase is ontwikkeld en door Microsoft wordt gebruikt. Oracle, daarentegen, gebruikt PL/SQL, of Procedural Language/SQL. Beide zijn verschillende “smaken” of dialecten van SQL en beide talen hebben verschillende syntaxis en mogelijkheden. Het belangrijkste verschil tussen de twee talen is hoe ze omgaan met variabelen, opgeslagen procedures, en ingebouwde functies. PL/SQL in Oracle kan ook procedures groeperen in packages, wat niet kan in MS SQL Server. Naar mijn bescheiden mening is PL/SQL complexer en potentieel krachtiger, terwijl T-SQL veel eenvoudiger en gemakkelijker te gebruiken is.

Transaction Control

Een van de grootste verschillen tussen Oracle en MS SQL Server is transaction control. In het kader van dit artikel kan een transactie worden gedefinieerd als een groep bewerkingen of taken die als een enkele eenheid moeten worden behandeld. Bijvoorbeeld, een verzameling SQL queries die records wijzigen die allemaal op hetzelfde moment moeten worden bijgewerkt, waarbij (bijvoorbeeld) een mislukte update van een van de records in de set zou moeten resulteren in geen van de records die worden bijgewerkt. Standaard zal MS SQL Server elk commando/taak afzonderlijk uitvoeren en vastleggen, en het zal moeilijk of onmogelijk zijn om wijzigingen terug te draaien als er onderweg fouten worden aangetroffen. Om statements op de juiste manier te groeperen, wordt het “BEGIN TRANSACTION” commando gebruikt om het begin van een transactie aan te geven, en aan het eind wordt een COMMIT statement gebruikt. Deze COMMIT-instructie zal de gewijzigde gegevens naar schijf schrijven, en de transactie beëindigen. Binnen een transactie worden met ROLLBACK alle wijzigingen binnen het transactieblok ongedaan gemaakt. Bij correct gebruik in combinatie met foutafhandeling biedt ROLLBACK enige mate van bescherming tegen gegevenscorruptie. Nadat een COMMIT is uitgegeven, is het niet mogelijk om verder terug te gaan dan het COMMIT commando.

In Oracle, aan de andere kant, wordt elke nieuwe database connectie behandeld als een nieuwe transactie. Als queries worden uitgevoerd en commando’s worden gegeven, worden wijzigingen alleen in het geheugen gemaakt en niets wordt vastgelegd totdat een expliciet COMMIT-commando wordt gegeven (met een paar uitzonderingen met betrekking tot DDL-commando’s, die “impliciete” commits bevatten, en onmiddellijk worden vastgelegd). Na de COMMIT start het volgende commando dat wordt gegeven in wezen een nieuwe transactie, en begint het proces opnieuw. Dit biedt meer flexibiliteit en helpt ook bij fout controle, omdat er geen wijzigingen op schijf worden vastgelegd totdat de DBA expliciet het commando geeft om dat te doen.

Organisatie van Database Objecten

Het laatste verschil dat ik wil bespreken is hoe het RDBMS database objecten organiseert. MS SQL Server organiseert alle objecten, zoals tabellen, views en procedures, op basis van databasenamen. Gebruikers krijgen een login toegewezen die toegang heeft tot de specifieke database en de bijbehorende objecten. Ook heeft in SQL Server elke database een eigen, niet gedeeld schijfbestand op de server. In Oracle zijn alle databaseobjecten gegroepeerd in schema’s, die een subset zijn van databaseobjecten, en alle databaseobjecten worden gedeeld door alle schema’s en gebruikers. Hoewel alles wordt gedeeld, kan elke gebruiker via rollen en machtigingen worden beperkt tot bepaalde schema’s en tabellen.

In het kort, zowel Oracle als SQL Server zijn krachtige RDBMS-opties. Hoewel er een aantal verschillen zijn in hoe ze “onder de motorkap” werken, kunnen ze beide op ongeveer gelijkwaardige manieren worden gebruikt. Geen van beide is objectief beter dan de andere, maar sommige situaties kunnen gunstiger zijn voor een bepaalde keuze. Hoe dan ook, Segue kan deze systemen ondersteunen en aanbevelingen doen voor het verbeteren, upgraden of onderhouden van uw belangrijkste bedrijfskritische infrastructuur, zodat u zich kunt blijven concentreren op het zakendoen.

Hulp nodig? Neem contact met ons op

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *