DataSunrise erreicht AWS DevOps Kompetenz Status in AWS DevSecOps und Überwachung, Protokollierung, Performance

Wie beliebte Datenbanken mit DDL-Befehlen in Transaktionen umgehen

Wie beliebte Datenbanken mit DDL-Befehlen in Transaktionen umgehen

Die Integration von DDL-Befehlen in Transaktionen ist eine der leistungsstärksten Funktionen, die Datenbanken bieten. Aber nicht alle Datenbanken können DDL-Änderungen rückgängig machen. Oracle, PostgreSQL, MySQL, MariaDB, DB2, MSSQL, Teradata, Greenplum, Netezza, Redshift, Aurora sind die beliebtesten relationalen Datenbanken, und dieser Artikel beschreibt deren Fähigkeit, DDL-Befehle in Transaktionen zu unterstützen.

Eine Transaktion ist eine Abfolge von Befehlen, die zu einer logischen Einheit zusammengefasst sind. Daher wird eine Transaktion als eine Einheit ausgeführt. Wenn die Ausführung einer Transaktion unterbrochen wird, wird die Transaktion überhaupt nicht ausgeführt. Transaktionen werden verwendet, um die Integrität der Datenbank zu bewahren, wobei die Einzelausführung aller Befehle, die die Transaktion umfasst, bedeutet, dass Integritätsbedingungen gespeichert werden und es unmöglich ist, die Datenbank in einen Übergangs- oder inkonsistenten Zustand zu versetzen.

DDL (Data Definition Language) ist eine Familie von SQL-Sprachenelementen, die verwendet werden, um die Datenbankstruktur zu definieren (einschließlich Operationen mit Datenbanken, Tabellen, Spalten, Indizes, Ansichten, gespeicherten Prozeduren und Einschränkungen).

Um zu verstehen, was DDL ist, ist es wichtig zu wissen, dass DDL-Anweisungen eine entscheidende Rolle in Datenbankverwaltungssystemen (DBMS) spielen, indem sie es den Benutzern ermöglichen, die Struktur der Datenbank zu definieren und zu ändern. Die Fähigkeit, DDL in Datenbankverwaltungssystemen auszuführen, ist wesentlich für die Aufrechterhaltung der Integrität und Konsistenz der in der Datenbank gespeicherten Daten. Das Verhalten von DDL-Anweisungen innerhalb von Transaktionen variiert jedoch zwischen den verschiedenen DBMS-Implementierungen. Zu verstehen, wie DDL-Anweisungen innerhalb von Transaktionen in Ihrem spezifischen DBMS funktionieren, ist entscheidend, um die Datenintegrität zu gewährleisten und geeignete Fehlerbehandlungsmechanismen zu implementieren.

Verständnis von DDL in Datenbankverwaltungssystemen

Die Data Definition Language (DDL) bildet einen kritischen Bestandteil von Datenbankverwaltungssystemen, indem sie die notwendigen Befehle bereitstellt, um die Datenbankstruktur zu definieren und zu ändern. Innerhalb eines DBMS erstellen DDL-Befehle den Rahmen, der die Daten hält und bestimmt, wie sie organisiert, zugegriffen und gepflegt werden.

Die grundlegendsten DDL-Befehle in Datenbankverwaltungssystemen umfassen CREATE, ALTER, DROP, TRUNCATE, COMMENT und RENAME. Der CREATE-Befehl erstellt neue Datenbankobjekte wie Tabellen, Ansichten, Indizes oder gespeicherte Prozeduren. ALTER ändert vorhandene Objekte, indem Spalten hinzugefügt, Datentypen geändert oder Einschränkungen implementiert werden. DROP entfernt Objekte vollständig aus dem Datenbankschema.

TRUNCATE, obwohl manchmal als DML klassifiziert, fungiert in den meisten Datenbankverwaltungssystemen als DDL, da es den Tabellenspeicher zurücksetzt und normalerweise nicht rückgängig gemacht werden kann. COMMENT fügt beschreibende Anmerkungen zu Datenbankobjekten hinzu und verbessert die Dokumentation. RENAME ändert Objektbezeichner für mehr Klarheit oder Organisation.

Beim Ausführen von DDL in Datenbankverwaltungssystemen erwerben diese Befehle typischerweise Schemasperren, die gleichzeitige Änderungen an denselben Objekten verhindern. Dieses Sperrverhalten variiert zwischen den Systemen – einige implementieren kurze Sperren während der Metadatenänderungen, während andere Objekte für die Dauer der Operation sperren. Das Verständnis dieser Sperrverhalten ist entscheidend bei der Planung von Wartungsarbeiten in Produktionsumgebungen.

