DE102014113693A1 - Verfahren und system zum laden von daten mit komplexen beziehungen - Google Patents

Verfahren und system zum laden von daten mit komplexen beziehungen Download PDF

Info

Publication number
DE102014113693A1
DE102014113693A1 DE102014113693.4A DE102014113693A DE102014113693A1 DE 102014113693 A1 DE102014113693 A1 DE 102014113693A1 DE 102014113693 A DE102014113693 A DE 102014113693A DE 102014113693 A1 DE102014113693 A1 DE 102014113693A1
Authority
DE
Germany
Prior art keywords
entities
data values
insert
groups
foreign key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102014113693.4A
Other languages
English (en)
Inventor
c/o IBM Corporation Schwarz Thomas
c/o IBM Corporation Suhre Oliver
c/o IBM Corporation Grasselt Mike
c/o IBM Corporation Gerstl Peter
c/o IBM Corporation Maier Albert
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102014113693A1 publication Critical patent/DE102014113693A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/214Database migration support

Abstract

Die Erfindung bezieht sich auf ein Verfahren, ein Computerprogrammprodukt, ein System zum Laden von Daten in ein Zielsystem. Die Daten weisen Entitäten mit einem entsprechenden eindeutigen primären Datenwert und einem oder mehreren entsprechenden sekundären Datenwerten auf. Mindestens ein Teil der sekundären Datenwerte weist zugehörige Fremdschlüsselbeziehungen auf. Jede Fremdschlüsselbeziehung verbindet den entsprechenden sekundären Datenwert mit dem entsprechenden primären Datenwert einer anderen Entität. Das Verfahren weist folgende Schritte auf: Aufteilen der Entitäten in Einfügeblattgruppen, indem ein Iterationsprozess ausgeführt wird, bei dem aufeinanderfolgende Iterationen durchgeführt werden, wobei das Ausführen jeder Iteration ein Erzeugen eines entsprechenden Satzes der Einfügeblattgruppen beinhaltet, wobei der entsprechende Satz der Einfügeblattgruppen alle Entitäten enthält, deren sekundäre Datenwerte entweder über keine Fremdschlüsselbeziehungen oder nur über eine oder mehrere Fremdschlüsselbeziehungen mit den primären Datenwerten der Entitäten der Einfügeblattgruppen verfügen, die bei der Ausführung einer vorherigen Iteration erzeugt wurden, wobei der Iterationsprozess ausgeführt wird, bis keine Entitäten mehr vorhanden sind, deren sekundäre Datenwerte entweder über keine Fremdschlüsselbeziehungen oder nur über eine oder mehrere Fremdschlüsselbeziehungen mit den primären Datenwerten der einen oder mehreren Entitäten der Einfügeblattgruppen verfügen, die bei der Ausführung einer vorherigen Iteration erzeugt wurden, wobei eine Abfolge zum Erzeugen der Sätze der Einfügeblattgruppen gespeichert wird; und das aufeinanderfolgende Laden der Sätze der Einfügeblattgruppen der Entitäten und der Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit dem entsprechenden primären Datenwerten verbinden, in das Zielsystem gemäß der Abfolge.

