DE4497149B4 - Computerbezogenes Verfahren zur Datenreplikation in Peer-to-Peer-Umgebung - Google Patents

Computerbezogenes Verfahren zur Datenreplikation in Peer-to-Peer-Umgebung Download PDF

Info

Publication number
DE4497149B4
DE4497149B4 DE4497149A DE4497149A DE4497149B4 DE 4497149 B4 DE4497149 B4 DE 4497149B4 DE 4497149 A DE4497149 A DE 4497149A DE 4497149 A DE4497149 A DE 4497149A DE 4497149 B4 DE4497149 B4 DE 4497149B4
Authority
DE
Germany
Prior art keywords
transaction
data
replication
database
call
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.)
Expired - Lifetime
Application number
DE4497149A
Other languages
English (en)
Other versions
DE4497149T1 (de
Inventor
Sandeep Belmont Jain
Dean Fremont Daniels
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.)
Oracle Corp
Original Assignee
Oracle 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 Oracle Corp filed Critical Oracle Corp
Application granted granted Critical
Publication of DE4497149B4 publication Critical patent/DE4497149B4/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/953Organization of data
    • Y10S707/954Relational
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99938Concurrency, e.g. lock management in shared database
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Abstract

Computerbezogenes Verfahren zur Datenreplikation in Peer-to-Peer-Umgebung (Umgebung mit gleichrangigen Arbeitsstationen), wobei das Verfahren folgende Schritte umfaßt:
Durchführen von Datenmodifikationen in einem ersten Computersystem und in einem zweiten Computersystem;
Erzeugen von Ausbreitungs- oder Weitergabeinformationen, die mit den Datenmodifikationen in dem ersten und zweiten Computersystem verknüpft sind, wobei die Ausbreitungs- bzw. Weitergabeinformationen wiederauffindbar und modifizierbar sind und Informationen einschließen, die eine in einem anderen Computersystem auszuführende Operation angeben; und
Durchführen einer bidirektionalen Replikation der Datenmodifikationen unter Verwendung der Ausbreitungs- bzw. Weitergabeinformationen, wobei die bidirektionale Replikation zwischen dem ersten Computersystem und dem zweiten Computersystem stattfindet und durch entweder das erste oder das zweite Computersystem initiiert wird, und wobei die bidirektionale Replikation in konsistenten Daten bezüglich des ersten und zweiten Computersystems resultiert,
Identifizieren von Ausnahmeereignissen während der Durchführung der Datenmodifikationen, wobei der Schritt des Durchführens von Datenmodifikationen von einer Prozedur durchgeführt wird und der Schritt des Identifizierens der Ausnahmeereignisse in...

