Bei so vielen Datenbanken auf dem Markt, haben die Gedankenkriege begonnen und es ist die richtige Zeit, um den Unterschied und die Bedeutung der Top 3 relationalen Datenbanken auf dem Markt zu verstehen – Microsoft SQL Server, Oracle PL/SQL und MySQL. Die relationalen Datenbank-Management-Systeme sind derzeit das Rückgrat der Industrie und mit so vielen Optionen zur Verfügung, ist es schwierig, herauszufinden, welche man zu wählen.
Die relationalen Datenbank-Management-Systeme wurde in den 1980er Jahren eingeführt. Dieser Artikel konzentriert sich auf die Erkundung der Geschichte und der Eigenschaften von drei beliebten RDBMS in der Branche: Microsoft SQL Server, Oracle und MySQL. Microsoft SQL Server und Oracle sind die kommerzielle Software, MySQL ist das Open-Source-RDBMS.
Oracle war das erste Unternehmen, das in den 1980er Jahren RDBMS für den kommerziellen Einsatz herausbrachte. Mitte der 1990er Jahre trat Microsoft mit SQL Server als ernsthafter Konkurrent für Oracle auf den Markt. MySQL hingegen wurde ursprünglich als Open-Source-Software entwickelt und vertrieben. MySQL wurde erstmals 1995 veröffentlicht, die Windows-Version kam 1998 auf den Markt. Im Jahr 2008 wurde es von SUN und danach von Oracle übernommen.
Die Sprache – Herzstück der Kommunikation
Das Rückgrat eines jeden RDBMS ist die Sprache, in der die Abfragen ausgeführt werden, und das hat Auswirkungen auf die Leistung und die Implementierung. Obwohl alle drei Datenbankmanagementsysteme eine Version der Structured Query Language, kurz SQL, verwenden. Microsoft SQL Server verwendet Transact-SQL, oder T-SQL, eine Erweiterung von SQL, die ursprünglich von Sybase entwickelt wurde und von Microsoft verwendet wird. Oracle hingegen verwendet PL/SQL oder Procedural Language/SQL.
Beides sind verschiedene „Geschmacksrichtungen“ oder Dialekte von SQL und beide Sprachen haben eine leicht unterschiedliche Syntax und Fähigkeiten. Der Hauptunterschied zwischen den beiden Sprachen ist, wie sie mit Variablen, gespeicherten Prozeduren und eingebauten Funktionen umgehen. PL/SQL in Oracle kann auch Prozeduren in Paketen zusammenfassen, was in MS SQL Server nicht möglich ist. PL/SQL kann etwas komplexer und potenziell mächtiger sein, während T-SQL viel einfacher und leichter zu implementieren ist.
MySQL hingegen verwendet die Light-Version von T-SQL und kombiniert ebenfalls eine prozedurale Sprache, die eng mit SQL/PSM verwandt ist. Allerdings sind die gespeicherten Code-Objekte von MySQL nahe am ANSI-Standard, aber auch hier haben sie nicht die Breite und Tiefe von T-SQL, der proprietären Erweiterung von Microsoft und Sybase zu SQL.
Transaktionssteuerung
Eine Transaktion kann als eine Gruppe von Operationen bezeichnet werden, die als eine Einheit ausgeführt werden. Wenn der Benutzer zum Beispiel versucht, einige SQL-Abfragen auszuführen, dann werden entweder alle ausgeführt oder keine. Dies ist einer der Hauptunterschiede zwischen Oracle und MS SQL Server in Bezug auf die Transaktionssteuerung.
Standardmäßig wird bei MS SQL Server jeder Befehl/jede Aufgabe einzeln ausgeführt und festgeschrieben, und es ist schwierig oder unmöglich, Änderungen rückgängig zu machen, wenn dabei irgendwelche Fehler auftreten. „BEGIN TRANSACTION“-Befehl wird verwendet, um die Anweisungen richtig zu gruppieren und den Beginn einer Transaktion zu deklarieren, und eine COMMIT-Anweisung kann am Ende verwendet werden. 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. Nachdem ein COMMIT abgesetzt wurde, ist es nicht mehr möglich, weiter als bis zum COMMIT-Befehl zurückzurollen.
Während in Oracle jede neue Datenbankverbindung als neue Transaktion betrachtet wird. Wenn Abfragen ausgeführt und Befehle erteilt werden, werden die Änderungen nur im Speicher der Datenbank vorgenommen und bleiben im Cache. Es wird nichts übertragen, bis eine explizite COMMIT-Anweisung gegeben wird. 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 COMMIT-Befehl explizit ausgeführt wird.
Im Fall von MySQL ist die Unterstützung von Transaktionen leicht mit InnoDB kompatibel. InnoDB ist eine Speicher-Engine für MySQL und ist standardmäßig mit MySQL verfügbar. Sie bietet die standardmäßigen ACID-konformen Transaktionsfunktionen zusammen mit der Unterstützung von Fremdschlüsseln.
Organisation von Datenbankobjekten
Die Organisation von Datenbankobjekten ist ebenfalls ein großes Unterscheidungsmerkmal bei diesen 3 Datenbanken. MS SQL Server organisiert alle Objekte, wie Tabellen, Ansichten und Prozeduren, nach Datenbanknamen. Die MS SQL-Benutzer werden einem Login zugeordnet, das Zugriff auf die jeweiligen Datenbanken und auch auf deren Objekte gewährt. In Microsoft SQL Server hat jede Datenbank eine private, nicht freigegebene Plattendatei auf dem Server.
Während in Oracle alle Datenbankobjekte durch Schemas gruppiert sind. Die Schemas sind nichts anderes als die Datenbankstrukturen, die eine Untersammlung von Datenbankobjekten sind. Alle Datenbankobjekte werden von allen Schemas und Benutzern gemeinsam genutzt. Obwohl alles gemeinsam genutzt wird, sind die Rollen und Berechtigungen für jeden Benutzer definiert und können auf bestimmte Schemata und Tabellen beschränkt werden.
Zusammenfassend kann man sagen, dass alle drei, MySQL, Oracle und SQL Server, leistungsstarke RDBMS-Optionen sind. Obwohl es eine Reihe von Unterschieden in der Art und Weise gibt, wie sie „unter der Haube“ arbeiten und implementiert sind, können sie in etwa gleichwertig verwendet werden. Jedes kann mit unterschiedlicher Zielsetzung in unterschiedlichen Umgebungen eingesetzt werden. Der Zweck mag derselbe sein, aber die Implementierung variiert.