Description

  • HINTERGRUND
  • Die wirksame Verarbeitung von Daten mit komplexen Beziehungen ist eine ständige Aufgabe der Informatik. Eine der typischen Aufgaben in diesem Bereich ist zum Beispiel das Migrieren von Objekten von einer oder mehreren Computeranwendungen oder Datenbanken in eine einzige Computerzielanwendung oder einzige Zieldatenbank, z. B. im Rahmen eines Konsolidierungs- oder Harmonisierungsprojekts, bei dem eine Reihe vorhandener Systeme durch ein neues System ersetzt wird. Dazu gehört auch ein Integrieren zusätzlicher Quellsysteme, die die Objekte aufweisen, in ein bereits vorhandenes Ziel. Dieses Problem wird noch erschwert, wenn die Objekte Instanzen aufweisen, die durch Beziehungen miteinander verbunden sind. Für das Migrieren der Objekte von einer Computeranwendung zu einer anderen müssen demnach nicht nur die Instanzen übertragen werden, sondern es müssen auch ihre Beziehungen übertragen und aktualisiert werden.
  • KURZDARSTELLUNG
  • Die vorliegende Erfindung bezieht sich auf ein Computersystem zum Laden von Daten oder Objekten mit komplexen Beziehungen in ein Zielsystem, ein Verfahren zum Migrieren von Daten oder Objekten mit komplexen Beziehungen in ein Zielsystem, ein Computerprogrammprodukt und ein Computersystem zum Laden von Daten oder Objekten mit komplexen Beziehungen in ein Zielsystem, wobei Datenentitäten oder Objekte in einen gerichteten Graphen umgewandelt werden.
  • Bei der vorliegenden Erfindung stehen Ausführungsformen zur Verfügung, die eine verbesserte/wirksame Migration von Daten oder Objekten in eine Computerzielanwendung oder ein Zielsystem bereitstellen. Die Daten oder Objekte weisen Instanzen auf, die durch Fremdschlüsselbeziehungen miteinander verbunden sind. Es ist darauf hinzuweisen, dass die vorliegende Erfindung auf vielfältige Weise umgesetzt werden kann, unter anderem als Verfahren zum Laden von Daten in ein Zielsystem, ein Computersystem zum Laden von Daten in ein Zielsystem oder ein Computerprogrammprodukt mit einem von einem Computer ausführbaren Code, der von einem Prozessor ausgeführt wird, welcher eine Vorrichtung steuert. Nachstehend werden mehrere erfindungsgemäße Ausführungsformen beschrieben.
  • Eine Ausführungsform stellt ein von einem Computer implementiertes Verfahren zum Laden von Daten in ein Zielsystem bereit. Die Daten weisen Entitäten auf. Jede Entität weist einen entsprechenden eindeutigen primären Datenwert und einen oder mehrere entsprechende sekundäre Datenwerte auf. Mindestens ein Teil der sekundären Datenwerte weist zugehörige Fremdschlüsselbeziehungen auf. Jede Fremdschlüsselbeziehung verbindet den entsprechenden sekundären Datenwert mit dem entsprechenden primären Datenwert einer anderen Entität. Das Verfahren weist die folgenden Schritte auf.
  • Die Entitäten werden in Einfügeblattgruppen aufgeteilt, indem ein Iterationsprozess ausgeführt wird, bei dem aufeinanderfolgende Iterationen durchgeführt werden. Das Ausführen jeder Iteration beinhaltet ein Erzeugen eines entsprechenden Satzes der Einfügeblattgruppen. Der entsprechende Satz der Einfügeblattgruppen weist alle Entitäten auf, deren sekundäre Datenwerte entweder über keine Fremdschlüsselbeziehungen oder nur über eine oder mehrere Fremdschlüsselbeziehungen mit den primären Datenwerten der Entitäten der Einfügeblattgruppen verfügen, die bei der Ausführung einer vorherigen Iteration erzeugt wurden. Der Iterationsprozess wird ausgeführt, bis keine Entitäten mehr vorhanden sind, deren sekundäre Datenwerte entweder über keine Fremdschlüsselbeziehungen oder nur über eine oder mehrere Fremdschlüsselbeziehungen mit den primären Datenwerten der einen oder mehreren Entitäten der Einfügeblattgruppen verfügen, die bei der Ausführung einer vorherigen Iteration erzeugt wurden. Eine Abfolge zum Erzeugen der Sätze der Einfügeblattgruppen wird gespeichert.
  • Die Sätze der Einfügeblattgruppen der Entitäten und die Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten in dem Zielsystem verbinden, werden gemäß der Abfolge nacheinander hochgeladen.
  • Dieses Verfahren kann den Vorteil aufweisen, dass jede Einfügeblattgruppe und die Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten verbinden, in einem einzigen Schritt in das Zielsystem geladen werden. Nach dem Hochladen aller Einfügeblattgruppen sind keine weiteren Schritte zum Aktualisieren von Fremdschlüsselbeziehungen erforderlich.
  • Gemäß einer anderen Ausführungsform der vorliegenden Erfindung kann es sich bei mindestens einem Teil der Fremdschlüsselbeziehungen um zyklische Fremdschlüsselbeziehungen handeln. Die zyklischen Fremdschlüsselbeziehungen verbinden Entitäten, die die entsprechenden primären und sekundären Datenwerte aufweisen, die durch die zyklischen Fremdschlüsselbeziehungen verbunden sind, in einer oder mehreren Schleifen. Die in einer oder mehreren Schleifen verbundenen Entitäten weisen eine oder mehrere Zyklusentitäten auf. Wenn alle Zyklusentitäten und die Fremdschlüsselbeziehungen, die die primären Datenwerte aller Zyklusentitäten mit den entsprechenden sekundären Datenwerten verbinden, als aus den Daten gelöscht gelten, weisen die Daten keine Schleifen der Entitäten mehr auf. Weitere Informationen zur Beschreibung und Identifizierung der zyklischen Fremdschlüsselbeziehungen sind in einem Buch mit dem Titel "Handbook of combinatorial optimization", Ergänzungsband A, Kluwer Academic Publishers, SS. 209 bis 259, enthalten.
  • Das oben erwähnte Verfahren weist zusätzliche Schritte auf.
  • Ein Satz der Einfügezyklusgruppen wird erzeugt. Der Satz der Einfügezyklusgruppen weist alle Zyklusentitäten auf. Alle Zyklusentitäten und die Fremdschlüsselbeziehungen, die die primären Datenwerte aller Zyklusentitäten mit den entsprechenden sekundären Datenwerten verbinden, gelten während eines Aufteilens der Entitäten in Einfügeblattgruppen als aus den Daten gelöscht.
  • Vor dem aufeinanderfolgenden Einfügen der Sätze der Blattgruppen der Entitäten und der Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten in dem Zielsystem verbinden, werden die Entitäten des Satzes der Einfügezyklusgruppen in das Zielsystem eingefügt.
  • Nach dem aufeinanderfolgenden Einfügen der Sätze der Einfügeblattgruppen der Entitäten und der Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten in dem Zielsystem verbinden, werden die Fremdschlüsselbeziehungen eingefügt, die die sekundären Datenwerte der Entitäten des Satzes der Einfügezyklusgruppen mit den entsprechenden primären Datenwerten in dem Zielsystem verbinden.
  • Das Verfahren dieser Ausführungsform kann den Vorteil einer automatisierten und direkten Verarbeitung der Einfügezyklusgruppe aufweisen. Bei dieser Art von Datenverarbeitung ist keine fallabhängige genaue Einstellung und/oder Optimierung erforderlich.
  • Gemäß noch einer weiteren Ausführungsform der vorliegenden Erfindung wird das Erzeugen des Satzes der Einfügezyklusblattgruppen vor dem Aufteilen der Entitäten in die Einfügeblattgruppen durchgeführt.
  • Bei dieser Art der Datenverarbeitung kann verglichen mit der vorherigen Ausführungsform, bei der das Aufteilen der Entitäten in die Einfügeblattgruppen zuerst beginnt, die Anzahl der Einfügeblattgruppen verringert werden.
  • Gemäß einer noch weiteren Ausführungsform wird nach dem Aufteilen der Entitäten in die Einfügeblattgruppen und vor dem Laden der Entitäten des Satzes der Einfügezyklusgruppen in das Zielsystem das Erzeugen des Satzes der Einfügezyklusgruppen unter Verwendung der noch nicht in die Einfügeblattgruppen aufgeteilten Entitäten durchgeführt, wobei nach dem Erzeugen des Satzes der Einfügezyklusgruppen und vor dem aufeinanderfolgenden Laden in das Zielsystem der Sätze der Einfügeblattgruppen der Entitäten und der Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten verbinden, weiterhin das Aufteilen der Entitäten in die Einfügeblattgruppen und das Speichern der Abfolge zum Erzeugen der Sätze der Einfügeblattgruppen durchgeführt werden.
  • Diese Art der Datenverarbeitung kann von Vorteil sein, wenn zuvor nicht bekannt ist, ob die Zyklusentitäten in den vorliegenden Daten vorhanden sind oder fehlen. Wenn keine Zyklusentitäten in den Daten vorhanden sind, werden die Entitäten in einem einzigen ununterbrochenen Iterationsprozess in die Einfügeblattgruppen aufgeteilt.
  • Gemäß einer noch weiteren Ausführungsform der vorliegenden Erfindung wird nach dem Aufteilen der Entitäten in die Einfügeblattgruppen und vor dem Laden der Entitäten des Satzes der Einfügezyklusgruppen in das Zielsystem das Erzeugen des Satzes der Einfügezyklusgruppen unter Verwendung der noch nicht in die Einfügeblattgruppen aufgeteilten Entitäten durchgeführt, wobei nach dem Erzeugen des Satzes der Einfügezyklusgruppen und vor dem aufeinanderfolgenden Laden in das Zielsystem der Sätze der Einfügeblattgruppen der Entitäten und der Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten verbinden, Folgendes durchgeführt wird: Löschen der Abfolge, nach dem Löschen der Abfolge ein erneutes Starten des Aufteilens der Entitäten in die Einfügeblattgruppen, indem der Iterationsprozess ausgeführt wird, bei dem die aufeinanderfolgenden Iterationen durchgeführt werden.
  • Diese Art der Datenverarbeitung kann von Vorteil sein, da die Anzahl der Einfügeblattgruppen im Vergleich zu dem Prozess verringert wird, bei dem ein Teil der Entitäten vor dem Erzeugen der Einfügezyklusgruppe in eine oder mehrere Einfügeblattgruppen aufgeteilt wird.
  • Gemäß einer noch weiteren Ausführungsform der vorliegenden Erfindung weist das aufeinanderfolgende Laden der Sätze der Entitäten der Einfügeblattgruppen in das Zielsystem auf: Aufteilen der Entitäten des Satzes der Einfügeblattgruppen in mindestens zwei Blattgruppenteile; und Laden jedes der mindestens zwei Blattgruppenteile in die Zieldatenbank, indem das Laden in das Zielsystem der Entitäten jedes der mindestens zwei Blattgruppenteile und der Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten verbinden, gleichzeitig ausgeführt wird.
  • Diese Art der Datenverarbeitung kann eine Beschleunigung des Hochladens von Daten ermöglichen, wenn eine parallele Datenverarbeitung möglich ist.
  • Gemäß einer noch weiteren Ausführungsform der vorliegenden Erfindung weist das Laden der Entitäten des Satzes der Einfügezyklusgruppen in das Zielsystem auf: Aufteilen der Entitäten des Satzes der Einfügezyklusgruppen in mindestens zwei Zyklusgruppenteile; und Laden jedes der mindestens zwei Zyklusgruppenteile in die Zieldatenbank, indem das Laden der Entitäten jedes der mindestens zwei Zyklusgruppenteile in das Zielsystem gleichzeitig ausgeführt wird.
  • Diese Art der Datenverarbeitung kann eine Beschleunigung des Hochladens von Daten ermöglichen, wenn eine parallele Datenverarbeitung möglich ist.
  • Gemäß einer noch weiteren Ausführungsform der vorliegenden Erfindung weist das Laden in das Zielsystem der Fremdschlüsselbeziehungen, die die sekundären Datenwerte der Entitäten des Satzes der Einfügezyklusgruppen mit den entsprechenden primären Datenwerten verbinden, auf: Aufteilen der Fremdschlüsselbeziehungen, die die sekundären Datenwerte der Entitäten des Satzes der Einfügezyklusgruppen mit den entsprechenden primären Datenwerten verbinden, in mindestens zwei Beziehungsgruppenteile; und Laden jedes der mindestens zwei Beziehungsgruppenteile in das Zielsystem, indem das Laden der Fremdschlüsselbeziehungen jedes der mindestens zwei Beziehungsgruppenteile in das Zielsystem gleichzeitig ausgeführt wird.
  • Diese Art der Datenverarbeitung kann eine Beschleunigung des Hochladens von Daten ermöglichen, wenn eine parallele Datenverarbeitung möglich ist.
  • Gemäß einer noch weiteren Ausführungsform der vorliegenden Erfindung weist das von einem Computer implementierte Verfahren Folgendes auf.
  • Ein gerichteter Graph wird erzeugt. Jede Entität entspricht einem eindeutigen Knoten des Graphen. Jede Fremdschlüsselbeziehung entspricht einer eindeutigen Kante des Graphen. Für eine gegebene Fremdschlüsselbeziehung, die den entsprechenden sekundären Datenwert mit dem entsprechenden primären Datenwert verbindet, beginnt die Kante des Graphen an dem Knoten, der der Entität mit dem entsprechenden sekundären Datenwert entspricht, und endet an dem Knoten, der der Entität mit dem entsprechenden primären Datenwert entspricht.
  • Durch die Verwendung der gerichteten Graphen können verschiedene zuvor entwickelte Software-Bibliotheken für die Verarbeitung von Graphen genutzt werden. Darüber hinaus ermöglicht dies eine bessere Veranschaulichung, ein besseres Verständnis und eine bessere Anwendbarkeit des von einem Computer implementierten Verfahrens.
  • Eine weitere Ausführungsform stellt ein Computerprogrammprodukt, insbesondere ein computerlesbares Medium, bereit. Das Computerprogrammprodukt weist einen von einem Computer ausführbaren Code auf, der von einem Prozessor ausgeführt wird, welcher eine Vorrichtung steuert. Durch die Ausführung der Befehle wird der Prozessor veranlasst, die Schritte des zuvor genannten von einem Computer implementierten Verfahrens zum Laden der Daten in das Zielsystem ganz oder teilweise durchzuführen.
  • Noch eine weitere Ausführungsform stellt ein Computersystem zum Laden von Daten in das Zielsystem bereit. Das Computersystem ist verwendbar, um die Schritte des zuvor genannten von einem Computer implementierten Verfahrens zum Laden der Daten in das Zielsystem ganz oder teilweise durchzuführen.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung wird durch die folgende ausführliche Beschreibung in Verbindung mit den beigefügten Zeichnungen leicht verständlich.
  • 1 veranschaulicht beispielhafte Daten, die zum Laden in ein Zielsystem verwendet werden.
  • 2 veranschaulicht eine beispielhafte Zieldatenbank.
  • 3 veranschaulicht ein System, das verwendbar ist, um Daten einer Quelldatenbank in eine Zieldatenbank zu laden.
  • 4 veranschaulicht einen Ablaufplan von Prozessblöcken zum Laden von Daten in ein Zielsystem.
  • 5 veranschaulicht die beispielhafte Datenbank nach dem Laden einer ersten Einfügegruppe und einer Zyklusgruppe.
  • 6 veranschaulicht die beispielhafte Datenbank nach dem Laden der ersten Einfügegruppe, der Zyklusgruppe und einer zweiten Einfügegruppe.
  • 7 veranschaulicht die beispielhafte Datenbank nach dem Laden aller Einfügegruppen.
  • 8 veranschaulicht einen anderen Ablaufplan von Prozessblöcken zum Laden von Daten in ein Zielsystem.
  • 9 veranschaulicht noch einen anderen Ablaufplan von Prozessblöcken zum Laden von Daten in ein Zielsystem.
  • 10 veranschaulicht einen Ablaufplan von Prozessblöcken zum Erzeugen des gerichteten Graphen unter Verwendung der Daten, die in ein Zielsystem geladen werden sollen.
  • 11 veranschaulicht einen gerichteten Graphen, der unter Verwendung der Daten erzeugt wird, welche in ein Zielsystem geladen werden sollen.
  • 12 veranschaulicht einen Ablaufplan von Prozessblöcken zum Erzeugen von Einfügegruppen unter Verwendung eines gerichteten Graphen.
  • 13 veranschaulicht eine Tabelle, die das Aufteilen von Knoten eines gerichteten Graphen in Einfügegruppen und eine entsprechende Abfolge zum Ausführen der Prozessblöcke des Ablaufplans für das Erzeugen der Einfügegruppen zeigt.
  • 14 veranschaulicht einen Ablaufplan von Prozessblöcken zum Laden der Entitäten, die den Knoten der Einfügegruppen entsprechen, in ein Zielsystem.
  • 15 veranschaulicht ein Pseudocode-Programm zum Erzeugen eines gerichteten Graphen unter Verwendung der Daten, die in ein Zielsystem geladen werden sollen.
  • 16 veranschaulicht ein Pseudocode-Programm zum Erzeugen von Einfügegruppen unter Verwendung des gerichteten Graphen.
  • 17 veranschaulicht ein Pseudocode-Programm zum Laden der Entitäten, die den Knoten der Einfügegruppen entsprechen, in ein Zielsystem.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Wie üblich weisen Objektinstanzen Daten auf, die in einer oder mehreren Tabellen gespeichert sind. Die Tabellen und Objektinstanzen können durch Beziehungen verbunden werden. Die Beziehungen zwischen den Daten derselben Objektinstanz, die in mehreren Tabellen gespeichert sind, sind einfach zu handhaben, wenn sie in ein Zielsystem geladen werden müssen. Zielsysteme bieten in der Regel eine Fähigkeit zum Hochladen des Inhalts aller dazugehörigen Daten der Objektinstanzen in einem einzigen Schritt, und das Zielsystem stellt automatisch alle Beziehungen zwischen den Daten derselben Objektinstanz her, die in mehreren Tabellen gespeichert sind. Ein Beispiel für eine solche Schnittstelle ist eine Zwischendokument-Schnittstelle (intermediate document = Zwischendokument, IDoc) eines Anwendungssystems von Systeme, Anwendungen und Produkte in der Datenverarbeitung (SAP).
  • Das Hochladen der Objektinstanzen ist komplizierter, wenn ihre Tabellen Entitäten (oder Datensätze) aufweisen, die zu anderen Objektinstanzen gehören, die durch Fremdschlüsselbeziehungen verbunden sind. Die Fremdschlüsselbeziehungen können Entitäten in einer Tabelle und/oder Entitäten in verschiedenen Tabellen verbinden. Ein Anwendungssystem wie eine Unternehmensressourcenplanung (enterprise resource planning, ERP) von SAP kann solche Fälle verarbeiten. Dieses Anwendungssystem führt das Hochladen in mehreren Schritten durch. Zuerst werden alle Instanzen mit leeren Fremdschlüsselbeziehungen hochgeladen. Danach werden alle neu zugewiesenen Kennungen (oder Primärschlüssel oder Primärwerte) aus dem Zielsystem extrahiert. Die extrahierten Kennungen werden gemäß den ursprünglichen Fremdschlüsselbeziehungen zwischen den Entitäten in dem Zielsystem aktualisiert.
  • Dieser Ansatz hat folgende Nachteile. Jede Instanz muss zweimal verarbeitet werden, wodurch das Hochladen länger dauert. Je nach Projekttyp kann dies nicht nur zu Latenzzeitproblemen, sondern beispielsweise auch zu längeren Geschäftsausfallzeiten führen. Des Weiteren müssen zwei unterschiedliche Schnittstellen ausgeführt werden, d. h. eine erste Schnittstelle für das Hochladen von Daten und eine zweite Schnittstelle für das Aktualisieren von Fremdschlüsselbeziehungen. In SAP wird die IDOC-Schnittstelle als erste Schnittstelle verwendet, und eine Geschäftsanwendungsprogrammierschnittstelle (business application programming interface, BAPI) wird als zweite Schnittstelle verwendet. Dies erfordert einen hohen Aufwand in Bezug auf Arbeitsstunden, um eine logische Zuführung der beiden unterschiedlichen Schnittstellen auszuführen und zu prüfen. Zudem ist eine spezielle Optimierung der zweiten Schnittstelle erforderlich, wenn die Objektinstanzen die Fremdschlüsselbeziehungen aufweisen, die sie in einer oder mehreren Schleifen verbinden. Die hochgeladenen Instanzen können nicht verwendet werden, bevor ihre Fremdschlüsselbeziehungen nicht aktualisiert sind. Das Zielsystem muss daher blockiert werden, um Widersprüche und falsche Nutzung zu vermeiden.
  • Aus der nachfolgenden Beschreibung geht klar hervor, dass die vorliegende Erfindung die zuvor genannten Nachteile nicht aufweist und folgende Vorteile hat. Das Hochladen kann in einer Abfolge von Schritten durchgeführt werden, bei denen ein Aktualisieren der Fremdschlüsselbeziehungen nach dem Laden der Daten in ein Zielsystem nicht erforderlich ist. Die Fremdschlüsselbeziehungen, die die Entitäten in einer oder mehreren Schleifen verbinden, können auf direkte automatisierte Weise verarbeitet werden. Jede Entität wird während des Hochladens nur einmal verarbeitet. Das Hochladen kann unter Verwendung einer parallelen Verarbeitung ausgeführt werden, und/oder Teile der Entitäten können gleichzeitig hochgeladen werden.
  • Für den Fachmann ist ersichtlich, dass Aspekte der vorliegenden Erfindung als System, Verfahren oder Computerprogrammprodukt ausgeführt werden können. Aspekte der vorliegenden Erfindung können daher die Form einer kompletten Hardware-Ausführung, einer kompletten Software-Ausführung (darunter Firmware, residente Software, Mikrocode usw.) oder eine Ausführungsform haben, bei der Hardware- und Software-Aspekte kombiniert sind, die allgemein hierin als ”Schaltung”, ”Modul” oder ”System” bezeichnet werden können. Aspekte der vorliegenden Erfindung können des Weiteren die Form eines Computerprogrammprodukts haben, das in einem oder mehreren computerlesbaren Medien ausgeführt ist, die über einen darin enthaltenen computerlesbaren Programmcode verfügen.
  • Es können beliebige Kombinationen von einem oder mehreren computerlesbaren Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich zum Beispiel um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine solche Vorrichtung oder Einheit oder eine geeignete Kombination davon handeln, ohne darauf beschränkt zu sein. Zu genauen Beispielen (einer nicht vollständigen Liste) für das computerlesbare Speichermedium gehören wie folgt: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computer-Diskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disc-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine geeignete Kombination davon. Im Zusammenhang mit diesem Dokument kann es sich bei einem computerlesbaren Speichermedium um ein beliebiges physisches Medium handeln, das ein Programm enthalten oder speichern kann, welches von oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen verwendet wird.
  • Ein computerlesbares Signalmedium kann ein sich ausbreitendes Datensignal mit darin enthaltenem computerlesbarem Programmcode beinhalten, zum Beispiel im Basisband oder als Teil einer Trägerwelle. Ein solches sich ausbreitendes Signal kann eine Vielfalt von Formen haben, darunter elektromagnetische, optische Formen oder eine geeignete Kombination davon, ohne darauf beschränkt zu sein. Bei einem computerlesbaren Signalmedium kann es sich um ein beliebiges computerlesbares Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zum Ausführen von Anweisungen übertragen, weitergeben oder transportieren kann.
  • In einem computerlesbaren Medium enthaltener Programmcode kann unter Verwendung eines geeigneten Mediums übermittelt werden, das drahtlos, drahtgebunden, ein Lichtwellenleiterkabel, HF usw. oder eine geeignete Kombination davon sein kann, ohne darauf beschränkt zu sein.
  • Computerprogrammcode zum Ausführen von Operationen in Verbindung mit Aspekten der vorliegenden Erfindung kann in einer beliebigen Kombination von einer oder mehreren Programmiersprachen geschrieben werden, zu denen eine objektorientierte Programmiersprache wie beispielsweise Java, Smalltalk, C++ oder ähnliche sowie herkömmliche prozedurale Programmiersprachen wie beispielsweise die Programmiersprache ”C” oder ähnliche Programmiersprachen gehören. Der Programmcode kann ganz auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder ganz auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Im letztgenannten Szenario kann der entfernt angeordnete Computer über ein beliebiges Netzwerk mit dem Computer des Benutzers verbunden sein, zum Beispiel über ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder es kann die Verbindung zu einem externen Computer hergestellt werden (beispielsweise über das Internet durch einen Internetdienstanbieter).
  • Nachstehend werden Aspekte der vorliegenden Erfindung unter Bezugnahme auf Ablaufplandarstellungen und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufplandarstellungen und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplandarstellungen und/oder in den Blockschaubildern durch Computerprogrammanweisungen umgesetzt werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Universalrechners, eines Spezialrechners oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu bilden, so dass die Anweisungen, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel erzeugen, um die in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaubilds festgelegten Funktionen/Maßnahmen umzusetzen.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten steuern kann, um auf eine bestimmte Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Anweisungen einen Herstellungsartikel einschließlich der Anweisungen erzeugen, die die in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaubilds festgelegte Funktion/Maßnahme umsetzen.
  • Die Computerprogrammanweisungen können ferner in einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten geladen werden, um eine Reihe von Funktionsschritten auszulösen, die auf dem Computer, in der anderen programmierbaren Vorrichtung oder den anderen Einheiten durchgeführt werden, um einen auf einem Computer implementierten Prozess zu erzeugen, so dass die Anweisungen, die auf dem Computer oder in der anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse bereitstellen, um die in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaltbilds festgelegten Funktionen/Maßnahmen umzusetzen.
  • Des Weiteren ist darauf hinzuweisen, dass jeder Block der Blockschaubilder und/oder der Ablaufplandarstellung sowie Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplandarstellung durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, die die angegebenen Funktionen oder Maßnahmen durchführen, oder durch Kombinationen von spezieller Hardware und Computeranweisungen.
  • 1 veranschaulicht beispielhafte Daten, die in ein Zielsystem hochgeladen werden sollen. Die Daten sind in vier Tabellen dargestellt, die die Geschäftsbeziehungen und gemeinsamen Projekte eines Unternehmens zusammenfassen. Tabelle 100 stellt eine Liste der Partnerunternehmen dar. Tabelle 101 stellt eine Liste der gemeinsamen Projekte dar. Tabelle 102 stellt eine Liste der Hauptkontaktpersonen dar. Tabelle 103 stellt eine Liste der Projekttypen dar. Jede erste Tabellenspalte stellt Primärschlüssel (auch als Identifizierungsnummern (ID), primäre Datenwerte oder Kennungen bekannt) von Datensätzen (auch als Reihen in Tabellen, Tupel oder Entitäten bekannt) dar, die sekundäre Datenwerte aufweisen. Der erste Datensatz in der Tabelle mit der Liste der Partnerunternehmen weist zum Beispiel eine ”1” als primären Datenwert sowie ”A”, ”John”, ”23” als sekundäre Datenwerte auf. Alle Fremdschlüsselbeziehungen (110, 111, 112, 113, 115, 116, 117) mit Ausnahme der Fremdschlüsselbeziehungen (113, 115, 116, 117) der Projekt-IDs werden zur besseren Veranschaulichung auf Tabellenebene dargestellt. Die Fremdschlüsselbeziehungen der Projekt-IDs (113, 115, 116, 117) werden auf Ebene der Entität dargestellt.
  • 2 veranschaulicht eine beispielhafte Zieldatenbank. Die Zieldatenbank dient zum Laden der in 1 veranschaulichten Daten. Die Zieldatenbank weist vier Tabellen auf, die die Geschäftsbeziehungen und gemeinsamen Projekte eines anderen Unternehmens zusammenfassen. Tabelle 700 stellt eine Liste der Partnerunternehmen dar. Tabelle 701 stellt eine Liste der gemeinsamen Projekte dar. Tabelle 702 stellt eine Liste der Hauptkontaktpersonen dar. Tabelle 703 stellt eine Liste der Projekttypen dar. Jede erste Tabellenspalte stellt Primärschlüssel von Datensätzen dar, die sekundäre Datenwerte aufweisen. Der erste Datensatz in der Tabelle mit der Liste der Partnerunternehmen weist zum Beispiel eine ”1” als primären Datenwert sowie ”D”, ”Kate”, ”48” als sekundäre Datenwerte auf. Alle Fremdschlüsselbeziehungen (710, 711, 712, 713, 714) werden auf Ebene der Entität dargestellt.
  • 3 veranschaulicht ein System 810, das verwendbar ist, um Daten einer Quelldatenbank 801 in eine Zieldatenbank 821 zu laden. Ein erster Server 800, der die Quelldatenbank aufweist, ist über ein Computernetzwerk 830 mit dem System 810 verbunden. Ein zweiter Server 820, der die Zieldatenbank aufweist, ist über das Computernetzwerk 830 mit dem System 810 verbunden. Das System weist einen Quelladapter 811, eine Tupelneuordnungseinheit 812 und eine Einfügeeinheit 813 auf. Das System ist zwar als eigenständige Einheit dargestellt, es kann jedoch in einen der Server 800 und 820 integriert werden. Alternativ können verschiedene Komponenten des Systems 810 in beide Server 800 und 820 integriert werden. Die Quelldatenbank 801 kann die in 1 dargestellten beispielhaften Daten aufweisen, und die Zieldatenbank 821 kann die in 2 dargestellte beispielhafte Zieldatenbank aufweisen.
  • 4 veranschaulicht einen Ablaufplan von Prozessblöcken zum Laden von Daten in ein Zielsystem. Die Daten weisen Entitäten auf. Jede Entität weist einen entsprechenden eindeutigen primären Datenwert und einen oder mehrere entsprechende sekundären Datenwerte auf. Mindestens ein Teil der sekundären Datenwerte weist zugehörige Fremdschlüsselbeziehungen auf. Jede Fremdschlüsselbeziehung verbindet den entsprechenden sekundären Datenwert mit dem entsprechenden primären Datenwert einer anderen Entität. Bei mindestens einem Teil der Fremdschlüsselbeziehungen handelt es sich um zyklische Fremdschlüsselbeziehungen. Die zyklischen Fremdschlüsselbeziehungen verbinden Entitäten, die die entsprechenden primären und sekundären Datenwerte aufweisen, die durch die zyklischen Fremdschlüsselbeziehungen verbunden sind, in einer oder mehreren Schleifen. Die in einer oder mehreren Schleifen verbundenen Entitäten weisen eine oder mehrere Zyklusentitäten auf. Wenn alle Zyklusentitäten und die Fremdschlüsselbeziehungen, die die primären Datenwerte aller Zyklusentitäten mit den entsprechenden sekundären Datenwerten verbinden, als aus den Daten gelöscht gelten, weisen die Daten keine Schleifen der Entitäten mehr auf.
  • Im Folgenden wird ein Verfahren zum Laden von Daten in ein Zielsystem beschrieben, bei dem die Ablaufplandarstellung von 4, die in 1 dargestellten beispielhaften Daten, die in 2 dargestellte beispielhafte Zieldatenbank und das in 3 dargestellte System verwendet werden.
  • Nach dem Erhalt einer Anforderung zum Laden der Daten in den Tabellen 100, 101, 102, 103 der ersten Datenbank 801 in die zweite Datenbank 821 veranlasst der Datenmigrationscomputer 810 den Quelladapter 811, die Daten von der ersten Datenbank in den Datenmigrationscomputer 810 herunterzuladen. Danach führt die Tupelneuordnungseinheit 812 die Prozessblöcke 20, 22, 10 und 21 des in 4 dargestellten Ablaufplans durch.
  • In Prozessblock 20 werden die Entitäten in Einfügeblattgruppen aufgeteilt, indem ein Iterationsprozess ausgeführt wird, bei dem aufeinanderfolgende Iterationen durchgeführt werden. Die Ausführung jeder Iteration beinhaltet ein Erzeugen eines entsprechenden Satzes der Einfügeblattgruppen. Der entsprechende Satz der Blattgruppen weist alle Entitäten auf, deren sekundäre Datenwerte entweder über keine Fremdschlüsselbeziehungen oder nur über eine oder mehrere Fremdschlüsselbeziehungen mit den primären Datenwerten der Entitäten der Einfügeblattgruppen verfügen, die bei der Ausführung einer vorherigen Iteration erzeugt wurden. Der Iterationsprozess wird ausgeführt, bis keine Entitäten mehr vorhanden sind, deren sekundäre Datenwerte entweder über keine Fremdschlüsselbeziehungen oder nur über eine oder mehrere Fremdschlüsselbeziehungen mit den primären Datenwerten der einen oder mehreren Entitäten der Einfügeblattgruppen verfügen, die bei der Ausführung einer vorherigen Iteration erzeugt wurden. Eine Abfolge zum Erzeugen der Sätze der Einfügeblattgruppen wird gespeichert. Die Anzahl der Einfügeblattgruppen in den Sätzen kann zufällig sein, alternativ kann die Anzahl gemäß den Spezifikationen von Computern gewählt werden, die zum Durchführen des Verfahrens zum Laden von Daten in das Zielsystem verwendet werden.
  • Ein Verarbeiten der in 1 dargestellten beispielhaften Daten gemäß Prozessblock 20 führt zu einem Erzeugen eines ersten Satzes der Einfügeblattgruppen. Der erste Satz der Einfügeblattgruppen weist alle Entitäten von Tabelle 103 auf, da ihre sekundären Werte keine Fremdschlüsselbeziehungen haben. Ein weiteres Erzeugen der Sätze der Einfügeblattgruppen ist nicht möglich, da die Entitäten in den Tabellen 100 bis 102 durch die Fremdschlüsselbeziehungen in Schleifen verbunden sind.
  • In einem Entscheidungsprozessblock 22 wird die Anzahl der in die Einfügeblattgruppen aufgeteilten Entitäten mit der Gesamtanzahl der Entitäten verglichen. Wenn alle Entitäten in die Einfügeblattgruppen aufgeteilt wurden, wird ein Prozessblock 40 durchgeführt, andernfalls werden die Prozessblöcke 10, 21, 30, 40 und 50 durchgeführt.
  • Bei dem Verarbeiten der in 1 dargestellten beispielhaften Daten wird in Entscheidungsprozessblock 22 erkannt, dass nicht alle Entitäten in die Einfügeblattgruppen aufgeteilt sind. Ein weiteres Verarbeiten der beispielhaften Daten wird daher in den Prozessblöcken 10, 21, 30, 40 und 50 durchgeführt.
  • In Prozessblock 10 wird ein Satz der Einfügezyklusgruppen erzeugt. Der Satz der Einfügezyklusgruppen weist alle Zyklusentitäten auf. Die Entitäten, die noch nicht in eine oder mehrere Einfügeblattgruppen aufgeteilt sind, können für das Erzeugen des Satzes der Zykluseinfügegruppen verwendet werden. Alle Zyklusentitäten und die Fremdschlüsselbeziehungen, die die primären Datenwerte aller Zyklusentitäten mit den entsprechenden sekundären Datenwerten verbinden, gelten während des Aufteilens der Entitäten in Einfügeblattgruppen als aus den Daten gelöscht. Die Anzahl der Einfügezyklusgruppen in dem Satz der Einfügezyklusgruppen kann zufällig sein, alternativ kann die Anzahl gemäß den Spezifikationen von Computern gewählt werden, die zum Durchführen des Verfahrens zum Laden von Daten in das Zielsystem verwendet werden.
  • Ein Verarbeiten der in 1 dargestellten beispielhaften Daten gemäß Prozessblock 10 führt zu einem Erzeugen eines Satzes von Einfügezyklusgruppen. Dieser Satz weist alle Entitäten von Tabelle 100 auf, da sich jede Entität von Tabelle 100 in zwei entsprechenden Schleifen von Entitäten befindet. Die erste Schleife, die die Zyklusentität mit ID = ”1” in Tabelle 100 aufweist, besteht zum Beispiel aus der Entität mit ID = ”1” in Tabelle 100 und der Entität mit ID = ”John” in Tabelle 102, wobei die Entität mit ID = 1 in Tabelle 100 den sekundären Datenwert ”John” aufweist, der durch die Fremdschlüsselbeziehung mit den primären Datenwerten der Entität mit ID = ”John” in Tabelle 102 verbunden ist, und die Entität mit ID = ”John” in Tabelle 102 weist den sekundären Wert ”1” auf, der durch die Fremdschlüsselbeziehung mit dem primären Datenwert der Entität mit ID = ”1” in Tabelle 100 verbunden ist. Die zweite Schleife, die die Zyklusentität mit ID = ”1” in Tabelle 100 aufweist, besteht aus der Entität mit ID = ”1” in Tabelle 100, der Entität mit ID = ”23” in Tabelle 101 und der Entität mit ID = ”John” in Tabelle 102, die durch die entsprechenden Fremdschlüsselbeziehungen verbunden sind, wobei die Entität mit ID = ”1” in Tabelle 100 den sekundären Datenwert ”23” aufweist, der durch die Fremdschlüsselbeziehung mit dem primären Datenwert der Entität mit ID = ”23” in Tabelle 101 verbunden ist, wobei die Entität mit ID = ”23” in der Tabelle den zweiten Datenwert ”John” aufweist, der durch die Fremdschlüsselbeziehung mit dem primären Datenwert der Entität mit ID = ”John” in Tabelle 102 verbunden ist, und wobei die Entität mit ID = ”John” in Tabelle 102 den sekundären Wert ”1” aufweist, der durch die Fremdschlüsselbeziehung mit dem primären Datenwert der Entität mit ID = ”1” in Tabelle 100 verbunden ist.
  • Ein Verarbeiten der in 1 dargestellten beispielhaften Daten gemäß Prozessblock 21 führt zu einem Erzeugen eines zweiten, dritten und vierten Einfügesatzes der Einfügeblattgruppen. Da alle Entitäten der zuvor erzeugten Einfügeblatt- und -zyklusgruppen von einer weiteren Verarbeitung ausgeschlossen sind, führt die Ausführung von Prozessblock 21 zum Erzeugen von drei weiteren Sätzen der Einfügeblattgruppen. Jeder Satz der Einfügeblattgruppen weist einen eindeutigen Teil der Entitäten auf. Der zweite Satz weist alle Entitäten von Tabelle 102 auf. Der dritte Satz weist Entitäten mit ID = ”23” und ID = ”56” in Tabelle 101 auf. Der vierte Satz weist die Entität mit ID = ”98” in Tabelle 101 auf.
  • In Prozessblock 30 werden die Entitäten des Satzes der Einfügezyklusgruppen in das Zielsystem geladen. Die Entitäten jeder Zyklusgruppe können gleichzeitig miteinander geladen werden. Alternativ können die Entitäten des Satzes der Einfügezyklusgruppen in mehrere Einfügezyklusuntergruppen aufgeteilt werden, und jede Einfügezyklusuntergruppe kann gleichzeitig mit den anderen geladen werden.
  • In Prozessblock 40 werden die Sätze der Einfügeblattgruppen der Entitäten und die Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten in dem Zielsystem verbinden, gemäß der Abfolge nacheinander in das Zielsystem geladen. Die Einfügeblattgruppen jedes Satzes können gleichzeitig miteinander geladen werden. Alternativ können die Entitäten jedes Satzes der Einfügeblattgruppen und die Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten verbinden, in mehrere Einfügeblattuntergruppen aufgeteilt werden, und jede Einfügeblattuntergruppe kann gleichzeitig mit den anderen geladen werden.
  • In Prozessblock 50 werden die Fremdschlüsselbeziehungen geladen, die die sekundären Datenwerte der Entitäten des Satzes der Einfügezyklusgruppen mit den entsprechenden primären Datenwerten in dem Zielsystem verbinden. Die Fremdschlüsselbeziehungen, die die sekundären Datenwerte der Entitäten jeder Einfügezyklusgruppe verbinden, können gleichzeitig miteinander hochgeladen werden. Alternativ können die Fremdschlüsselbeziehungen, die die sekundären Datenwerte der Entitäten des Satzes der Einfügezyklusgruppen verbinden, in Fremdschlüsselbeziehungsuntergruppen aufgeteilt werden, und jede Fremdschlüsselbeziehungsuntergruppe kann gleichzeitig mit den anderen hochgeladen werden.
  • Für Fachleute ist klar ersichtlich, dass die Prozessblöcke 21 und 30 gleichzeitig oder in umgekehrter Reihenfolge ausgeführt werden können.
  • Die Prozessblöcke 30, 40 und 50 werden von der Einfügeeinheit 813 des in 3 dargestellten Datenmigrationssystems 810 durchgeführt.
  • Die 5 bis 7 veranschaulichen Änderungen bei der beispielhaften Zieldatenbank während der in 4 dargestellten Ausführung der Prozessblöcke 30, 40 und 50. 5 veranschaulicht die Zieldatenbank nach dem Hochladen der Entitäten des Satzes der Einfügezyklusgruppen und des ersten Satzes der Einfügeblattgruppen. Da die Kennung ”1” bereits in der Zieldatenbank verwendet wird, werden die Kennungen der Entitäten der Einfügezyklusgruppe entsprechend neu nummeriert. In diesem Fall werden die Kennungen der Entitäten der Einfügezyklusgruppe um eins erhöht. Die sekundären Werte der Entitäten der Zykluseinfügegruppe in den Spalten ”Kontaktperson” und ”gemeinsames Projekt” werden nicht hochgeladen, da sie in Prozessblock 50 als Fremdschlüsselbeziehungen hochgeladen werden, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten verbinden. Die Kennungen der Entitäten der ersten Einfügeblattgruppe werden auf ähnliche Weise wie die Kennungen der Entitäten der Einfügezyklusgruppe neu nummeriert. 6 veranschaulicht die Zieldatenbank nach dem Hochladen der Entitäten des Satzes der Einfügezyklusgruppen, des ersten Satzes der Einfügeblattgruppen und des zweiten Satzes der Einfügeblattgruppen. Tabelle 702 ist vollständig ausgefüllt, wobei die aktualisierten Kennungen der Unternehmens-IDs von Tabelle 700 verwendet werden. 7 veranschaulicht die Zieldatenbank nach dem Hochladen der Entitäten des Satzes der Einfügezyklusgruppen, des ersten Satzes der Einfügeblattgruppen, des zweiten Satzes der Einfügeblattgruppen und des dritten Satzes der Einfügeblattgruppen. Tabelle 701 ist vollständig ausgefüllt.
  • 8 veranschaulicht einen anderen Ablaufplan von Prozessblöcken zum Laden von Daten in ein Zielsystem. Dieser Ablaufplan beginnt mit Prozessblock 10. Prozessblock 10 wird wie oben beschrieben durchgeführt.
  • Die Ausführung von Prozessblock 10 des in 8 dargestellten Ablaufplans mit den in 1 dargestellten beispielhaften Daten führt zu einem Erzeugen eines Satzes der Einfügezyklusgruppen. Der Satz der Einfügezyklusgruppen weist alle Entitäten von Tabelle 100 auf.
  • Prozessblock 20 wird nach Prozessblock 10 durchgeführt. Prozessblock 20 wird wie oben beschrieben durchgeführt.
  • Die Ausführung von Prozessblock 20 des in 8 dargestellten Ablaufplans mit den in 1 dargestellten beispielhaften Daten führt zu einem Erzeugen eines ersten, zweiten und dritten Satzes der Einfügezyklusgruppen. Der erste Satz der Einfügeblattgruppe weist alle Entitäten der Tabellen 103 und 102 auf. Der zweite Satz der Einfügeblattgruppen weist Entitäten mit ID = ”23” und ID = ”56” in Tabelle 101 auf. Der dritte Satz der Einfügeblattgruppen weist die Entität mit ID = ”98” in Tabelle 101 auf. Die Ausführung des Ablaufplans der in 8 dargestellten Prozessblöcke führt daher zu einem Erzeugen einer geringeren Anzahl der Sätze der Einfügeblattgruppen verglichen mit dem Ablaufplan der in 4 dargestellten Prozessblöcke.
  • Die in 8 dargestellten Prozessblöcke 30, 40 und 50 werden auf dieselbe Weise wie die in 4 dargestellten Prozessblöcke 30, 40 und 50 durchgeführt.
  • Für Fachleute ist klar ersichtlich, dass die Prozessblöcke 20 und 30 gleichzeitig oder in umgekehrter Reihenfolge ausgeführt werden können.
  • Wenn die Entitäten nicht in einer oder mehreren Schleifen verbunden sind, können die Daten in das Zielsystem geladen werden, indem nur die Prozessblöcke 20 und 40 durchgeführt werden.
  • 9 veranschaulicht einen anderen Ablaufplan von Prozessblöcken zum Laden von Daten in das Zielsystem. Der Ablaufplan beginnt mit dem Durchführen von Prozessblock 20 genau wie oben beschrieben. In einem Entscheidungsprozessblock 22 wird die Anzahl der in die Blattgruppen aufgeteilten Entitäten mit der Gesamtanzahl der Entitäten verglichen. Wenn alle Entitäten in die Einfügeblattgruppen aufgeteilt sind (d. h., die Daten weisen keine Entitäten auf, die in einer oder mehreren Schleifen verbunden sind), wird Prozessblock 40 wie oben beschrieben durchgeführt. Wenn nicht alle Entitäten in die Einfügeblattgruppen aufgeteilt sind, wird die Abfolge alternativ in Prozessblock 23 gelöscht. Des Weiteren wird Prozessblock 10 wie oben beschrieben durchgeführt. Die Entitäten, die in dem zuvor ausgeführten Prozessblock 20 nicht in eine oder mehrere Einfügegruppe aufgeteilt wurden, können zum Erzeugen des Satzes der Einfügezyklusgruppen in Prozessblock 10 verwendet werden. In einem Prozessblock 24 wird das Aufteilen der Entitäten in die Einfügeblattgruppen erneut gestartet und auf gleiche Weise wie in der Beschreibung von Prozessblock 20 durchgeführt. Die Prozessblöcke 30, 40 und 50 werden des Weiteren auf dieselbe Weise wie oben beschrieben ausgeführt. Für Fachleute ist klar ersichtlich, dass die Prozessblöcke 24 und 30 gleichzeitig oder in umgekehrter Reihenfolge ausgeführt werden können.
  • Jeder in den 4, 8 und 9 dargestellte Ablaufplan hat seine eigenen Vorteile. Die Wahl jedes Ablaufplans kann von einer Struktur der Daten abhängen, die in das Zielsystem geladen werden sollen. Wenn zuvor zum Beispiel bekannt ist, dass die Daten Zyklusentitäten aufweisen, kann die Verwendung des in 8 dargestellten Ablaufplans die beste Wahl sein, da der in 8 dargestellte Ablaufplan mit dem Erzeugen der Einfügezyklusgruppe beginnt. Das Erzeugen der Einfügezyklusgruppe vor dem Aufteilen der Entitäten in die Einfügeblattgruppen kann zudem im Vergleich zu dem Ablaufplan von 4 zu weniger erzeugten Einfügeblattgruppen führen.
  • Wenn die Struktur der Daten zuvor nicht bekannt ist, kann die Verwendung des in 4 dargestellten Ablaufplans eine optimale Wahl sein. Wenn die Daten keine Zyklusentitäten aufweisen, wird keine Rechenzeit benötigt und/oder werden keine Computerressourcen zum Suchen von Zyklusentitäten in der Datenbank in Anspruch genommen, und der Verarbeitungsalgorithmus wird auf ein Ausführen der Prozessblöcke 20 und 40 beschränkt.
  • Da zum Identifizieren des Satzes der Einfügezyklusgruppen gegebenenfalls weit mehr Rechenzeit benötigt und/oder Computerressourcen in Anspruch genommen werden als zum Aufteilen der Entitäten in die Einfügeblattgruppen, kann es von Vorteil sein, ein Datenvolumen zu verkleinern, in dem die Zyklusgruppe identifiziert wird. Dieses Konzept liegt dem Ablaufplan von 9 zugrunde. Zuerst werden in Prozessblock 20 alle möglichen Einfügeblattgruppen erzeugt. Danach wird die Einfügezyklusgruppe unter Verwendung der Entitäten erzeugt, die noch nicht in die Einfügeblattgruppen aufgeteilt sind.
  • 10 veranschaulicht einen Ablaufplan der Prozessblöcke zum Erzeugen des gerichteten Graphen unter Verwendung der Daten, die in ein Zielsystem geladen werden sollen. In einem Prozessblock 200 wird eine Schleife ausgeführt, die Prozessblock 201 aufweist, bis alle Datenentitäten verarbeitet sind. Alle Entitäten werden während Iterationen von Prozessblock 200 nacheinander verarbeitet. In Prozessblock 201 wird ein Graphenknoten erzeugt, der einer aktuellen Entität entspricht. Wenn die Prozessblöcke 200 und 201 vollständig ausgeführt sind, wird ein kompletter Satz von Graphenknoten erzeugt, wobei jede Entität einen eindeutigen Graphenknoten aufweist. Danach werden zwei andere Schleifen ausgeführt, die von den Prozessblöcken 202 und 203 gesteuert werden. Die von Entscheidungsprozessblock 203 gesteuerte Schleife ist in die Schleife eingebettet, die von Entscheidungsprozessblock 202 gesteuert wird. In der von Prozessblock 202 gesteuerten Schleife werden die Entitäten nacheinander verarbeitet, und in der von Prozessblock 203 gesteuerten eingebetteten Schleife wird ein Prozessblock 204 ausgeführt. In den Prozessblöcken 203 und 204 werden alle Fremdschlüsselbeziehungen der aktuellen in Entscheidungsprozessblock 202 ausgewählten Entität nacheinander verarbeitet. In Prozessblock 204 werden alle Fremdschlüsselbeziehungen der sekundären Datenwerte der aktuellen Entität in Kanten des gerichteten Graphen übersetzt, der den Knoten der aktuellen Entität mit anderen Knoten anderer Entitäten verbindet. Wenn die Prozessblöcke 202, 203 und 204 vollständig ausgeführt sind, ist das Erzeugen des gerichteten Graphen abgeschlossen, wobei für eine gegebene Fremdschlüsselbeziehung, die den entsprechenden sekundären Datenwert mit dem entsprechenden primären Datenwert verbindet, die Kante des Graphen an dem Knoten beginnt, der der Entität mit dem entsprechenden sekundären Datenwert entspricht, und an dem Knoten endet, der der Entität mit dem entsprechenden primären Datenwert entspricht.
  • 11 veranschaulicht einen gerichteten Graphen 299, der unter Verwendung des in 10 vorgestellten Algorithmus und der in 1 vorgestellten Eingabedaten 100, 101, 102, 103 erzeugt wird. Jeder Datensatz in den Tabellen 100, 101, 102, 103 wird durch einen eindeutigen Knoten 300, 301, 302, 330, 331, 332, 333, 310, 311, 312, 320, 321 und 322 in dem gerichteten Graphen 299 dargestellt. Die Datensätze ”1” ”2” und ”3” in Tabelle 100 mit der Liste der Partnerunternehmen werden zum Beispiel durch die Knoten 300, 301 bzw. 302 dargestellt. Die Fremdschlüsselbeziehungen 110, 111, 112, 113, 114, 115, 116 und 117 werden durch die Graphenkanten 350 bis 367 dargestellt. Die Knoten 300, 301 und 302 gehören zu einem Rückkopplungsknotensatz. Der Rückkopplungsknotensatz kann wie folgt definiert werden: bei dem Rückkopplungsknotensatz handelt es sich um einen Teil von Knoten, die durch Graphenkanten in Schleifen verbunden sind, wobei, wenn die Rückkopplungsknoten aus dem gerichteten Graphen entfernt werden, der gerichtete Graph keine Knoten aufweist, die durch Graphenkanten in Schleifen verbunden sind. Knoten 300 ist zum Beispiel Teil von zwei Schleifen der Knoten. Die erste Schleife weist die Knoten 300, 330 und 310 auf, die durch die Graphenkanten 353, 351 und 350 verbunden sind. Die zweite Schleife weist die Knoten 300 und 330 auf, die durch die Graphenkanten 352 und 353 verbunden sind. Wenn der Knoten 300 und die Graphenkanten 352, 353 und 351, die diesen Knoten mit anderen Knoten verbinden, entfernt werden, werden die beiden oben erwähnten Schleifen ebenfalls aus dem Graphen entfernt.
  • 12 veranschaulicht einen Ablaufplan von Prozessblöcken zum Erzeugen von Einfügegruppen unter Verwendung eines gerichteten Graphen. In einem Prozessblock 500 wird ein Iterationszähler i auf eins eingestellt. In einem Prozessblock 501 wird ein Auswahlsatz S als leer initialisiert. In einem Prozessblock 502 wird ein Rückkopplungsknotensatz F als leer initialisiert. In einem Prozessblock 503 werden alle Blattknoten des Graphen (Knoten ohne abgehende Kanten) für den Auswahlsatz S ausgewählt. In einem Entscheidungsprozessblock 504 wird geprüft, ob der Auswahlsatz S leer ist. Wenn der Auswahlsatz S leer ist, werden die Prozessblöcke 505, 506 und 507 durchgeführt, und der Algorithmus wird weiter mit Prozessblock 503 fortgesetzt. In Prozessblock 505 wird ein Rückkopplungsknotensatz F identifiziert. In Prozessblock 506 wird der Rückkopplungsknotensatz F für eine Zykluseinfügegruppe C ausgewählt. In Prozessblock 507 werden alle Knoten der Einfügegruppe C und ihre angrenzenden Kanten aus dem Graphen entfernt. Wenn in Entscheidungsprozessblock 504 festgestellt wird, dass der Auswahlsatz S nicht leer ist, wird die Schleife mit den Prozessblöcken 508, 509, 510, 511 und 512 ausgeführt, und der Prozess wird weiter mit Prozessblock 503 fortgesetzt. In Prozessblock 508 werden die Knoten des Auswahlsatzes S für eine aktuelle Einfügegruppe I_i einer aktuellen Iteration ausgewählt. In Prozessblock 509 werden die Knoten der aktuellen Einfügegruppe I_i und ihre angrenzenden Kanten aus dem Graphen entfernt. In Entscheidungsprozessblock 510 wird geprüft, ob alle Knoten aus dem Graphen entfernt wurden. Wenn alle Knoten aus dem Graphen entfernt wurden, wird die Ausführung des Algorithmus abgebrochen, andernfalls wird Prozessblock 511 ausgeführt. Der Iterationszähler i wird in Prozessblock 511 um eins inkrementiert. Der Auswahlsatz S wird in Prozessblock 512 geleert.
  • Alternativ werden die für die Einfügegruppen ausgewählten Knoten und angrenzenden Kanten gekennzeichnet, anstatt gelöscht zu werden. Das Kennzeichnen wird in den Prozessblöcken 509 und 507 durchgeführt. In Entscheidungsprozessblock 510 wird die Ausführung des Algorithmus abgebrochen, wenn alle Knoten gekennzeichnet sind. In Prozessblock 503 werden die nicht gekennzeichneten Knoten ohne abgehende, nicht gekennzeichnete Kanten für den Auswahlsatz S ausgewählt.
  • 13 stellt eine Tabelle dar, die das Auswählen der Knoten des in 11 gezeigten gerichteten Graphen für Einfügegruppen und eine entsprechende Ausführungsfolge der Prozessblöcke des in 12 gezeigten Ablaufplans zum Erzeugen der Einfügegruppen veranschaulicht. In einer ersten Iteration werden die Prozessblöcke 500, 501, 502, 503, 504, 508, 509, 510, 511 und 512 ausgeführt, und die Knoten 320, 321 und 322 werden für die erste Auswahlgruppe ausgewählt. In einer zweiten Iteration werden beide Schleifen des Entscheidungsprozessblocks 504 ausgeführt. Zuerst werden die Prozessblöcke 503, 504, 505, 506 und 507 ausgeführt, und die Knoten 300, 301 und 302 werden für die erste Zykluseinfügegruppe ausgewählt. Danach werden die Prozessblöcke 503, 504, 508, 509, 510, 511 und 512 ausgeführt, und die Knoten 330, 331, 332 und 333 werden für die zweite Einfügegruppe ausgewählt. In einer dritten Iteration werden die Prozessblöcke 503, 504, 508, 509, 510, 511 und 512 ausgeführt, und die Knoten 310 und 311 werden für die dritte Einfügegruppe ausgewählt. In einer vierten Iteration werden die Prozessblöcke 503, 504, 508, 509 und 510 ausgeführt, und der Knoten 312 wird für die vierte Einfügegruppe ausgewählt.
  • 14 veranschaulicht einen Ablaufplan von Prozessblöcken zum Laden der Entitäten, die den Knoten der Einfügegruppen entsprechen, in ein Zielsystem. In einem Prozessblock 600 wird eine Schleife ausgeführt, bis alle Datenentitäten, die den Knoten der Zykluseinfügegruppe entsprechen, in das Zielsystem eingefügt sind. In einem Prozessblock 601 werden die Datenentitäten, die den Knoten der Zykluseinfügegruppe entsprechen, nacheinander ohne ihre Fremdschlüsselbeziehungen in das Zielsystem geladen. Wenn die Prozessblöcke 600 und 601 vollständig ausgeführt sind, sind alle Entitäten, die den Knoten der Einfügezyklusgruppe entsprechen, in das Zielsystem geladen. In einem Prozessblock 603 wird ein Wert eines Iterationszählers j auf eins eingestellt. Danach werden zwei weitere Schleifen ausgeführt, die von den Prozessblöcken 604 und 605 gesteuert werden. Die von Entscheidungsprozessblock 605 gesteuerte Schleife ist in die Schleife eingebettet, die von Entscheidungsprozessblock 604 gesteuert wird. In der von Prozessblock 604 gesteuerten Schleife wird die Schleife ausgeführt, bis der Iterationszähler die Anzahl der Einfügeblattgruppen überschreitet. In der von Prozessblock 604 gesteuerten Schleife werden alle Einfügeblattgruppen nach ihrer Nummerierung verarbeitet. In jeder Iteration der von Prozessblock 604 gesteuerten Schleife wird die von Prozessblock 605 gesteuerte eingebettete Schleife einmal ausgeführt, und der Iterationszähler wird in einem Prozessblock 602 um eins inkrementiert. Die von Entscheidungsprozessblock 605 gesteuerte Schleife wird ausgeführt, bis alle Knoten der aktuellen Einfügeblattgruppe, die anhand des Wertes des Iterationszählers ermittelt werden, ausgeführt sind. In jeder Iteration der von Prozessblock 605 gesteuerten Schleife wird ein Prozessblock 606 einmal ausgeführt. Die Entitäten, die den Knoten der aktuellen Einfügeblattgruppe entsprechen, werden nacheinander in der von Prozessblock 605 gesteuerten Schleife verarbeitet. In Prozessblock 606 werden die Entität, die dem aktuellen Knoten der aktuellen Einfügeblattgruppe entspricht, und die Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten verbinden, in das Zielsystem geladen. Nach der vollständigen Ausführung der Prozessblöcke 604, 602, 605 und 606 sind alle Entitäten und die Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten verbinden, in das Zielsystem geladen. Danach wird eine weitere von einem Prozessblock 607 gesteuerte Schleife ausgeführt, bis alle Entitäten, die den Knoten der Einfügezyklusgruppe entsprechen, verarbeitet sind. In jeder Iteration der von Entscheidungsprozessblock 607 gesteuerten Schleife wird ein Prozessblock 608 ausgeführt. In Prozessblock 608 werden die Fremdschlüsselbeziehungen, die die sekundären Datenwerte der aktuellen Entität mit den entsprechenden primären Datenwerten verbinden, in das Zielsystem geladen, wobei die aktuelle Entität durch Prozessblock 607 ermittelt wird. Wenn die Prozessblöcke 607 und 608 vollständig ausgeführt sind, sind alle Fremdschlüsselbeziehungen, die die sekundären Datenwerte der Entitäten mit den entsprechenden primären Datenwerten verbinden, in das Zielsystem geladen.
  • 15 veranschaulicht eine Umsetzung eines Pseudocodes des in 10 dargestellten Ablaufplans. Ein Satz von Tupeln T wird für ein gegebenes Tabellenschema S als Eingabe verwendet (Zeile 1), und nach dem Ausführen des Algorithmus wird ein gerichteter Graph G = (N, E) erzeugt (Zeilen 3 und 22). In den Zeilen 9 bis 13 des Pseudocodes wird ein Prozess zum Erzeugen der Knoten des gerichteten Graphen formuliert. Dieser Teil des Pseudocodes entspricht den Prozessblöcken 200 und 201 in 5. In den Zeilen 15 bis 20 des Pseudocodes wird ein Prozess zum Erzeugen der Kanten des gerichteten Graphen formuliert. Dieser Teil des Pseudocodes entspricht den Prozessblöcken 202, 203 und 204 in 5. Fachleute werden den Pseudocode in allen Einzelheiten verstehen.
  • 16 veranschaulicht eine Umsetzung eines Pseudocodes eines Algorithmus zum Erzeugen der Einfügegruppen. Dieser Algorithmus ist eine genaue Umsetzung eines Teils des in 12 vorgestellten Ablaufplans. Ein gerichteter Graph G = (N, E) wird als Eingabe verwendet, und als Ergebnis der Ausführung des Algorithmus werden Einfügegruppen erzeugt. C ist ein Zykluseinfügesatz, der als leer initialisiert ist (Zeile 6), Q ist ein First-in-First-out-Puffer (FIFO) (Zeile 9), V[n] ist eine lineare Anordnung, wobei jedes Element der linearen Anordnung dem eindeutigen Knoten entspricht und gleich der Anzahl der abgehenden Kanten des entsprechenden Knotens (Zeilen 10 und 17) ist, die Variable m entspricht der Anzahl von Knoten in dem Graphen (Zeile 11). Knoten ohne abgehende Kanten werden in den FIFO-Puffer Q verschoben (Zeile 20). Alle Kanten c[e] weisen die Farbe Schwarz auf (Zeilen 24 bis 26). Die Knoten werden für die Einfügegruppen ausgewählt (Zeilen 29 bis 57). Wenn nicht alle Knoten für die Einfügegruppen ausgewählt werden, werden die Zyklusknoten für die Einfügezyklusgruppe ausgewählt und zusammen mit ihren angrenzenden Kanten aus dem Graphen entfernt (Zeilen 59 bis 64), und anschließend wird der Prozess zum Auswählen der Knoten für die Einfügegruppen wiederholt. Fachleute werden den Pseudocode in allen Einzelheiten verstehen.
  • 17 veranschaulicht eine Umsetzung eines Pseudocodes des in 14 dargestellten Ablaufplans. Ein Teil des Pseudocodes (Zeilen 3 bis 6) entspricht den Prozessblöcken 600 und 601. Ein anderer Teil des Pseudocodes (Zeilen 9 bis 14) entspricht den Prozessblöcken 603, 604, 602, 605 und 606. Noch ein weiterer Teil des Pseudocodes (Zeilen 17 bis 20) entspricht den Prozessblöcken 607 und 608. Fachleute werden den Pseudocode in allen Einzelheiten verstehen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • ”Handbook of combinatorial optimization”, Ergänzungsband A, Kluwer Academic Publishers, SS. 209 bis 259 [0008]