Description

  • HINTERGRUNG DER ERFINDUNG
  • GEBIET DER ERFINDUNG
  • Diese Erfindung betrifft das Gebiet des Replizierens von Daten.
  • Weil Computersysteme an einem Ort mit anderen Orten kommunizieren können, greifen Computeranwendungen in wachsendem Maß auf Daten zu, die an vielen lokalen und entfernten Systemen angeordnet sind. In einem Nurlese-Modus (d.h. keine Datenmodifikationen), können Mehrfachkopien desselben Datenfeldes an mehreren Orten angeordnet sein, ohne daß Probleme bezüglich der Datenintegrität größer werden. Jedoch wird dann, wenn mehrere Benutzer an mehreren Systemorten beginnen, eine oder mehrere der Kopien derselben Datenfelder zu modifizieren, die Datenintegrität ein kritisches Problem.
  • Idealerweise sollte jeder Benutzer eine beliebige Kopie eines Datenfeldes modifizieren können, einhergehend mit der Möglichkeit, die Modifikation jeder Kopie desselben Datenfeldes automatisch zu einem beliebigen Ort weitergeben zu können. Bei Systemen nach dem Stand der Technik fehlt ein Bereitstellen dieser Art von Umgebung gleich behandelbarer Kopien (Peer-to-Peer-Umgebung).
  • Beispielsweise bieten einige Systeme eine "Master"-Kopie mit mehreren "Slave"-Kopien. Irgendwelche Abänderungen werden am "Master" durchgeführt und die "Slave"-Orte empfangen eine Kopie der abgeänderten Daten, nachdem die Abänderung am "Master" beendet ist. Somit muß ein Benutzer am "Slave"-Ort zum Abändern eines Datenfeldes auf die "Master"-Kopie zugreifen. Diese Technik bietet nicht die Möglichkeit, jede Kopie zu erneuern und die an jener Kopie durchgeführten Änderungen bzw. Modifikationen an alle anderen Kopien weiterzugeben.
  • Beispielsweise offenbart das US-Patent 4,077,059 von Cordi et al. ein Mehrfachverarbeitungssystem mit einem hierarchischen Speicher mit Protokollführung und Kopie-Hintergrundspeicher (copyback). Das hierarchische Speichersystem hat zwei Speichereinheiten auf jeder Ebene. Eine Haupteinheit enthält alle Daten für die Ebene und die andere Einheit, die Kopie-Hintergrundspeichereinheit, enthält die Änderungen, die an jenen Daten entweder durch eine Addition oder eine Modifikation durchgeführt worden sind. Die Haupteinheit hat eine Schnittstelle zu der nächsthöheren Ebene in der Hierarchie und ihrer Verarbeitungseinheit. Die Kopie-Hintergrundspeichereinheit überträgt die Datenänderungen zur niedrigeren Ebene, wenn die Haupteinheit der niedrigeren Ebene keine Schnittstelle zur nächsthöheren Ebene oder zur Verarbeitungseinheit bildet. Die Kopie-Hintergrundspeichereinheit ist kleiner als die Haupteinheit, um die nötigen Speichereinheiten auf jeder Ebene zu reduzieren. Da die Kopie-Hintergrundspeichereinheit kleiner als die Haupteinheit ist, ist es möglich, daß die Anzahl von Änderungen an den Daten der Haupteinheit die Kapazität des Kopie-Hintergrundspeichers übersteigt. Ein Überwachungsprogramm wird dazu verwendet, sicherzustellen, daß die Anzahl von Änderungen die Speicherkapazität der Kopie-Hintergrundspeichereinheit nicht übersteigt. Geeignete Maßnahmen werden unternommen, um die Anzahl von Änderungen im Kopie-Hintergrundspeicher zu reduzieren, wenn der Kopie-Hintergrundspeicher eine bestimmte Kapazität erreicht.
  • Das US-Patent 4,558,413 von Schmidt et al. offenbart ein Verwaltungssystem zum Verwalten von Softwareversionen, die erneuert bzw. upgedated sind und in bestimmten Speichervorrichtungen in einer verteilten Softwareumgebung eines lokalen Netzwerkes gespeichert sind. Das System sammelt und rekompiliert Versionen eines Softwareobjekts (d.h. Quellen- und Objektmodule), die an diesen Speichervorrichtungen im LAN angeordnet sind. Das kompilierte Programm wird in der verteilten Softwareumgebung verwendet. Das System enthält die zugehörigen Softwareobjekte: Version, eindeutiger Name, Erneuerungschronologie, Abhängigkeiten von (und Verbindungen zu) anderen Softwareobjekten und Standort.
  • Das Verwaltungssystem wird automatisch benachrichtigt, wenn Änderungen an einem Softwareobjekt durchgeführt werden.
  • Das US-Patent 4,631,673 von Haas et al. offenbart ein Verfahren zum Auffrischen von Tabellen mit mehreren Spalten in einer relationalen Datenbank. Haas zeigt ein Verfahren zum Auffrischen der Momentaufnahme (d.h. einer Nurlese-Kopie eines Basistabellenteils). Jeder Datensatz einer Basistabelle muß folgendes aufweisen: (1) einen Tupel-(d.h. eindeutigen)-Identifizierer TID, (2) die vorherigen Datensätze TID, PREVTID, und (3) eine "Zeitmarkierung" UID der letzten Abänderung der Datensätze. Die Momentaufnahme enthält den TID des entsprechenden Basistabellen-Datensatzes. Beim Auffrischen sendet die Momentaufnahme-Stelle die höchste UID, die von der Momentaufnahme gesehen wird. Die Basistabellenstelle identifiziert Änderungen basierend auf Werten von TID, PREVTID und UID. Haas beschreibt eine Master-Slave-Umgebung, durch die Änderungen an einem Master an Kopien weitergegeben werden.
  • Das US-Patent 4,635,189 von Kendall beschreibt ein verteiltes Echtzeit-Datenbankverwaltungssystem, das in einem Speicher eines Prozessors Kopien der Variablen speichert, die zum Laufenlassen der Programme in jenem Prozessor benötigt werden. Wenn eine Variable erzeugt wird, wird ein Prozessor zu dem Prozessor bestimmt, der den Wert jener Variable festlegt. Jede Variablenkopie wird auf periodischer Basis oder beim Auftreten eines definierten Zustandes durch den aktuellen Wert des ursprünglichen Wertes erneuert. Kendall beschreibt ein Verfahren einer derartigen Datenmanipulation, daß ein erster Prozessor eine ursprüngliche Variable in einem zweiten Prozessor adressieren kann und den aktuellsten Wert jener Variable derart führen kann, daß er beim Auftreten eines Zustandes in einem vierten Prozessor in einem dritten Prozessor gespeichert wird. Dann kann eine Bestätigungsnachricht zu einem fünften Prozessor gesendet werden.
  • Das US-Patent 4,646,229 von Boyle beschreibt ein Datenbanksystem, das zukünftige Versionen der Datenbank zur Anwendung bei zeitorientierten Anwendungen enthält, wie beispielsweise einer Anwendung zum Planen der Verwendung derselben Einrichtungen für gegenwärtige und zukünftige Benutzer. In der Datenbank wird die gesamte Information gehalten, die zum Darstellen der Datenbank-Inhalte zu gewünschten zukünftigen Zeitpunkten erforderlich ist. Alle Transaktionen (z.B. logische Arbeitseinheiten) werden bezüglich der Zeit markiert, um einen Zugriff auf die richtige Version der Datenbank sicherzustellen.
  • Das US-Patent 4,648,036 von Gallant betrifft ein Verfahren zum Steuern einer Anfrage- und Erneuerungsverarbeitung in einem Datenbanksystem. Insbesondere beschreibt Gallant ein Verfahren zum Sicherstellen, daß auf eine Anfrage hin Information empfangen wird, die die Datenbank entweder vor oder nach einer Erneuerung darstellt, nicht aber Information, die einen Zustand darstellt, nachdem die Erneuerung beginnt aber noch nicht beendet ist. Transaktionsmodifikationen werden bezüglich einer zukünftigen Datenbankstruktur durchgeführt. Am Ende der Modifikationen bzw. Abänderungen wird eine Umschaltung von der aktuellen Datenbankstruktur zur zukünftigen Datenbankstruktur durchgeführt. Ein Anfrageprozeß greift auf die aktuelle Datenbankstruktur zu.
  • Das US-Patent 4,714,992 von Gladney et al. betrifft ein Verfahren zum Verwalten einer Überalterung von Replikationen von Datenobjekten in einem verteilten Verarbeitungssystem. Datenbankobjekte an einer Quellenstelle werden auf eine Replizierstelle repliziert. Wenn an der Quellenstelle gespeicherte Objekte geändert werden, werden entsprechende Objekte an der Replizierstelle veraltet. Eine Replizierstelle erzeugt eine Anfrage nach einer Liste veralteter Objekte von der Quellenstelle. Gladney beschreibt eine Einrichtung zum Identifizieren der veralteten Objekte, zum Weiterleiten der Identifizierung der veralteten Objekte und zum Entfernen der veralteten Objekte von der Replizierstelle. Gladney beschreibt eine Master-Slave-Umgebung, durch die Änderungen an einem Master zu den Replikationen weitergegeben werden.
  • Das US-Patent 4,853,843 von Ecklund et al. beschreibt eine Mehrfachversions-Datenbank, wobei jede Erneuerungsoperation eine neue Version der Datenbank erzeugt und die älteren Versionen verfügbar bleiben. Mehrere alternative Versionspfade werden zurückbehalten. Ecklund beschreibt ein Verfahren zum Ableiten einer minimalen Gruppe von alternativen Versionspfaden. Wenn ein Teil erneuert wird, werden die Erneuerungen an mehreren Stellen in den Teilen synchron durchgeführt. Eine aus den Datenbankvorgeschichten abgeleitete Änderungsliste und virtuelle Teiländerungs-Vorgeschichten werden dazu verwendet, das Auftreten von Konflikten festzustellen. Ecklund beschreibt ein System zum Verbinden mehrerer Versionen eines Datenobjekts in eine verteilte Datenbank, so daß jeder Erneuerungsteil auf seine eigene Version zugreifen kann.
  • Das US-Patent 4,875,159 von Carev et al. beschreibt ein System zum Synchronisieren zweier Versionen von Dateien in einem Mehrprozessorsystem. Beide Versionen enthalten ein Synchronisationsende-Steuerfeld und ein Synchronisation-in-Arbeit-Feld. Das Synchronisationsendefeld zeigt an, daß die zugehörige Version synchronisiert ist, wenn sie eingestellt ist. Das Synchronisation-in-Arbeit-Feld zeigt an, daß die zugehörige Version gerade synchronisiert wird, wenn sie eingestellt ist. Wenn das Synchronisationsendefeld in einer oder beiden der Versionen gelöscht wird, wird das Synchronisation-in-Arbeit-Feld in einer der Versionen eingestellt. Dann wird eine temporäre Datei erzeugt, und eine Kopie der einen Version wird zur temporären Datei übertragen. Das Synchronisation-in-Arbeit-Feld der einen Version wird untersucht, nachdem die Übertragung beendet ist. Wenn das Synchronisation-in-Arbeit-Feld eingestellt ist, wird das Synchronisationsendefeld in der temporären Version eingestellt. Der temporären Version wird der Name der anderen der Versionen gegeben, und das Original dieser Version wird entfernt.
  • EPO 0,428,264 A2 von Boykin et al. offenbart ein Verfahren zum Erzeugen eines Zugriffsplans in einem Datenbanksystem, das einen Zweiebenencode zum Durchführen zuvor ausgewählter Beschränkungsprüfungen enthält. Datenbankzugriffsbefehle werden in Zugriffspläne kompiliert, die zur Laufzeit anstelle der Zugriffsbefehle zum Verbessern der Systemleistungsfähigkeit ausgeführt werden.
  • Roussopoulos, N. und Kang, H., "Principles and Techniques in the Design of ADMS±", IEEE, Dezember 1986, S. 19–25 beschreibt eine Technik zum Herunterladen von Datenbankobjekten von einem Großrechner zu einer Workstation, wenn die Workstation auf Daten im Großrechner zugreift. Ein Zugriff auf die lokale Datenbankuntergruppe wird an der Workstation durchgeführt. Datenbankobjekte, auf die von mehreren Workstations zugegriffen wird, sind global angeordnet. Erneuerungen am Großrechner werden protokolliert und inkrementell zugeführt, bevor eine Abfrage der involvierten Daten durchgeführt wird. Änderungen an den heruntergeladenen Objekten werden durch Beibehalten eines Sicherungsprotokolls durchgeführt, das aus Einträgen besteht, von denen jeder aus einer Operation (d.h. Einfügen oder Löschen), einem Tupel-Identifizierer und einem DI-Protokoll (d.h. entweder einem Zeiger auf eine Datei, die Löschungen enthält, oder einem Zeiger zu einem neu eingefügten Tupel) besteht.
  • IBM Technical Disclosure Bulletin, "Updating Loosely-Coupled SQL/DS Databases", Vol. 33, No. 6B, Nov. 1990, S. 395/396, beschreibt eine entfernte SQL/DS Update-Einrichtung, die einen Übertragungsmechanismus bereitstellt, der bei der Implementierung von verteilten Datenbankanwendungen Verwendung findet. Gemäß der Einrichtung werden Änderungen in eine Datenbank an einem Peer-Knoten zu den jeweils anderen Knoten innerhalb einer SQL-Peer-Gruppe weitergeleitet. Die SQL-Peer-Gruppe ist durch eine Tabelle in der SQL-Datenbank definiert, wobei ein Knoten zu mehreren SQL-Peer-Gruppen zugehörig sein kann. Die Mitglieder einer solchen Gruppe tauschen Informationen durch das Versenden von Updates über bestimmte Daten untereinander aus, wobei ein Datenbankserver Änderungen zu allen in der Tabelle gelisteten Mitgliedern weiterleitet. Die Einrichtung kann zwar eine Übergabe der Updates nicht garantieren, stellt jedoch eine günstige und bequeme Möglichkeit dar, Kommunikationspfade für Datenbank-Updates bereit zu stellen. Insbesondere verfügt die Einrichtung jedoch nicht über die Bereitstellung einer Mehrzahl von Konfliktroutinen, die nach einander aufrufbar sind.
  • Das US-Patent 5,170,480 von Mohan et al. bezieht sich auf die Erhaltung der Datenkonsistenz zwischen einer Ursprungs- und einer replizierten Datenbank durch Trennen von Redo-Datensätzen aus dem Transaktionsprotokoll der Ursprungsdatenbank in entsprechende Warteschlangen. Jede Warteschlange wird exklusiv mit jeweils einer anderen Warteschlange von parallelen Warteschlangen-Servern verbunden. Durch exklusive Abarbeitung der Redo-Datensätze in den Warteschlangen durch die replizierte Datenbank wird die replizierte Datenbank widerspruchsfrei zur Ursprungsdatenbank aufgrund eines blockierungsfreien Erneuerungsmechanismus, der die Seiten der replizierten Datenbank parallel verarbeitet. Es wird jedoch nicht die Bereitstellung von mehreren Konfliktroutinen zur Verhinderung Blockierungen offenbart.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Es ist daher eine Aufgabe der vorliegenden Erfindung, ein computerbezogenes Verfahren zur Datenreplikation in Peer-to-Peer-Umgebung (Umgebung mit gleichrangigen Arbeitsstationen) bereit zu stellen, bei dem ein konsistenter Datenbestand in der Umgebung trotz unterschiedlicher Modifikationen desselben Datensatzes an verschiedenen Computersystemen sicher gewährleistet ist.
  • Zur Lösung der Aufgabe wird gemäß der vorliegenden Erfindung ein Verfahren gemäß Patentanspruch 1 vorgeschlagen.
  • Die vorliegende Erfindung schafft die Möglichkeit zum Replizieren von an einer lokalen Stelle durchgeführten Änderungen (z.B. Einfügen, Löschen oder Erneuern bzw. Updaten) an mehreren entfernten Stellen in einer Peer-to-Peer-Umgebung bzw. einer Umgebung gleichrangiger Arbeitsstationen. Informationen bezüglich dieser Änderungen sind in einer Gruppe von Repliziertabellen enthalten. Somit können Änderungen sofort nach der Festschreibung (commitment) der Änderungsübertragung der ursprünglichen Transaktion an andere Stellen asynchron dupliziert oder verzögert werden, bis die entfernte Stelle verfügbar ist.
  • Die Repliziertabellen der vorliegenden Erfindung enthalten eine Transaktionstabelle, eine Transaktionsknotentabelle, eine Aufruftabelle, eine Aufrufknotentabelle und eine Ausnahmetabelle. Die Transaktionstabelle enthält Informationen über eine Transaktion. Die Transaktionsknotentabelle enthält einen Eintrag für jede entfernte Stelle, bei der eine Transaktion anzuwenden ist. Die Aufruftabelle enthält einen Eintrag für jedes Verfahren (d.h. Transaktions- oder Nichttransaktionsfolgen logischer Schritte), der zu entfernten Stellen zu replizieren ist. Die Aufrufknotentabelle identifiziert Knoten, an denen ein Verfahren ausgeführt wird. Die Ausnahmetabelle enthält Informationen bezüglich einer Ausnahme, die auftritt, wenn ein Replizierfahren an einer Datenstelle verarbeitet wird (z.B. eine Konflikt- oder Informationsnachricht).
  • Die vorliegende Erfindung schafft eine wertorientierte Replikation auf Zeilenebene und Spaltenebene. Eine Replikation auf Zeilenebene ändert eine entfernte Stelle basierend auf den alten und neuen Werten, die in einer Reihe bzw. Zeile an einer Ursprungsstelle enthalten. sind. Eine Replikation auf Spaltenebene ändert eine entfernte Stelle basierend auf den Spaltenwerten an einer Ursprungsstelle.
  • Weiterhin schafft eine Replikation auf Zeilenebene und Spaltenebene die Möglichkeit, konkurrierende Änderungen an der entfernten Stelle zu identifizieren. Eine Triggerung bzw. Auslösung oder ein Start (d.h. ein Verfahren) wird jedesmal dann durchgeführt, wenn eine Abänderung an einem Datenfeld durchgeführt wird. Eine Triggerung (trigger) ordnet Einträge in den Repliziertabellen in Warteschlangen an. Die Tabelleneinträge halten Informationen zurück, so daß die ursprüngliche(n) Änderung(en), die zu einem Datenfeld gehört (gehören), zu entfernten Kopien derselben Datenfelder weitergegeben werden können. Die neuen Werte können mit den Werten verglichen werden, die in den entfernten Kopien enthalten sind, um alle Änderungen zu identifizieren, die verloren werden könnten, wenn die aktuelle Änderung zugefügt wird.
  • Die vorliegende Erfindung schafft weiterhin eine logik-orientierte Replikation auf Verfahrensebene. Das Replizieren auf Verfahrensebene ändert eine entfernte Stelle basierend auf den logischen Operationen, die zum Ändern von Daten an der Ursprungsstelle verwendet werden. Das Replizieren auf Verfahrensebene schafft genausogut die Möglichkeit zum Identifizieren kollidierender Erneuerungen (updates). Somit können dieselben logischen Operationen, die an einer Kopie eines Datenfeldes durchgeführt werden, zu allen anderen Kopien desselben Datenfeldes weitergegeben werden.
  • Informationen bezüglich Kollisionen, die durch die vorliegende Erfindung identifiziert werden, können in den Repliziertabellen zurückbehalten werden. Die in den Repliziertabellen enthaltene Information kann sofort oder nachfolgend zum Adressieren irgendwelcher durch die vorliegende Erfindung erfaßte Kollisionen verwendet werden. Das Replizieren auf Verfahrensebene schafft die Möglichkeit zum Adressieren von Kollisionen und anderen Ausnahmen in dem Verfahren, das zu den entfernten Datenstellen repliziert und bei ihnen ausgeführt wird. Die vorliegende Erfindung schafft weiterhin die Möglichkeit zum Wiederaufheben (rollback) irgendwelcher durchgeführter Änderungen, wenn eine Kollision bzw. ein Konflikt identifiziert wird.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 stellt eines oder mehrere Computersysteme an einer oder mehreren Stellen dar, die jeweils Kopien von Datenfeldern enthalten.
  • 2A stellt die Struktur der an einer Stelle gespeicherten Datenfelder dar.
  • 2B und 2C stellen eine normale Transaktion und durch die normale Transaktion erneuerte Abtastdaten dar.
  • 2D stellt eine Replikation der an mehreren Datenstellen verarbeiteten Transaktionen dar.
  • 3 stellt Repliziertabellen dar.
  • 4 stellt einen Verfahrensablauf einer Triggerung dar.
  • 5A5C stellt einen Verfahrensablauf für Änderungsoperationen an lokalen und entfernten Kopien von Datenfeldern dar.
  • 6 und 7 stellen eine Technik zum Eingeben von Replizierinformation in die Repliziertabellen dar.
  • 8A8B stellen Repliziertabellen mit einer Zeilenebenen-Replizierinformation dar.
  • 9A9B stellen Verfahren dar, die ein Verfahrensebenen-Replizieren verwenden.
  • 10 stellt Repliziertabellen dar, die eine Verfahrensebenen-Replizierinformation enthalten.
  • 11A11B stellen die Ausführung verzögerter entfernter Transaktions- und Nicht-Transaktionsverfahrensaufrufe dar.
  • 12 stellt einen Ausnahme-Arbeitsablauf dar.
  • 13 stellt einen Rekonstruktions-Arbeitsablauf dar.
  • DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
  • Es wird ein Verfahren und eine Vorrichtung für ein Replizieren von Daten beschrieben. In der folgenden Beschreibung sind zahlreiche spezifische Einzelheiten gezeigt, um eine genauere Beschreibung der vorliegenden Erfindung zu liefern. Es ist einem Fachmann auf dem Gebiet jedoch klar, daß die vorliegende Erfindung ohne diese spezifischen Einzelheiten ausgeführt werden kann. Andererseits sind wohlbekannte Merkmale nicht detailliert beschrieben, damit die Erfindung nicht undeutlich wird.
  • In einer Netzwerkumgebung, die aus einer oder mehreren Stellen besteht (z.B. Datenbankserver oder Computerplätze), können duplizierte Kopien derselben Daten an mehr als einer Stelle vorhanden sein (z.B. an einem oder mehreren Datenbankservern oder Computersystemen). 1 zeigt ein Beispiel einer Netzwerkumgebung, die kopierte Daten enthält, die an mehreren Stellen vorhanden sind. Eine Datenstelle A 100 kann irgendeine Art von Computersystem sein (z.B. ein vernetzter Datenbankserver, ein Großrechnersystem oder ein Personalcomputer-System). Gleichermaßen kann eine Datenstelle B 110 irgendeine Art von Computersystem sein. Die Datenstelle A 100 enthält eine Datenbank A 120. Die Datenstelle A 100 und die Datenstelle B 110 sind über eine Kommunikationsverbindung 125 miteinander verbunden.
  • Anfangs enthält die Datenbank B 130, die an der Datenstelle B 110 angeordnet ist, eine duplizierte Kopie der Datenbank A 120. Somit ist eine Kopie desselben Datenfeldes an beiden Stellen verfügbar. Das bedeutet, daß ein Benutzer, der auf die Datenbank A zugreift, ein Datenfeld (z.B. eine Anzahl von Besen im Lagerbestand) an der Datenstelle A 100 lesen kann, während ein anderer Benutzer auf die Anzahl verfügbarer Besen durch Lesen von Information zugreifen kann, die an der Datenstelle B 110 vorhanden ist. Solange ein Benutzer A und ein Benutzer B auf die verfügbare Menge in einem Datenfeld in einem Nurlese-Modus zugreifen, bleibt der Wert dieses Datenfeldes an beiden Stellen konstant und daher konsistent.
  • 2A stellt eine Datenbank A 120 dar. Die Datenbank A 120 enthält zwei Relationen oder Tabellen. Die Lagerbestandstabelle 202A enthält zwei Felder. Ein Feld für Artikel 204A und ein Feld für die verfügbare Menge (qoh = QuantityOnHand) 204B. Die Felder für Artikel und die verfügbare Menge weisen die Information für jeden in der Lagerbestandstabelle 202A enthaltenen Lagerbestand auf. Eine Bestell- bzw. Auftragstabelle 202B enthält Bestell- bzw. Auftragsinformation, die zu einer Bestellung bzw. einem Auftrag eines Kunden gehören (z.B. Ursprungsort; Kunde, der die Bestellung aufgibt; bestellter Artikel; Menge eines bestellten Artikels; und ob die Bestellung durch den verfügbaren Lagerbestand erfüllt werden kann). Jede Tabelle enthält Einträge oder Reihen. Beispielsweise enthält die Lagerbestandstabelle 202A drei Einträge 206A206C.
  • In 2B enthält eine Datenbank B 130 wie die Datenbank A eine Lagerbestands- und eine Bestell- bzw. Auftragstabelle. Weiterhin enthalten die Datenbank A und die Datenbank B identische Einträge und Werte für jeden Eintrag. 2B zeigt weiterhin eine Gruppe von Schritten, die dazu verwendet werden kann, die in entweder der Datenbank A oder der Datenbank B enthaltenen Daten zu ändern.
  • Diese Gruppe von Schritten, nämlich eine typische Bestell- bzw. Auftragstransaktion (d.h. Aufgabe einer Bestellung bzw. Vergabe eines Auftrags), besteht aus Schritten zum Prüfen der verfügbaren Menge, um die Menge des bestellten Arikels im Lager festzustellen, zum Erneuern der verfügbaren Menge in der Lagerbestandstabelle (d.h. dann, wenn die verfügbare Menge > die bestellte Menge ist), und zum Einfügen eines Eintrags in die Bestelltabelle zum Anzeigen der Bestellung. Dieses Verfahren ist in den Schritten 1 und 2 der in 2B gezeigten grundsätzlichen Bestelltransaktion gezeigt.
  • Der Endschritt in der grundsätzlichen Bestelltransaktion, der Übertragungsschritt, ist bei der Transaktionsverarbeitung ein impliziter Schritt. Er liefert die Möglichkeit, irgendwelche Änderungen vorzunehmen, die an den Tabellen für Dauer durchgeführt worden sind. Vor einem Ausführen einer Übertragung (d.h. einem Dauerhaftmachen der Tabellenänderungen), können die an den Lagerbestands- und Auftragstabellen durchgeführten Änderungen zurückgenommen werden.
  • 2B stellt den Anfangszustand der Tabellen in zwei Datenbanken dar. Jedoch können die Benutzer A und B die Tabellen unter Verwendung der grundsätzlichen Auftragstransaktion erneuert. Das bedeutet, daß die Auftragstransaktion dann, wenn der Benutzer A einen Auftrag bzw. eine Bestellung von einem Kunden (z.B. ein Kunde 10 bestellt fünfzig Produkte) und die Auftragstransaktion an der Stelle A (d.h. der Datenbank A) aufruft, die Lagerbestands- und die Auftragstabelle in der Datenbank A erneuert. Die Datenbank B wird unverändert bleiben. Somit ist nach einer Auftragsverarbeitungstransaktion durch den Benutzer A die Datenbank B nicht länger identisch zur Datenbank A.
  • 2C stellt die resultierenden Datenbanken dar, nachdem beide Benutzer A und B die Auftragstransaktion verwenden, um einen Auftrag zu verarbeiten, der an ihren jeweiligen Stellen empfangen wird. Beispielsweise empfängt der Benutzer A einen Auftrag für fünfzig Produkte vom Kunden 10. Der Benutzer A ruft die Auftragstransaktion auf. Die Auftragstransaktion erneuert die Lagerbestandstabelle (d.h. das Feld für die verfügbare Menge, das zum Lagerbestandsartikel "Produkt" gehört) und die Auftragstabelle (d.h. fügt einen Eintrag zum Anzeigen des Auftrags hinzu) in der Datenbank A. Gleichermaßen ruft der Benutzer B die Auftragstransaktion zum Verarbeiten des Auftrags auf, der von einem Kunden 11 an der Stelle B empfangen wird (d.h. für vierzig "Produkte"). Die von B aufgerufene Transaktion erneuert die Lagerbestandstabelle und die Auftragstabelle in der Datenbank B.
  • Beide Aufträge bestanden aus einer Bestellung von Produkten. Der Kunde 10 bestellte fünfzig Produkte und der Kunde 11 bestellte vierzig Produkte. Daher wurden insgesamt neunzig Produkte verkauft. Jedoch zeigt die Datenbank A die Bestellung des Kunden 11 nicht an, und die Datenbank B zeigt die Bestellung des Kunden 10 nicht an. Somit zeigt jede Datenbank nur die Bestellungen an, die durch einen der Benutzer (d.h. A oder B) verarbeitet werden, und zeigt daher nicht alle Bestellungen, die an allen Orten verarbeitet worden sind.
  • Somit gibt es eine Notwendigkeit dafür, eine lokale Änderung zu allen entfernten Kopien desselben Datenfeldes weiterzugeben. Die vorliegende Erfindung schafft diese Möglichkeit zum Replizieren der Datenänderungen, die an einer Stelle gemacht worden sind, zu anderen Stellen. Somit werden die in 2C dargestellten Datenbanken an andere Orte repliziert, so daß Änderungen aufgrund einer Auftragstransaktion an einer Stelle zu anderen Stellen geführt werden und die Datenfelder wieder konsistent sind.
  • 2D stellt den Zustand der zwei Datenbanken dar, bevor und nachdem die Replizierfähigkeiten der vorliegenden Erfindung benutzt werden. Vor einem Replizieren zeigen die zwei Datenbanken nur die lokal verarbeiteten Auftragstransaktionen an (d.h. die Datenbank A zeigt die Auftragstransaktion des Benutzers A und die Datenbank B zeigt die Auftragstransaktion des Benutzers B) und nicht die bei einer entfernten Datenbank verarbeiteten Auftragstransaktionen (z.B. die Datenbank B ist für den Benutzer A eine entfernte Datenbank).
  • Nach dem Replizieren von der Datenbank B zur Datenbank A und von der Datenbank A zur Datenbank B werden die Datenänderungen durch den Benutzer A an der lokalen Datenbank des Benutzers A (d.h. der Datenbank A) und an der Datenbank B (d.h. der entfernten Stelle) gezeigt. Gleichermaßen werden die Datenänderungen durch den Benutzer B sowohl an der lokalen als auch an den entfernten Stellen gezeigt. Der Wert der verfügbaren Menge an Produkten in beiden Datenbanken zeigt die gesamte Abnahme der verfügbaren Menge, die zu beiden Bestellungen gehört. Weiterhin zeigen die Auftragstabellen in beiden Datenbanken beide empfangene Bestellungen an.
  • Die vorliegende Erfindung schafft die Möglichkeit zum Replizieren von Daten auf der Zeilenebene und auf der Verfahrensebene. Das Replizieren nach der Zeilenebene (d.h. das wertorientierte Replizieren) wird durch Verbinden einer Triggerung mit einer Tabelle (z.B. der Lagerbestandstabelle) erreicht. Eine Triggerung ist ein Verfahren, das dann ausgeführt wird, wenn eine Änderung (z.B. eine Erneuerung, ein Einfügen oder ein Löschen) bei einer Reihe bzw. Zeile in einer Tabelle auftritt. Eine Triggerung identifiziert einen verzögerten entfernten Verfahrensaufruf (DRPC), der als seine Argumente die alten Werte, die neuen Werte und die Operation (z.B. Einfügen, Löschen oder Erneuern) hat.
  • Ein Replizieren auf Verfahrenebene gibt eher die Operation als die Zeilenwerte weiter (z.B. logikorientiert). Nachdem ein Verfahren an der Ursprungsstelle ausgeführt ist, verzögert das Verfahren einen Aufruf zu sich selbst an einer anderen Stelle. Der DRPC wendet die logische Erneuerung des ursprünglichen Verfahrens an einer entfernten Stelle an. Das Replizieren auf Verfahrenebene erfordert weniger Netzverkehr als das Replizieren auf Zeilenebene, da ein DRPC für mehrere Tabellen verwendet werden kann.
  • Änderung, Identifikation und Zurückbehaltung
  • Zum Weitergeben der Änderungen, die an Datenfeldern in einer Datenbank durchgeführt werden, zu denselben Datenfeldern in einer anderen Datenbank, ist es nötig, die Änderungen zurückzuhalten, bis sie an den anderen Stellen durchgeführt werden können. Verfahren nach dem Stand der Technik verwenden ein Transaktions-Wiedergewinnungsprotokoll (d.h. ein Protokoll zum nochmaligen Durchführen) zum Zurückhalten und Identifizieren der Datenbankänderungen für eine Ausbreitung bzw. Weitergabe. Jedoch war das Protokoll zur nochmaligen Durchführung ursprünglich für die Anwendung von Transaktionen in einem einzelnen Datenbanksystem gedacht und enthält eine "Undo"-Information (= Information zum Nicht-Ausführen) (d.h. eine Information, die dazu verwendet werden kann, an Daten durchgeführte Änderungen aufzuheben, nachdem ein Ereignis wie beispielsweise ein Systemausfall auftritt).
  • Beispielsweise kann ein "Redo"-Protokoll (= Protokoll zur nochmaligen Ausführung) bei einer einzelnen Kopie der Daten verwendet werden, um bezüglich einer Datenbank durchgeführte Änderungen durch eine oder mehrere Transaktionen ungeschehen zu machen, wenn ein System- oder ein Anwendungsfehler auftritt. Wenn auf einen solchen Fehler gestoßen wird, müssen die Transaktionserneuerungen, die vor dem Fehler durchgeführt sind (und irgendwie mit dem Fehler in Zusammenhang stehen), ungeschehen gemacht werden, um die Datenintegrität beizubehalten, die vor den Erneuerungen existiert. Jedoch wurde das Protokoll zum nochmaligen Ausführen nicht zum Fangen von Änderungsinformation für eine Ausbreitung zu einem zweiten Datenbanksystem entwickelt. Somit tritt dann, wenn das Protokoll für seinen beabsichtigten Zweck wie auch als Mittel zum Replizieren von Daten verwendet wird, ein Speicherverwaltungsproblem auf, weil ein Protokoll für ein nochmaliges Ausführen, das zum Zurückhalten von Ausbreitungsinformation verwendet wird, niemals in den Offline-Betrieb umgeschaltet werden kann (d.h. dazu gebracht, daß das Datenbanksystem nicht darauf zugreifen kann).
  • Im Gegensatz zu den Systemen nach dem Stand der Technik bietet die vorliegende Erfindung eine Ausbreitungs- bzw. Weitergabe-Identifikationsfähigkeit, die auf dieselbe Weise wie jede andere Tabelle oder Relation verwaltet werden kann, die durch einen Datenbankverwalter verwaltet wird. Die vorliegende Erfindung bietet die Möglichkeit, die Ausbreitungsinformation in Tabellen im Datenbanksystem zu codieren. Die in diesen Tabellen gespeicherten Informationen können wie alle anderen Daten innerhalb des Datenbanksystems wiedergewonnen werden, und auf sie kann jederzeit zugegriffen werden.
  • Die Tabellen enthalten die zum Replizieren einer Datenänderung zu anderen Datenstellen nötige Information. Beispielsweise enthalten die Tabellen auf einen DRPC bezogene Information, ihren Replizierzielort, die Transaktion, von der der DRPC ein Teil ist, die Reihenfolge, in der ein DRPC innerhalb einer Verzögerungs-Transaktion ausgeführt wird, die Reihenfolge, bei den Transaktionen relativ zu anderen Transaktionen ausgeführt werden, und die durch jeden DRPC verwendeten Argumente. Die vorliegende Erfindung verwendet folgende Tabellen: Transaktions-, Transaktionsknoten-, Aufruf-, Aufrufknoten- und Ausnahmetabellen. 3 stellt eine Zusammensetzung dieser Tabellen dar. Aufgrund der Vielseitigkeit der vorliegenden Erfindung (z.B. wird eine Replizierinformation in Relationen gespeichert) kann zusätzliche Information zu diesen Relationen hinzugefügt werden.
  • - Transaktionstabelle -
  • Die Transaktionstabelle enthält Informationen über Transaktionen, die an den Daten durchgeführt werden und die auf irgendeine Weise verzögerte entfernte Verfahrensaufrufe (d.h. DRPC) verwenden. Die Transaktionstabelle besteht aus folgenden Feldern: einem Transaktionsidentifizierer, einer Lieferreihenfolgennummer (DON), einer Startzeit, einem Verzögerungs-Benutzeridentifizierer und einer Zielortliste. Der Transaktionsidentifizierer ("Transaktions_Id") ist ein eindeutiger Identifizierer, der jeder Transaktion zugeordnet wird. Der Transaktions_Id identifiziert weiterhin eindeutig die ursprüngliche Datenbank für verzögerte Transaktionen. Der Transaktions_Id ist der primäre Schlüssel für die Transaktionstabelle (d.h. den Wert, der einen Eintrag in dieser Relation eindeutig identifiziert). Die Zielortliste steuert, ob Zielorte für eine Transaktion beschrieben sind, durch die Aufrufknotentabelle oder externe Führungstabellen.
  • Die DON ist eine Abstraktion einer Systemänderungsnummer. Eine DON zeigt die Übertragungsablauffolge einer Transaktion in Relation zu allen anderen Transaktionen, die in der Transaktionstabelle aufgelistet sind. Die DON berücksichtigt die Teil-Reihenfolge der Übertragung der Transaktionen in der Verzögerungs-Datenbank. Somit ist dann, wenn eine Transaktion Eins T1 dieselben Daten wie eine Transaktion Zwei T2 betrifft und T2 vor T1 übertragt, die DON der Transaktion Zwei (D2) kleiner als die DON von T1 (D1).
  • Das Zeitfeld zeigt die Zeit, zu der die Transaktion begonnen wurde, und das Verzögerungs-Benutzerfeld identifiziert den Benutzer, der den Verfahrensaufruf der verzögerten Transaktion initiierte. Diese Information kann dazu verwendet werden, einen Zugriff zu überwachen und zu steuern (z.B. aus Sicherheitsgründen). Beispielsweise kann vor einem Durchführen irgendwelcher Änderungen an den Daten an einer entfernten Stelle eine Überprüfung durchgeführt werden, um zu bestimmen, ob der Verzögerungs-Benutzer die Zugriffsprivilegien hat, die die Änderung an der entfernten Stelle zulassen würden.
  • Die durch die vorliegende Erfindung geschaffene Replizierfähigkeit bietet die Fähigkeit zum Ändern aller oder eines beliebigen Teils der durch eine Transaktion geänderten Daten durch eine Stellenspezifikation. Das bedeutet, daß eine verzögerte Transaktion aus einer Untergruppe der Aufrufe bestehen kann, die durch die ursprüngliche Transaktion für eine beliebige gegebene Zielortstelle verzögert sind. Beispielsweise kann eine Auftragstransaktion an einer Stelle A eine Auftrags- und eine Lagerbestandstabelle erneuern, und die replizierte Transaktion an der Stelle B kann nur die Auftragstabelle erneuern.
  • Eine Aufrufknotentabelle kann dazu verwendet werden, Transaktionsaufrufe zu definieren, die an einer gegebenen Stelle angewendet werden. Zusätzlich kann ein beliebiger Führungsmechanismus verwendet werden. Beispielsweise kann eine Abbildung von Aufrufen zu Zielorten gemäß dem Namen der Verfahren definiert werden, die gerade verzögert werden. Das Zielortlistenfeld der Transaktionstabelle zeigt den verwendeten Abbildungsmechanismus (z.B. eine Aufrufknotentabelle oder einen anderen Führungsmechanismus).
  • - Transaktionsknotentabelle -
  • Die Transaktionsknotentabelle (d.h. Zielorttabelle) identifiziert die Knoten oder entfernten Stellen, an denen die in der Transaktionstabelle enthaltenen Transaktionen auszuführen sind. Die Transaktionsknotentabelle enthält einen Eintrag für jeden Knoten (z.B. eine entfernte Stelle), bei dem eine Transaktion auszuführen ist.
  • Der Transaktionsidentifizierer ("Transaktions_Id") hat dieselbe Definition wie dasselbe Feld in der Transaktionstabelle. Der Zielortknoten ("Zielort_Knoten") identifiziert die Knoten (d.h. die entfernten Datenbanken), bei denen die Transaktion auszuführen ist, um die Änderungen zu replizieren, die durch die Transaktion an der lokalen Datenstelle durchgeführt sind. Somit kann derselbe Transaktions_Id zum Zugreifen auf einen Eintrag in der Transaktionstabelle und auf irgendeinen entsprechenden Eintrag oder entsprechende Einträge in der Transaktionsknotentabelle verwendet werden. Weiterhin identifiziert ein Eintrag in der Transaktionsknotentabelle einen der entfernten Orte, zu denen die Transaktionsänderung auszubreiten bzw. weiterzugeben ist. Eine Kombination aus Transaktionsidentifizierer und Zielortknoten kann einen Eintrag in der Transaktionsknotentabelle eindeutig identifizieren.
  • - Aufruftabelle -
  • Wie es in dem zuvor gezeigten Auftragsverarbeitungsbeispiel dargestellt ist, können Transaktionen (d.h. eine logische Arbeitseinheit) aus Schritten oder Verfahren (z. B. Auftragsvergabe und Lagerbestandsprüfung) zusammengesetzt sein. Bei einer Software, die diese Schritte codiert, kann jeder von ihnen als einzelnes Verfahren zum Schaffen einer zusätzlichen Struktur für eine Anwendung angesehen werden. Weiterhin können Verfahren definiert werden, ohne daß sie ein Teil einer Transaktion sind. Informationen bezüglich jedes Verfahrenstyps sind in der Aufruftabelle zurückgehalten. Die Aufruftabelle enthält einen eindeutigen Identifizierer, einen Aufrufidentifizierer ("Aufruf_Id"), der einen Aufruf innerhalb einer Transaktion bestellen kann, oder nicht ausführbare DRPC in Relation zu allen anderen.
  • Wie die Transaktions- und Transaktionsknotentabellen enthält die Aufruftabelle einen Transaktionsidentifizierer. Für Transaktions-DRPCs hat der Transaktionsidentifizierer dieselbe Definition wie das Transaktionsidentifiziererfeld in den Transaktions- und Transaktionsknotentabellen. Für Nicht-Transaktions- bzw. stationäre DRPCs wird das Transaktionsidentifiziererfeld nicht verwendet.
  • Der Verzögerungsverfahrensidentifizierer ("Verfahrens_Id") identifiziert das Verfahren oder den Aufruf (d.h. eine Reihe von Programmschritten), der an einem entfernten Ort bzw. einer entfernten Stelle auszuführen ist. Beispielsweise kann der Verzögerungsverfahrensidentifizierer eine Zeichenkette sein, die den Namen des Verfahrens enthält. Er sollte auch ein im System vorgesehener eindeutiger Identifizierer sein, der die Stelle (z.B. Speicheradresse) des Verfahrens enthält. Die Parameterzahl identifiziert die Anzahl von Parametern (Werte, die in das Verfahren zur Anwendung während der Ausführung des Verfahrens geführt werden) für ein Verfahren.
  • Das Parameterfeld (Parameter) ist eine langreihige Bytekette, die die Parameter für den Eintrag in die Aufruftabelle enthält. Das Format des Feldes ist wie folgt: <tc1><Länge1><Wert1><tc2><Länge2><Wert2><...<tcn><Längen><Wertn><0>
  • Wobei:
    <tci> der Parametertypcode für den i-ten Parameter ist (d.h. ob der Parameter vom Typ einer Nummer, eines Zeichens, eines Datums, eines Reihenidentifizierers oder Null ist);
    <Längei> der binäre ganzzahlige Wert von zwei Bytes der Länge des Wertes i ist (Länge von Null zeigt einen Parameterwert von Null);
    <Werti> der Parameterwert ist;
    <0> ein Einzelbyte-Wert ist, der das Ende der Kette anzeigt.
  • - Aufrufknotentabelle -
  • Die Aufrufknotentabelle enthält eine Reihe für jeden Zielort jedes verzögerten Aufrufs, wenn der Zielort nicht durch eine externe Führungstabelle definiert ist. Die Aufrufknoten ermöglichen die Fähigkeit, eine Transaktion zu replizieren, die aus mehreren Verfahrensaufrufen besteht, durch Spezifizieren der Ausführung eines oder aller Aufrufe an einem gegebenen Ort. Wenn Aufrufzielorte nicht durch eine externe Führungsstruktur definiert sind, werden Aufrufknoten durch den Verzögerungs-Benutzer spezifiziert, und zwar entweder mit dem verzögerten Aufruf als Transaktionsfehler-Zielorte oder als vom System bestimmte Zielorte. Wenn eine verzögerte Transaktion zu einem Zielort gesendet wird, wird die Aufrufknotentabelle gefragt, jene Aufrufe auszuwählen, die als Teil der verzögerten Transaktion am Zielort auszuführen sind.
  • Der Transaktionsidentifizierer und der Aufrufidentifizierer sind dieselben wie jene in der Aufruftabelle. Das Zielortknotenfeld identifiziert den Knoten, bei dem die Ausführung eines Verfahrens verzögert wird.
  • - Parametertabelle -
  • Bei einem anderen Ausführungsbeispiel kann eine Tabelle dazu verwendet werden, die Parameter für einen Aufruf zurückzuhalten, anstatt die Parameter in der Aufruftabelle zu speichern. Bei diesem Ausführungsbeispiel enthält die Parametertabelle einen Eintrag für jeden Parameter, der durch einen Eintrag in der Aufruftabelle verwendet wird. Das bedeutet, daß es für jeden Aufruf, der Parameter enthält, einen oder mehrere Einträge in der Parametertabelle gibt. Jeder Eintrag in der Parametertabelle enthält einen Parameter für einen Eintrag in der Aufruftabelle.
  • Die Parametertabelle enthält einen Aufrufidentifizierer ("Aufruf_Id"). Wie die Aufruftabelle identifiziert der Aufrufidentifizierer einen Verfahrensaufruf. Ein Verfahrensaufruf mit mehr als einem Parameter enthält eine Reihenfolgeliste von Parametern. Die Parameterzahl ("Parameter_Zahl") kann daher eine Stelle in einer Reihenfolgeliste von Parametern des Verfahrensaufrufs identifizieren. Ein Aufrufidentifizierer- und Parameterzahl-Paar kann einen Eintrag in der Parametertabelle eindeutig identifizieren. Das Typenfeld enthält einen Code, der den Parametertyp anzeigt. Das bedeutet, daß das Typenfeld anzeigt, ob der Parametertabelleneintrag eine Zahl, ein Zeichen, ein Datum oder ein Reihenidentifizierer ist.
  • Nur eines der übrigen Felder (d.h. Zahl, Zeichen, Daten, Reihenidentifizierer) wird für jeden Eintrag in der Tabelle verwendet. Das bedeutet, daß dann, wenn der Parameter eine Zahl ist, der Wert des Parameters im Zahlenfeld bzw. Nummernfeld gespeichert wird. Gleichermaßen wird dann, wenn der Parameter vom Zeichentyp ist, der Wert des Parameters im Zeichenfeld gespeichert. Ein Datum-Parameterwert wird im Datumfeld gespeichert. Eine Reihenidentifiziererinformation (d.h. Identifizierer, der eine Reihe innerhalb einer Tabelle spezifiziert) wird im Reihenidentifiziererfeld gespeichert.
  • - Ausnahmetabelle -
  • Die Ausnahmetabelle wird dazu verwendet, zu irgendeiner Ausnahme oder irgendeinem Ereignis während Ausführungen einer verzögerten Transaktion gehörende Information zu speichern. Diese Information kann nachfolgend geprüft werden, und das außergewöhnliche Ereignis kann adressiert werden. Beispielsweise können mehrere kollidierende Erneuerungen bezüglich unterschiedlicher Kopien replizierter Daten auftreten. Somit kann eine Transaktion T1 eine Kopie eines Datensatzes A, nämlich C1, erneuern, und eine zweite Transaktion T2 kann eine zweite Kopie des Datensatzes A, nämlich C2, erneuern. Wenn T1 zu C2 weitergegeben wird, kann T1 die Erneuerung von T2 überschreiben und umgekehrt. Die vorliegende Erfindung erfaßt diesen Ausnahmetyp und auch andere und hält Information für jede Ausnahme zurück.
  • Die Ausnahmetabelle enthält ein Transaktionsidentifizierer-("Transaktions_Id")-Feld, das dieselbe Definition wie das Transaktionsidentifiziererfeld in den Transaktions-, Transaktionsknoten und Aufruftabellen hat. Der Aufrufidentifizierer hat dieselbe Definition wie das Aufrufidentifiziererfeld in der Aufruftabelle. Der Zielortknoten ("Zielort_Knoten") identifiziert den Knoten, an dem die Ausnahme auftrat. Im Beispiel des vorherigen Absatzes würde das Knotenfeld die Identifikation des Knotens enthalten, die C2 speichert. Das Fehlercodefeld (Fehler_Code) enthält einen Code zum Identifizieren des Fehlers oder einer Ausnahme, dem begegnet wird (z.B. einer Überschreibmöglichkeit für eine Erneuerung von T2 von C2). Weiterhin enthält das Fehlerkettenfeld eine zusätzliche Beschreibung des Fehlers. Eine Kombination aus Transaktionsidentifizierer und Zielortknoten kann einen Eintrag in dieser Tabelle eindeutig identifizieren.
  • Bestands-Repliziertabellen
  • Das durch die vorliegende Erfindung geschaffene Änderungsreplizieren ist asynchron. Das bedeutet, daß die Replizierverfahren, die die entfernten Datenkopien ändern (z.B. <Tabellenname>_Einfügen) nicht als Teil der Änderungsoperation ausgeführt werden, die am lokalen ursprünglichen Ort durchgeführt wird. Vielmehr kann eine Änderung entfernter Datenkopien verzögert werden, bis die entfernten Kopien verfügbar sind.
  • Das Verfahren zum Verzögern der Änderungsoperation am entfernten Ort wird bei der vorliegenden Erfindung durch Speichern der Information für jede verzögerte Änderungsoperation in den Repliziertabellen und nachfolgendes Durchführen der Änderungsoperation, die in den Repliziertabellen identifiziert wird, an den entfernten Orten bzw. Stellen erreicht.
  • In bezug auf die Datenbank A (DB_A) in 2C können die Änderungen der Lagerbestands- und der Bestelltabelle beispielsweise zur Datenbank B (DB_B) in 2C durch Replizieren der Änderung der Datenbank A zur Lagerbestands- und zur Auftragstabelle der Datenbank B repliziert werden. Somit können die Erneuerung, die bezüglich der Lagerbestandstabelle der Datenbank A durchgeführt ist, und der Eintrag, der in der Auftragstabelle der Datenbank A eingefügt ist, an den Ort der Datenbank B repliziert werden, und zwar durch Replizieren der Änderungen der Grund-Auftragstransaktion, die bezüglich der Daten in der Datenbank A durchgeführt sind.
  • Die Grund-Auftragstransaktion wird bei der Datenbank B durch Bringen der Transaktion in den Repliziertabellen in eine Warteschlange und durch nachfolgendes Anwenden der in der Transaktion enthaltenen Änderungen auf die Daten in der Datenbank B gemäß der in den Repliziertabellen enthaltenen Information repliziert.
  • 6 stellt einen Verfahrensablauf zum Bilden einer Warteschlange dar, und zwar aus den Transaktions-, Transaktionsknoten- und Aufrufzielorttabellen für einen Transaktions-, einen Transaktionszielortknoten- und irgendeinen Transaktions- oder Nicht-Transaktions-Aufruf. 6 kann mehrfach aufgerufen werden, um eine beliebige Anzahl von Aufrufen in eine Warteschlange zu bringen. Beispielsweise kann das Aufrufprogramm einen Schleifenbildungsmechanismus enthalten, der einen Warteschlangentransaktions-DRPC für jeden Transaktions- oder Nicht-Transaktions-Aufruf aufrufen kann.
  • Beim Entscheidungsblock 601 (d.h. "erster Aufruf?") geht das Verfahren weiter zum Block 616, wenn dies nicht der erste Aufruf zum Bilden einer Warteschlange dieser Transaktion ist. Wenn es der erste Aufruf ist, geht die Verarbeitung zum Block 602 weiter. Beim Verarbeitungsblock 602 wird der in den Tabellen zu speichernden Transaktion ein aktueller Transaktionsidentifizierer zugeordnet (z.B. die Grund-Auftragstransaktion der Datenbank A). Dem aktuellen Transaktionsidentifizierer wird ein Wert zugeordnet, der den Tabelleneintrag eindeutig identifizieren wird. Beim Verarbeitungsblock 604 wird ein Eintrag in die Transaktionstabelle eingefügt. Dem Transaktionsidentifiziererfeld wird der Wert des aktuellen Transaktionsidentifizierers zugeordnet.
  • Der ursprünglichen Transaktion (z.B. der Auftragstransaktion der Datenbank A) wird eine DON zugeordnet, wenn der Übertragungsschritt in der Auftragstransaktion erfolgreich durchgeführt ist. Die DON schafft die Möglichkeit zum Anordnen der Transaktionen basierend auf der Reihenfolge, in der sie die Daten geändert haben. Somit kann dort, wo die Reihenfolge der Änderungen kritisch ist, die DON dazu verwendet werden, die Änderungsreihenfolge zurückzuhalten und dadurch eine Datenintegrität zu behalten. Dem DON-Feld wird der Wert der DON der ursprünglichen Transaktion zugeordnet. Das Zeitfeld des neuen Transaktionstabelleneintrags wird auf die aktuelle Zeit eingestellt. Dem Verzögerungs-Benutzeridentifizierer wird der Wert des Benutzers zugeordnet, der die ursprüngliche Transaktion begann.
  • Ein Zielort (d.h. ein Fern-Datenkopie-Identifizierer) wird beim Verarbeitungsblock 606 identifiziert. Beim Verarbeitungsblock 608 wird ein Eintrag in der Transaktionsknotentabelle erzeugt, um anzuzeigen, daß die gerade in die Repliziertabelle eingegebene Transaktion am identifizierten Zielort durchzuführen ist. Somit wird dem Transaktionsidentifizierer derselbe Wert zugeordnet, wie dasselbe Feld in der Transaktionstabelle, und der Zielortknoten wird auf den identifizierten Zielort eingestellt.
  • Für jeden identifizierten Zielort sollte ein Eintrag gemacht werden. Somit geht beim Entscheidungsblock 610 (d.h. "Andere entfernte Zielorte?") dann, wenn zusätzliche Zielorte existieren, die Verarbeitung weiter zum Block 606, um den nächsten Zielort zu identifizieren. Weiterhin wird ein Transaktionsknotentabelleneintrag für jeden derartigen Zielort erzeugt. Wenn beim Entscheidungsblock 610 (d.h. "Andere entfernte Zielorte?") bestimmt wird, daß alle entfernte Zielorte in die Transaktionsknotentabelle eingegeben worden sind, geht die Verarbeitung zum Entscheidungsblock 616 (d.h. "Alle Aufrufe in der Transaktion verarbeitet?").
  • Wie es in der in 2B gezeigten Grund-Auftragstransaktion dargestellt ist, kann eine Transaktion aus vielen Schritten aufgebaut sein. Bei der Grund-Auftragstransaktion waren die Schritte: Prüfen des Lagerbestands und Auftragsverarbeitung. Diese Schritte können softwaremäßig als einzelne Verfahrensschritte entwickelt und codiert sein. In diesem Fall kann die Grund-Auftragstransaktion einen Lagerbestandsprüfungs-Verfahrensschritt enthalten, der die Schritte ausübt, die bei einer Lagerbestandsprüfung enthalten sind. Gleichermaßen kann die Grund-Auftragstransaktion den Auftragsort- und den Übertragungsverfahrensschritt enthalten. Jeder dieser Aufrufe, den die Transaktion aufweist, kann dann in die Aufruftabelle der vorliegenden Erfindung eingegeben werden.
  • Beim Verarbeitungsblock 616 wird ein eindeutiger Aufrufidentifizierer erzeugt und ihm wird ein aktueller Aufrufidentifizierer zugeordnet. Beim Verarbeitungsblock 618 werden Warteschlangen-Aufrufargumente dazu aufgerufen, die Aufrufinformation in die Repliziertabellen einzugeben. Nachdem die geeignete Aufrufinformation zu den Repliziertabellen hinzugefügt worden ist, springt die Verarbeitung zurück zum Block 620.
  • 7 stellt einen Verarbeitungsablauf zum Bringen einer Aufrufinformation in eine Warteschlange dar. Beim Verarbeitungsblock 700 wird ein Eintrag in der Aufruftabelle für den Verfahrensschrittaufruf erzeugt, der gerade verarbeitet wird. Das Eintrags-Aufrufidentifiziererfeld wird auf den aktuellen Aufrufidentifizierer eingestellt. Derselbe Wert, der den Transaktionsidentifiziererfeldern in den Transaktions- und Transaktionsknotentabellen zugeordnet ist, wird für das Transaktionsidentifiziererfeld in der Aufruftabelle verwendet. Dem Verfahrensschritt-Identifiziererfeld wird ein Wert zugeordnet, der den gerade verzögerten Verfahrensschritt eindeutig identifizieren kann. Dieser Wert kann irgendeiner sein, der den Verfahrensschritt identifiziert, wie beispielsweise ein Verfahrensschrittname oder die Speicherstelle des Verfahrensschritts.
  • Während seiner Ausführung kann ein Verfahrensschritt Werte (Parameter) verwenden, die extern erzeugt werden (d.h. außerhalb des Verfahrensschritts definiert werden) und in den Verfahrensschritt geführt werden, oder die intern erzeugt werden. Beim bevorzugten Ausführungsbeispiel werden die Parameter im Parameterfeld der Aufruftabelle in eine Warteschlange gebracht.
  • Beim Verarbeitungsblock 702 wird eine Parameterzahl zu Null initialisiert. Beim Entscheidungsblock 704 (d.h. "Alle Parameter im Aufruf verarbeitet?") springt dann, wenn alle Parameter eines Verfahrensschritts zur Parametertabelle hinzugefügt worden sind oder der Verfahrensschritt keine weiteren zugehörigen Parameter aufweist, die Verarbeitung zurück zum Verarbeitungsblock 714. Beim Block 714 wird der Wert der Parameterzahl dazu verwendet, das Parameterzahlenfeld des Aufrufeintrags in der Aufruftabelle zu erneuern.
  • Beim Entscheidungsblock 716 (d.h. "Aufruf-Zielortknoten nicht durch einen externen Führungsmechanismus definiert und Zielortknoten durch einen Benutzer mit DRPC definiert?") springt dann, wenn die Aufruf-Zielortknoten (d.h. Ausführungsknoten) durch einen externen Führungsmechanismus definiert sind, die Verarbeitung zurück zum Block 724. Wenn die Aufruf-Ausführungsknoten durch den Benutzer mit dem DRPC definiert sind und nicht durch einen externen Führungsmechanismus, geht die Verarbeitung weiter beim Entscheidungsblock 718. Beim Entscheidungsblock 718 (d.h. "Alle Ausführungsknoten verarbeitet?") springt dann, wenn alle Ausführungsknoten in die Aufrufknotentabelle eingegeben worden sind, die Verarbeitung zurück zum Block 724.
  • Wenn nicht alle Ausführungsknoten verarbeitet worden sind, geht die Verarbeitung weiter beim Block 720, um den nächsten Ausführungsknoten zu bekommen, der durch den Benutzer spezifiziert ist. Beim Verarbeitungsblock 722 wird ein Eintrag in der Aufrufknotentabelle für den aktuellen Ausführungsknoten erzeugt. Die Verarbeitung geht weiter beim Entscheidungsblock 718, um alle übrigen Ausführungsknoten zu verarbeiten.
  • Wenn beim Entscheidungsblock 704 (d.h. "Alle Parameter im Aufruf verarbeitet?") zu verarbeitende Parameter zurückbleiben, geht die Verarbeitung weiter beim Verarbeitungsblock 710. Beim Verarbeitungsblock 710 werden der Parametertyp (d.h. Datentyp), die Länge und der Wert an jeden existierenden Wert im Parameterfeld des aktuellen Aufruftabelleneintrags angehängt. Beim Block 712 wird die Parameterzahl um Eins inkrementiert. Die Verarbeitung geht weiter beim Block 704, um alle übrigen Parameter zu verarbeiten.
  • Bei einem anderen Ausführungsbeispiel können Aufrufparameter in einer separaten Tabelle, nämlich einer Parametertabelle (siehe 3), gespeichert werden. Bei dem anderen Ausführungsbeispiel erzeugt ein Block 710 einen separaten Eintrag in einer Parametertabelle für jeden Parameter. Somit enthält eine Parametertabelle einen Eintrag für jeden Parameter, der zu einem Verfahrensschritt gehört. Jeder Eintrag enthält den Aufrufidentifizierer, eine Parameterzahl (d.h. die Zahl des Parameters in bezug zu anderen Parametern im Aufruf) und den Datentyp des Parameters. Der Wert des Parameters wird in einem der Wertfelder (d.h. Zahl, Zeichen, Daten oder Reihenidentifizierer) basierend auf dem Datentyp gespeichert. Beispielsweise dann, wenn der Lagerbestandsprüfungs-Verfahrensschritt in der Grund-Auftragstransaktion drei Parameter enthielt, würden drei Einträge zur Parametertabelle hinzugefügt werden.
  • Triggerungen
  • Triggerungen bieten eine Alternative zum Initiieren des Bestandes der Repliziertabellen. Eine Triggerung ist ein Verfahrensschritt, der dann ausgeführt wird, wenn eine beliebige Änderung (z.B. eine Erneuerung, eine Einfügung oder ein Löschen) bezüglich eines Eintrags in einer Tabelle am lokalen Ort durchgeführt wird. 4 zeigt ein Beispiel des Verfahrensablaufs einer Triggerung bei der vorliegenden Erfindung.
  • Ein Entscheidungsblock 402 (d.h. "Feuert diese Triggerung als Ergebnis einer replizierten Änderung?") stellt eine Ausgabe dar, die bei der vorliegenden Erfindung durch eine Triggerung adressiert ist. Weil eine Triggerung initiiert wird, wenn eine beliebige Änderungsoperation bezüglich einer Tabelle durchgeführt wird, wird eine Operation, die bezüglich eines Fern-Dateneintrags durchgeführt wird (d.h. eine Änderungsoperation), im Initiieren einer zweiten Triggerung resultieren.
  • Bis nicht eine Triggerung einen Mechanismus zum Unterscheiden zwischen einer als Ergebnis einer ursprünglichen Änderungsoperation durchgeführten Änderung und einer Änderung, die eine replizierte Änderung ist (d.h. das Ergebnis einer früher gefeuerten Triggerung) enthält, wird die replizierte Änderung selbst eine Triggerung erzeugen und die ursprüngliche Änderungsoperation könnte mehrere Male unnötigerweise an eine Datenstelle repliziert werden. Dies würde die Integrität der Daten an lokalen und entfernten Orten bzw. Stellen gefährden.
  • Somit bestimmt der Entscheidungsblock 402 (d.h. "Ist diese Triggerung ein Ergebnis einer früher gefeuerten Triggerung?"), ob die Tabellenänderung, die die Triggerung erzeugte, eine Folge einer ursprünglichen oder einer replizierten Änderung ist. Wenn die Änderung ein Ergebnis einer ursprünglichen Änderung ist, ist die Triggerung nicht das Ergebnis einer früher gefeuerten Triggerung. Jedoch dann, wenn die Änderung das Ergebnis einer ursprünglichen Änderung ist, die zu einer entfernten Tabelle repliziert worden ist, sollte keine zweite Triggerung in den Repliziertabellen in eine Warteschlange gebracht werden.
  • Daher endet dann, wenn beim Entscheidungsblock 402 (d.h. "Ist diese Triggerung ein Ergebnis einer früher gefeuerten Triggerung?") eine Triggerung das Ergebnis einer replizierten Änderung ist, eine Verarbeitung beim Block 406, und der Änderungs-Verfahrensschritt wird nicht in eine Warteschlange gebracht. Wenn die Triggerung beim Entscheidungsblock 402 als Ergebnis einer ursprünglichen Änderungen erzeugt wurde, fährt die Verarbeitung beim Verarbeitungsblock 404 fort. Beim Verarbeitungsblock 404 wird ein Änderungseintrag in die Repliziertabellen eingefügt. Dann endet die Verarbeitung beim Block 406.
  • Der Mechanismus zum Identifizieren duplizierender Replikationen kann bei der vorliegenden Erfindung auf verschiedene Weise implementiert werden. Beim bevorzugten Ausführungsbeispiel kann eine duplizierende Replikation auch durch Einstellen einer globalen Variablen (d.h. einer Variablen, auf die durch einen Triggerungs- oder einen Replizier-Verfahrensschritt zugegriffen werden kann) erfaßt werden, bevor eine replizierte Änderung durchgeführt wird. Wenn die replizierte Änderung durchgeführt wird, kann die Triggerung (beim Entscheidungsblock 402 in 4) die globale Variable prüfen, um zu bestimmen, ob die Änderung das Ergebnis eines Replizier-Verfahrensschritts oder eine ursprüngliche Änderung ist. Diese Alternative eines Einstellens der globalen Variablen im Replizier-Verfahrensschritt ist nachfolgend ausführlicher in Verbindung mit einem Reihenebenen-Replizieren dargestellt.
  • Bei einem alternativen Ausführungsbeispiel kann ein duplizierendes Replizieren durch Zuordnen von Datenänderungen zu einem Benutzer erfaßt werden. Somit ist es möglich, eine ursprüngliche Änderung durch ihren Benutzer zu identifizieren und eine replizierte Änderung durch einen anderen Benutzer zu identifizieren (d.h. Änderungs-Verfahrensschritte können durch sich unterscheidende Benutzer ausgeführt werden). Somit kann der Entscheidungsblock 402 in 4 den Namen des Benutzers prüfen, der die Änderung aufrief. Wenn der Benutzer ein sich unterscheidender Benutzer ist, wurde die Triggerung als Ergebnis einer früher gefeuerten Triggerung erzeugt. Wenn der Benutzer kein sich unterscheidender Benutzer ist, wurde die Triggerung als Ergebnis einer ursprünglichen Änderung erzeugt.
  • Diese Alternativen bieten Beispiele für Techniken zum Erzeugen duplizierende Änderungen. Irgendwelche Mittel können dazu verwendet werden, duplizierende Änderungen zu erfassen, ohne vom Schutzbereich der Erfindung abzuweichen.
  • Reihenebenen-Replizier-Verfahrensschritte
  • Ein Zeilenebenen- bzw. Reihenebenen-Replizieren ist ein Merkmal der vorliegenden Erfindung, die Triggerungen zum Replizieren von wertorientierten Reihenebenen-Änderungen verwendet. Das bedeutet, daß ein Reihenebenen-Replizieren eine Möglichkeit schafft, um an Werten in einer Reihe durchgeführte Änderungen zu replizieren. Zu einem Reihenebenen-Replizieren gehört eine Triggerung mit einer Tabelle (z.B. der Lagerbestand der Datenbank A in 2A), so daß irgendwelche Änderungen, die an einem oder mehreren Werten in einem lokalen Tabelleneintrag (z.B. Feld für verfügbare Menge in der Lagerbestandstabelle der Datenbank A der 2A) durchgeführt werden, eine gleiche Änderung an entfernten Kopien der geänderten Werte (z.B. Feld für verfügbare Menge in der Lagerbestandstabelle der Datenbank B der 2A) triggern bzw. veranlassen werden.
  • Eine Triggerung führt dazu, daß die Information, der ein Verfahrensschritt zugeordnet ist, der zum Replizieren der Wertänderungen in der lokalen Kopie zu einer entfernten Kopie verwendet wird, in den Repliziertabellen gespeichert wird. Der Verfahrensschritt, nämlich ein verzögerter entfernter Verfahrensschrittaufruf (DRPC), kann nachfolgend an entfernten Orten bzw. Stellen zum Replizieren der Datenänderungen) ausgeführt werden, die bezüglich lokaler Daten durchgeführt ist (sind). Der Name des DRPC entspricht der Tabelle, die gerade geändert wird, und der Operation, die gerade bezüglich lokaler Daten durchgeführt wird (z.B. <Tabellenname>_Erneuern). Der DRPC hat als seine Argumente (d.h. Parameter) im allgemeinen die alten Werte der lokalen Daten und die neuen Werte der lokalen Daten. Die alten Werte, oder eine Untergruppe davon, identifizieren eindeutig die Reihe, die das Ziel der Änderung ist. Die Verwendung dieser Argumente ist für die Operation spezifisch, die am lokalen Ort bzw. an der lokalen Stelle durchgeführt wird.
  • Beispielsweise dann, wenn eine Erneuerungsoperation bezüglich lokaler Daten durchgeführt wird, würden die alten Werte verwendet, um Kollisionen zu erfassen. Das bedeutet, daß ein Unterschied zwischen den alten Werten der lokalen Daten und den aktuellen Werten am entfernten Ort anzeigen kann, daß eine separate Operation bezüglich entfernter Daten durchgeführt worden ist, die bei der aktuellen Erneuerung gelöscht werden kann. Die neuen Werte können dazu verwendet werden, die entfernten Daten zu erneuern.
  • Bei einer Einfügeoperation (d.h. bei einem Einfügen einer Reihe von Werten oder einem Feldwert) gibt es keine alten Werte, und daher sind im Aufruf keine alten Werte enthalten. Weiterhin gibt es keine Notwendigkeit, alte Werte zu verwenden, um eine Prüfung bezüglich Kollisionen (d.h. Ausnahmen) auf der Reihenebene durchzuführen, wenn eine neue Reihe oder ein Feldwert eingefügt wird. Die neuen Werte, oder eine Untergruppe davon, identifizieren eindeutig einen neuen Fern-Tabelleneintrag.
  • Wenn die Operation ein Löschen ist (d.h. ein Löschen einer Reihe oder eines Feldes), gibt es keine neuen Werte. Jedoch können, wie bei einer Erneuerungsoperation, die alten Werte dazu verwendet werden, mögliche Kollisionen zu erfassen. Weiterhin können die alten Werte, oder eine Untergruppe davon, dazu verwendet werden, den zu löschenden Fern-Tabelleneintrag eindeutig zu identifizieren.
  • Ein DRPC-Name kann den Namen der zu ändernden Tabelle und der durchzuführenden Operation enthalten. In 2A können die Triggerungen für die Lagerbestandstabelle beispielsweise folgende Namen haben: Lagerbestandseinfügung, Lagerbestandserneuerung und Lagerbestandslöschen. Diese Namensgebungskonvention hilft beim Identifizieren der Tabelle und der Operation, die im Replizierverfahren enthalten sind. Jedoch kann bei der vorliegenden Erfindung irgendeine Namensgebungskonvention verwendet werden.
  • - Reihenebenen-Einfügung -
  • Die 5A5C zeigen ein Beispiel des Verfahrensablaufs für folgende DRPCs: Tabellenname>_Einfügen, <Tabellenname>_Löschen und <Tabellenname>_Erneuern. Diese DRPCs führen an Orten aus, die entfernt von der ursprünglichen Änderung sind. Daher beziehen sie sich dann, wenn sie "Ferntabellen" genannt werden, auf Tabellen, die am Ort der DRPC-Ausführung und entfernt von der ursprünglichen Änderung sind. 5A zeigt ein Beispiel des Verarbeitungsablaufs eines <Tabellenname>_Einfüge-DRPC. Wie es zuvor erörtert ist, kann eine globale Variable als Alternative zum Identifizieren replizierter Änderungen verwendet werden. Eine solche globale Variable wird beim Verarbeitungsblock 502 eingestellt. Beim Verarbeitungsblock 504 wird unter Verwendung des Wertes (der Werte), der (die) in dem (den) Neuwert-Parameter(n) bereitgestellt ist (sind), in den <Tabellennamen> eingefügt.
  • Zum weiteren Darstellen der Notwendigkeit zum Testen von duplizierenden Änderungen würde die replizierte Einfügeoperation, die durch den Prozeß der 5A durchgeführt wird, eine Triggerung erzeugen (d.h. irgendeine Tabellenänderung initiiert eine Triggerung). Somit wird das Triggerverfahren der 4 aufgerufen, wenn die Einfügeoperation des Verarbeitungsblocks 504 (5A) durchgeführt wird. Weil die globale Variable eingestellt wurde, um eine duplizierende Änderung anzuzeigen (beim Verarbeitungsblock 502 der 5A) kann die Triggerung bestimmen (beim Verarbeitungsblock 402 der 4), daß die Änderung eine replizierte Änderung ist, und ein DRPC wird nicht in eine Warteschlange für die replizierte Änderung gebracht (d.h. beim Verarbeitungsblock 404 in 4).
  • Beim Fortfahren mit dem Verarbeitungsablauf der 5A wird, nachdem die Einfügeoperation bezüglich der Ferntabelle durchgeführt ist, die globale Repliziervariable beim Verarbeitungsblock 506 zurückgesetzt. Die Verarbeitung endet beim Block 508.
  • - Reihenebenen-Erneuerung -
  • 5B zeigt ein Beispiel des Verarbeitungsablaufs eines Erneuerungs-DRPC (z.B. eine Erneuerung des Tabellennamen). Eine globale Repliziervariable wird beim Verarbeitungsblock 522 gesetzt. Beim Verarbeitungsblock 524 wird der Ferntabelleneintrag unter Verwendung der alten Werte oder einer Untergruppe der alten Werte identifiziert. Beim Entscheidungsblock 526 (d.h. "Reihe an entferntem Ort gefunden?") fährt dann, wenn der Ferntabelleneintrag nicht gefunden werden kann, die Verarbeitung beim Verarbeitungsblock 532 fort, um eine Ausnahme in den Repliziertabellen zu protokollieren. Weiterhin wird die globale Repliziervariable beim Verarbeitungsblock 548 rückgesetzt und die Verarbeitung endet beim Block 550. Wenn der Ferntabelleneintrag gefunden wird, fährt die Verarbeitung beim Entscheidungsblock 530 fort.
  • Bevor eine Erneuerung zu einem entfernten Ort durchgeführt wird, kann eine Überprüfung durchgeführt werden, um zu bestimmen, ob eine Änderung zu den entfernten Daten durchgeführt worden ist, die unabhängig von der aktuellen Erneuerungsoperation ist, die gelöscht werden könnte, wenn die aktuelle Erneuerung bezüglich der entfernten Daten durchgeführt wird. Dies könnte beispielsweise dann auftreten, wenn eine Änderung (die eine andere als die aktuelle replizierte Operation ist) am entfernten Ort entstanden sein könnte, deren Replizieren den Ort nicht erreicht hat, der die aktuelle Repliziererneuerung aufrief. Wenn die aktuelle replizierte Erneuerung die Ferntabelleneintragswerte mit den Neuwert-Parametern überschreibt, werden die aktuellen Werte des Ferntabelleneintrags verloren, und daher wird die ursprüngliche Änderung der Ferntabelle verloren.
  • Alternativ dazu können bei einigen Anwendungen fortlaufende Änderungen zum Trennen von Gruppen nichtprimärer Feldwerte zugelassen sein. Beispielsweise muß eine Änderung eines Ausgleichs eines Kunden nicht mit einer Änderung einer Kundenadresse kollidieren. Wenn Erneuerungen auf nichtprimäre Felder auf einer Feld-zu-Feld-Basis angewendet werden können, werden keine fortwährenden Erneuerungen verloren. Beim Entscheidungsblock 530 (d.h. "Verhinderung des Typs einer verlorenen Erneuerung?") wird bestimmt, ob die verlorene Erneuerung eine Reihenebenen-Erneuerung oder eine Spaltenebenen-Erneuerung ist. Wenn sie eine Reihenebenen-Erneuerung ist, fährt die Verarbeitung beim Entscheidungsblock 536 fort. Wenn sie eine Spaltenebenen-Erneuerung ist, fährt die Verarbeitung beim Entscheidungsblock 534 fort.
  • Beim Entscheidungsblock 534 (d.h. "Gleicht jeder Feldwert seinem entsprechenden Altwert-Parameter, wo der entsprechende Altwert-Parameter nicht gleich dem entsprechenden Neuwert-Parameter ist?") fährt dann, wenn die alten Werte gleich ihrem entsprechenden Altwert-Parameter sind, wo der Altwert-Parameter ungleich dem Neuwert-Parameter ist, die Verarbeitung beim Verarbeitungsblock 544 fort, um die Felder zu erneuern, die geändert worden sind, und die Verarbeitung fährt beim Block 548 fort. Wenn nicht, fährt die Verarbeitung beim Entscheidungsblock 538 (d.h. "Sollten verlorene Erneuerungen verhindert werden?") fort, wenn verlorene Erneuerungen verhindert werden sollten, und die Verarbeitung fährt beim Block 540 fort, um Ausnahmen auszurufen, und dann fährt die Verarbeitung fort beim Block 548.
  • Beim Entscheidungsblock 536 (d.h. "Gleicht jeder Feldwert in der Reihe seinem entsprechenden Altwert-Parameter?") fährt dann, wenn die alten Werte gleich ihrem entsprechenden Altwert-Parameter sind, die Verarbeitung beim Verarbeitungsblock 546 fort, um jedes Feld in der Reihe mit ihrem entsprechenden Neuwert-Parameter zu erneuern, und die Verarbeitung fährt beim Block 548 fort. Wenn nicht, fährt die Verarbeitung beim Entscheidungsblock 542 (d.h. "Sollten verlorene Erneuerungen verhindert werden?") fort, wenn verlorene Erneuerungen verhindert werden sollten, und die Verarbeitung fährt beim Block 540 fort, um Ausnahmen aufzurufen, und dann fährt die Verarbeitung beim Block 548 fort.
  • Beim Verarbeitungsblock wird die globale Repliziervariable rückgesetzt. Die Verarbeitung endet beim Block 550.
  • - Reihenebenen-Löschen -
  • 5C zeigt ein Beispiel des Verarbeitungsablaufs eines Lösch-DRPC (z.B. ein Tabellennamen-Löschen). Eine globale bzw. Gesamt-Repliziervariable wird beim Verarbeitungsblock 562 gesetzt. Beim Verarbeitungsblock 564 wird der Ferntabelleneintrag unter Verwendung der alten Werte oder einer Untergruppe der alten Werte identifiziert. Beim Entscheidungsblock 566 (d.h. "Reihe an entferntem Ort gefunden?") fährt dann, wenn der Ferntabelleneintrag nicht gefunden werden kann, die Verarbeitung beim Verarbeitungsblock 572 fort, um eine Ausnahme in den Repliziertabellen zu protokollieren. Weiterhin wird die globale Repliziervariable beim Verarbeitungsblock 576 rückgesetzt und die Verarbeitung endet beim Block 578. Wenn der Ferntabelleneintrag gefunden wird, fährt die Verarbeitung beim Entscheidungsblock 528 fort.
  • Wie beim Erneuerungs-DRPC-Verfahren wird eine Überprüfung durchgeführt, um zu bestimmen, ob eine Überprüfung bezüglich verlorener Erneuerungen (d.h. Änderungen) durchgeführt werden sollte. Somit bestimmt der Entscheidungsblock 568 (d.h. "Sollten verlorene Erneuerungen verhindert werden?"), ob auf potentielle verlorene Erneuerungen (d.h. verlorene Erneuerungen) getestet werden soll. Wenn nicht, fährt die Verarbeitung beim Verarbeitungsblock 574 fort, und der Ferntabelleneintrag wird von der Ferntabelle gelöscht. Nachdem die Löschoperation bezüglich des Ferntabelleneintrags durchgeführt ist, wird die globale Repliziervariable beim Verarbeitungsblock 576 rückgesetzt, und die Verarbeitung endet beim Block 578.
  • Wenn beim Entscheidungsblock 568 (d.h. "Sollten verlorene Erneuerungen verhindert werden?") existierende Änderungen aufbewahrt werden sollten, fährt die Verarbeitung beim Entscheidungsblock 570 fort. Beim Entscheidungsblock 530 (d.h. "Ist jeder Feldwert in der Reihe gleich seinem entsprechenden Altwert-Parameter?") fährt dann, wenn irgendeiner der Feldwerte des Ferntabelleneintrags nicht gleich seinem entsprechenden Altwert-Parameter ist, die Verarbeitung beim Verarbeitungsblock 572 fort. Beim Verarbeitungsblock 572 wird eine Ausnahme in den Repliziertabellen protokolliert. Die Verarbeitung fährt beim Block 576 fort, wo die globale Repliziervariable rückgesetzt wird, und die Verarbeitung endet beim Block 578.
  • Wenn beim Entscheidungsblock 570 (d.h. "Ist jeder Feldwert in der Reihe gleich seinem entsprechenden Altwert-Parameter?") alle Feldwerte im Ferntabelleneintrag gleich ihren entsprechenden Altwert-Parametern sind, fährt die Verarbeitung beim Verarbeitungsblock 574 fort. Beim Verarbeitungsblock 574 wird der Ferntabelleneintrag von der Ferntabelle gelöscht. Nachdem die Löschoperation an der Ferntabelle durchgeführt ist, wird die globale Repliziervariable beim Verarbeitungsblock 576 rückgesetzt, und die Verarbeitung endet beim Block 578.
  • Reihenebenen-Replizierbeispiel
  • Das in 2C dargestellte Replizieren (d.h. DB_B=>DB_A und DB_A=>DB_B) kann durch Verwendung von Triggerungen und eines Reihenebenen- Replizierens erreicht werden. Die Bestellung von fünfzig Produkten am Ort der Datenbank A resultierte im Aufrufen einer Grund-Auftragstransaktion zum Erneuern der Lagerbestandstabelle und zum Anordnen einer Bestellung in der Auftragstabelle. Jede dieser Änderungen wird veranlassen, daß eine zu jeder Tabelle gehörende Triggerung ausgeführt wird.
  • Beispielsweise dann, wenn das Feld für eine verfügbare Menge der Lagerbestandstabelle der Datenbank A durch Subtrahieren der bestellten Menge erneuert wird, ruft eine Triggerung, die zur Lagerbestandstabelle gehört (und in 4 dargestellt ist), die Verfahrensschritte der 6 und 7 auf, um die Repliziertabellen mit einem DRPC zu füllen. In diesem Fall kann ein Lagerbestandserneuerungs-DRPC, der gleich dem Tabellennamen-Erneuerungs-DRPC, der in 5B dargestellt ist, zum Replizieren der Änderungen bezüglich der Lagerbestandstabelle der Datenbank A zur Datenbank B verwendet werden.
  • Gemäß 6 wird dann, wenn dies der erste Aufruf ist, ein Transaktionsidentifizierer für den DRPC (d.h. die Tabellennamen-Erneuerung) beim Verarbeitungsblock 602 erzeugt. Beim Verarbeitungsblock 604 wird ein Eintrag in die Transaktionstabelle eingefügt, wie es in 8A dargestellt ist. Ein Transaktionsidentifizierer (z.B. 1), eine DON, eine Zeit und ein Verzögerungs-Benutzeridentifizierer werden der Lagerbestands-Erneuerungstransaktion zugeordnet.
  • Bei den Blöcken 606 bis 610 wird die Transaktionsknotentabelle gefüllt. In diesem Fall ist nur eine Fernkopie der Daten bei der Datenbank B angeordnet. Daher wird ein Eintrag in die Transaktionsknotentabelle eingefügt, wo der Transaktionsidentifizierer derselbe wie dasselbe Feld in der Transaktionstabelle ist, und der Zielortknoten wird auf die Datenbank B gesetzt.
  • Ein Eintrag wird in der Aufruftabelle für jeden Aufruf in der Transaktion erzeugt. Gemäß 7 wird ein Eintrag in die Aufruftabelle eingefügt, um den Lagerbestandserneuerungs-DRPC zu zeigen. Der Aufrufidentifizierer ist ein eindeutiger Identifizierer für den Lagerbestandserneuerungs-DRPC. Der Transaktionsidentifizierer hat denselben Wert wie dasselbe Feld in den Transaktions- und Transaktionsknotentabellen. Der Identifizierer für ein verzögertes Verfahren kann ein beliebiger Wert sein, der den DRPC identifiziert. In diesem Fall wird der Name des DRPC verwendet.
  • Wenn kein externer Führungsmechanismus verwendet wird, kann die Aufrufknotentabelle mit den Einträgen gefüllt werden, die die benutzerspezifizierten Zielortknoten identifizieren, an denen eine Ausführung des DRPC verzögert ist (d.h. den Ausführungsknoten). Gemäß 8A zeigt das Zielortlistenfeld an, daß die Zielortknoten nicht durch einen externen Führungsmechanismus spezifiziert sind. In diesem Fall können die Zielortknoten für den einen DRPC der Transaktion (d.h. die Lagerbestandserneuerung) durch den Eintrag in der Transaktionsknotentabelle bestimmt werden. Jedoch kann die Aufrufknotentabelle dazu verwendet werden, die Datenbank B als den Zielortknoten für eine Ausführung des Lagerbestandserneuerungs-DRPC zu identifizieren.
  • Alle zu einem Aufruf gehörenden Parameter sind im Aufrufeintrag in der Aufruftabelle gespeichert. Gemäß 5B verwendet ein Erneuerungs-Verfahrensschritt die alten Lagerbestandswerte und neue Lagerbestandswerte für Produkt. Der Produkt-Eintrag in der Lagerbestandstabelle wird eindeutig durch den alten Wert "Produkt" identifiziert. Weil jeder Eintrag in der Tabelle zwei Felder enthält, wird es zwei alte Werte und zwei neue Werte geben. Daher gehören vier Argumente zum Lagerbestandserneuerungs-Verfahrensschritt. Die Argumente (einschließlich eines Beispiels ihrer Attribute) sind folgende:
    Figure 00350001
  • Das Parameterfeld im Aufruftabelleneintrag, dem dieser Aufruf zugeordnet ist, enthält eine Kette von Parameterinformationen. Ein Beendigungswert (z.B. "0") wird an das Ende der Kette gesetzt. Die resultierende Kette ist folgende:
    "206Produkt103400206Produkt1033500".
  • Wenn eine Lagerbestandserneuerung nicht als Transaktions-DRPC angesehen wird, könnte das Verfahren zum Einfügen von Einträgen in die Transaktions- und Transaktionsknotentabellen umgangen werden. Zum Zuteilen der Zielorte zum Nicht-Transaktions-DRPC, bei denen der DRPC auszuführen ist, kann die Aufrufknotentabelle verwendet werden. Ein Eintrag kann in der Aufrufknotentabelle für jede Stelle angeordnet werden, an der der Aufruf auszuführen ist.
  • 8B stellt den Zustand der Repliziertabellen nach ihrer Auffüllung bei einem Nicht-Transaktions-DRPC dar. Die Transaktions- und Transaktionsnotentabellen sind nicht verwendet. Die Aufruf- und Aufrufknotentabellen sind mit Ausnahme des Transaktionsidentifiziererfeldes dieselben wie in 8A. Da es keine zugehörige Transaktion gibt, gibt es keinen Eintrag in den Transaktions- und Transaktionsknotentabellen, und keinen Transaktionsidentifiziererwert.
  • Spaltenebenen-Replizieren
  • Ein Spaltenebenen-Replizieren ist eine Abänderung einer Verhinderung einer verlorenen Erneuerung für ein Reihenebenen-Replizieren. Ein Spaltenebenen-Replizieren wird nur bei Erneuerungsoperationen verwendet. Beim Spaltenebenen-Replizieren können fortlaufende Erneuerungen durchgeführt werden, um Gruppen nichtprimärer Schlüsselspalten zu trennen. Verlorene Erneuerungen werden nur dann verhindert, wenn die Erneuerungen auf Spalten bezogen sind, deren Werte geändert worden sind (d.h. jene Spalten, die am ursprünglichen Ort geändert sind, wie es durch eine Differenz zwischen den Altwert- und Neuwert-Parametern angezeigt wird).
  • Ein Spaltenebenen-Replizieren verwendet denselben <Tabellennamen>-Erneuerungs-Verfahrensschritt wie ein Reihenebenen-Replizieren. 5B stellt die Unterschiede bezüglich der Logik zum Erfassen verlorener Erneuerungen und zum Anwenden von Erneuerungen für Reihenebenen- und Spaltenebenen-Replizierschemata dar. Ein Reihenebenen-Replizierschema bestimmt (beim Entscheidungsblock 536), daß aktuelle Werte an einen entfernten Ort mit alten Werten für alle Spalten in einem Tabelleneintrag übereinstimmen, und zwar vor einem Anwenden einer Erneuerung an einem entfernten Ort. Das Spaltenebenen-Replizieren prüft (beim Entscheidungsblock 534) nur jene Spalten, die durch die ursprüngliche Erneuerung geändert wurden (wie es durch eine Differenz zwischen den Werten der entsprechenden alten und neuen Parameter angezeigt ist). Wenn die Altwert-Parameter der geänderten Spalten gleich ihrer entsprechenden Werte am entfernten Ort sind, wird der Verlust einer dazwischenliegenden Erneuerung unwahrscheinlich, und die Erneuerungsoperation kann beendet werden. Wenn die Altwert-Parameter der geänderten Spalten nicht dieselben wie ihre entsprechenden Werte sind und verlorene Erneuerungen zu verhindern sind (beim Entscheidungsblock 538), wird eine Ausnahme hervorgerufen (Verarbeitungsblock 540), und die Erneuerungsoperation wird nicht durchgeführt. Wenn verlorene Erneuerungen nicht zu verhindern sind (beim Entscheidungsblock 538), kann die Erneuerungsoperation durchgeführt werden.
  • Eine Reihenebenen-Erneuerungsoperation enthält alle Spalten in einem Tabelleneintrag (beim Verarbeitungsblock 546). Jedoch enthält eine Spaltenebenen-Erneuerungsoperation nur jene Spalten, die durch die ursprüngliche Erneuerung geändert sind (wie es durch eine Differenz zwischen den Werten der entsprechenden alten und neuen Parameter angezeigt ist). Somit werden bei einer Spaltenebenen-Erneuerungsoperation nur jene Spalten, die durch die ursprüngliche Erneuerung geändert sind, mit ihrem entsprechenden Wert in den Neuwert-Parametern erneuert (Verarbeitungsblock 544).
  • Verfahrensschrittebenen-Replizieren
  • Ein Verfahrensschrittebenen-Replizieren bietet eine andere Alternative zum Replizieren von Datenänderungen. Wie es zuvor erörtert ist, ist ein Reihenebenen-Replizieren wertorientiert. Das bedeutet, daß die Werte, die das Ergebnis einer Operation sind, zu entfernten Kopien repliziert werden. Gegensätzlich dazu bietet ein Verfahrensschrittebenen-Replizieren die Möglichkeit, die logische Operation an entfernte Orte zu replizieren. Das bedeutet, daß der Verfahrensschritt, der die lokale Kopie änderte, an die entfernten Orte repliziert werden kann. Somit erzeugt der Verfahrensschritt nach der Ausführung eines Verfahrensschrittes am Ursprungsort einen DRPC, so daß der Verfahrensschritt selbst zu einem anderen Ort verzögert, um die logische Erneuerung auf eine entfernte Kopie anzuwenden.
  • Das Verfahrensschrittebenen-Replizieren bietet zusätzliche Flexibilität darin, daß eine Anwendung (z.B. das Auftragsverarbeitungsbeispiel in den 2A2C) bestimmen kann, wie ein Replizieren auszubreiten ist, und wie Replizierkonflikten (z.B. mehreren kollidierenden Erneuerungen bezüglich desselben Datenfeldes) zu begegnen ist. Das bedeutet, daß ein DRPC seine Ausbreitung entwickeln kann, und das Verfahren, das aufzurufen ist, wenn Replizierkonflikte identifiziert werden.
  • Die 9A9B zeigen ein Beispiel einer Anwendung, das ein Verfahrensschrittebenen-Replizieren zum Replizieren seiner logischen Operationen zu anderen Orten verwendet. Die Anwendung nimmt die Relationen (d.h. Tabellen) an, die in den 2A2D beschrieben sind. Weiterhin müssen irgendwelche Änderungen, die an den Tabellen am Ort der Datenbank A durchgeführt sind, an den Ort der Datenbank B repliziert werden, und umgekehrt.
  • Bei der Grund-Auftragstransaktion, die in den 2B2C dargestellt ist, wird dann, wenn einmal eine Bestellung eines Kunden empfangen ist, die Lagerbestandstabelle erneuert, um ein Absinken des Lagerbestandes um die bestellte Menge zu zeigen, und ein Eintrag wird in der Bestelltabelle eingefügt, um Information über die Bestellung zurückzuhalten. Wenn die Bestellung bei der Datenbank A empfangen und verarbeitet wird, wird dieselbe Auftragsverarbeitung zur Datenbank B repliziert, wie es in 2D dargestellt ist.
  • 9A stellt die ursprüngliche Auftragsverarbeitung dar, die durchgeführt wird, wenn eine Bestellung an einem der Orte (z.B. der Datenbank A) empfangen wird. Zum Zusammenfassen der Auftragsverarbeitung bei der Datenbank A wird beim Verarbeitungsblock 902 der bestellte Artikel in der Lagerbestandstabelle gefunden, und die Lagerbestandsmenge wird im Feld für die verfügbare Menge gespeichert. Wenn der Eintrag nicht gefunden wird, wird beim Block 906 eine Ausnahme erzeugt. Wenn die Lagerbestandsmenge (d.h. die verfügbare Menge) größer als die bestellte Menge ist, wird die Lagerbestandsmenge um die bestellte Menge verringert, und die Bestellung wird bei den Blöcken 908, 912 und 914 als erfüllt angesehen. Wenn die Lagerbestandsmenge nicht größer als die bestellte Menge ist, wird die Bestellung als zurückgestellt angesehen. In jedem Fall wird die Bestellung beim Verarbeitungsblock 916 in die Auftragstabelle eingegeben.
  • Wenn die Bestellung einmal bei der Datenbank A verarbeitet ist, wird die Auftragsverarbeitung an entfernten Orten bzw. Stellen durch Eingeben des replizierten Verfahrensschritts in den Repliziertabellen repliziert, und nachfolgend wird der replizierte Verfahrensschritt an den entfernten Orten ausgeführt. Beim Verarbeitungsblock 918 wird die zum replizierten Verfahrensschritt gehörende Information in den Repliziertabellen durch Aufrufen eines Warteschlangentransaktions-DRPC gespeichert. Wie es früher beschrieben ist, speichert der Warteschlangentransaktions-DRPC die replizierte Information in den Tabellen. Der Verarbeitungsblock 918 stellt weiterhin etwas von der Information dar, die in den Repliziertabellen gespeichert ist.
  • 10 stellt den Zustand der Repliziertabellen dar, nachdem ein Warteschlangentransaktions-DRPC die Information des replizierten Verfahrensschritts verarbeitet hat. Die Transaktionstabelle wird mit einem Transaktionsidentifizierer versehen, um die Auftragsverarbeitungstransaktion eindeutig zu identifizieren, sowie mit der Transaktions-DON, der Übertragungszeit und dem Verzögerungs-Benutzer. Die Transaktionsknotentabelle hat einen Eintrag für die entfernte Kopie der Lagerbestands- und Auftragstabellen, die in der Datenbank B angeordnet sind.
  • Die Aufruftabelle enthält einen Eintrag zum Identifizieren des Verfahrensschritts für den entfernten Auftragsort für diese Auftragsverarbeitungstransaktion (d.h. 4), und die Parameterzahl wird auf Fünf gesetzt. Das Parameterfeld in der Aufruftabelle enthält die Parameterinformation (d.h. bestellter Artikel, Ursprungsort, Kunde, bestellte Menge und den Auftragsstatus in der Datenbank A). Die Aufrufknotentabelle enthält einen Eintrag zum Identifizieren des Knotens, an dem der DRPC für den Ort der entfernten Bestellung auszuführen ist.
  • 9B zeigt ein Beispiel der entfernten Auftragsverarbeitung bei der Datenbank B. Außer für die Änderung bei der Datenkopie, die gerade geändert wird, sind die Verarbeitungsblöcke 902 bis 916 dieselben wie die entsprechenden Blöcke in 9A. Wie es zuvor angegeben ist, bietet das Verfahrensschrittebenen-Replizieren die Möglichkeit, eine Anwendung zum Bearbeiten von Ausnahmen zuzulassen, die als Ergebnis des Replizierens des Verfahrensschritts an anderen Orten auftreten. Beim vorliegenden Beispiel wird eine Prüfung durchgeführt, um zu bestimmen, ob es eine Diskrepanz bezüglich der Lagerbestandszahl des bestellten Artikels bei der Datenbank A und bei der Datenbank B gibt. Ein Weg, um dies zu bestimmen, besteht im Feststellen, ob die Bestellung erfüllt werden kann, und zwar basierend auf der Information über die verfügbare Menge in beiden Datenbanken. Somit wird beim Entscheidungsblock 920 in 9B (d.h. "Status = erfüllt?") der Auftragsstatus bei der Datenbank B gegenüber dem Auftragsstatus bei der Datenbank A geprüft. Wenn sie nicht gleich sind, kann eine Ausnahme für eine spätere Überprüfung hervorgerufen werden.
  • Anstelle des Hervorrufens einer Ausnahme für eine spätere Überprüfung können andere Verfahren zum Begegnen dieser Diskrepanz im Verfahrensschritt enthalten sein. Beim vorliegenden Beispiel könnte der Verfahrensschritt derart entwickelt worden sein, daß er die Bestellung entweder bei der Datenbank A oder bei der Datenbank B ändert. In jedem Fall bietet die vorliegende Erfindung die Möglichkeit, eine Anwendung zuzulassen, um Ausnahmen unter Verwendung des Verfahrensschrittebenen-Replizierens zu verarbeiten. Unabhängig davon, ob beim Entscheidungsblock 920 eine Diskrepanz erfaßt wird oder nicht, endet das Verfahren bei 924.
  • Verzögerte Fernverfahrensschritt-Aufrufinitiierung
  • Wie es zuvor gezeigt ist, bietet die vorliegende Erfindung dann, wenn ein DRPC einmal in den Repliziertabellen angeordnet ist, die Möglichkeit, den DRPC an einem entfernten Ort aufeinanderfolgend auszuführen. 11A stellt ein Verfahren zum Initiieren verzögerter Transaktions-DRPC dar, die in den Repliziertabellen enthalten sind.
  • Die Auswahl der Transaktions-DRPC kann unter Verwendung einer Anzahl unterschiedlicher Kriterien durchgeführt werden. Beispielsweise können sie basierend auf dem Transaktionsidentifizierer, dem Transaktionszielort oder einer Kombination der beiden ausgewählt werden. Welches Auswahlkriterium auch immer verwendet wird, werden die zu verarbeitenden Transaktionen beim Verarbeitungsblock 1102 ausgewählt. Die Auswahltransaktionen werden für eine Ausführung gemäß dem DON- Feld in den Transaktionstabelleneinträgen in eine Reihe gebracht. Beim Entscheidungsblock 1104 (d.h. "Alle ausgewählten Transaktionen verarbeitet?") endet dann, wenn alle ausgewählten Transaktionen ausgeführt worden sind, die Verarbeitung bei 1132.
  • Wenn es übrige Transaktionen gibt, wird die nächste Transaktion erhalten, und ihr Identifizierer wird im aktuellen Transaktionsidentifizierer beim Verarbeitungsblock 1106 gespeichert. Die bei einer Transaktion durchgeführten Änderungsoperationen können unterlassen werden, bevor sie bestätigt werden. Beim Verarbeitungsblock 1108 ist eine Stelle (d.h. eine Schutzstelle) vorgesehen, um den Status der Daten vor den Änderungen der aktuellen Transaktionen zu identifizieren.
  • Beim Entscheidungsblock 1110 (d.h. "Alle Aufrufe verarbeitet?") fährt dann, wenn alle Aufrufe in der aktuellen Transaktion verarbeitet worden sind, die Verarbeitung fort beim Verarbeitungsblock 1112. Beim Block 1112 werden der Eintrag in der Transaktionsknotentabelle, der der verarbeiteten Transaktion entspricht, und die geänderte entfernte Kopie aus der Transaktionsknotentabelle gelöscht. Beim Entscheidungsblock 1114 (d.h. "Gibt es noch mehr entfernte Kopien, auf die der DRPC anzuwenden ist?") fährt dann, wenn es eine Notwendigkeit zum Zurückhalten des Eintrags der aktuellen Transaktion in den Repliziertabellen gibt, die Verarbeitung fort beim Verarbeitungsblock 1118. Wenn es keine Notwendigkeit zum Zurückhalten des Eintrags in den Repliziertabellen gibt, wird der Eintrag aus den Repliziertabellen beim Verarbeitungsblock 1116 gelöscht. Beim Verarbeitungsblock 1118 werden die Änderungen der aktuellen Transaktion bestätigt, was ihre Änderungen dauerhaft macht. Die Verarbeitung fährt beim Entscheidungsblock 1104 (d.h. "Sind alle ausgewählten Transaktionen verarbeitet?") fort, um die übrigen Transaktionen durchzuführen.
  • Wenn beim Entscheidungsblock 1110 (d.h. "Alle Aufrufe verarbeitet?") nicht alle DRPC bei der aktuellen Transaktion ausgeführt worden sind, fährt die Verarbeitung beim Verarbeitungsblock 1120 fort. Beim Verarbeitungsblock 1120 wird ein Aufrufknotentabelleneintrag für den Zielortknoten verarbeitet. Der Verarbeitungsblock 1121 identifiziert einen Aufruftabelleneintrag für den im Verarbeitungsblock 1120 identifizierten Aufruf.
  • Beim Verarbeitungsblock 1122 wird die DRPC-Aufrufkette wiederhergestellt. Eine DRPC-Aufrufkette ist eine Technik zum Identifizieren des auszuführenden DRPC. Andere Einrichtungen zum Identifizieren des DRPC können verwendet werden. Beispielsweise kann ein DRPC durch eine interne Darstellung der Aufrufkette identifiziert werden. In diesem Fall kann der DRPC durch eine optimierte Systemschnittstelle niedriger Ebene unter Verwendung der inneren Darstellung ausgeführt werden. Somit kann der Aufruf ohne Wiederherstellen eines DRPC-Aufrufs in seiner Gesamtheit aufgerufen werden.
  • Wenn der DRPC unter Verwendung einer herkömmlichen DRPC-Aufrufkette identifiziert und ausgeführt wird, ist die wiederhergestellte Aufrufkette für den Verfahrensschrittaufruf für den entfernten Auftragsort in der Aufruftabelle in 10 folgendermaßen: entfernter Auftragsort (Produkt, DB_A, 10, 50, erfüllt). Wenn der entfernte Ort in dem Aufruf enthalten ist, ist der Aufruf folgendermaßen:
    Entfernte_Auftrags_Vergabe, @DB_B (Produkt, DB_A, 10, 50, erfüllt).
  • Gemäß 11A wird beim Verarbeitungsblock 1122 eine DRPC-Aufrufkette unter Verwendung des Verfahrensschrittidentifizierers und der Parameterfelder aus der Aufruftabelle wiederhergestellt. Die Parameter für einen Aufruf werden unter Verwendung des Parameterfeldes in der Aufruftabelle wiederhergestellt. 13 stellt einen Verfahrensablauf zum Aufteilen des Parameterfeldes dar. Beim Verarbeitungsblock 1302 wird ein Byte aus dem Parameterfeld extrahiert. Dieses Byte zeigt den Type des aktuellen Parameters im Parameterfeld.
  • Beim Entscheidungsblock 1304 (d.h. "Typ = 0?") endet dann, wenn das aus dem Parameterfeld extrahierte Byte gleich einem Endwert ist, die Verarbeitung beim Block 1306. Wenn das Byte kein Endwert ist, fährt die Verarbeitung beim Verarbeitungsblock 1308 fort, um "Länge" auf die nächsten zwei Bytes des Parameterfeldes zu setzen. Beim Verarbeitungsblock 1310 wird "Wert" auf die nächsten "Länge"-Bytes aus dem Parameterfeld gesetzt. Beim Verarbeitungsblock 1312 werden die Inhalte von "Wert" und "Länge" zu einer Aufrufbildungseinrichtung geführt, um diese Parameterinformation in den wiederhergestellten Aufruf einzubauen.
  • Die Verarbeitung fährt beim Block 1302 fort, um irgendwelche übrigen Parameter im Parameterfeld zu verarbeiten.
  • Gemäß 11A wird beim Verarbeitungsblock 1124 der Verfahrensschritt am entfernten Ort ausgeführt. Beim Entscheidungsblock 1126 (d.h. "Erfolgreiche Ausführung?") fährt dann, wenn der Verfahrensschritt erfolgreich ausgeführt wurde, die Verarbeitung beim Verarbeitungsblock 1127 fort, um den ausgewählten Aufrufknotentabelleneintrag zu löschen. Die Verarbeitung fährt beim Entscheidungsblock 1110 fort, um auf zusätzliche zu verarbeitende Aufrufe zu prüfen.
  • Wenn die Verfahrensschrittausführung nicht erfolgreich war, werden die Änderungen, die durchgeführt sind, da die Schutzstelle zuvor erzeugt wurde, beim Verarbeitungsblock 1128 unterlassen. Beim Verarbeitungsblock 1130 werden die Ausnahmen aufgerufen, um einen Eintrag in der Ausnahmetabelle zu erzeugen, um Information zurückzuhalten, die das nicht erfolgreiche Beenden des Verfahrensschritts betrifft. Die Ausnahmetabelle kann an einer beliebigen Stelle gespeichert werden (z.B. einem Ursprung, einem Zielort oder an beiden Orten). Beim bevorzugten Ausführungsbeispiel ist die Ausnahmetabelle auf der Seite des Zielortes gespeichert. Die Verarbeitung fährt beim Entscheidungsblock 1104 mit irgendwelchen übrigen Transaktionen fort.
  • - Ausnahme-Verarbeitungsablauf -
  • Eine Ausnahme kann in einer Relation gespeichert werden, die entweder am Ort des Ursprungs oder auf der Seite des Zielortes oder an beiden angeordnet ist. 12 stellt einen Verarbeitungsablauf zum Speichern einer Ausnahme dar. Beim Block 1202 werden Einträge in den Fehler- und Transaktionstabellen in den Zielort-Repliziertabellen basierend auf den Werten in den Tabellen des Ursprungsortes erzeugt. Beim Verarbeitungsblock 1204 werden Einträge in der Aufruftabelle und der Aufrufknotentabelle in den Zielort-Repliziertabellen basierend auf den Werten in den Tabellen am Ursprungsort erzeugt. Beim Block 1206 endet die Verarbeitung.
  • 11A stellt ein Verfahren zum Ausführen von Transaktions-DRPC-Einträgen dar, die in den Repliziertabellen enthalten sind. Zum Verarbeiten der Repliziertabelleneinträge unter Verwendung der Replizierfähigkeiten der vorliegenden Erfindung können andere Verfahren verwendet werden. Beispielsweise bietet die vorliegende Erfindung die Möglichkeit, Nicht-Transaktions-DRPC-Einträge auszuführen, die in den Repliziertabellen enthalten sind. 11B stellt ein Verfahren zum Ausführen von Nicht-Transaktions-DRPC-Einträgen dar.
  • Beim Verarbeitungsblock 1152 werden die auszuführenden Nicht-Transaktions-DRPC ausgewählt. Beim Entscheidungsblock 1154 (d.h. "Alle ausgewählten Aufrufe verarbeitet?") endet dann, wenn alle ausgewählten DRPC verarbeitet worden sind, die Verarbeitung beim Block 1174. Wenn es übrige Aufrufe gibt, fährt die Verarbeitung beim Verarbeitungsblock 1156 fort, um den nächsten Aufruf auszuwählen und ihn durch seinen Aufrufidentifizierer zu identifizieren. Wie in 11A enthält die Verarbeitung eines Nicht-Transaktions-DRPC in 11B ein Bilden einer Schutzstelle (beim Block 1158), ein Bilden eines DRPC-Aufrufs (beim Block 1160) und ein Ausführen des DRPC an einem entfernten Ort (beim Block 1162). Wenn die Ausführung nicht erfolgreich ist, werden die Änderungen wegen der Schutzstelle unterlassen (beim Block 1172), und eine Ausnahme wird hervorgerufen (beim Block 1174). Wenn die Ausführung erfolgreich ist und keine Ausnahmen während der Ausführung hervorgerufen werden, wird der Datensatz für diesen Zielort aus der Aufrufknotentabelle gelöscht (beim Block 1168), und die Verarbeitung fährt beim Entscheidungsblock 1169 fort. Beim Entscheidungsblock 1169 (d.h. "Zusätzliche Zielorte für einen Aufruf?") fährt dann, wenn es zusätzliche Zielorte für den aktuellen Aufruf gibt, die Verarbeitung beim Entscheidungsblock 1154 fort, um irgendwelche übrigen Aufrufe zu verarbeiten. Wenn es keine zusätzlichen Zielorte für einen Aufruf gibt, werden die Änderungen beim Block 1170 bestätigt.
  • Konflikte
  • Die vorliegende Erfindung bietet die Möglichkeit zum Identifizieren kollidierender Änderungen. Beispielsweise können Erneuerungen, die bei einer entfernten Kopie der Daten aufgetreten sind, verloren werden, wenn die replizierte Änderung die aktuellen Werte in der entfernten Kopie überschreibt. Somit ist es wichtig, irgendwelche Konflikte zu erfassen. Weiterhin bietet die vorliegende Erfindung dann, wenn ein Konflikt erfaßt wird, die Möglichkeit, eine Ausnahme zu übertragen, irgendwelche Änderungen an einer Datenkopie aufzuheben, nachdem eine Ausnahme erfaßt ist, und eine Ausnahmebearbeitung in einem Anwendungsprogramm einzubauen. Ausnahmen und Konfliktinformation können am Ursprungsort, dem Zielort oder beiden gespeichert werden.
  • - Konflikterfassung -
  • Wie es zuvor angegeben ist, hat ein Reihenebenen-replizierter verzögerter, entfernter Verfahrensschrittaufruf sowohl die alten als auch die neuen Werte als Teil seiner Parameter. Somit kann ein potentieller Konflikt durch Vergleichen der alten Werte der Reihe am ursprünglichen Erneuerungsort mit dem aktuellen Wert der Reihe am Zielort für die replizierte Änderung erfaßt werden. Wenn die Werte unterschiedlich sind, existiert ein Konflikt zwischen den lokalen und den entfernten Datenkopien.
  • Wie es zuvor dargestellt ist, bietet die vorliegende Erfindung die Möglichkeit für eine Anwendung, wie beispielsweise das hierin beschriebene Auftragsverarbeitungsbeispiel, mit enthaltener Fehlererfassung. Wie es beim Auftragsverarbeitungsbeispiel dargestellt ist, enthält das Verfahren für eine Bestellung an einem entfernten Ort eine Untersuchung der lokalen und der entfernten Kopien des Auftragsstatus. Somit bietet die vorliegende Erfindung die Möglichkeit für eine Anwendung zum Identifizieren von Konflikten innerhalb eines ihrer Verfahrensschritte.
  • - Behandlung von Konflikten -
  • Wenn ein Konflikt erfaßt wird, kann Information bezüglich des Konflikts identifiziert und in der Ausnahmetabelle gespeichert werden (siehe 3). Die Felder der Ausnahmetabelle bieten einen Fehlercode und eine beschreibende Fehlerkette. Zusätzlich bieten die Ausnahmetabellen Schlüssel in andere Repliziertabellen. Dies schafft die Möglichkeit zum Zugreifen auf die Information, die in den Repliziertabellen gespeichert ist, die zu einem DRPC gehören, in dem die Ausnahme hervorgerufen wird.
  • Beispielsweise kann die Ausnahmetabelle als Schlüssel in die Transaktionstabelle einen Transaktionsidentifizierer enthalten, der der gerade verarbeiteten aktuellen Transaktion entspricht. Zum Zugreifen auf den zugehörigen Eintrag in der Aufruftabelle enthält die Ausnahmetabelle weiterhin den Aufrufidentifizierer des gerade verarbeiteten aktuellen Aufruftabelleneintrags und den Zielortknoten (d.h. die entfernte Kopienstelle). Auf die Aufruftabelle kann unter Verwendung eines Verfahrensschritt-Aufrufidentifizierers zugegriffen werden.
  • Zusätzlich zum Zurückhalten von Information bezüglich eines Konflikts bietet die vorliegende Erfindung die Möglichkeit, eine verzögerte Transaktion nicht auszuführen, so daß alle Erneuerungen, die durch die ursprüngliche Transaktion verzögert werden, unterlassen werden. Die Ausführung verzögerter Aufrufe ist abhängig von einer erfolgreichen Bestätigung einer Verzögerungs-Transaktion. Wenn die Verzögerungs-Transaktion wiederaufgehoben wird, wird die Warteschlange der verzögerten Aufrufe, die beim Replizieren codiert ist, wiederaufgehoben.
  • Die vorliegende Erfindung bietet weiterhin die Möglichkeit zum Beinhalten einer Fehlerverarbeitung bei einer Anwendung. Somit kann ein Fehler verarbeitet werden, sobald ein Fehler erfaßt wird, oder für eine spätere Verarbeitung verzögert werden. Die Ausnahmetabelle bietet die Möglichkeit, nach einer normalen Verarbeitung einer Anwendung irgendwelche Fehler zu adressieren. Die folgende Fehlerverarbeitung kann mit verschiedenen Stufen der Intervention eines Bedieners und einer Automatisierung durchgeführt werden. Die vorliegende Erfindung bietet die Flexibilität, zuzulassen, daß eine Anwendung den Typ der Fehlerbearbeitung adressiert.
  • Mehrere Konfliktprogramme können vorgesehen sein, die dazu zu verwenden sind, einen Konflikt zu lösen, wenn er auftritt. Sie können in einer Reihenfolge aufgerufen werden, bis einer von ihnen einen erfolgreichen Rücksprungwert zurückbringt. Wenn keines der Auflösungsprogramme erfolgreich ist, wird die Ausnahme als Ausnahme zurückgehalten.
  • Somit ist ein Verfahren und ein Gerät zum Datenreplizieren geschaffen worden.

