7 Minuten Lesezeit (1397 Worte)

Oracle Datenbank 23c aus der Sicht der Anwendungsentwicklung

In diesem Artikel stellen wir Ihnen die wesentlichen Neuerungen der Oracle Datenbank Version 23c mit dem Schwerpunkt Datenbankanwendungsentwicklung vor. Dabei werden die Bereiche SQL, PL/SQL und JSON unter die Lupe genommen und der Nutzen der Neuerungen für die Anwendungsentwicklung hervorgehoben.

SQL-Domain

Mithilfe einer SQL-Domain kann der Aufbau und das Format von fachlichen Domänen definiert werden. Eine fachliche Domäne kann z. B. eine Kreditkartennummer, E-Mail-Adresse oder eine Hausanschrift sein. Die SQL-Domains werden zentral in der Datenbank als eigenständige Schema-Objekte definiert und beim Anlegen von Datenbanktabellen als ein neuer Datentyp verwendet. Eine SQL-Domain beinhaltet in der Regel ein oder auch mehrere Felder, Constraints und Defaultwerte (siehe Abbildung 1). 

Abbildung 1: Definition und Nutzung von SQL-Domain

Einer der großen Vorteile der SQL-Domains für die Praxis ist die Möglichkeit einer zentralen und redundanzfreien Definition von Datentypen und Constraints für Tabellenspalten, die Daten einer fachlichen Domäne enthalten sollen. 

Neuer BOOLEAN Datentyp in SQL

Der Datentyp BOOLEAN mit den Werten „Wahr“ und „Falsch“ kann zusätzlich zu PL/SQL jetzt auch in SQL z. B. für Tabellenspaltendefinitionen verwendet werden. Auf so einer Tabellenspalte können alle herkömmlichen Constraints wie z. B. Primary Key, Check oder Not Null angelegt werden.

Da vor Oracle Version 23c die booleschen Werte mit z. B. „1, ja, t, yes, on“ für „Wahr“ und „0, nein, f, no, off“ für „Falsch“ in Tabellenspalten gespeichert wurden, unterstützt Oracle die Konvertierung dieser Werte in den nativen BOOLEAN Datentyp mit der so genannten impliziten Datentypkonvertierung. Damit ist gemeint, dass wenn bei einer INSERT-Anweisung in eine BOOLEAN Tabellenspalte z. B. der Wert „t“ übergeben wird, so wird dieser als „Wahr“ abgespeichert (siehe Abbildung 2).

Abbildung 2: Neuer BOOLEAN Datentyp in SQL

Mit dem lang ersehnten BOOLEAN Datentyp wird die Speicherung von booleschen Werten in Tabellenspalten vereinheitlicht und standardisiert. 

SQL Property Graphs und SQL/PGQ Standard

Eine weitere wichtige Neuerung in Oracle Version 23c ist die Möglichkeit der Modellierung von Graphen. Graphen bestehen aus Knoten (Objekten) und Kanten (Verbindungen). Sie vereinfachen die Abbildung hierarchischer sowie vernetzter Strukturen. Knoten können z. B. Personen, Unternehmen, Konten oder Fahrzeuge sein und Kanten stellen die Beziehungen zwischen den Knoten dar (siehe Abbildung 3).

Abbildung 3: Modellierung von Graphen in SQL

Graphen werden mithilfe der SQL Property Graphs modelliert. SQL Property Graphs sind Schema-Objekte, welche die Knoten (Tabellen mit Objekten) und die Kanten (Fremdschlüssel-Beziehungen zwischen den Objekten) beinhalten (siehe Abbildung 4) 

Abbildung 4: SQL Property Graph

Die Property Graph Query (SQL/PGQ) ist eine spezielle Abfragesprache, mit deren Hilfe die SQL Property Graphs genutzt werden können, um Abfragen gegen die Knoten und Kanten zu stellen (siehe Abbildung 5).  

Abbildung 5: Select mit der SQL/PGQ Abfragesprache

Der große Vorteil der SQL/PGQ Abfragesprache ist die Abstrahierung der Tabellenbeziehungen (Primary Key und Fremdschlüsselbeziehungen) und damit die Vereinfachung der SQL-Syntax. Die Tabellenbeziehungen sind dabei nur an einer zentralen Stelle in den SQL Property Graphs definiert, und müssen bei den SQL-Anweisungen in den Join-Verknüpfungen nicht jedes Mal neu angegeben werden. 

