G7-Migration ® UDS-ORACLE-Migration Verfahrensbeschreibung GSE Graeber Software-Entwicklung Karl-Albrecht Graeber In den Siefen 51 D-66346 Püttlingen/Saarbrücken Telefon.: +49(0)6806 306 00 70 Telefax.: +49(0)6806 306 00 72 E-Mail: [email protected] Internet: www.g7-migration.de UDS-ORACLE-Migration Seite 2 Inhalt: 1. Einleitung 2. Ausgangssituation 3. Zielumgebung 4. G7-Migrations-Werkzeuge 5. Ergebnis 1. Einleitung In dieser Dokumentation wird beschrieben, welche Funktionen die G7-Migration für die Migration der Daten und der Anwendungskomponenten bereitstellt, um eine UDS-Datenbank durch eine ORACLE-Datenbank zu ersetzen. 2. Ausgangssituation In vielen BS2000-Anwendungen wird zur Datenspeicherung eine UDS-Datenbank eingesetzt. Aus unterschiedlichen Gründen wird die Anforderung gestellt, diese UDSDatenbank durch eine ORACLE-Datenbank zu ersetzen, u.a. • • • Integration der Datenbasis bei verschiedener Anwendungen unter BS2000 Migration der Anwendungen von BS2000 in eine moderne Client/ServerUmgebung Fehlende Flexibilität und Zukunftsperspektive von UDS und/oder BS2000 UDS ist eine Codasyl-Datenbank. (CODASYL steht für COnference on DAta-SYstemsLanguage). Die Speicherung der Daten erfolgt in einem speziellen logischen Netzwerk mit Records und Sets. Records nehmen Datenfelder, Feldgruppen oder Tabellen auf, Beziehungen zwischen Records werden durch Sets bestimmt Verschiedene Records könnnen in Areas zusammengefasst werden. In der Datenbank können nicht nur flache und hierarchische, sondern auch m:n-Beziehungen definiert werden. Die Definition von UDS-Datenbanken erfolgt über das Schema, über das Subschema wird im Programm definiert, welche Teile der UDS-Datenbank benutzt werden. Die Schemabeschreibung erfolgt über eine spezielle Sprache, die Datenbeschreibungs-Sprache. Sätze (Records) innerhalb einer Datenbank können in allen Feldern gleiche Werte haben. Der Datenbankschlüssel (Data Base Key (DBK)) dagegen ist ein interner, innerhalb einer Datenbank eindeutiger Schlüssel, der beim erstmaligen Speichern des Satzes vergeben wird und über den in der Datenbank direkt zugegriffen werden kann. Die Sets definieren die Zusammengehörigkeit von Records innerhalb der Netzwerkstruktur. Ihre Definition besteht im wesentlichen aus dem Owner, dem Member und der Set-Order (first, last, next, prior, sorted, etc.), aber auch zusätzlichen Informationen, wie INSERTION IS oder RETENTION IS. Da die Zugriffe auf die Datenbank (Navigation) situationsabhängig sind, wird von UDS intern eine Currency-Information geführt. © GSE G7-Migration® UDS-ORACLE-Migration Seite 3 Für bestimmte Datenzugriffe ist UDS laufzeit-optimiert. Der Zugriff auf die Daten erfolgt über spezielle Zugriffsbefehle, die als spezielle Funktionen in den Programmiersprachen (meistens Cobol) mit Hilfe der Datenmanipulations-Sprache definiert werden. Die dafür vorgesehenen Funktionen sind: Funktionen zur Steuerung und zum Satzschutz: • • • • • • • READY FINISH KEEP FREE IF EMPTY IF MEMBER IF OWNER Funktionen zum Ändern und Löschen von Informationen in der Datenbank • • • • • STORE (oder INSERT) record ERASE (oder DELETE) record CONNECT (INSERT set) DISCONNECT (REMOVE set) MODIFY record Funktionen zur Wiedergewinnung von Informationen aus der Datenbank • • • ACCEPT database-key FETCH (oder GET) record FIND record Bei fast allen Funktionen gibt es mehrere Varianten. Diese Tatsache macht die Datenmanipulations-Sprache relativ komplex. Da UDS ausschließlich unter BS2000 einsetzbar ist, streben viele Unternehmen an, von dieser Abhängigkeit wegzukommen und relationale Datenbank-Systeme einzusetzen. 3. Zielumgebung In modernen IT-Umgebungen hat sich in erster Linie ORACLE als Anbieter von relationalen Datenbank-Systemen (Welt-Marktführer) etabliert. In der ORACLE-Datenbank kann mit Hilfe von SQL oder PL/SQL (auch über interne Schnittstellen wie ODBC, JDBC, OLAP) zugegriffen werden. Es gibt eine Vielzahl von Möglichkeiten, die Daten zu organisieren (z.B. Data-Warehouse) und die Daten wiederzugewinnen. SQL-Zugriffe kann man auf unterschiedlichen Datenbank-Systemen verwenden, allerdings ist SQL nicht genormt. Daher gibt es auch viele Unterschiede und die für ein Datenbank-System in SQL formulierten Zugriffe sind beim Übergang auf ein anderes Datenbank-System häufig nicht mehr verwendbar oder müssen modifiziert werden. Das gleiche gilt für die zur Verwendung kommenden Datentypen. Die ORACLE-Datenbank ermöglicht neben der Speicherung von herkömmlichen Daten auch BLOBs (binary large objects), CLOBs (character large objects) und NCLOBs (national characters large objects) sowie raumbezogenen Daten (z.B. Geodaten). Eine bestehende Datenbank kann problemlos erweitert werden. © GSE G7-Migration® UDS-ORACLE-Migration Seite 4 Bei der Definition einer ORACLE-Datenbank werden in der Regel Definitions-Skripts verwendet, weil diese sich relativ leicht generieren und bearbeiten lassen. In diesen SQLSkripts werden die Tabellen der Datenbank mit Felddefinitionen, Feldbezeichnungen, Indexen und Constraints, Methoden für die Bearbeitung der Tabellen (Trigger) und Zugriffsrechte (Grants) definiert. Mit einer einzigen Anweisung an die Datenbank können dann alle oder einzelne Tabellen mit allen obengenannten Eigenschaften der ORACLEDatenbank bekanntgegeben werden. Für den Zugriff auf die ORACLE-Datenbank können Cobol-Programme mit embedded-SQL eingesetzt werden, die aus den Anwendungsprogrammen heraus aufgerufen werden. ORACLE ist auf einer Vielzahl von Betriebssystemen (u.a. auch BS2000) einsetzbar. 4. G7-Migrations-Werkzeuge Wenn von UDS auf ORACLE migriert werden soll, dann sind folgende Aspekte zu berücksichtigen. Diese werden mit Hilfe von Generatoren und Konvertern im Rahmen der G7-Migration zur Verfügung gestellt und können kundenbezogen angepaßt werden. 4.1. Definition der Datenbank Für die Erzeugung der oben beschriebenen Definitions-Skripts wird der G7-UDS-SkriptGenerator eingesetzt, der aus der UDS-Schema-Beschreibung alle für die ORACLEDatenbank relevanten Informationen übernimmt. Ergebnisse sind SQL-Skripts für das Create der Tabellen, für das Create der Kommentare (Feldbeschreibungen), für das Create der Indexe, für das Create der Zugriffsrechte und für die benötigten Trigger (z.B. die automatische Vergabe der Database-Keys). Dabei wird davon ausgegangen, daß in den einzelnen Tabellen außer den in UDS geführten Datenfeldern auch zusätzliche Datenfelder für die Owner-Keys, die automatische Verwaltung der Timestamps für Insertion und Modifikation, die Versions-Nummern und den eindeutigen Database-Key vorgesehen werden. Die Owner-Keys werden in den Zugriffs-Modulen verwaltet, die unter 4.2 beschrieben sind und über die aus der Anwendung heraus auf die ORACLE-Datenbank zugegriffen wird. 4.2. Generierung der Zugriffs-Module (PCO-Module) Für den Zugriff auf die ORACLE-Datenbank wird vom G7-Modul-Generator je Tabelle und je Set ein Zugriffs-Modul erzeugt. In diesen Zugriffs-Modulen werden die unterschiedlichen Zugriffs-Funktionen (Lesen, Schreiben, Ändern) in der Datenbank inklusive der automatischen Pflege der Currency-Informationen (CRU, CRR, CRS in der Common-Area der Anwendung) und der Owner-/Member-Key-Relationen (in der Datenbank) realisiert. Alle Datenbank-Zugriffe erfolgen über embedded SQL. Die PCO-Module müssen nach der Generierung mit dem Precompiler von ORACLE in reine Cobol-Programme und danach mit dem Cobol-Compiler in Objektprogramme umgewandelt werden. © GSE G7-Migration® UDS-ORACLE-Migration Seite 5 4.3. Generierung der Copy-Elemente für die Currency-Informationen Um die Currency-Informationen für die Datenbank-Zugriffe pflegen zu können, wird aus den Schema-Definitionen je Schema ein Copy-Element generiert, das in den Common-Bereich der Anwendung einzubinden ist. Die Currency-Information steht damit bei der Ausführung der Anwendung allen aufgerufenen Zugriffs-Modulen zur Verfügung und kann dort abgefragt und modifiziert werden. 4.4. Konvertierung der Anwendungs-Programme (Cobol) Die Anwendungs-Programme, die auf die UDS-Datenbank zugreifen, werden vom G7-Programm-Konverter umgesetzt. Dabei wird statt der UDS-Zugriffs-Funktionen ein Zugriff auf das zentrale G7-UDS-Zugriffs-Modul eingebaut, das je Tabelle die (vom G7-ModulGenerator generierten) record- oder set-bezogenen Zugriffs-Module aufruft, welche die Operationen auf die ORACLE-Datenbank ausführen. Auch in dem zentralen G7-UDSZugriffs-Modul können kundenspezifische Besonderheiten berücksichtigt werden. 4.5. Generierung von CTL-Skripts für den ORACLE-Loader Zusätzlich zu den obigen Komponenten werden mit dem G7-CTL-Generator auch CTLSkripts (Control-Skripts) für das Laden der Daten in die ORACLE-Datenbank generiert. Für das Laden mit dem ORACLE-Loader müssen die Daten in sequentiellen Dateien je Tabelle bereitgestellt werden. 5. Ergebnis Mit dem Einsatz der G7-Migrations-Werkzeuge wird eine Migration der UDS-Datenbank in eine ORACLE-Datenbank erheblich vereinfacht und beschleunigt, da manuelle Tätigkeiten minimiert werden. Die ORACLE-Datenbank kann – ebenso wie die UDS-Datenbank – unter BS2000 eingesetzt werden. Die Migration der Datenbank kann auch den ersten Schritt zu einem Plattform-Wechsel darstellen, der für den BS2000-Kunden mit großen Kosteneinsparungen und einer hohen Flexibilität und Unabhängigkeit vom BS2000-Anbieter verbunden ist. Die neue Plattform ist dann ein modernes Client/Server-System, wahlweise mit dem Betriebssystem Unix, Linux oder Windows und einer klassischen 3-Schichten-Architektur (3-tier). GSE bietet für einen Plattform-Wechsel die geeigneten G7-Migrations-Werkzeuge, die für die Migration von BS2000 in Client/Server-Umgebungen entwickelt wurden und sich in etwa 50 Migrations-Projekten (auch von anderen Legacy-Systemen nach Client/Server) bewährt haben. Püttlingen, 27.08.2010 / Dr. Karl-Albrecht Graeber © GSE G7-Migration®