Claims (8)

  1. Computerbezogenes Verfahren zur Datenreplikation in Peer-to-Peer-Umgebung (Umgebung mit gleichrangigen Arbeitsstationen), wobei das Verfahren folgende Schritte umfaßt: Durchführen von Datenmodifikationen in einem ersten Computersystem und in einem zweiten Computersystem; Erzeugen von Ausbreitungs- oder Weitergabeinformationen, die mit den Datenmodifikationen in dem ersten und zweiten Computersystem verknüpft sind, wobei die Ausbreitungs- bzw. Weitergabeinformationen wiederauffindbar und modifizierbar sind und Informationen einschließen, die eine in einem anderen Computersystem auszuführende Operation angeben; und Durchführen einer bidirektionalen Replikation der Datenmodifikationen unter Verwendung der Ausbreitungs- bzw. Weitergabeinformationen, wobei die bidirektionale Replikation zwischen dem ersten Computersystem und dem zweiten Computersystem stattfindet und durch entweder das erste oder das zweite Computersystem initiiert wird, und wobei die bidirektionale Replikation in konsistenten Daten bezüglich des ersten und zweiten Computersystems resultiert, Identifizieren von Ausnahmeereignissen während der Durchführung der Datenmodifikationen, wobei der Schritt des Durchführens von Datenmodifikationen von einer Prozedur durchgeführt wird und der Schritt des Identifizierens der Ausnahmeereignisse in der Prozedur enthalten ist, wobei ferner die Prozedur die Ausnahmeereignisse durch die Spezifizierung mehrerer Konfliktroutinen bearbeitet, die der Reihe nach aufgerufen werden können, bis eine von ihnen einen erfolgreichen Wert zurückgibt.
  2. Verfahren nach Anspruch 1, bei dem der Schritt des Erzeugens der Ausbreitungs- bzw. Weitergabinformationen ferner folgende Schritte umfaßt: Erhalten von Informationen bezüglich einer logischen Arbeitseinheit; Erhalten von Informationen bezüglich der Zielorte, an denen die logische Arbeitseinheit durchzuführen ist; Erhalten von Informationen bezüglich Verfahrensschritten oder Prozeduren zur Replikation der logischen Arbeitseinheit; und Erhalten von Informationen bezüglich von Zielorten, an denen die Verfahrensschritte oder Prozeduren durchzuführen sind.
  3. Verfahren nach Anspruch 2, welches ferner umfaßt: Erhalten von Informationen bezüglich von Ausnahmebedingungen, die während der Modifikationen hervorgerufen werden.
  4. Verfahren nach Anspruch 2, bei dem der Schritt des Erhaltens von Informationen bezüglich von Zielorten, an denen die Verfahrensschritte oder Prozeduren durchzuführen sind, den Schritt des Erhaltens von Informationen zur Identifizierung eines einer Vielzahl von in einem Netzwerk verbundenen Computern, in dem die Verfahrensschritte oder Prozeduren durchzuführen sind, umfaßt.
  5. Verfahren nach Anspruch 2, bei dem der Schritt des Identifizierens von Ausnahmebedingungen die Ermittlung, ob die Datenmodifikationen in dem ersten und dem zweiten Computersystem miteinander in Konflikt stehen, umfaßt.
  6. Verfahren nach Anspruch 1, welches ferner den Schritt des Speicherns der Ausbreitungs- bzw. Weitergabeinformationen und der Ausnahmeereignisse in einer oder mehreren Tabellen umfaßt.
  7. Verfahren nach Anspruch 2, bei dem der Schritt des Erhaltens von Informationen bezüglich einer logischen Arbeitseinheit einen Schritt des Erhaltens von Informationen bezüglich einer logischen Arbeitseinheit einen Schritt des Erhaltens von Informationen bezüglich von Modifikationen eines Datenwerts umfaßt.
  8. Verfahren nach Anspruch 7, bei dem der Schritt des Erhaltens von Informationen bezüglich der Modifikation eines Datenwertes den Schritt des Erhaltens von Informationen bezüglich der Modifikation eines Datenwertes einer Datenbasis umfaßt.