Claims (15)

  1. Durch einen Computer implementiertes Verfahren zum Laden von Daten (100, 101, 102, 103) in ein Zielsystem (820), wobei die Daten Entitäten aufweisen, wobei jede der Entitäten einen entsprechenden eindeutigen primären Datenwert und einen oder mehrere entsprechende sekundäre Datenwerte aufweist, wobei mindestens ein Teil der sekundären Datenwerte zugehörige Fremdschlüsselbeziehungen (115, 116, 117, 114) aufweist, wobei jede Fremdschlüsselbeziehung den entsprechenden sekundären Datenwert mit dem entsprechenden primären Datenwert einer anderen Entität verbindet, wobei das Verfahren aufweist: Aufteilen der Entitäten in Einfügeblattgruppen, indem ein Iterationsprozess ausgeführt wird, bei dem aufeinanderfolgende Iterationen (20) durchgeführt werden, wobei die Ausführung jeder Iteration ein Erzeugen eines entsprechenden Satzes der Einfügeblattgruppen beinhaltet, wobei der entsprechende Satz der Einfügeblattgruppen alle Entitäten enthält, deren sekundäre Datenwerte entweder über keine Fremdschlüsselbeziehungen oder nur über eine oder mehrere Fremdschlüsselbeziehungen mit den primären Datenwerten der Entitäten der Einfügeblattgruppen verfügen, die bei der Ausführung einer vorherigen Iteration erzeugt wurden, wobei der Iterationsprozess ausgeführt wird, bis keine Entitäten mehr vorhanden sind, deren sekundäre Datenwerte entweder über keine Fremdschlüsselbeziehungen oder nur über eine oder mehrere Fremdschlüsselbeziehungen mit den primären Datenwerten der einen oder mehreren Entitäten der Einfügeblattgruppen verfügen, die bei der Ausführung einer vorherigen Iteration erzeugt wurden, wobei eine Abfolge zum Erzeugen der Sätze der Einfügeblattgruppen gespeichert wird; und aufeinanderfolgendes Laden der Sätze der Einfügeblattgruppen der Entitäten und der Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten verbinden, in das Zielsystem gemäß der Abfolge (40).
  2. Verfahren nach Anspruch 1, wobei es sich bei mindestens einem Teil der Fremdschlüsselbeziehungen um zyklische Fremdschlüsselbeziehungen handelt, wobei die zyklischen Fremdschlüsselbeziehungen Entitäten, die die entsprechenden primären und sekundären Datenwerte aufweisen, die durch die zyklischen Fremdschlüsselbeziehungen verbunden sind, in einer oder mehreren Schleifen verbinden, wobei die Entitäten, die in einer oder mehreren Schleifen verbunden sind, eine oder mehrere Zyklusentitäten aufweisen, wobei, wenn alle Zyklusentitäten und die Fremdschlüsselbeziehungen, die die primären Datenwerte aller Zyklusentitäten mit den entsprechenden sekundären Datenwerten verbinden, als aus den Daten gelöscht gelten, die Daten keine Schleifen der Entitäten mehr aufweisen, wobei das Verfahren weiterhin aufweist: Erzeugen eines Satzes der Einfügezyklusgruppen, wobei der Satz der Einfügezyklusgruppen alle Zyklusentitäten (10) aufweist, wobei alle Zyklusentitäten und die Fremdschlüsselbeziehungen, die die primären Datenwerte aller Zyklusentitäten mit den entsprechenden sekundären Datenwerten verbinden, während eines Aufteilens der Entitäten in Einfügeblattgruppen als aus den Daten gelöscht gelten; vor dem aufeinanderfolgenden Laden der Sätze der Einfügeblattgruppen der Entitäten und der Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten in dem Zielsystem verbinden, Laden der Entitäten des Satzes der Einfügezyklusgruppen in das Zielsystem (30); und nach dem aufeinanderfolgenden Laden der Sätze der Einfügeblattgruppen der Entitäten und der Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten in dem Zielsystem verbinden, Laden in das Zielsystem (50) der Fremdschlüsselbeziehungen, die die sekundären Datenwerte der Entitäten des Satzes der Einfügezyklusgruppen mit den entsprechenden primären Datenwerten verbinden.
  3. Verfahren nach Anspruch 2, wobei das Erzeugen des Satzes von Einfügezyklusgruppen, die alle Zyklusentitäten aufweisen, vor dem Aufteilen der Entitäten in die Einfügeblattgruppen durchgeführt wird.
  4. Verfahren nach Anspruch 2, wobei nach dem Aufteilen der Entitäten in die Einfügeblattgruppen und vor dem Laden der Entitäten des Satzes der Einfügezyklusgruppen in das Zielsystem das Erzeugen des Satzes der Einfügezyklusgruppen unter Verwendung der noch nicht in die Einfügeblattgruppen aufgeteilten Entitäten durchgeführt wird, wobei nach dem Erzeugen des Satzes der Einfügezyklusgruppen und vor dem aufeinanderfolgenden Laden der Sätze der Einfügeblattgruppen der Entitäten und der Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten in dem Zielsystem verbinden, weiterhin das Aufteilen der Entitäten in die Einfügeblattgruppen und das Speichern der Abfolge zum Erzeugen der Sätze der Einfügeblattgruppen durchgeführt werden.
  5. Verfahren nach Anspruch 2, wobei nach dem Aufteilen der Entitäten in die Einfügeblattgruppen und vor dem Laden der Entitäten des Satzes der Einfügezyklusgruppen in das Zielsystem das Erzeugen des Satzes der Einfügezyklusgruppen unter Verwendung der noch nicht in die Einfügeblattgruppen aufgeteilten Entitäten durchgeführt wird, wobei nach dem Erzeugen des Satzes der Einfügezyklusgruppen und vor dem aufeinanderfolgenden Laden in das Zielsystem der Sätze der Einfügeblattgruppen der Entitäten und der Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten verbinden, Folgendes durchgeführt wird: Löschen der Abfolge (23); nach dem Löschen der Abfolge erneutes Starten des Aufteilens der Entitäten in die Einfügeblattgruppen, indem der Iterationsprozess ausgeführt wird, bei dem aufeinanderfolgende Iterationen (21) durchgeführt werden.
  6. Verfahren nach Anspruch 1, wobei das aufeinanderfolgende Laden der Sätze der Einfügeblattgruppen der Entitäten und der Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten verbinden, in das Zielsystem gemäß der Abfolge weiterhin aufweist: Aufteilen der Entitäten eines der Sätze der Einfügeblattgruppen in mindestens zwei Blattgruppenteile; und Laden jedes der mindestens zwei Blattgruppenteile in das Zielsystem durch ein gleichzeitiges Ausführen des Einfügens der Entitäten jedes der mindestens zwei Blattgruppenteile und der Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten in dem Zielsystem verbinden.
  7. Verfahren nach Anspruch 2, wobei das Laden der Entitäten des Satzes der Einfügezyklusgruppe in das Zielsystem aufweist: Aufteilen der Entitäten des Satzes der Einfügezyklusgruppen in mindestens zwei Zyklusgruppenteile; und Laden jedes der mindestens zwei Zyklusgruppenteile in die Zieldatenbank, indem das Einfügen der Entitäten jedes der mindestens zwei Zyklusgruppenteile in das Zielsystem gleichzeitig ausgeführt wird.
  8. Verfahren nach Anspruch 2, wobei das Laden in das Zielsystem der Fremdschlüsselbeziehungen, die die sekundären Datenwerte der Entitäten des Satzes der Einfügezyklusgruppen mit den entsprechenden primären Datenwerten verbinden, aufweist: Aufteilen der Fremdschlüsselbeziehungen, die die sekundären Datenwerte der Entitäten des Satzes der Einfügezyklusgruppen mit den entsprechenden primären Datenwerten verbinden, in mindestens zwei Beziehungsgruppenteile; und Laden jedes der mindestens zwei Beziehungsgruppenteile in das Zielsystem, indem das Einfügen der Fremdschlüsselbeziehungen jedes der mindestens zwei Beziehungsgruppenteile in das Zielsystem gleichzeitig ausgeführt wird.
  9. Verfahren nach Anspruch 1, das weiterhin aufweist: Erzeugen eines gerichteten Graphen (299), wobei jede Entität einem eindeutigen Knoten des Graphen entspricht, wobei jede Fremdschlüsselbeziehung einer eindeutigen Kante des Graphen entspricht, wobei für eine gegebene Fremdschlüsselbeziehung, die den entsprechenden sekundären Datenwert mit dem entsprechenden primären Datenwert verbindet, die Kante des Graphen an dem Knoten beginnt, der der Entität mit dem entsprechenden sekundären Datenwert entspricht, und an dem Knoten endet, der der Entität mit dem entsprechenden primären Datenwert entspricht.
  10. Computersystem (810) zum Laden von Daten (100, 101, 102, 103) in ein Zielsystem (820), wobei die Daten Entitäten aufweisen, wobei jede der Entitäten einen entsprechenden eindeutigen primären Datenwert und einen oder mehrere entsprechende sekundäre Datenwerte aufweist, wobei mindestens ein Teil der sekundären Datenwerte zugehörige Fremdschlüsselbeziehungen (115, 116, 117, 114) aufweist, wobei jede Fremdschlüsselbeziehung den entsprechenden sekundären Datenwert mit dem entsprechenden primären Datenwert einer anderen Entität verbindet, wobei das System verwendbar ist, um: die Entitäten in Einfügeblattgruppen aufzuteilen, indem ein Iterationsprozess ausgeführt wird, bei dem aufeinanderfolgende Iterationen durchgeführt werden, wobei das Ausführen jeder Iteration ein Erzeugen eines entsprechenden Satzes der Einfügeblattgruppen beinhaltet, wobei der entsprechende Satz der Einfügeblattgruppen alle Entitäten enthält, deren sekundäre Datenwerte entweder über keine Fremdschlüsselbeziehungen oder nur über eine oder mehrere Fremdschlüsselbeziehungen mit den primären Datenwerten der Entitäten der Einfügeblattgruppen verfügen, die bei der Ausführung einer vorherigen Iteration erzeugt wurden, wobei der Iterationsprozess ausgeführt wird, bis keine Entitäten mehr vorhanden sind, deren sekundäre Datenwerte entweder über keine Fremdschlüsselbeziehungen oder nur über eine oder mehrere Fremdschlüsselbeziehungen mit den primären Datenwerten der einen oder mehreren Entitäten der Einfügeblattgruppen verfügen, die bei der Ausführung einer vorherigen Iteration erzeugt wurden, wobei eine Abfolge zum Erzeugen der Sätze der Einfügeblattgruppen gespeichert wird; und die Sätze der Einfügeblattgruppen der Entitäten und die Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten verbinden, gemäß der Abfolge nacheinander in das Zielsystem zu laden.
  11. System nach Anspruch 10, wobei es sich bei mindestens einem Teil der Fremdschlüsselbeziehungen um zyklische Fremdschlüsselbeziehungen handelt, wobei die zyklischen Fremdschlüsselbeziehungen Entitäten, die die entsprechenden primären und sekundären Datenwerte aufweisen, die durch die zyklischen Fremdschlüsselbeziehungen verbunden sind, in einer oder mehreren Schleifen verbinden, wobei die Entitäten, die in einer oder mehreren Schleifen verbunden sind, eine oder mehrere Zyklusentitäten aufweisen, wobei, wenn alle Zyklusentitäten und die Fremdschlüsselbeziehungen, die die primären Datenwerte aller Zyklusentitäten mit den entsprechenden sekundären Datenwerten verbinden, als aus den Daten gelöscht gelten, die Daten keine Schleifen der Entitäten mehr aufweisen, wobei das System weiterhin verwendbar ist, um: einen Satz von Einfügezyklusgruppen zu erzeugen, wobei der Satz der Einfügezyklusgruppen alle Zyklusentitäten aufweist, wobei alle Zyklusentitäten und die Fremdschlüsselbeziehungen, die die primären Datenwerte aller Zyklusentitäten mit den entsprechenden sekundären Datenwerten verbinden, während eines Aufteilens der Entitäten in Einfügeblattgruppen als aus den Daten gelöscht gelten; vor dem aufeinanderfolgenden Laden der Sätze der Einfügeblattgruppen der Entitäten und der Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten in dem Zielsystem verbinden, die Entitäten des Satzes der Einfügezyklusgruppen in das Zielsystem zu laden; und nach dem aufeinanderfolgenden Laden der Sätze der Einfügeblattgruppen der Entitäten und der Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten in dem Zielsystem verbinden, die Fremdschlüsselbeziehungen in das Zielsystem zu laden, die die sekundären Datenwerte der Entitäten des Satzes der Einfügezyklusgruppen mit den entsprechenden primären Datenwerten verbinden.
  12. System nach Anspruch 11, wobei das System weiterhin verwendbar ist, um das Erzeugen des Satzes von Einfügezyklusgruppen, die alle Zyklusentitäten aufweisen, vor dem Aufteilen der Entitäten in die Einfügeblattgruppen durchzuführen.
  13. System nach Anspruch 11, wobei das System weiterhin verwendbar ist, um: nach dem Aufteilen der Entitäten in die Einfügeblattgruppen und vor dem Laden der Entitäten des Satzes der Einfügezyklusgruppen in das Zielsystem das Erzeugen des Satzes der Einfügezyklusgruppen unter Verwendung der noch nicht in die Einfügeblattgruppen aufgeteilten Entitäten durchzuführen; und nach dem Erzeugen des Satzes der Einfügezyklusgruppen und vor dem aufeinanderfolgenden Laden der Sätze der Einfügeblattgruppen der Entitäten und der Fremdschlüsselbeziehungen, die ihre sekundären Datenwerte mit den entsprechenden primären Datenwerten in dem Zielsystem verbinden, weiterhin das Aufteilen der Entitäten in die Sätze der Einfügeblattgruppen und das Speichern der Abfolge zum Erzeugen der Sätze der Einfügeblattgruppen durchzuführen.
  14. System nach Anspruch 10, wobei das System weiterhin verwendbar ist, um: einen gerichteten Graphen (229) zu erzeugen, wobei jede Entität einem eindeutigen Knoten des Graphen entspricht, wobei jede Fremdschlüsselbeziehung einer eindeutigen Kante des Graphen entspricht, wobei für eine gegebene Fremdschlüsselbeziehung, die den entsprechenden sekundären Datenwert mit dem entsprechenden primären Datenwert verbindet, die Kante des Graphen an dem Knoten beginnt, der der Entität mit dem entsprechenden sekundären Datenwert entspricht, und an dem Knoten endet, der der Entität mit dem entsprechenden primären Datenwert entspricht.
  15. Computerprogrammprodukt, insbesondere ein computerlesbares Medium, wobei das Computerprogrammprodukt über ein von einem Computer ausführbaren Code verfügt, der von einem Prozessor ausgeführt wird, welcher eine Vorrichtung steuert, wobei das Ausführen der Befehle den Prozessor veranlasst, das durch einen Computer implementierte Verfahren zum Laden von Daten in ein Zielsystem nach Anspruch 1 durchzuführen.