Über die grundlegenden Strukturänderungen hinaus behandelt DDL in modernen Datenbankverwaltungssystemen auch fortschrittlichere Funktionen wie Partionierung (Teilen von Tabellen in kleinere, besser handhabbare Segmente), Implementierung von Sicherheitsrichtlinien durch die GRANT- und REVOKE-Befehle sowie Definition von Triggern, die automatisch als Reaktion auf bestimmte Ereignisse ausgeführt werden. Diese Fähigkeiten machen DDL zu einem außergewöhnlich leistungsstarken Werkzeug für Datenbankarchitekten und -administratoren.

Unsere DataSunrise Database Security Suite ist speziell für den Schutz relationaler Datenbanken vor unbefugtem Zugriff und Datenlecks konzipiert. Um diese Aufgabe zu erfüllen, wird ein leistungsstarkes System von Sicherheitsrichtlinien (die Regeln) zur Einschränkung des Datenbankzugriffs und zur dynamischen Datenmaskierung implementiert. Um diese Funktionalität zu nutzen, muss unser Programm jederzeit den Zustand der Datenbank-Metadaten kennen. Metadaten sind das Datenbankschema und die Wertemengen der Systemvariablen, die die Abfrageausführung und die Interpretation der Ergebnisse beeinflussen. Metadaten können durch das Senden einer Reihe von Abfragen an den Datenbankserver abgerufen werden.

DataSunrise unterstützt auch die Verfolgung inkrementeller Änderungen und protokolliert die Ausführungsergebnisse von DDL-Befehlen, die von unserem Produkt verarbeitet werden. Aber der wirklich interessante Teil beginnt, wenn Sie Metadatenänderungen innerhalb der Transaktion unterstützen müssen. Einige RDBMSs unterstützen die Transaktionalität von DDL-Befehlen, d. h. Sie können diese Befehle zurücksetzen, wenn die Transaktion zurückgesetzt wird. Andere RDBMSs unterstützen DDLs in Transaktionen nicht. In solchen RDBMSs beenden DDL-Befehle die aktuelle Transaktion implizit oder verursachen einen SQL-Server-Fehler.

Aber die beliebtesten RDBMSs liegen irgendwo dazwischen: Sie unterstützen die Transaktionalität von DDL-Befehlen, jedoch nicht für alle Befehle. Normalerweise können die umfassendsten Befehle, die zur Erstellung und Löschung von Dateisystemobjekten im Datenbankspeicher verwendet werden, den Rollback-Vorgang nicht unterstützen, sodass die Transaktionalität für kleinere Befehle unterstützt wird, deren Rollback keine Änderungen der Dateisystemstruktur verursacht. Transaktionen in allen RDBMSs sind nur im Allgemeinen ähnlich. Aber in der Praxis verfügt jede Datenbank über eine einzigartige Syntax für Transaktionskontrollbefehle, und jedes RDBMS hat seine eigenen einzigartigen Transaktionskontrollmechanismen. Wir nennen dies ein Transaktionsmodell eines bestimmten RDBMS.

Für die korrekte Verarbeitung von Metadatenänderungen sollte unser Programm in der Lage sein, DDL-Änderungen, die beim Zurücksetzen der Transaktion abgebrochen wurden, zurückzusetzen. Dies ist eine ziemlich komplexe algorithmische Aufgabe: Es erfordert die Unterstützung von Metadaten-Deltas (Diff), die den DDL-Änderungen innerhalb der aktuellen Transaktion jeder Verbindung zur Datenbank entsprechen. Ein solches Delta existiert, bis die Transaktion abgeschlossen ist, und könnte als Ganzes oder in Teilen rückgängig gemacht werden (für die RDBMS, die mehrstufige Transaktionen oder Speicherpunkte unterstützen).

Schauen wir uns nun die Funktionen an, die die beliebten Datenbanken im Kontext von transaktionalem DDL bieten können.

Oracle Database

Oracle unterstützt keine transaktionalen DDL: Die Transaktion wird als abgeschlossen betrachtet, wenn ein CREATE-, DROP-, RENAME- oder ALTER-Befehl ausgeführt wird. Wenn die Transaktion DML-Befehle enthält, bestätigt Oracle die Transaktion als Ganzes und dann den DDL-Befehl als separate Transaktion.

PostgreSQL

PostgreSQL unterstützt transaktionales DDL: alle DDL-Befehle außer großkalibrigen Operationen, die auf die Erstellung und das Löschen von Objekten wie DATABASE, TABLESPACE, CLUSTER abzielen. PostgreSQL unterstützt mehrstufige Transaktionen auf der Ebene von Speicherpunkten. Im Gegensatz zu Standard-SQL unterstützt PostgreSQL gleichnamige Speicherpunkte. Das bedeutet, dass die älteren Punkte so lange nicht verfügbar sind, wie die neueren bestehen.