DE4497149A 1993-09-24 1994-09-09 Computerbezogenes Verfahren zur Datenreplikation in Peer-to-Peer-Umgebung Expired - Lifetime DE4497149B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12658693A 1993-09-24 1993-09-24
US126586 1993-09-24
PCT/US1994/010093 WO1995008809A2 (en) 1993-09-24 1994-09-09 Method and apparatus for data replication

Publications (1)

Publication Number Publication Date
DE4497149B4 true DE4497149B4 (de) 2005-02-10

Family

ID=22425644

Family Applications (2)

Application Number Title Priority Date Filing Date
DE4497149T Expired - Lifetime DE4497149T1 (de) 1993-09-24 1994-09-09 Verfahren und Vorrichtung zum Replizieren von Daten
DE4497149A Expired - Lifetime DE4497149B4 (de) 1993-09-24 1994-09-09 Computerbezogenes Verfahren zur Datenreplikation in Peer-to-Peer-Umgebung

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE4497149T Expired - Lifetime DE4497149T1 (de) 1993-09-24 1994-09-09 Verfahren und Vorrichtung zum Replizieren von Daten

Country Status (6)

Country Link
US (2) US5806075A (de)
AU (1) AU7684094A (de)
CA (1) CA2172517C (de)
DE (2) DE4497149T1 (de)
GB (1) GB2297181B (de)
WO (1) WO1995008809A2 (de)

