Viele unserer Kunden nutzen heterogene Datenmanagement-Plattformen. So werden bei einigen neben Oracle Datenbanken auch SQL Server und Open-Source-Datenbanken oder auch NoSQL Systeme betrieben. Oftmals bestehen direkte Verbindungen innerhalb einer Systemklasse (z.B. über Datenbanklinks zwischen Oracle Systemen). Bei einer heterogenen Kommunikation (Oracle -> SQL Server oder MySQL -> Oracle) werden häufig „Zusatzprodukte" (z.B. ETL- / CDC-Tools) oder selbst entwickelte „Schnittstellen" (CSV, XML, JSON, …) verwendet.
Die Open-Source-Datenbank MariaDB bietet mit der Connect Engine eine Möglichkeit, unterschiedliche Datenquellen direkt (ohne Dritt-Produkt) anzubinden.
Die Schaltzentrale…
Mittels der MariaDB Connect Engine können unterschiedlichste Datenquellen in die Datenbank integriert werden. Darunter sind die klassischen Kandidaten wie ODBC und JDBC, aber auch dateibasierte Informationen (inkl. CSV, XML, JSON; auch in gepackter (ZIP) Form) und viele andere Formate. Eine Übersicht über alle verfügbaren Formate (Table Types) finden Sie hier: https://mariadb.com/kb/en/connect-bin-table-type/
Im folgenden Beispiel versuchen wir über die Connect Engine Daten aus einer Oracle XE Datenbank der Version 18c einzubinden. Wir nutzen dafür das klassische Oracle Test-Schema „HR" als Datenquelle.
Einen Augenblick, wir verbinden Sie…
Die Anbindung der entfernten Oracle DB soll per ODBC erfolgen. Die MariaDB läuft in der Version 10.5.4 auf einem Linux-Server. Im ersten Schritt binden wir das Plugin „CONNECT" ein. Sollte dieses nicht verfügbar sein, so kann es über das entsprechende MariaDB Repository runtergeladen und installiert werden:
Zusätzlich sind auf dem MariaDB Server die Pakete unixODBC, ein aktueller Oracle Instant Client und das Oracle ODBC Paket zu installieren (entpacken):
Im Anschluss daran sind die ODBC Quellen zu konfigurieren. Dazu wird im ersten Schritt der Oracle Treiber definiert:
Im zweiten Teil wird die Datenquelle (hier als DSN „HR" definiert) bestimmt:
Nun kann über das ODBC Tool „isql" (wird mit unixODBC installiert) die Quelle „getestet" werden:
Die Verbindung wird gehalten…
Nun ist es an der Zeit, die Verbindung zwischen der MariaDB und dem „DSN HR" zu etablieren. Hierzu legen wir einfach eine Tabelle in die Engine „Connect" und spezifizieren die Verbindungsdaten.
Bei der Spezifikation der Quell-Objekte (DBSCHEMA; TABNAME) ist auf die korrekte Schreibweise zu achten. Im Allgemeinen speichert Oracle solche Namen in Großbuchstaben. Eine abweichende Schreibweise hat bei unseren Versuchen zu nicht ganz aussagekräftigen Fehlermeldungen geführt.
Verbindung gut, alles gut?
In unserem Test ließen sich alle Tabellen des HR-Schemas der Oracle Datenbank problemlos einbinden. Die Zugriffe per SELECT und DML liefen fehlerfrei. DDL Änderungen auf dem Ziel-System sollten unterbunden werden. So konnte beispielsweise eine Spalte der Tabelle „hr_remote" lokal (MariaDB) erzeugt werden. Diese Änderung wurde vom entfernten System (Oracle) jedoch nicht nachvollzogen. Ab diesem Moment konnten keine SELECTs mehr gegen dieses Objekt abgesetzt werden, da eine „Mismatch" der Spalten festgestellt wurde. Der Fehler konnte durch das Entfernen der zusätzlichen lokalen Spalte gelöst werden.
Generell stellt die Connect-Engine aber eine brauchbare Funktion dar, um schnell heterogene Datenquellen einzubinden.
Sie haben Interesse an einer Weiterbildung oder Fragen zum Thema MySQL? Sprechen Sie uns an oder besuchen Sie einen unserer Kurse aus unserem Seminarshop:
Zu unseren MySQL Seminaren