Wenn ein Fehler innerhalb einer Transaktion auftritt, setzt PostgreSQL die gesamte Transaktion zurück, verlangt jedoch in jedem Fall einen Befehl zum Abschluss der aktuellen Transaktion (COMMIT, ROLLBACK, ABORT). PostgreSQL startet eine implizite Transaktion zu Beginn einer Mehrfachanweisung und wandelt die Transaktion in eine explizite um, wenn innerhalb einer Mehrfachanweisung ein BEGIN-Befehl vorhanden ist (die Transaktion wird als begonnen angesehen, wenn die Mehrfachanweisung beginnt).

MySQL

MySQL unterstützt keine transaktionalen DDL. Keine Transaktionen sind für MyISAM verfügbar. Für InnoDB verursachen DDL-Befehle eine implizite Bestätigung der aktuellen Transaktion.

MariaDB

MariaDB übernimmt sein Verhalten in Bezug auf transaktionale DDL von MySQL und unterstützt es nicht.

DB2

DB2 unterstützt mehrstufige Transaktionen sowohl auf der Ebene von verschachtelten Transaktionen als auch auf der Ebene von Speicherpunkten. Speicherpunkte werden auf jeder Verschachtelungsebene mit unabhängigen Namensräumen bereitgestellt.

Microsoft SQL Server (MS SQL)

Die Unterstützung von mehrstufigen Transaktionen in MS SQL zeigt sich in der Unterstützung von Speicherpunkten. In SQL Server dienen sogenannte verschachtelte Transaktionen nur als Zähler für BEGIN TRANSACTION-Aufrufe. Um eine Transaktion zu bestätigen, ist es erforderlich, eine bestimmte Anzahl von COMMIT TRANSACTION aufzurufen, und der ROLLBACK-Befehl setzt die gesamte Transaktion unabhängig von der Verschachtelungsebene zurück. Das erste BEGIN TRANSACTION wird immer als der Beginn der Transaktion betrachtet und ermöglicht gleichzeitig die vollwertige Arbeit mit mehrstufigen Transaktionen durch Speicherpunkte. Speicherpunkte können durch die Befehle SAVE TRANSACTION und ROLLBACK TRANSACTION verwendet werden.

Teradata

Teradata unterstützt keine transaktionalen DDL. DDL könnte innerhalb einer Transaktion platziert werden, jedoch nicht mehr als ein Befehl pro Transaktion und nur als letzter Befehl in der Transaktion. Das Verhalten von Teradata ähnelt in dieser Hinsicht dem von Oracle. Somit könnte ein DDL mit der Ausführung einer Transaktion ausgeführt oder überhaupt nicht mit dem Rollback der Transaktion ausgeführt werden. Das bedeutet, dass DDL-Änderungen, die für eine bestimmte Zeit existieren und dann zurückgesetzt werden können, nicht zur Verfügung stehen.

Greenplum

Das Verhalten von Greenplum ähnelt dem von PostgreSQL.

Netezza

Netezza stammt auch von PostgreSQL, jedoch vor langer Zeit. Und es gibt einige wesentliche Unterschiede in Bezug auf die Unterstützung von Transaktionen. Netezza unterstützt DDL in Transaktionen ebenfalls, bietet jedoch keine Unterstützung für mehrstufige Transaktionen (Speicherpunkte), und es ist unmöglich, eine Transaktion nicht von Anfang einer Mehrfachanweisung zu beginnen, wenn die Mehrfachanweisung bereits DDL-Befehle enthält.

Amazon Redshift

Ähnlich wie PostgreSQL.

Amazon Aurora

Ähnlich wie MySQL.

All das Wissen über die erwähnten Funktionen ist in der DataSunrise Database Security Suite implementiert. Wir wissen immer, wie Ihr Datenbankschema aussieht und können seinen perfekten Schutz gewährleisten.

DataSunrise unterstützt alle großen Datenbanken und Datenlager, einschließlich Oracle oder Exadata. Es unterstützt auch IBM DB2, IBM Netezza, MySQL, MariaDB, Greenplum, Amazon Aurora, Amazon Redshift, Microsoft SQL Server, Azure SQL, Teradata und mehr. Sie sind herzlich eingeladen, eine kostenlose Testversion herunterzuladen, wenn Sie sie in Ihren Räumlichkeiten installieren möchten. Wenn Sie ein Cloud-Benutzer sind und Ihre Datenbank auf Amazon AWS oder Microsoft Azure betreiben, können Sie sie vom AWS Marketplace oder Azure Marketplace erhalten.

Nächste

Verschlüsselung in Microsoft SQL Server

Verschlüsselung in Microsoft SQL Server

Erfahren Sie mehr

Benötigen Sie die Hilfe unseres Support-Teams?

Unsere Experten beantworten gerne Ihre Fragen.

Allgemeine Informationen:
[email protected]
Kundenservice und technischer Support:
support.datasunrise.com
Partnerschafts- und Allianz-Anfragen:
[email protected]