Families Citing this family (363)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU6500596A (en) 1995-07-20 1997-02-18 Novell, Inc. Transaction log management in a disconnectable computer and network
AU6678096A (en) * 1995-07-20 1997-02-18 Novell, Inc. Transaction synchronization in a disconnectable computer and network
AU6500496A (en) * 1995-07-20 1997-02-18 Novell, Inc. Transaction clash management in a disconnectable computer and network
US5815649A (en) * 1995-10-20 1998-09-29 Stratus Computer, Inc. Distributed fault tolerant digital data storage subsystem for fault tolerant computer system
US5806074A (en) * 1996-03-19 1998-09-08 Oracle Corporation Configurable conflict resolution in a computer implemented distributed database
WO1997043724A1 (fr) * 1996-05-10 1997-11-20 Aim Corporation Terminal et systeme de recherche de messages
US6148289A (en) * 1996-05-10 2000-11-14 Localeyes Corporation System and method for geographically organizing and classifying businesses on the world-wide web
US7349892B1 (en) 1996-05-10 2008-03-25 Aol Llc System and method for automatically organizing and classifying businesses on the World-Wide Web
US5878434A (en) * 1996-07-18 1999-03-02 Novell, Inc Transaction clash management in a disconnectable computer and network
US5995980A (en) * 1996-07-23 1999-11-30 Olson; Jack E. System and method for database update replication
ATE536588T1 (de) 1996-07-25 2011-12-15 Xcelera Inc Web-server system mit primären und sekundären servern
US5832500A (en) * 1996-08-09 1998-11-03 Digital Equipment Corporation Method for searching an index
US5864863A (en) * 1996-08-09 1999-01-26 Digital Equipment Corporation Method for parsing, indexing and searching world-wide-web pages
US6073139A (en) * 1996-08-15 2000-06-06 Gioquest, A Division Of Schlumberger Technology Corp. Integrated data communication and data access system including the application data interface
US5943675A (en) * 1996-09-25 1999-08-24 Allen-Bradley Company, Llc Change log historian system for memory shared by multiple workstations
US6202085B1 (en) * 1996-12-06 2001-03-13 Microsoft Corportion System and method for incremental change synchronization between multiple copies of data
AU6336798A (en) 1997-02-27 1998-09-29 Siebel Systems, Inc. Method of synchronizing independently distributed software and database schema
US5899990A (en) * 1997-03-31 1999-05-04 Sun Microsystems, Inc. Java-to-Database Connectivity Server
US6021413A (en) * 1997-04-01 2000-02-01 The University Of Illinois Board Of Trustees Application-directed variable-granularity caching and consistency management
US5970488A (en) * 1997-05-05 1999-10-19 Northrop Grumman Corporation Real-time distributed database system and method
US5963959A (en) * 1997-05-30 1999-10-05 Oracle Corporation Fast refresh of snapshots
US5995981A (en) * 1997-06-16 1999-11-30 Telefonaktiebolaget Lm Ericsson Initialization of replicated data objects
US7082475B2 (en) * 1997-06-19 2006-07-25 International Business Machines Corporation Web server with automated workflow
US6701376B1 (en) * 1997-06-19 2004-03-02 International Business Machines Corporation Web server enabling browser access to HTML and Non-HTML documents
US5937409A (en) * 1997-07-25 1999-08-10 Oracle Corporation Integrating relational databases in an object oriented environment
US6012059A (en) * 1997-08-21 2000-01-04 Dataxel Corporation Method and apparatus for replicated transaction consistency
JP3391673B2 (ja) * 1997-10-08 2003-03-31 富士通株式会社 サービス管理装置およびサービス管理装置のデータベース照合方法並びにデータベース照合プログラムが記録されたコンピュータ読み取り可能な記録媒体
US5924096A (en) * 1997-10-15 1999-07-13 Novell, Inc. Distributed database using indexed into tags to tracks events according to type, update cache, create virtual update log on demand
US6178529B1 (en) 1997-11-03 2001-01-23 Microsoft Corporation Method and system for resource monitoring of disparate resources in a server cluster
US5946680A (en) * 1997-11-28 1999-08-31 International Business Machines Corporation Method of determining the unique ID of an object in a peer to peer configuration of object indexes
WO1999033007A1 (en) * 1997-12-22 1999-07-01 Rightworks Corporation System and method for collaborative data sharing
JPH11272538A (ja) * 1998-03-26 1999-10-08 Mitsubishi Electric Corp 文書管理システム
US6341339B1 (en) * 1998-03-26 2002-01-22 Compaq Computer Corporation Apparatus and method for maintaining data coherence within a cluster of symmetric multiprocessors
US20020107837A1 (en) * 1998-03-31 2002-08-08 Brian Osborne Method and apparatus for logically reconstructing incomplete records in a database using a transaction log
US6366917B1 (en) * 1998-04-01 2002-04-02 Webputty, Inc. Method of modifying a populated database structure by modifying metadata describing the database structure
US6449734B1 (en) 1998-04-17 2002-09-10 Microsoft Corporation Method and system for discarding locally committed transactions to ensure consistency in a server cluster
US6360331B2 (en) 1998-04-17 2002-03-19 Microsoft Corporation Method and system for transparently failing over application configuration information in a server cluster
US6243825B1 (en) 1998-04-17 2001-06-05 Microsoft Corporation Method and system for transparently failing over a computer name in a server cluster
US6163855A (en) * 1998-04-17 2000-12-19 Microsoft Corporation Method and system for replicated and consistent modifications in a server cluster
US6209129B1 (en) * 1998-05-01 2001-03-27 United Video Properties, Inc. Passive television program guide system with local information
US6304882B1 (en) * 1998-05-05 2001-10-16 Informix Software, Inc. Data replication system and method
US6484109B1 (en) * 1998-05-20 2002-11-19 Dli Engineering Coporation Diagnostic vibration data collector and analyzer
US6529904B1 (en) 1998-05-28 2003-03-04 Oracle Corp. Deployment of snapshots with parameterized data description language strings
US6792540B1 (en) 1998-05-28 2004-09-14 Oracle International Corporation Data replication security
US6847971B1 (en) * 1998-05-28 2005-01-25 Oracle International Corporation Lightweight data replication
US6532479B2 (en) * 1998-05-28 2003-03-11 Oracle Corp. Data replication for front office automation
US7162689B2 (en) 1998-05-28 2007-01-09 Oracle International Corporation Schema evolution in replication
US6604236B1 (en) 1998-06-30 2003-08-05 Iora, Ltd. System and method for generating file updates for files stored on read-only media
US6317754B1 (en) * 1998-07-03 2001-11-13 Mitsubishi Electric Research Laboratories, Inc System for user control of version /Synchronization in mobile computing
US6226650B1 (en) * 1998-09-17 2001-05-01 Synchrologic, Inc. Database synchronization and organization system and method
US6366902B1 (en) 1998-09-24 2002-04-02 International Business Machines Corp. Using an epoch number to optimize access with rowid columns and direct row access
US6343286B1 (en) 1998-09-24 2002-01-29 International Business Machines Corporation Efficient technique to defer large object access with intermediate results
US6470359B1 (en) 1998-09-24 2002-10-22 International Business Machines Corporation Fast technique for recovering an index on an auxiliary table
US6363389B1 (en) 1998-09-24 2002-03-26 International Business Machines Corporation Technique for creating a unique quasi-random row identifier
US6606617B1 (en) 1998-09-24 2003-08-12 International Business Machines Corporation Optimized technique for prefetching LOB table space pages
US6144970A (en) * 1998-09-24 2000-11-07 International Business Machines Corporation Technique for inplace reorganization of a LOB table space
US6694340B1 (en) 1998-09-24 2004-02-17 International Business Machines Corporation Technique for determining the age of the oldest reading transaction with a database object
US6343293B1 (en) 1998-09-24 2002-01-29 International Business Machines Corporation Storing the uncompressed data length in a LOB map to speed substring access within a LOB value
US8010627B1 (en) * 1998-09-25 2011-08-30 Sprint Communications Company L.P. Virtual content publishing system
US6289511B1 (en) * 1998-09-29 2001-09-11 Telephonaktiebolaget Lm Ericsson Method and system for distributing software in a telecommunications network
US6460051B1 (en) * 1998-10-28 2002-10-01 Starfish Software, Inc. System and methods for synchronizing datasets in a communication environment having high-latency or other adverse characteristics
US6449622B1 (en) * 1999-03-08 2002-09-10 Starfish Software, Inc. System and methods for synchronizing datasets when dataset changes may be received out of order
US6343299B1 (en) 1998-11-16 2002-01-29 International Business Machines Corporation Method and apparatus for random update synchronization among multiple computing devices
US6886012B1 (en) 1998-11-18 2005-04-26 International Business Machines Corporation Providing traditional update semantics when updates change the location of data records
US6397125B1 (en) * 1998-12-18 2002-05-28 International Business Machines Corporation Method of and apparatus for performing design synchronization in a computer system
US6557056B1 (en) * 1998-12-30 2003-04-29 Nortel Networks Limited Method and apparatus for exchanging data between transactional and non-transactional input/output systems in a multi-processing, shared memory environment
US6535892B1 (en) 1999-03-08 2003-03-18 Starfish Software, Inc. System and methods for exchanging messages between a client and a server for synchronizing datasets
US7756830B1 (en) * 1999-03-31 2010-07-13 International Business Machines Corporation Error detection protocol
US6298308B1 (en) 1999-05-20 2001-10-02 Reid Asset Management Company Diagnostic network with automated proactive local experts
US6473829B1 (en) * 1999-05-28 2002-10-29 International Business Machines Corporation Data storage device providing communication between processing units
US6122630A (en) * 1999-06-08 2000-09-19 Iti, Inc. Bidirectional database replication scheme for controlling ping-ponging
US6411967B1 (en) * 1999-06-18 2002-06-25 Reliable Network Solutions Distributed processing system with replicated management information base
US6529921B1 (en) 1999-06-29 2003-03-04 Microsoft Corporation Dynamic synchronization of tables
US6597700B2 (en) * 1999-06-30 2003-07-22 Nortel Networks Limited System, device, and method for address management in a distributed communication environment
US6446113B1 (en) * 1999-07-19 2002-09-03 Groove Networks, Inc. Method and apparatus for activity-based collaboration by a computer system equipped with a dynamics manager
US6859821B1 (en) * 1999-07-19 2005-02-22 Groove Networks, Inc. Method and apparatus for prioritizing data change requests and maintaining data consistency in a distributed computer system equipped for activity-based collaboration
US6393434B1 (en) * 1999-09-14 2002-05-21 International Business Machines Corporation Method and system for synchronizing data using fine-grained synchronization plans
US6694335B1 (en) 1999-10-04 2004-02-17 Microsoft Corporation Method, computer readable medium, and system for monitoring the state of a collection of resources
US6944642B1 (en) 1999-10-04 2005-09-13 Microsoft Corporation Systems and methods for detecting and resolving resource conflicts
US6578054B1 (en) 1999-10-04 2003-06-10 Microsoft Corporation Method and system for supporting off-line mode of operation and synchronization using resource state information
US6463501B1 (en) 1999-10-21 2002-10-08 International Business Machines Corporation Method, system and program for maintaining data consistency among updates across groups of storage areas using update times
EP1102191A3 (de) * 1999-11-17 2002-06-12 Nokia Corporation Verfahren und Apparat zum Abstimmen von Daten zwischen Geräten
US6493727B1 (en) * 2000-02-07 2002-12-10 Hewlett-Packard Company System and method for synchronizing database in a primary device and a secondary device that are derived from a common database
US6775708B1 (en) * 2000-02-08 2004-08-10 Microsoft Corporation Identification of transactional boundaries
US7028251B2 (en) * 2000-03-02 2006-04-11 Iora, Ltd. System and method for reducing the size of data difference representations
US6820213B1 (en) 2000-04-13 2004-11-16 Stratus Technologies Bermuda, Ltd. Fault-tolerant computer system with voter delay buffer
US6691257B1 (en) 2000-04-13 2004-02-10 Stratus Technologies Bermuda Ltd. Fault-tolerant maintenance bus protocol and method for using the same
US6687851B1 (en) 2000-04-13 2004-02-03 Stratus Technologies Bermuda Ltd. Method and system for upgrading fault-tolerant systems
US6708283B1 (en) 2000-04-13 2004-03-16 Stratus Technologies, Bermuda Ltd. System and method for operating a system with redundant peripheral bus controllers
US6633996B1 (en) 2000-04-13 2003-10-14 Stratus Technologies Bermuda Ltd. Fault-tolerant maintenance bus architecture
US6735715B1 (en) 2000-04-13 2004-05-11 Stratus Technologies Bermuda Ltd. System and method for operating a SCSI bus with redundant SCSI adaptors
AU2001264944A1 (en) * 2000-05-25 2001-12-03 Transacttools, Inc. A method, system and apparatus for establishing, monitoring, and managing connectivity for communication among heterogeneous systems
US6823355B1 (en) * 2000-05-31 2004-11-23 International Business Machines Corporation Synchronous replication of transactions in a distributed system
US7389208B1 (en) * 2000-06-30 2008-06-17 Accord Solutions, Inc. System and method for dynamic knowledge construction
KR100471567B1 (ko) * 2000-07-29 2005-03-07 엘지전자 주식회사 이중화 시스템 환경에서 데이터 동기화를 위한 트랜잭션관리 방법
US6529917B1 (en) * 2000-08-14 2003-03-04 Divine Technology Ventures System and method of synchronizing replicated data
US6801921B2 (en) * 2000-09-08 2004-10-05 Hitachi, Ltd. Method and system for managing multiple database storage units
US6879996B1 (en) 2000-09-13 2005-04-12 Edward W. Laves Method and apparatus for displaying personal digital assistant synchronization data using primary and subordinate data fields
US20020083213A1 (en) * 2000-09-18 2002-06-27 Oberstein Brien M. Method and system for simulating and certifying complex business applications
JP4497691B2 (ja) * 2000-09-27 2010-07-07 株式会社日立製作所 データベース管理方法及び管理システム
CN100437569C (zh) * 2000-10-09 2008-11-26 最佳收益有限公司 数据处理方法和装置
GB2368411B (en) * 2000-10-25 2004-01-28 Proksim Software Inc Sharing data over a network
US6694337B1 (en) * 2000-10-26 2004-02-17 Intel Corporation Synchronizing databases
US6609126B1 (en) 2000-11-15 2003-08-19 Appfluent Technology, Inc. System and method for routing database requests to a database and a cache
US20020065899A1 (en) * 2000-11-30 2002-05-30 Smith Erik Richard System and method for delivering dynamic content
GB0031157D0 (en) * 2000-12-20 2001-01-31 Ncr Int Inc Streaming of data
US6973093B1 (en) 2000-12-29 2005-12-06 Cisco Technology, Inc. Switching fabric for interfacing a host processor and a plurality of network modules
US6959301B2 (en) * 2001-01-04 2005-10-25 Reuters Limited Maintaining and reconstructing the history of database content modified by a series of events
US7054887B2 (en) * 2001-01-30 2006-05-30 Ibm Corporation Method and system for object replication in a content management system
US6804672B1 (en) * 2001-01-31 2004-10-12 Oracle International Corporation Method and mechanism for dependency tracking
US6728719B1 (en) 2001-01-31 2004-04-27 Oracle International Corporation Method and mechanism for dependency tracking for unique constraints
US6714943B1 (en) 2001-01-31 2004-03-30 Oracle International Corporation Method and mechanism for tracking dependencies for referential integrity constrained tables
US20020107835A1 (en) * 2001-02-08 2002-08-08 Coram Michael T. System and method for adaptive result set caching
US20070276873A1 (en) * 2001-02-13 2007-11-29 Vahdat Amin M System and method for optimizing efficiency of replicated network services
US6766479B2 (en) 2001-02-28 2004-07-20 Stratus Technologies Bermuda, Ltd. Apparatus and methods for identifying bus protocol violations
US6662196B2 (en) 2001-03-16 2003-12-09 Iti, Inc. Collision avoidance in bidirectional database replication
US7103586B2 (en) * 2001-03-16 2006-09-05 Gravic, Inc. Collision avoidance in database replication systems
US7177866B2 (en) * 2001-03-16 2007-02-13 Gravic, Inc. Asynchronous coordinated commit replication and dual write with replication transmission and locking of target database on updates only
US7065672B2 (en) * 2001-03-28 2006-06-20 Stratus Technologies Bermuda Ltd. Apparatus and methods for fault-tolerant computing using a switching fabric
FR2824211B1 (fr) * 2001-04-27 2003-06-27 Radio Electronique Aides Tech Systeme et procede de communication entre stations traitant des dossiers communs
WO2002091181A2 (en) * 2001-05-04 2002-11-14 Koninklijke Philips Electronics N.V. Method for charging information about an error in a database
US7111023B2 (en) * 2001-05-24 2006-09-19 Oracle International Corporation Synchronous change data capture in a relational database
US6996750B2 (en) * 2001-05-31 2006-02-07 Stratus Technologies Bermuda Ltd. Methods and apparatus for computer bus error termination
US7356550B1 (en) 2001-06-25 2008-04-08 Taiwan Semiconductor Manufacturing Company Method for real time data replication
US7499924B2 (en) * 2001-06-28 2009-03-03 International Business Machines Corporation Method for releasing update locks on rollback to savepoint
US20030004970A1 (en) * 2001-06-28 2003-01-02 Watts Julie Ann Method for releasing update locks on rollback to savepoint
US8234156B2 (en) 2001-06-28 2012-07-31 Jpmorgan Chase Bank, N.A. System and method for characterizing and selecting technology transition options
US20030004822A1 (en) * 2001-06-29 2003-01-02 Internatioanl Business Machines Corporation Method and apparatus for integrated multi-channel retailing
US20030033303A1 (en) * 2001-08-07 2003-02-13 Brian Collins System and method for restricting access to secured data
US20040205587A1 (en) * 2001-08-07 2004-10-14 Draper Stephen P.W. System and method for enumerating arbitrary hyperlinked structures in which links may be dynamically calculable
US6745209B2 (en) * 2001-08-15 2004-06-01 Iti, Inc. Synchronization of plural databases in a database replication system
US9659292B1 (en) * 2001-08-30 2017-05-23 EMC IP Holding Company LLC Storage-based replication of e-commerce transactions in real time
US7054867B2 (en) * 2001-09-18 2006-05-30 Skyris Networks, Inc. Systems, methods and programming for routing and indexing globally addressable objects and associated business models
US7493363B2 (en) 2001-09-19 2009-02-17 Microsoft Corporation Peer-to-peer group management and method for maintaining peer-to-peer graphs
GB2380830A (en) * 2001-10-13 2003-04-16 Hewlett Packard Co Automatic file sharing in a peer to peer network by use of constraints between file system domains
US7149761B2 (en) * 2001-11-13 2006-12-12 Tadpole Technology Plc System and method for managing the synchronization of replicated version-managed databases
US6915311B2 (en) 2001-12-05 2005-07-05 International Business Machines Corporation Database system for selective clearing of stored conflicting replicated documents by periodic application of a prioritized sequence of attributes with values to distinguish between replicated documents
US20030135552A1 (en) * 2002-01-14 2003-07-17 Blackstock Michael A. Method for discovering and discriminating devices on local collaborative networks to facilitate collaboration among users
US7024429B2 (en) 2002-01-31 2006-04-04 Nextpage,Inc. Data replication based upon a non-destructive data model
US6909910B2 (en) 2002-02-01 2005-06-21 Microsoft Corporation Method and system for managing changes to a contact database
GB0202600D0 (en) * 2002-02-05 2002-03-20 Ibm Consolidation of replicated data
US8966081B1 (en) * 2002-02-13 2015-02-24 Netapp, Inc. Method for device security in a heterogeneous storage network environment
US6779093B1 (en) * 2002-02-15 2004-08-17 Veritas Operating Corporation Control facility for processing in-band control messages during data replication
US7539735B2 (en) * 2002-03-06 2009-05-26 International Business Machines Corporation Multi-session no query restore
US20030172070A1 (en) * 2002-03-06 2003-09-11 Sawadsky Nicholas Justin Synchronous peer-to-peer multipoint database synchronization
US6901401B2 (en) * 2002-03-21 2005-05-31 International Business Machines Corporation System and method for database integrity via local database lockout
US7149759B2 (en) 2002-03-25 2006-12-12 International Business Machines Corporation Method and system for detecting conflicts in replicated data in a database network
US8738568B2 (en) 2011-05-05 2014-05-27 Oracle International Corporation User-defined parallelization in transactional replication of in-memory database
US7406486B1 (en) * 2002-04-10 2008-07-29 Oracle International Corporation Transforming transactions to increase parallelism when replicating
CA2384174A1 (en) * 2002-04-29 2003-10-29 Ibm Canada Limited-Ibm Canada Limitee Classification of data for insertion into a database
US7426559B2 (en) * 2002-05-09 2008-09-16 International Business Machines Corporation Method for sequential coordination of external database application events with asynchronous internal database events
US6978396B2 (en) * 2002-05-30 2005-12-20 Solid Information Technology Oy Method and system for processing replicated transactions parallel in secondary server
US8549114B2 (en) * 2002-06-12 2013-10-01 Bladelogic, Inc. Method and system for model-based heterogeneous server configuration management
US7613772B2 (en) * 2002-07-25 2009-11-03 Colligo Networks, Inc. Method for context based discovery and filtering of portable collaborative networks
US7065674B2 (en) * 2002-08-01 2006-06-20 Microsoft Corporation Computer system fault recovery using distributed fault-recovery information
US6976022B2 (en) 2002-09-16 2005-12-13 Oracle International Corporation Method and mechanism for batch processing transaction logging records
US7089448B2 (en) 2002-09-18 2006-08-08 Netezza Corporation Disk mirror architecture for database appliance
US7337351B2 (en) * 2002-09-18 2008-02-26 Netezza Corporation Disk mirror architecture for database appliance with locally balanced regeneration
US20040083158A1 (en) * 2002-10-09 2004-04-29 Mark Addison Systems and methods for distributing pricing data for complex derivative securities
US7340502B2 (en) * 2002-10-24 2008-03-04 Microsoft Corporation Method and apparatus for maintaining consistency of a shared space across multiple endpoints in a peer-to-peer collaborative computer system
US7340650B2 (en) 2002-10-30 2008-03-04 Jp Morgan Chase & Co. Method to measure stored procedure execution statistics
CN1248461C (zh) * 2002-11-08 2006-03-29 华为技术有限公司 一种无线局域网中对用户签约信息的处理方法
US7395536B2 (en) * 2002-11-14 2008-07-01 Sun Microsystems, Inc. System and method for submitting and performing computational tasks in a distributed heterogeneous networked environment
US7149752B2 (en) * 2002-12-03 2006-12-12 Jp Morgan Chase Bank Method for simplifying databinding in application programs
US7613812B2 (en) 2002-12-04 2009-11-03 Microsoft Corporation Peer-to-peer identity management interfaces and methods
US7085759B2 (en) 2002-12-06 2006-08-01 Jpmorgan Chase Bank System and method for communicating data to a process
US7370025B1 (en) 2002-12-17 2008-05-06 Symantec Operating Corporation System and method for providing access to replicated data
US7856454B2 (en) 2002-12-20 2010-12-21 Siebel Systems, Inc. Data model for business relationships
US8538840B2 (en) * 2002-12-20 2013-09-17 Siebel Systems, Inc. Financial services data model
US8032439B2 (en) 2003-01-07 2011-10-04 Jpmorgan Chase Bank, N.A. System and method for process scheduling
US7624158B2 (en) 2003-01-14 2009-11-24 Eycast Inc. Method and apparatus for transmission and storage of digital medical data
US7152076B2 (en) * 2003-01-23 2006-12-19 Microsoft Corporation System and method for efficient multi-master replication
US7533141B2 (en) * 2003-01-24 2009-05-12 Sun Microsystems, Inc. System and method for unique naming of resources in networked environments
US7596625B2 (en) * 2003-01-27 2009-09-29 Microsoft Corporation Peer-to-peer grouping interfaces and methods
US7401156B2 (en) 2003-02-03 2008-07-15 Jp Morgan Chase Bank Method using control interface to suspend software network environment running on network devices for loading and executing another software network environment
US7484087B2 (en) * 2003-02-24 2009-01-27 Jp Morgan Chase Bank Systems, methods, and software for preventing redundant processing of transmissions sent to a remote host computer
US8392298B2 (en) 2003-03-04 2013-03-05 Siebel Systems, Inc. Invoice adjustment data object for a common data object format
US8473399B2 (en) 2003-03-04 2013-06-25 Siebel Systems, Inc. Invoice data object for a common data object format
US20070208577A1 (en) * 2003-03-24 2007-09-06 Leon Maria T B Position common object
US7904340B2 (en) * 2003-03-24 2011-03-08 Siebel Systems, Inc. Methods and computer-readable medium for defining a product model
US9704120B2 (en) * 2003-03-24 2017-07-11 Oracle International Corporation Inventory balance common object
US7912932B2 (en) * 2003-03-24 2011-03-22 Siebel Systems, Inc. Service request common object
US8489470B2 (en) * 2003-03-24 2013-07-16 Siebel Systems, Inc. Inventory location common object
US8510179B2 (en) * 2003-03-24 2013-08-13 Siebel Systems, Inc. Inventory transaction common object
US7379998B2 (en) * 2003-03-31 2008-05-27 Jp Morgan Chase Bank System and method for multi-platform queue queries
US7039773B2 (en) 2003-04-29 2006-05-02 Oracle International Corporation Method and mechanism for efficient implementation of ordered records
US7406499B2 (en) * 2003-05-09 2008-07-29 Microsoft Corporation Architecture for partition computation and propagation of changes in data replication
US7366722B2 (en) 2003-05-15 2008-04-29 Jp Morgan Chase Bank System and method for specifying application services and distributing them across multiple processors using XML
US7509641B2 (en) * 2003-05-16 2009-03-24 Jp Morgan Chase Bank Job processing framework
US7533389B2 (en) * 2003-06-20 2009-05-12 Sun Microsystems, Inc. Dynamic loading of remote classes
US7243088B2 (en) * 2003-08-06 2007-07-10 Oracle International Corporation Database management system with efficient version control
US7805411B2 (en) * 2003-09-06 2010-09-28 Oracle International Corporation Auto-tuning SQL statements
US7269588B1 (en) 2003-09-24 2007-09-11 Oracle International Corporation Neighborhood locking technique for increasing concurrency among transactions
US20050091316A1 (en) * 2003-10-03 2005-04-28 Oscar Ponce System and method for creating and selectively sharing data elements in a peer-to-peer network
US7472254B2 (en) * 2003-10-10 2008-12-30 Iora, Ltd. Systems and methods for modifying a set of data objects
US7496648B2 (en) 2003-10-23 2009-02-24 Microsoft Corporation Managed peer name resolution protocol (PNRP) interfaces for peer to peer networking
US7644376B2 (en) * 2003-10-23 2010-01-05 Microsoft Corporation Flexible architecture for notifying applications of state changes
US7949996B2 (en) 2003-10-23 2011-05-24 Microsoft Corporation Peer-to-peer identity management managed interfaces and methods
US7555481B1 (en) 2003-10-28 2009-06-30 Oracle Corporation Method and apparatus for increasing transaction concurrency by early release of locks in groups
US7536421B2 (en) * 2003-10-31 2009-05-19 Landmark Technology Partners, Inc. Intelligent client architecture computer system and method
US8060619B1 (en) * 2003-11-07 2011-11-15 Symantec Operating Corporation Direct connections to a plurality of storage object replicas in a computer network
US20090222537A1 (en) * 2003-12-04 2009-09-03 Colligo Newworks, Inc., A Canadian Corporation System And Method For Interactive Instant Networking
US7500020B1 (en) 2003-12-31 2009-03-03 Symantec Operating Corporation Coherency of replicas for a distributed file sharing system
US7330860B2 (en) 2004-02-26 2008-02-12 International Business Machines Corporation Fault tolerant mechanism to handle initial load of replicated object in live system
US7490083B2 (en) * 2004-02-27 2009-02-10 International Business Machines Corporation Parallel apply processing in data replication with preservation of transaction integrity and source ordering of dependent updates
US8688634B2 (en) * 2004-02-27 2014-04-01 International Business Machines Corporation Asynchronous peer-to-peer data replication
US7433899B2 (en) * 2004-03-01 2008-10-07 International Business Machines Corporation Apparatus, system, and method for managing multiple copy versions
US7702767B2 (en) 2004-03-09 2010-04-20 Jp Morgan Chase Bank User connectivity process management system
US7757226B2 (en) * 2004-03-17 2010-07-13 Oracle International Corporation Method and mechanism for performing a rolling upgrade of distributed computer software
US8688803B2 (en) * 2004-03-26 2014-04-01 Microsoft Corporation Method for efficient content distribution using a peer-to-peer networking infrastructure
EP1618378A4 (de) * 2004-03-29 2008-10-08 Microsoft Corp Systeme und verfahren für auf versionieren beruhende trigger
US20050218739A1 (en) * 2004-04-01 2005-10-06 Microsoft Corporation System and method for sharing objects between computers over a network
US9734222B1 (en) 2004-04-06 2017-08-15 Jpmorgan Chase Bank, N.A. Methods and systems for using script files to obtain, format and transport data
WO2005103928A1 (en) * 2004-04-22 2005-11-03 Waratek Pty Limited Multiple computer architecture with replicated memory fields
US7707179B2 (en) 2004-04-23 2010-04-27 Waratek Pty Limited Multiple computer architecture with synchronization
US7849452B2 (en) 2004-04-23 2010-12-07 Waratek Pty Ltd. Modification of computer applications at load time for distributed execution
US7376830B2 (en) 2004-04-26 2008-05-20 Jp Morgan Chase Bank System and method for routing messages
US20050251523A1 (en) * 2004-05-07 2005-11-10 Oracle International Corporation Minimizing downtime for application changes in database systems
US7788285B2 (en) * 2004-05-14 2010-08-31 Oracle International Corporation Finer grain dependency tracking for database objects
US8112296B2 (en) * 2004-05-21 2012-02-07 Siebel Systems, Inc. Modeling of job profile data
US7865390B2 (en) * 2004-05-21 2011-01-04 Siebel Systems, Inc. Modeling of employee performance result data
US7805407B1 (en) 2004-06-16 2010-09-28 Oracle America, Inc. System and method for dynamic configuration of replicated database servers
US7665127B1 (en) 2004-06-30 2010-02-16 Jp Morgan Chase Bank System and method for providing access to protected services
US7617501B2 (en) 2004-07-09 2009-11-10 Quest Software, Inc. Apparatus, system, and method for managing policies on a computer having a foreign operating system
US7392471B1 (en) 2004-07-28 2008-06-24 Jp Morgan Chase Bank System and method for comparing extensible markup language (XML) documents
US7571164B2 (en) * 2004-10-01 2009-08-04 Sap Ag System and method for deferred database connection configuration
US7447717B2 (en) * 2004-10-07 2008-11-04 International Business Machines Corporation Method of changing the page size of a DB2 table space while keeping the object available
US7739244B2 (en) * 2004-10-14 2010-06-15 Oracle International Corporation Operating logging for online recovery in shared memory information systems
US7739246B2 (en) * 2004-10-14 2010-06-15 Microsoft Corporation System and method of merging contacts
US20060085492A1 (en) * 2004-10-14 2006-04-20 Singh Arun K System and method for modifying process navigation
US7318064B2 (en) * 2004-10-28 2008-01-08 International Business Machines Corporation Using MD4 checksum as primary keys to link transactions across machines
US7933868B2 (en) * 2004-11-04 2011-04-26 Microsoft Corporation Method and system for partition level cleanup of replication conflict metadata
US7716660B2 (en) * 2004-12-14 2010-05-11 Microsoft Corporation Method and system for downloading updates
US20060136512A1 (en) * 2004-12-20 2006-06-22 International Business Machines Corporation Method and system for replicating data between a community of distributed entities
US9020887B2 (en) 2004-12-21 2015-04-28 Proofpoint, Inc. Managing the status of documents in a distributed storage system
US9332069B2 (en) 2012-12-28 2016-05-03 Wandisco, Inc. Methods, devices and systems for initiating, forming and joining memberships in distributed computing systems
US8364633B2 (en) * 2005-01-12 2013-01-29 Wandisco, Inc. Distributed computing systems and system components thereof
US9424272B2 (en) 2005-01-12 2016-08-23 Wandisco, Inc. Distributed file system using consensus nodes
US9361311B2 (en) 2005-01-12 2016-06-07 Wandisco, Inc. Distributed file system using consensus nodes
US8037056B2 (en) * 2005-02-18 2011-10-11 International Business Machines Corporation Online repair of a replicated table
US8214353B2 (en) * 2005-02-18 2012-07-03 International Business Machines Corporation Support for schema evolution in a multi-node peer-to-peer replication environment
US9286346B2 (en) * 2005-02-18 2016-03-15 International Business Machines Corporation Replication-only triggers
US7376675B2 (en) * 2005-02-18 2008-05-20 International Business Machines Corporation Simulating multi-user activity while maintaining original linear request order for asynchronous transactional events
US7797399B1 (en) * 2005-03-14 2010-09-14 Qurio Holdings, Inc. Method and system for allowing distributed importing of guest images in a peer-based photosharing network
CA2506303A1 (en) * 2005-04-14 2005-09-15 Rajesh Kapur Method for validating system changes safely by use of a replicated system as a system testbed
GB2445368A (en) * 2005-04-14 2008-07-09 Rajesh Kapur A method and system for preserving access to a system in case of a disaster allowing transaction rollback
GB2445584A (en) * 2005-05-04 2008-07-16 Rajesh Kapur Database backup and retrieval using transaction records and a replicated data store
US8028299B2 (en) 2005-04-21 2011-09-27 Waratek Pty, Ltd. Computer architecture and method of operation for multi-computer distributed processing with finalization of objects
US8036140B2 (en) 2005-04-22 2011-10-11 Microsoft Corporation Application programming interface for inviting participants in a serverless peer to peer network
US7571228B2 (en) 2005-04-22 2009-08-04 Microsoft Corporation Contact management in a serverless peer-to-peer system
US20060259466A1 (en) * 2005-05-10 2006-11-16 Sbc Knowledge Ventures Lp Updating configuration specifications in a historical database
KR101219069B1 (ko) * 2005-05-30 2013-01-18 가부시키가이샤 한도오따이 에네루기 켄큐쇼 반도체 장치 및 그것의 구동 방법
US7979396B1 (en) * 2005-06-28 2011-07-12 Symantec Operating Corporation System and method for performing consistent resynchronization between synchronized copies
US7685170B2 (en) * 2005-08-04 2010-03-23 International Business Machines Corporation Journaling database queries for database replication
US8572516B1 (en) 2005-08-24 2013-10-29 Jpmorgan Chase Bank, N.A. System and method for controlling a screen saver
US8224968B1 (en) 2005-09-19 2012-07-17 At&T Intellectual Property Ii, L.P. Method and system for scalable content storage and delivery
JP2009512030A (ja) * 2005-10-10 2009-03-19 ワラテック プロプライエタリー リミテッド オブジェクトグラフの複製
WO2007041762A1 (en) * 2005-10-10 2007-04-19 Waratek Pty Limited Modified machine architecture with partial memory updating
JP2009512081A (ja) * 2005-10-17 2009-03-19 ワラテック プロプライエタリー リミテッド オーバヘッドを低減したマルチマシーンアーキテクチャ
AU2006303865B2 (en) * 2005-10-17 2011-09-08 Waratek Pty Limited Multiple machine architecture with overhead reduction
US8015236B2 (en) 2005-10-25 2011-09-06 Waratek Pty. Ltd. Replication of objects having non-primitive fields, especially addresses
US7958322B2 (en) 2005-10-25 2011-06-07 Waratek Pty Ltd Multiple machine architecture with overhead reduction
US7660960B2 (en) 2005-10-25 2010-02-09 Waratek Pty, Ltd. Modified machine architecture with partial memory updating
US7761670B2 (en) 2005-10-25 2010-07-20 Waratek Pty Limited Modified machine architecture with advanced synchronization
US7499933B1 (en) 2005-11-12 2009-03-03 Jpmorgan Chase Bank, N.A. System and method for managing enterprise application configuration
US8181016B1 (en) 2005-12-01 2012-05-15 Jpmorgan Chase Bank, N.A. Applications access re-certification system
US8291093B2 (en) * 2005-12-08 2012-10-16 Microsoft Corporation Peer-to-peer remediation
US7904949B2 (en) 2005-12-19 2011-03-08 Quest Software, Inc. Apparatus, systems and methods to provide authentication services to a legacy application
DE102006005840B4 (de) * 2006-02-08 2007-10-31 Combots Product Gmbh & Co. Kg Verfahren zum gemeinsamen Bearbeiten einer Datenmenge sowie ein Netzwerksystem und ein Kommunikationssystem zur Durchführung des Verfahrens
US8087075B2 (en) 2006-02-13 2011-12-27 Quest Software, Inc. Disconnected credential validation using pre-fetched service tickets
AU2007217109A1 (en) * 2006-02-16 2007-08-30 Gs Industrial Design, Inc. Method of freeing the bound oil present in whole stillage and thin stillage
US7913249B1 (en) 2006-03-07 2011-03-22 Jpmorgan Chase Bank, N.A. Software installation checker
US7895565B1 (en) 2006-03-15 2011-02-22 Jp Morgan Chase Bank, N.A. Integrated system and method for validating the functionality and performance of software applications
US7778183B2 (en) * 2006-03-31 2010-08-17 International Business Machines Corporation Data replica selector
US7480817B2 (en) * 2006-03-31 2009-01-20 International Business Machines Corporation Method for replicating data based on probability of concurrent failure
US7975036B2 (en) * 2006-05-11 2011-07-05 The Mitre Corporation Adaptive cross-layer cross-node optimization
US7769727B2 (en) * 2006-05-31 2010-08-03 Microsoft Corporation Resolving update-delete conflicts
US8429712B2 (en) 2006-06-08 2013-04-23 Quest Software, Inc. Centralized user authentication system apparatus and method
US7610172B2 (en) 2006-06-16 2009-10-27 Jpmorgan Chase Bank, N.A. Method and system for monitoring non-occurring events
US7953698B2 (en) * 2006-08-03 2011-05-31 Sybase, Inc. Replication system with methodology for replicating stored procedure calls
US7627611B2 (en) * 2006-08-17 2009-12-01 Osisoft, Inc. Conflict resolution in database replication through autonomous node qualified folding
US7546486B2 (en) * 2006-08-28 2009-06-09 Bycast Inc. Scalable distributed object management in a distributed fixed content storage system
US20080059469A1 (en) * 2006-08-31 2008-03-06 International Business Machines Corporation Replication Token Based Synchronization
US7958329B2 (en) 2006-10-05 2011-06-07 Waratek Pty Ltd Hybrid replicated shared memory
US20080120477A1 (en) * 2006-10-05 2008-05-22 Holt John M Contention detection with modified message format
US20080140973A1 (en) * 2006-10-05 2008-06-12 Holt John M Contention detection with data consolidation
US8473564B2 (en) 2006-10-05 2013-06-25 Waratek Pty Ltd. Contention detection and resolution
CN101548268B (zh) * 2006-10-05 2014-05-21 瓦拉泰克有限公司 更新存储器位置的内容的方法和系统
WO2008040076A1 (en) * 2006-10-05 2008-04-10 Waratek Pty Limited Contention resolution with echo cancellation
US20100054254A1 (en) * 2006-10-05 2010-03-04 Holt John M Asynchronous data transmission
US20080114853A1 (en) * 2006-10-05 2008-05-15 Holt John M Network protocol for network communications
US20080127213A1 (en) * 2006-10-05 2008-05-29 Holt John M Contention resolution with counter rollover
US8095616B2 (en) 2006-10-05 2012-01-10 Waratek Pty Ltd. Contention detection
WO2008040064A1 (en) 2006-10-05 2008-04-10 Waratek Pty Limited Switch protocol for network communications
US7890457B2 (en) * 2006-10-20 2011-02-15 Oracle International Corporation Transactionally consistent database workload replay
US8086710B2 (en) 2006-10-30 2011-12-27 Quest Software, Inc. Identity migration apparatus and method
US7895332B2 (en) 2006-10-30 2011-02-22 Quest Software, Inc. Identity migration system apparatus and method
US7587435B2 (en) * 2006-11-10 2009-09-08 Sybase, Inc. Replication system with methodology for replicating database sequences
US8688749B1 (en) 2011-03-31 2014-04-01 Palantir Technologies, Inc. Cross-ontology multi-master replication
US7590672B2 (en) * 2006-12-11 2009-09-15 Bycast Inc. Identification of fixed content objects in a distributed fixed content storage system
US8417731B2 (en) * 2006-12-28 2013-04-09 Sap Ag Article utilizing a generic update module with recursive calls identify, reformat the update parameters into the identified database table structure
US8606799B2 (en) * 2006-12-28 2013-12-10 Sap Ag Software and method for utilizing a generic database query
US7730056B2 (en) * 2006-12-28 2010-06-01 Sap Ag Software and method for utilizing a common database layout
US7899917B2 (en) * 2007-02-01 2011-03-01 Microsoft Corporation Synchronization framework for occasionally connected applications
US20080208806A1 (en) * 2007-02-28 2008-08-28 Microsoft Corporation Techniques for a web services data access layer
US8332331B2 (en) * 2007-03-19 2012-12-11 Hewlett-Packard Development Company, L.P. Determining a price premium for a project
US8316190B2 (en) 2007-04-06 2012-11-20 Waratek Pty. Ltd. Computer architecture and method of operation for multi-computer distributed processing having redundant array of independent systems with replicated memory and code striping
US8566780B2 (en) * 2007-06-26 2013-10-22 Microsoft Corporation Object model based mapping
US7747899B2 (en) * 2007-06-26 2010-06-29 Microsoft Corporation Providing mapping fault processing
US8073922B2 (en) * 2007-07-27 2011-12-06 Twinstrata, Inc System and method for remote asynchronous data replication
US20090119349A1 (en) * 2007-11-07 2009-05-07 International Business Machines Corporation Methods and Computer Program Products for Efficient Conflict Detection in a Replicated Hierarchical Content Repository Using Replication Anchors
JP5088734B2 (ja) * 2007-11-22 2012-12-05 インターナショナル・ビジネス・マシーンズ・コーポレーション 耐障害性トランザクション処理システム及び処理方法
US8239345B2 (en) * 2007-12-27 2012-08-07 Microsoft Corporation Asynchronous replication
US7979393B2 (en) * 2008-02-22 2011-07-12 Microsoft Corporation Multiphase topology-wide code modifications for peer-to-peer systems
US7899850B2 (en) * 2008-02-22 2011-03-01 Bycast, Inc. Relational objects for the optimized management of fixed-content storage systems
US8150802B2 (en) * 2008-03-24 2012-04-03 Microsoft Corporation Accumulating star knowledge in replicated data protocol
US8108631B2 (en) * 2008-07-18 2012-01-31 Oracle America, Inc. Transactional memory support for non-coherent shared memory systems using selective write through caches
US20100049715A1 (en) * 2008-08-20 2010-02-25 Yahoo! Inc. Controlled parallel propagation of view table updates in distributed database systems
US20100106744A1 (en) * 2008-10-23 2010-04-29 Microsoft Corporation Conflict prevention for peer-to-peer replication
US20100125557A1 (en) * 2008-11-17 2010-05-20 Microsoft Corporation Origination based conflict detection in peer-to-peer replication
US9047277B2 (en) * 2008-12-18 2015-06-02 Adobe Systems Incorporated Systems and methods for synchronizing hierarchical repositories
US8898267B2 (en) * 2009-01-19 2014-11-25 Netapp, Inc. Modifying information lifecycle management rules in a distributed system
US8261033B1 (en) 2009-06-04 2012-09-04 Bycast Inc. Time optimized secure traceable migration of massive quantities of data in a distributed storage system
US8255984B1 (en) 2009-07-01 2012-08-28 Quest Software, Inc. Single sign-on system for shared resource environments
US8341134B2 (en) 2010-12-10 2012-12-25 International Business Machines Corporation Asynchronous deletion of a range of messages processed by a parallel database replication apply process
US8543543B2 (en) * 2011-09-13 2013-09-24 Microsoft Corporation Hash-based file comparison
US8782004B2 (en) * 2012-01-23 2014-07-15 Palantir Technologies, Inc. Cross-ACL multi-master replication
US9355120B1 (en) 2012-03-02 2016-05-31 Netapp, Inc. Systems and methods for managing files in a content storage system
US9264516B2 (en) 2012-12-28 2016-02-16 Wandisco, Inc. Methods, devices and systems enabling a secure and authorized induction of a node into a group of nodes in a distributed computing environment
US9824132B2 (en) * 2013-01-08 2017-11-21 Facebook, Inc. Data recovery in multi-leader distributed systems
US9720655B1 (en) 2013-02-01 2017-08-01 Jpmorgan Chase Bank, N.A. User interface event orchestration
US10002041B1 (en) 2013-02-01 2018-06-19 Jpmorgan Chase Bank, N.A. System and method for maintaining the health of a machine
US9088459B1 (en) 2013-02-22 2015-07-21 Jpmorgan Chase Bank, N.A. Breadth-first resource allocation system and methods
US9614932B2 (en) 2013-03-14 2017-04-04 Microsoft Technology Licensing, Llc Managing and implementing web application data snapshots
US9009215B2 (en) 2013-03-15 2015-04-14 Wandisco, Inc. Methods, devices and systems for dynamically managing memberships in replicated state machines within a distributed computing environment
US9619410B1 (en) 2013-10-03 2017-04-11 Jpmorgan Chase Bank, N.A. Systems and methods for packet switching
US9767178B2 (en) 2013-10-30 2017-09-19 Oracle International Corporation Multi-instance redo apply
US9542259B1 (en) 2013-12-23 2017-01-10 Jpmorgan Chase Bank, N.A. Automated incident resolution system and method
US9727625B2 (en) 2014-01-16 2017-08-08 International Business Machines Corporation Parallel transaction messages for database replication
US9868054B1 (en) 2014-02-10 2018-01-16 Jpmorgan Chase Bank, N.A. Dynamic game deployment
ES2881606T3 (es) 2014-03-31 2021-11-30 Wandisco Inc Sistema de ficheros geográficamente distribuido que usa replicación de espacio de nombres coordinada
EP2954424B1 (de) 2014-05-05 2018-05-30 Huawei Technologies Co., Ltd. Verfahren, vorrichtung und system zur peer-to-peer-datenreplikation und verfahren, vorrichtung sowie system zur masterknotenumschaltung
US9536228B2 (en) 2014-07-31 2017-01-03 Gretel, LLC Contact management systems
US10097630B2 (en) * 2014-10-01 2018-10-09 Red Hat, Inc. Transferring data between sites
US9965359B2 (en) 2014-11-25 2018-05-08 Sap Se Log forwarding to avoid deadlocks during parallel log replay in asynchronous table replication
US10860604B1 (en) * 2014-12-10 2020-12-08 Amazon Technologies, Inc. Scalable tracking for database udpates according to a secondary index
US10031814B2 (en) 2015-04-14 2018-07-24 Microsoft Technology Licensing, Llc Collection record location as log tail beginning
US10133768B2 (en) * 2015-04-14 2018-11-20 Microsoft Technology Licensing, Llc Latest external dependee entity in transaction record
US9959137B2 (en) 2015-04-14 2018-05-01 Microsoft Technology Licensing, Llc Transaction redo using skip element for object
US10592494B2 (en) 2015-04-14 2020-03-17 Microsoft Technology Licensing, Llc Collection record for overlapping data stream collections
US10102251B2 (en) 2015-04-14 2018-10-16 Microsoft Technology Licensing, Llc Lockless open collection data structure
US10599630B2 (en) 2015-05-29 2020-03-24 Oracle International Corporation Elimination of log file synchronization delay at transaction commit time
US10528546B1 (en) 2015-09-11 2020-01-07 Cohesity, Inc. File system consistency in a distributed system using version vectors
US10936559B1 (en) 2016-09-28 2021-03-02 Amazon Technologies, Inc. Strongly-consistent secondary index for a distributed data set
US10534675B2 (en) 2016-09-30 2020-01-14 International Business Machines Corporation ACL based open transactions in replication environment
US11360942B2 (en) 2017-03-13 2022-06-14 Wandisco Inc. Methods, devices and systems for maintaining consistency of metadata and data across data centers
US11940990B1 (en) 2017-06-16 2024-03-26 Amazon Technologies, Inc. Global clock values for consistent queries to replicated data
US11314717B1 (en) 2017-06-23 2022-04-26 Amazon Technologies, Inc. Scalable architecture for propagating updates to replicated data
JP6733620B2 (ja) * 2017-07-12 2020-08-05 京セラドキュメントソリューションズ株式会社 画像読取装置、及び画像読取方法
US11061926B2 (en) * 2018-10-02 2021-07-13 Target Brands, Inc. Data warehouse management and synchronization systems and methods
US11263236B2 (en) * 2019-11-18 2022-03-01 Sap Se Real-time cross-system database replication for hybrid-cloud elastic scaling and high-performance data virtualization
US11250022B1 (en) 2020-09-29 2022-02-15 Amazon Technologies, Inc. Offline index builds for database tables
US11880385B1 (en) 2020-09-29 2024-01-23 Amazon Technologies, Inc. Ordering updates to secondary indexes using conditional operations

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4077059A (en) * 1975-12-18 1978-02-28 Cordi Vincent A Multi-processing system with a hierarchial memory having journaling and copyback
US4631673A (en) * 1985-01-22 1986-12-23 International Business Machines Corporation Method for refreshing multicolumn tables in a relational data base using minimal information
US4648036A (en) * 1985-03-06 1987-03-03 At&T Bell Laboratories Method for controlling query and update processing in a database system
US4853843A (en) * 1987-12-18 1989-08-01 Tektronix, Inc. System for merging virtual partitions of a distributed database
US4875159A (en) * 1987-12-22 1989-10-17 Amdahl Corporation Version management system using plural control fields for synchronizing two versions of files in a multiprocessor system
US5170480A (en) * 1989-09-25 1992-12-08 International Business Machines Corporation Concurrently applying redo records to backup database in a log sequence using single queue server per queue at a time

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4646229A (en) * 1982-11-15 1987-02-24 At&T Bell Laboratories Time-ordered data base
US4558413A (en) * 1983-11-21 1985-12-10 Xerox Corporation Software version management system
US4635189A (en) * 1984-03-01 1987-01-06 Measurex Corporation Real-time distributed data-base management system
US4714992A (en) * 1985-11-26 1987-12-22 International Business Machines Corporation Communication for version management in a distributed information service
US5043871A (en) * 1986-03-26 1991-08-27 Hitachi, Ltd. Method and apparatus for database update/recovery
JPS63288357A (ja) * 1987-05-20 1988-11-25 Hitachi Ltd デ−タ編集方式
JPH0373037A (ja) * 1989-05-26 1991-03-28 Hitachi Ltd データベース障害回復方法
KR940004389B1 (ko) * 1989-10-13 1994-05-23 인터내셔널 비지네스 머신즈 코포레이션 관계형 데이타베이스에 대한 액세스플랜 발생 방법 및 시스템
JP3516344B2 (ja) * 1990-10-22 2004-04-05 株式会社日立製作所 分散処理システムの多重データ処理方法
US5276871A (en) * 1991-03-18 1994-01-04 Bull Hn Information Systems Inc. Method of file shadowing among peer systems
US5261094A (en) * 1991-04-08 1993-11-09 International Business Machines Corporation Asynchronous replication of data changes by distributed update requests
US5280612A (en) * 1991-11-26 1994-01-18 International Business Machines Corporation Multiple version database concurrency control system
US5423037A (en) * 1992-03-17 1995-06-06 Teleserve Transaction Technology As Continuously available database server having multiple groups of nodes, each group maintaining a database copy with fragments stored on multiple nodes
JPH06324928A (ja) * 1993-05-14 1994-11-25 Mitsubishi Electric Corp ログ生成装置とファイルの異なるバージョンの調停のための装置及び異なる場所にあるコンピュータファイルの異なるバージョンを調停するための装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4077059A (en) * 1975-12-18 1978-02-28 Cordi Vincent A Multi-processing system with a hierarchial memory having journaling and copyback
US4631673A (en) * 1985-01-22 1986-12-23 International Business Machines Corporation Method for refreshing multicolumn tables in a relational data base using minimal information
US4648036A (en) * 1985-03-06 1987-03-03 At&T Bell Laboratories Method for controlling query and update processing in a database system
US4853843A (en) * 1987-12-18 1989-08-01 Tektronix, Inc. System for merging virtual partitions of a distributed database
US4875159A (en) * 1987-12-22 1989-10-17 Amdahl Corporation Version management system using plural control fields for synchronizing two versions of files in a multiprocessor system
US5170480A (en) * 1989-09-25 1992-12-08 International Business Machines Corporation Concurrently applying redo records to backup database in a log sequence using single queue server per queue at a time

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
IBM Technical Disclosure Bulletin, Vol. 33, No.6B, Nov. 1990, S. 395/396
IBM Technical Disclosure Bulletin, Vol. 33, No.6B,Nov. 1990, S. 395/396 *