Annotations

Annotations sind eine Art strukturierte Kommentare für Tabellen und Spalten. Bei den herkömmlichen Tabellen- und Spalten-Kommentaren mit der „COMMENT ON …“ Syntax, handelt es sich um unstrukturierte Texte, die, falls eine maschinelle Verarbeitung stattfinden sollte, entsprechend aufwändig geparst werden müssen.

Die Annotations werden als Key-Value-Paare gespeichert und können für die Dokumentation und Klassifizierung von DB-Objekten genutzt werden. Als Beispiel können Informationen wie die Sensitivität, Formate, Gruppierung, Maskierung von Daten oder auch Versionierung (ab wann sind welche Spalten bzw. Tabellen verfügbar) gespeichert werden. Die Annotations eignen sich sehr gut für die maschinelle Verarbeitung und können von verschiedenen Anwendungen, die auf die Datenbank zugreifen, verarbeitet werden (siehe Abbildung 6).

Abbildung 6: Definition von Annotations auf Tabellen- und Spaltenebene

Mit Annotations können somit Metadaten der Anwendungen zentral und strukturiert in der Datenbank gespeichert werden. 

Neue FROM-Klausel bei UPDATE und DELETE

Sollen Daten in einer Tabelle auf Basis einer anderen Tabelle gelöscht werden, so musste bisher in SQL bei der DELETE-Anweisung eine Unterabfrage verwendet werden. Sollen Daten in einer Tabelle auf Basis einer anderen Tabelle aktualisiert werden, so musste vor Oracle Version 23c statt der UPDATE-Anweisung die MERGE-Anweisung verwendet werden.

Mit der neuen FROM-Klausel bei UPDATE und DELETE-Anweisungen können ab Oracle Version 23c Joins mit anderen Tabellen direkt in der DML-Anweisung definiert werden. Der große Vorteil dieser Erweiterung ist, dass die im oberen Abschnitt beschriebenen Sachverhalte, ohne Unterabfragen und auch ohne eine MERGE-Anweisung realisiert werden können (siehe Abbildung 7). 

Abbildung 7: Direkte Joins in UPDATE- und DELETE-Anweisungen

IF [NOT] EXISTS für DDL-Anweisungen

Die neue „IF [NOT] EXISTS“ Klausel kann beim Anlegen, Verändern und Entfernen von Datenbankobjekten genutzt werden, um Fehlermeldungen im Zusammenhang mit der Existenz oder nicht Existenz von Objekten zu verhindern. Ist beim Anlegen von einem Objekt dieses schon vorhanden, so kann mit der „IF NOT EXISTS“ die Fehlermeldung „name is already used by an existing object“ verhindert werden. Umgekehrt kann beim Löschen von einem Objekt mit der „IF EXISTS“ Klausel die Fehlermeldung „table or view does not exist“ verhindert werden.

Der wesentliche Vorteil der „IF [NOT] EXISTS“ Klausel ist die Verbesserung der Fehlertoleranz und die damit verbundene Vereinfachung von Datenbankwartungsskripten.

PL/SQL-Neuerungen

Im PL/SQL-Bereich sind folgende Neuerungen hervorzuheben:

  • Oracle Database MLE für JavaScript
  • Ubiquitous Database Search mit DBMS_SEARCH
  • Automatischer PL/SQL in SQL Transpiler

MLE steht für Oracle Database Multilingual Engine und ermöglicht eine Implementierung von Stored Procedures in JavaScript. Die Hauptvorteile der Nutzung von JavaScript in der Datenbank ist zum einen die große JavaScript-Verbreitung und die hohe Beliebtheit unter den Entwicklern. Zum anderen bietet diese Skriptsprache eine große Anzahl an Bibliotheken mit zahlreichen Funktionalitäten. Ein weiterer Vorteil der Nutzung von JavaScript in der Datenbank ist die datennahe Verarbeitung, die im Gegenteil zu einer Verarbeitung auf einem Anwendungsserver, keinen Netzwerkoverhead verursacht.

