Articles

Microsoft SQL Server vs. Oracle: Das Gleiche, aber anders?

Posted on
Teilen auf FacebookTweet über this on TwitterShare on LinkedIn
Written by Josh Stansfieldon March 13, 2014
Share on FacebookTweet about this on TwitterAuf LinkedIn teilen

Es gibt viele verschiedene relationale Datenbankmanagementsysteme (RDBMS). Sie haben wahrscheinlich schon von Microsoft Access, Sybase und MySQL gehört, aber die beiden beliebtesten und am weitesten verbreiteten sind Oracle und MS SQL Server. Obwohl es viele Ähnlichkeiten zwischen den beiden Plattformen gibt, gibt es auch eine Reihe von wichtigen Unterschieden. In diesem Blog werde ich einige davon genauer unter die Lupe nehmen, und zwar in den Bereichen Befehlssprache, Transaktionssteuerung und Organisation von Datenbankobjekten.

Sprache

Der vielleicht offensichtlichste Unterschied zwischen den beiden RDBMS ist die Sprache, die sie verwenden. Obwohl beide Systeme eine Version der Structured Query Language (SQL) verwenden, benutzt MS SQL Server Transact SQL (T-SQL), eine Erweiterung von SQL, die ursprünglich von Sybase entwickelt und von Microsoft verwendet wurde. Oracle hingegen verwendet PL/SQL, oder Procedural Language/SQL. Beides sind verschiedene „Geschmacksrichtungen“ oder Dialekte von SQL und beide Sprachen haben unterschiedliche Syntax und Fähigkeiten. Der Hauptunterschied zwischen den beiden Sprachen besteht darin, wie sie mit Variablen, gespeicherten Prozeduren und integrierten Funktionen umgehen. PL/SQL in Oracle kann auch Prozeduren in Paketen zusammenfassen, was in MS SQL Server nicht möglich ist. Meiner bescheidenen Meinung nach ist PL/SQL komplexer und potenziell mächtiger, während T-SQL viel einfacher und leichter zu bedienen ist.

Transaktionssteuerung

Ein weiterer großer Unterschied zwischen Oracle und MS SQL Server ist die Transaktionssteuerung. Für die Zwecke dieses Artikels kann eine Transaktion als eine Gruppe von Operationen oder Aufgaben definiert werden, die als eine Einheit behandelt werden sollten. Zum Beispiel eine Sammlung von SQL-Abfragen, die Datensätze ändern, die alle zur gleichen Zeit aktualisiert werden müssen, wobei (zum Beispiel) ein Fehler bei der Aktualisierung eines einzelnen Datensatzes in der Gruppe dazu führen sollte, dass keiner der Datensätze aktualisiert wird. Standardmäßig führt MS SQL Server jeden Befehl/jede Aufgabe einzeln aus und überträgt ihn/sie, und es ist schwierig oder unmöglich, Änderungen rückgängig zu machen, wenn dabei Fehler auftreten. Um Anweisungen ordnungsgemäß zu gruppieren, wird der Befehl „BEGIN TRANSACTION“ verwendet, um den Beginn einer Transaktion zu deklarieren, und am Ende wird entweder eine COMMIT-Anweisung verwendet. Diese COMMIT-Anweisung schreibt die geänderten Daten auf die Festplatte und beendet die Transaktion. Innerhalb einer Transaktion verwirft ROLLBACK alle Änderungen, die innerhalb des Transaktionsblocks vorgenommen wurden. Bei richtiger Verwendung mit Fehlerbehandlung bietet ROLLBACK einen gewissen Schutz gegen Datenbeschädigung. Nach einem COMMIT ist es nicht mehr möglich, weiter als bis zum COMMIT-Befehl zurückzurollen.

In Oracle hingegen wird jede neue Datenbankverbindung als neue Transaktion behandelt. Bei der Ausführung von Abfragen und Befehlen werden Änderungen nur im Speicher vorgenommen und nichts wird committed, bis eine explizite COMMIT-Anweisung gegeben wird (mit einigen Ausnahmen bei DDL-Befehlen, die „implizite“ Commits enthalten und sofort committed werden). Nach dem COMMIT löst der nächste ausgegebene Befehl im Wesentlichen eine neue Transaktion aus, und der Prozess beginnt erneut. Dies bietet eine größere Flexibilität und hilft auch bei der Fehlerkontrolle, da keine Änderungen auf die Festplatte übertragen werden, bis der DBA explizit den Befehl dazu gibt.

Organisation von Datenbankobjekten

Der letzte Unterschied, den ich besprechen möchte, ist, wie das RDBMS Datenbankobjekte organisiert. MS SQL Server organisiert alle Objekte, wie z. B. Tabellen, Ansichten und Prozeduren, nach Datenbanknamen. Die Benutzer sind einem Login zugeordnet, das Zugriff auf die jeweilige Datenbank und ihre Objekte gewährt. Außerdem hat in SQL Server jede Datenbank eine private, nicht gemeinsam genutzte Plattendatei auf dem Server. In Oracle sind alle Datenbankobjekte in Schemas gruppiert, die eine Untersammlung von Datenbankobjekten sind, und alle Datenbankobjekte werden von allen Schemas und Benutzern gemeinsam genutzt. Obwohl alles gemeinsam genutzt wird, kann jeder Benutzer über Rollen und Berechtigungen auf bestimmte Schemata und Tabellen beschränkt werden.

Zusammenfassend lässt sich sagen, dass sowohl Oracle als auch SQL Server leistungsstarke RDBMS-Optionen sind. Obwohl es eine Reihe von Unterschieden gibt, wie sie „unter der Haube“ arbeiten, können sie beide in etwa gleichwertiger Weise verwendet werden. Keines der beiden Systeme ist objektiv besser als das andere, aber es gibt Situationen, in denen eine bestimmte Wahl vorteilhafter ist. In jedem Fall kann Segue diese Systeme unterstützen und Empfehlungen zur Verbesserung, Aufrüstung oder Wartung Ihrer wichtigen geschäftskritischen Infrastruktur geben, damit Sie sich auf Ihr Geschäft konzentrieren können.

Brauchen Sie Hilfe? Kontaktieren Sie uns

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.