Also Published As

Publication number Publication date
WO1995008809A2 (en) 1995-03-30
GB2297181A (en) 1996-07-24
CA2172517A1 (en) 1995-03-30
WO1995008809A3 (en) 1995-04-13
US5737601A (en) 1998-04-07
CA2172517C (en) 2000-02-15
GB2297181B (en) 1997-11-05
US5806075A (en) 1998-09-08
AU7684094A (en) 1995-04-10
DE4497149T1 (de) 1996-10-17
GB9605419D0 (en) 1996-05-22

Similar Documents

Publication Publication Date Title
DE4497149B4 (de) Computerbezogenes Verfahren zur Datenreplikation in Peer-to-Peer-Umgebung
DE4216871C2 (de) Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen
EP1237098B1 (de) Integriertes Datenbank-Verbund-System
DE3611223C2 (de)
DE69736748T2 (de) Editierumgebung für objektmodelle und verfahren zu deren anwendung
DE602005002024T2 (de) Fernkopiersystem und Fernkopierverfahren
DE3908459C2 (de) Netzwerkserver
DE69730449T2 (de) Erzeugung einer spiegeldatenkopie (bild) unter verwendung von referenzetiketten
DE4303062C2 (de) Verfahren zur Behebung von Systemausfällen in einem verteilten Computersystem und Vorrichtung zur Durchführung des Verfahrens
DE60220676T2 (de) Konsistente lesevorgänge in einer verteilten datenbankumgebung
DE60220287T2 (de) System und verfahren zur überwachung von software-warteschlangenanwendungen
DE19708021C1 (de) Verfahren zur Regelung eines Zugriffs von Rechnern auf Daten eines zentralen Rechners
DE60312746T2 (de) Wiederherstellung nach fehlern in datenverarbeitungsanlagen
DE602005001041T2 (de) Speicherauszugssystem
DE69929095T2 (de) Verwaltung eines durch eine Mehrzahl von Knoten benutzten Betriebsmittels
DE69937715T2 (de) Verbessertes Zwei-Phasen-Bindungsprotokoll
EP0635792B1 (de) Verfahren zur Koordination von parallelen Zugriffen mehrerer Prozessoren auf Resourcenkonfigurationen
DE60306932T2 (de) Schnelle Datenbankreplikation
EP0807883B1 (de) Kommunikationssystem mit Mitteln zum Austausch von Softwareprozessen
DE102016216843A1 (de) Verteiltes Zusammenführen von Dateien
DE19513308A1 (de) Dreidimensionales Dateisystem unter Verwendung einer virtuellen Knotenarchitektur
DE10040987B4 (de) Verfahren und Vorrichtung für übereinstimmende Aktualisierungen von redundanten Daten in relationalen Datenbanken
DE4420451A1 (de) Sperrmechanismus für ein CHECK-IN/CHECK-OUT-Modell
DE10128883A1 (de) Verfahren und System für die Verteilung von Anwendungsdaten auf verteilte Datenbanken mit verschiedenen Formaten
DE602004006224T2 (de) Verfahren und Vorrichtung zur Datensynchronisierung eines verteilten Datenbanksystems