DE102014113693.4A 2013-10-10 2014-09-23 Verfahren und system zum laden von daten mit komplexen beziehungen Pending DE102014113693A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1317899.1 2013-10-10
GB1317899.1A GB2522832A (en) 2013-10-10 2013-10-10 A method and a system for loading data with complex relationships

Publications (1)

Publication Number Publication Date
DE102014113693A1 true DE102014113693A1 (de) 2015-05-21

Family

ID=49679829

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102014113693.4A Pending DE102014113693A1 (de) 2013-10-10 2014-09-23 Verfahren und system zum laden von daten mit komplexen beziehungen

Country Status (4)

Country Link
US (1) US9607021B2 (de)
CN (1) CN104572802B (de)
DE (1) DE102014113693A1 (de)
GB (1) GB2522832A (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10747731B2 (en) * 2017-07-20 2020-08-18 Vmware, Inc. Transferring data using unique identifiers of a table of a relational database
EP3605353B1 (de) * 2018-08-03 2021-09-29 Sap Se Verfahren und system zur datenübertragung zwischen datenbanken
CN109753537A (zh) * 2019-01-25 2019-05-14 中国人民大学 一种从关系数据到图数据的交互式数据迁移方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6456995B1 (en) 1998-12-31 2002-09-24 International Business Machines Corporation System, method and computer program products for ordering objects corresponding to database operations that are performed on a relational database upon completion of a transaction by an object-oriented transaction system
US6339777B1 (en) 1999-07-30 2002-01-15 International Business Machines Corporation Method and system for handling foreign key update in an object-oriented database environment
US6542883B1 (en) 2000-03-09 2003-04-01 International Business Machines Corporation Ordering relational database operations according to referential integrity constraints
EP1211610A1 (de) * 2000-11-29 2002-06-05 Lafayette Software Inc. Methode zum Organisieren von Daten und zum Bearbeiten von Anfragen in einem Datenbanksystem
US7548898B1 (en) 2001-02-28 2009-06-16 Teradata Us, Inc. Parallel migration of data between systems
US20050165866A1 (en) * 2004-01-28 2005-07-28 Bohannon Philip L. Method and apparatus for updating XML views of relational data
WO2006026659A2 (en) * 2004-08-31 2006-03-09 Ascential Software Corporation Services oriented architecture for data integration services
US7792817B2 (en) * 2005-04-19 2010-09-07 International Business Machines Corporation System and method for managing complex relationships over distributed heterogeneous data sources
US7536401B2 (en) 2006-08-07 2009-05-19 International Business Machines Corporation Methods, systems, and computer program products for using graphs to solve circular dependency in object persistence
US20080133493A1 (en) 2006-12-04 2008-06-05 Michael Bender Method for maintaining database clustering when replacing tables with inserts
US8010521B2 (en) 2009-03-23 2011-08-30 Sap Ag Systems and methods for managing foreign key constraints
US20110060719A1 (en) 2009-09-05 2011-03-10 Vivek Kapoor Method for Transforming Setup Data in Business Applications
US9020830B2 (en) 2011-03-08 2015-04-28 Apptio, Inc. Hierarchy based dependent object relationships
US20120265734A1 (en) * 2011-04-14 2012-10-18 Microsoft Corporation Incremental compilation of object-to-relational mappings
US9288104B2 (en) * 2011-10-25 2016-03-15 Nicira, Inc. Chassis controllers for converting universal flows
US8832068B2 (en) * 2012-05-22 2014-09-09 Eye Street Research Llc Indirect data searching on the internet

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"Handbook of combinatorial optimization", Ergänzungsband A, Kluwer Academic Publishers, SS. 209 bis 259

Also Published As

Publication number Publication date
CN104572802A (zh) 2015-04-29
GB201317899D0 (en) 2013-11-27
GB2522832A (en) 2015-08-12
CN104572802B (zh) 2018-01-12
US20150106381A1 (en) 2015-04-16
US9607021B2 (en) 2017-03-28

Similar Documents

Publication Publication Date Title
DE112010004652B4 (de) Zuverlässige Replikation mit hohem Durchsatz von umgewandelten Daten in Datensystemen
DE112012005037B4 (de) Verwalten von redundanten unveränderlichen Dateien unter Verwendung von Deduplizierungen in Speicher-Clouds
DE102016216843A1 (de) Verteiltes Zusammenführen von Dateien
DE202016005239U1 (de) Graph-basierte Abfragen
DE202015009874U1 (de) Implementierung semistrukturierter Daten als ein Datenbankelement erster Klasse
US20150310129A1 (en) Method of managing database, management computer and storage medium
DE102013207049A1 (de) Überwachen der Datenstrompufferung zur Optimierung der Operatorverarbeitung
DE102013216273A1 (de) Umwandlung von Datenbanktabellenformaten auf der Grundlage von Benutzerdatenzugriffsmustern in einer vernetzten Datenverarbeitungsumgebung
DE112015000347T5 (de) Verarbeiten von Datensätzen in einer Ablage für große Datenmengen
DE202010018481U1 (de) Asynchroner verteilter Objekt-Upload für replizierte Assoziativspeichercluster
DE102013200355A1 (de) Zusammenfügen von Dokumenten aud der Grundlage der Kenntnis eines Dokumentenschemas
DE202020005722U1 (de) Platzierung von adaptiven Aggregationsoperatoren und- Eigenschaften in einem Abfrageplan
DE102019131291B4 (de) Gleichzeitige ausführung von dienstleistungen
DE112019001480T5 (de) Automatisches Optimieren der Ressourcennutzung in einemZieldatenbankverwaltungssystem zum Erhöhen der Arbeitslastleistung
DE112017006106T5 (de) Erzeugen von, Zugreifen auf und Anzeigen von Abstammungsmetadaten
DE102013208930A1 (de) Zusammenfassen von Einträgen in einem Deduplizierungs-lndex
DE102017207686A1 (de) Einblicke in die belegschaftsstrategie
DE102013215530A1 (de) Detecting Multi-Column Composite Key Column Sets
DE102012209711A1 (de) Systeme und Verfahren zum Verwenden grafischer Darstellungen für die Verwaltung von Abfrageergebnissen
DE112013005993T5 (de) Verfahren, Vorrichtung und computerlesbares Medium für eine optimale Bestimmung von Daten-Teilmengen
DE112018000456T5 (de) Verwalten von umfangreichen Zuordnungsgruppen unter Verwendung von optimierten Bitmap-Darstellungen
DE102012223167A1 (de) Gemeinsame Nutzung von Artefakten zwischen kollaborativen Systemen
DE112011103367T5 (de) Replizieren von Daten
DE102012100113A1 (de) Verfahren, Software und Computersystem zur Handhabung von angesammelten Daten
DE102014113693A1 (de) Verfahren und system zum laden von daten mit komplexen beziehungen

Legal Events

Date Code Title Description
R123 Application deemed withdrawn due to non-payment of filing fee
R012 Request for examination validly filed
R073 Re-establishment requested
R074 Re-establishment allowed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0016000000

R016 Response to examination communication