Ubiquitous Database Search dient der Suche in mehreren Datenbanktabellen. Die Spalten der Datenbanktabellen werden dafür mit einem speziellen Oracle TEXT Index indiziert und stehen für eine Volltext- und bereichsbasierte Suche zur Verfügung. Ein Ubiquitous Database Search Index wird mit dem DBMS_SEARCH PL/SQL-Package angelegt.

Mit dem automatischen PL/SQL in SQL Transpiler werden PL/SQL-Funktionsaufrufe in einer SQL-Anweisung mithilfe der Query Transformation durch den Inhalt der PL/SQL-Funktion ersetzt. Durch diese Ersetzung findet kein aufwändiger Kontext-Wechsel zwischen der PL/SQL- und SQL-Laufzeitumgebung pro Datensatz statt und die ‚Ausführungszeit wird deutlich reduziert. Die Transpiler Funktionalität kann über den SQL_TRANSPILER Initialisierungsparameter aktiviert werden. Darüber hinaus ist die Nutzung dieser Funktionalität für die Anwendungen völlig transparent, d. h. die SQL-Anweisungen müssen hierfür nicht angepasst werden.

JSON-Neuerungen

Im JSON-Bereich gibt es ab Oracle Version 23c folgende Neuerungen:

  • JSON-Schema
  • JSON-relationale Dualität
  • Erweiterung des JSON-Datentyp-Konstruktors

Mit einem JSON-Schema kann der Aufbau und die Typisierung von JSON-Dokumenten festgelegt werden. Derartige JSON-Schemas können z. B. für die Validierung von Daten bei der Erstellung einer Tabelle genutzt werden, um sicherzustellen, dass nur valide JSON-Dokumente in einer Tabellenspalte gespeichert werden (siehe Abbildung 8).

Darüber hinaus wurde die sogenannte JSON-relationale Dualität hinzugefügt. Dabei handelt es sich um DML-fähige JSON-Views, die auf relationalen Tabellen basieren. Derartige JSON-Views sind vor allem für Anwendungen gut geeignet, die eine dokumentenorientierte Sicht (JSON-Dokumente) auf die Daten benötigen. Eine Anwendung kann anschließend die JSON-Dokumente verändern und über die DML-fähigen JSON-Views in relationalen Tabellen persistieren. Eine doppelte Datenspeicherung, relational und dokumentenorientiert, die häufig in der Praxis vorzufinden ist, ist dabei nicht mehr notwendig.

Um die Erstellung von JSON-Dokumenten zu erleichtern, wurde der JSON-Datentyp-Konstruktor um weitere komplexe Datentypen erweitert. Mit einem JSON-Datentyp-Konstruktor werden für die übergebenen Werte, JSON-Dokumente erstellt. Neben den einfachen skalaren Datentypen wie NUMBER oder VARCHAR2 werden ab Oracle 23c Datentypen wie Collections, Object Types oder auch Records unterstützt. Das Ergebnis vom JSON-Datentyp-Konstruktor ist dann ein valides JSON-Dokument. 

Fazit

Zusammenfassend kann gesagt werden, dass die Oracle Version 23c viele interessante und hilfreiche Funktionen für die Anwendungsentwicklung mitbringt. Mithilfe der Neuerungen kann die Entwicklerproduktivität gesteigert werden, Fehleranfälligkeit verringert und damit auch die Wartbarkeit der Programme verbessert werden. Im JSON-Bereich ist vor allem die Verbesserung der Interoperabilität zwischen der relationalen und dokumentenorientierten Welt hervorzuheben. Durch Einsatz einiger Neuerungen kann schließlich auch die Perfomance verbessert werden.

Die hier grob vorgestellten Neuerungen stellen nur eine kleine Auswahl der Oracle 23c Neuerungen dar. Falls wir Ihr Interesse zu diesem Thema geweckt haben, empfehlen wir Ihnen das „Oracle 21c/23c Neuheiten für Entwickler“ Seminar.

Principal Consultant bei ORDIX

 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Freitag, 01. März 2024

Sicherheitscode (Captcha)

×
Informiert bleiben!

Bei Updates im Blog, informieren wir per E-Mail.

Weitere Artikel in der Kategorie