DE112010004185B4 - Synchronisieren einer Datenbank mit datenbankfremden Ressourcen - Google Patents

Synchronisieren einer Datenbank mit datenbankfremden Ressourcen Download PDF

Info

Publication number
DE112010004185B4
DE112010004185B4 DE112010004185.7T DE112010004185T DE112010004185B4 DE 112010004185 B4 DE112010004185 B4 DE 112010004185B4 DE 112010004185 T DE112010004185 T DE 112010004185T DE 112010004185 B4 DE112010004185 B4 DE 112010004185B4
Authority
DE
Germany
Prior art keywords
file
database
transaction
entry
data object
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.)
Active
Application number
DE112010004185.7T
Other languages
English (en)
Other versions
DE112010004185T5 (de
Inventor
Erika Marianna Dawson
Kevin Goldsmith
Brian Corkill
Colin Scott Dawson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112010004185T5 publication Critical patent/DE112010004185T5/de
Application granted granted Critical
Publication of DE112010004185B4 publication Critical patent/DE112010004185B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1865Transactional file systems
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application

Abstract

Verfahren zur Synchronisierung einer Objektverzeichnistabelle (120) in einer transaktionssicheren Datenbank (108) mit einer datenbankfremden und außerhalb der Transaktionssicherheit liegenden Ressource, insbesondere einem Dateisystem (118; 212; 412), wobei das Verfahren das Ausführen von Abschnitten in einer Anzahl von Anwendungen (102; 202; 402) und/oder Diensten (110, 106) auf einer Rechneranlage (100) umfasst zum: – Senden einer Anforderung auf Speicherung eines Datenobjekts (208), – Empfangen der Anforderung (210, 212) und Speichern des Datenobjekts als Datei, wobei die Datei ein Element in der datenbankfremden Ressource ist (410, 412), – Einfügen eines Eintrags mit einer Bezeichnung der gespeicherten Datei in eine Dateilöschungstabelle (FDT) in der Datenbank innerhalb einer ersten Transaktion, – Abschließen der ersten Transaktion zum Herstellen der Dauerhaftigkeit der Einfügung (COMMIT; 214; 414), – Einfügen einer Beschreibung des gespeicherten Datenobjekts in der Objektverzeichnistabelle (216; 416) innerhalb einer zweiten Transaktion, – Löschen des Eintrags zu der gespeicherten Datei aus der Dateilöschungstabelle (218; 418) innerhalb der zweiten Transaktion – und entweder – Abschließen der zweiten Transaktion und Herstellen der Dauerhaftigkeit der Löschung (COMMIT; 420) oder – Zurücksetzen der zweiten Transaktion und Rückgängigmachen der Löschung (ROLLBACK; 220), wodurch in der Datenbank zu dem gespeicherten Datenobjekt entweder in der Objektverzeichnistabelle ein Eintrag enthalten ist oder das Datenobjekt in der Dateilöschungstabelle zum Löschen markiert ist.

Description

  • Die vorliegende Erfindung betrifft Datenbank-Ressourcen und datenbankfremde Ressourcen und insbesondere Vorrichtungen und Verfahren zur Durchführung der Synchronisierung von Datenbank-Ressourcen und datenbankfremden Ressourcen.
  • Eine Datenbanktransaktion ist ein Arbeitselement, das von einem Datenbankverwaltungssystem (Database Management System, DBMS) oder einer anderen Anwendung durchgeführt wird, die der Datenbank zugeordnet ist. Transaktionen werden im Allgemeinen mithilfe eines „Alles oder nichts”-Ansatzes durchgeführt, bei dem alle oder keines der zu einer Transaktion gehörenden Arbeitselemente ausgeführt werden müssen. Unter Umständen gewährleistet ein „Durchführungskoordinator” („Commit-Koordinator”), der in ein DBMS bzw. in eine Anwendung integriert ist, dass eine Transaktion in ihrer Gesamtheit oder überhaupt nicht ausgeführt wird.
  • Als Beispiel soll eine Finanztransaktion dienen, bei der eine Anwendung mehrere Schritte unter Verwendung eines „Alles oder nichts”-Ansatzes durchführt. Im Einzelnen transferiert die Anwendung mithilfe der folgenden (in Pseudocode geschriebenen) Schritte Geldmittel von einem Girokonto auf ein Sparkonto:
    Transaktion beginnen
    Girokonto belasten
    Auf Sparkonto gutschreiben
    Verlaufsprotokoll aktualisieren
    Transaktion festschreiben
  • Es müssen alle drei Schritte oder aber keiner der drei Schritte ausgeführt werden. Anderenfalls geht die Unversehrtheit der Daten verloren. Da die Schritte innerhalb einer Transaktion als Ganzes ausgeführt werden, kann eine Transaktion als unteilbares Arbeitselement definiert werden.
  • Eine Transaktion kann auf zwei verschiedene Arten abgeschlossen werden, mit einer COMMIT- oder einer ROLLBACK-Anweisung (Anweisung für Festschreibe- oder Rückabwicklungs-Transaktion): Wenn eine Transaktion mit einer COMMIT-Anweisung endet (im Folgenden als „COMMIT” bezeichnet), sind die Datenänderungen, die durch die Transaktion in der Datenbank vorgenommen werden, dauerhaft. Wenn andererseits eine oder mehrere Datenänderungen in der Transaktion fehlschlagen, können die Auswirkungen aller Anweisungen in der Transaktion mit einer ROLLBACK-Anweisung (im Folgenden als „ROLLBACK” bezeichnet) rückgängig gemacht werden. Wenn beispielsweise bei dem oben aufgeführten Schritt „Auf Sparkonto gutschreiben” ein Fehler am Festplattenlaufwerk auftritt, könnte eine ROLLBACK-Anweisung ausgeführt werden, um die von der Anweisung „Auf Sparkonto gutschreiben” vorgenommenen Datenänderungen rückgängig zu machen. Obwohl die Transaktion fehlschlug, würden die Unversehrtheit der Daten und die Übereinstimmung der Kontostände aufrechterhalten bleiben.
  • Leider führt eine Anwendung unter Umständen Aktionen aus oder verursacht das Auftreten bestimmter Aktionen, die nicht unter die normale „Festschreib-Koordination” der Anwendung fallen.
  • Als Beispiel soll eine Anwendung dienen, die als Bestandteil einer Transaktion einen Dienst aufruft und zur Durchführung einer Aktion veranlasst, z. B. zur Speicherung einer großen Bilddatei in einem Dateisystem. Der Dienst und das Dateisystem haben unter Umständen keine Kenntnis von der Transaktion. Daher fallen die vom Dienst durchgeführten Aktionen unter Umständen nicht unter die „Festschreib-Koordination” der Anwendung. Anders ausgedrückt kann die Anwendung vom Dienst durchgeführte Aktionen unter Umständen nicht rückgängig machen, wenn die Anwendung schließlich ein ROLLBACK durchführt. Ebenso hat der Dienst unter Umständen keine Kenntnis vom ROLLBACK und kann daher nichts unternehmen, um die Aktion rückgängig zu machen. Bei dem oben geschilderten Beispiel kann ein derartiges Szenario unter Umständen zu verwaisten Dateien im Dateisystem führen, die als Reaktion auf ein ROLLBACK nicht rückgängig gemacht (d. h. aus dem Dateisystem gelöscht) wurden. Das Gesamtsystem befindet sich dann unerwünscht in einem nicht-synchronisierten Zustand.
  • Aus dem Stand der Technik sind einige Lösungsansätze zur Synchronisierung von Datenbank-Ressourcen und Dateisystemen als datenbankfremden Ressourcen bekannt.
  • Das Dokument US 2002/0174103 A1 offenbart Verfahren und Vorrichtungen zum konsistenten Verwalten von Dateien in einem Dateisystem und deren Attributen/Metadaten in einer transaktionssicheren (SQL) Datenbank. Es zeigt jedoch keine Maßnahmen, wie eine zunächst inkonsistent erzeugte Datei, die nach dem Zurücksetzen der betreffenden nachfolgenden Katalogisierung in der Datenbank verwaist, wieder aus dem Dateisystem gelöscht werden kann.
  • Das Dokument US 2003/0069902 A1 offenbart einen Ansatz zum Erhalten der Konsistenz zwischen dem Inhalt einer Datei und diesbezüglicher Metadaten in einem losen Transaktionsmodell. Die zugehörige Metadaten und eine Referenz auf die Datei sind in einer Tabelle einer Datenbank gespeichert. Die Datei wird außerhalb der Datenbank in einer Dateiablege gespeichert. Eine Referenz darauf wird als Handhabe für den direkten Zugriff oder die Manipulation der externen Datei verwendet. Dabei wird eine Versionsnummer in der Handhabe gespeichert. Die eingebettete Versionsnummer ist dann mit der Versionsnummer der neuesten Version der extern gespeicherten Datei zu vergleichen, um zu erkennen, ob die Handhabe sich auf die aktuelle Version der extern gespeicherten Datei bezieht oder nicht. Danach wird der Zeitstempel der letzten Änderung der Datei mit dem Zeitstempel der letzten Änderung der neuesten Version verglichen, um nicht in der Version festgeschriebene Änderungen zu erkennen. Eine Abweichung zeigt an, dass die Handhabe auf veraltete Daten verweist. In dieser Situation wird eine entsprechende Fehlermeldung ausgegeben.
  • Das Dokument US 6,571,259 B1 offenbart einen Dateiserver mit Transaktionsverarbeitungsfunktionen, die zuvor nur von dem Betriebssystem eines Host-Computers geboten wurden. Der Dateiserver ist als transaktionssichere Einheit ausgeführt.
  • Das Dokument CA 2 549 694 A1 offenbart eine weitere Implementierung transaktionsbasierter Dateisystems, das für den Fall einer Ausführungsunterbrechung die Rekonstruktion eines konsistenten Zustands erlaubt.
  • Das Dokument US 6,029,160 A offenbart eine Erweiterung eines Datenbanksystems, durch die eine Verbindung zwischen den gespeicherten Datensätzen und einem externen Dateisystem herstellbar ist.
  • Das Dokument US 2006/0253502 A1 offenbart einen Ansatz zum Erhalten einer transaktionsartigen Konsistenz zwischen einer Datenbank und einem Dateisystem auf der Ebene der elementweisen Verknüpfungen.
  • Das Dokument US 7,478,115 B2 offenbart einen Ansatz zur Ausdehnung der durch die Transaktionssicherheit einer Datenbank vermittelten Unteilbarkeit der Operationen auf ein mit der Datenbank zusammenhängendes Dateisystem.
  • Allerdings beruhen die vorbekannten Ansätze auf einer besonderen Verbindung zwischen der Datenbank und dem Dateisystem, die nicht ohne weiteres auf der Ebene eines Anwendungsprogramms realisierbar oder nachbildbar ist.
  • Dementsprechend werden eine Vorrichtung und ein Verfahren zur Synchronisierung des Inhalts einer transaktionssicheren Datenbank mit einer datenbankfremden und außerhalb der Transaktionssicherheit liegenden Ressource benötigt, die ohne Veränderung des DBMS realisierbar sind und idealerweise die im DBMS vorhandene Funktionalität nutzen.
  • Unter diesen Vorgaben wird die vorangehend angegebene Aufgabe im Allgemeinen durch ein Verfahren gemäß Anspruch 1 und durch Vorrichtungen gemäß einem der Ansprüche 6 oder 7 gelöst.
  • Die beanspruchte Erfindung ist das Ergebnis von Entwicklungsarbeiten als Reaktion auf den gegenwärtigen Stand der Technik und insbesondere als Reaktion auf die Probleme und Bedürfnisse in diesem Fachgebiet, für die mit den gegenwärtig zur Verfügung stehenden Vorrichtungen und Verfahren bisher noch keine endgültige Lösung gefunden wurde. Dementsprechend wurde die Erfindung entwickelt, um Vorrichtungen und Verfahren bereitzustellen, mit denen die Festschreib-Koordination von Datenbank-Ressourcen und datenbankfremden Ressourcen durchgeführt werden kann.
  • In Übereinstimmung mit den obigen Ausführungen wird im Folgenden ein System zur Synchronisierung einer Datenbank und einer datenbankfremden Ressource beschrieben. Bei bestimmten Ausführungsformen umfasst ein derartiges System eine Anwendung, mit der eine Anforderung zur Speicherung eines Datenobjekts an einen Dienst gesendet wird. Der Dienst empfängt die Anforderung und speichert das Datenobjekt als Datei, wobei die Datei eine datenbankfremde Ressource darstellt. Der Dienst fügt außerdem einen Eintrag in eine Löschtabelle für neue Dateien ein, um die Datei zu löschen und die Einfügung dauerhaft zu machen, indem er ein COMMIT durchführt. Der Dienst wird von der Anwendung so konfiguriert, dass er den Eintrag aus der Dateilöschungstabelle löscht. Die Anwendung kann anschließend eine der folgenden Aktionen durchführen: (1) Löschung mit der Durchführung eines COMMIT dauerhaft machen, und (2) die Löschung mit der Durchführung eines ROLLBACK rückgängig machen. Zu einem späteren Zeitpunkt wird der Dienst so konfiguriert, dass er die Datei löscht, wenn der Eintrag in der Dateilöschungstabelle verbleibt. Auf diese Weise kann ein Dateisystem, das nicht der Festschreib-Koordination unterliegt, mit einer Anwendung synchronisiert werden, die der Festschreib-Koordination unterliegt.
  • Im Folgenden werden Ausführungsformen der Erfindung unter Bezugnahme auf die beigefügten Zeichnungen beispielhaft beschrieben, wobei:
  • 1 ein Übersichtsblockschaltbild ist, in dem ein Beispiel einer Umgebung dargestellt ist, in der eine Vorrichtung und ein Verfahren gemäß der Erfindung arbeiten können;
  • 2 ein Ablaufplan ist, in dem eine Ausführungsform eines Verfahrens zum Synchronisieren einer Datenbank und einer datenbankfremden Ressource dargestellt ist, wenn ein ROLLBACK durchgeführt wird;
  • 3 den Zustand verschiedener Datenstrukturen zu unterschiedlichen Zeitpunkten bei der Durchführung eines ROLLBACK zeigt;
  • 4 ein Ablaufplan ist, in dem eine Ausführungsform eines Verfahrens zum Synchronisieren einer Datenbank und einer datenbankfremden Ressource dargestellt ist, wenn ein COMMIT durchgeführt wird;
  • 5 den Zustand verschiedener Datenstrukturen zu unterschiedlichen Zeitpunkten bei der Durchführung eines COMMIT zeigt;
  • 6 ein Übersichtsblockschaltbild ist und verschiedene Module zeigt, die Bestandteil eines Dienst gemäß der Erfindung sein können; und
  • 7 ein Ablaufplan ist, in dem eine alternative Ausführungsform eines Verfahrens zum Synchronisieren einer Datenbank und einer datenbankfremden Ressource dargestellt ist, wenn ein COMMIT und/oder ein ROLLBACK durchgeführt wird.
  • Es versteht sich, dass die Komponenten der vorliegenden Erfindung, die in diesem Dokument allgemein beschrieben und in den Figuren veranschaulicht sind, in einer großen Vielfalt unterschiedlicher Konfigurationen angeordnet und ausgeführt sein können. Daher ist die folgende detailliertere Beschreibung der Ausführungsformen der Erfindung, die in den Figuren dargestellt sind, nicht als Einschränkung des beanspruchten Geltungsbereichs, sondern lediglich als repräsentative Beispiele der genannten erfindungsgemäßen Ausführungsformen gedacht. Die im vorliegenden Dokument beschriebenen Ausführungsformen werden am besten unter Einbeziehung der Zeichnungen verständlich, wobei gleiche Bestandteile in allen Zeichnungen mit denselben Zahlen bezeichnet sind.
  • Für den Fachmann versteht sich von selbst, dass die vorliegende Erfindung in Form einer Vorrichtung, eines Systems, Verfahrens, computerlesbaren Mediums oder eines Computerprogrammprodukts verkörpert sein kann. Des Weiteren kann die vorliegende Erfindung die Form einer in Hardware-Ausführungsform, einer Software-Ausführungsform (z. B. Firmware, residente Software, Mikrocode usw.) annehmen, die so konfiguriert ist, dass Hardware oder eine Ausführungsform betrieben werden kann, in der Software- und Hardwareaspekte kombiniert sind, die im vorliegenden Dokument allgemein als „Modul” oder „System” bezeichnet werden. Ferner kann die vorliegende Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem beliebigen materiellen computerlesbaren Ausdrucksmedium verkörpert ist, auf dem computerlesbarer Programmcode gespeichert ist.
  • Es können beliebige Kombinationen eines oder mehrerer computernutzbarer oder computerlesbarer Medien verwendet werden, um das Computerprogrammprodukt zu speichern. Das computerlesbare oder computernutzbare Medium kann beispielsweise und ohne Beschränkung auf die folgende Aufzählung ein elektronisches, magnetisches, optisches oder elektromagnetisches System bzw. ein Infrarot- oder Halbleitersystem bzw. eine derartige Vorrichtung oder Einheit sein. Zu detaillierteren Beispielen eines computerlesbaren Mediums zählen, ohne dass dies eine erschöpfende Liste darstellt: elektrische Verbindung mit einer oder mehreren der Leitungen, Computerdiskette, Festplatte, Direktzugriffsspeicher (RAM), Nur-Lese-Speicher (ROM), löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), Lichtleiter, Nur-Lese-Speicher in Form einer Compact Disc (CD-ROM), optische Speichereinheit oder magnetische Speichereinheit. Im Kontext des vorliegenden Dokuments kann ein computernutzbares Medium ein beliebiges Medium sein, das ein Programm enthalten, speichern oder transportieren kann, das von oder in Verbindung mit dem System, der Einrichtung oder der Einheit zur Befehlsausführung genutzt werden kann.
  • Computerprogrammcode zur Ausführung von Operationen der vorliegenden Erfindung kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen, darunter in einer objektorientierten Programmiersprache wie Java, Smalltalk, C++ oder Ähnlichem und in herkömmlichen prozeduralen Programmiersprachen wie „C” oder ähnlichen Programmiersprachen geschrieben sein. Der Programmcode kann vollständig auf dem Computer eines Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Beim letztgenannten Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über eine beliebige Art von Netzwerk verbunden sein, unter anderem über ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (beispielsweise über das Internet unter Nutzung eines Internet-Dienstanbieters (Internet Service Provider)).
  • Nachstehend sind Ausführungsformen der Erfindung unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder von Verfahren, Vorrichtungen, Systemen, computerlesbaren Medien und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaltbildern durch Computerprogrammanweisungen oder Computerprogrammcode realisiert werden kann bzw. können. Diese Computerprogrammanweisungen können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder anderer programmierbaren Datenverarbeitungsvorrichtungen, die eine Maschine darstellen, bereitgestellt werden, sodass die Anweisungen, die über den Prozessor des Computers oder anderer programmierbarer Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel schaffen, um die in einem Block bzw. in den Blöcken des Ablaufplans und/oder des Blockschaltbildes angegebenen Funktionen/Aktionen zu realisieren.
  • Diese Computerprogrammanweisungen können auch in einem computerlesbaren Medium gespeichert sein, das einen Computer oder andere programmierbare Datenverarbeitungseinrichtungen anweisen kann, in einer bestimmten Weise zu funktionieren, sodass die im computerlesbaren Medium gespeicherten Anweisungen ein Produkt erzeugen, das die Anweisungen enthält, die die in einem Block bzw. in den Blöcken des Ablaufplans und/oder des Blockschaltbildes angegebene Funktion/Aktion realisiert.
  • Diese Computerprogrammanweisungen können auch in einen Computer oder in andere programmierbare Datenverarbeitungsvorrichtungen geladen werden, um zu bewirken, dass auf dem Computer oder auf anderen programmierbaren Vorrichtungen eine Reihe von Arbeitsschritten ausgeführt werden, um einen mittels Computer realisierten Prozess zu schaffen, mit dessen Hilfe die Anweisungen, die auf dem Computer oder auf anderen programmierbaren Vorrichtungen ausgeführt werden, Prozesse zur Realisierung der in einem Block bzw. in den Blöcken des Ablaufplans und/oder des Blockschaltbildes angegebenen Funktionen/Aktionen bereitstellen.
  • 1 zeigt ein Beispiel einer Umgebung 100, in der eine Vorrichtung und ein Verfahren gemäß der Erfindung arbeiten können. In diesem Beispiel umfasst die Umgebung 100 eine Anwendung 102 für den Zugriff auf eine Datenbank, die eine oder mehrere Datenbanktabellen 104 umfasst. Der Zugriff auf diese Datenbank ist mithilfe eines Datenbankverwaltungssystems 106 (z. B. DB2 oder ein analoges DBMS 106) möglich. Bei bestimmten Ausführungsformen sind die Datenbanktabellen 104 auf Festplattenlaufwerken 108 oder anderen geeigneten Speichereinheiten, z. B. Festkörperlaufwerken 108 (SSDs), gespeichert. Die Anwendung 102 kann für das Synchronisieren der Datenbanktabellen 104 zuständig sein, um die Unversehrtheit der Daten aufrechtzuerhalten und dafür zu sorgen, dass die in den Tabellen 104 enthaltenen Daten konsistent sind. Somit kann die Anwendung 102 die „Festschreib-Koordination” in Bezug auf die in den Datenbanktabellen 104 gespeicherten Daten auslösen.
  • Bei bestimmten Ausführungsformen kann die Anwendung 102 mit einem Dienst 110 (z. B. mit einer „Object Access Method”, OAM, oder mit einem anderen Dienst) kommunizieren, um einen oder mehrere Dienste bereitzustellen. Beispielsweise kann der Dienst 110 die Anwendung 102 veranlassen, „Datenobjekte” in einer oder mehreren Speichereinheiten, z. B. Festplattenlaufwerke 112, optische Laufwerke 114 oder Bandlaufwerke 116, zu speichern und von dort abzurufen. Der Dienst 110 kann die Anwendung beispielsweise veranlassen, eines oder mehrere Datenobjekte als Dateien in einem Dateisystem 118 zu speichern. Die Anwendung 102 kann über eine Anwendungsprogrammierschnittstelle (API) 122 (z. B. über die API OSREQ, bei der OAM der Dienst ist) mit dem Dienst 110 kommunizieren.
  • Ein „Datenobjekt” kann bei bestimmten Ausführungsformen eine beliebige benannte Folge von Bytes umfassen. Beispielsweise kann es sich bei einem Datenobjekt um eine Bilddatei (z. B. ein komprimiertes gescanntes Bild) oder codierte Daten handeln. Der Dienst 110 hat unter Umständen keine Kenntnis von Inhalt, Format und/oder Struktur der Bytefolge.
  • Wenn die Anwendung 102 bei bestimmten Ausführungsformen den Dienst 110 anweist, ein Datenobjekt in den Speichereinheiten 112, 114, 116 zu speichern, können in der Datenbanktabelle 104 Metadaten wie z. B. eine Objektverzeichnistabelle 120 gespeichert werden. Diese Metadaten können neben anderen Informationen auch Daten zum Auffinden und Verwalten des Datenobjekts enthalten. Wenn die Anwendung 102 das Datenobjekt speichert (unter Verwendung der Dienst-API 122), kann der Dienst 110 eine Zeile (d. h. einen Eintrag) zur Objektverzeichnistabelle 120 mit Metadaten über das gespeicherte Datenobjekt hinzufügen. Jedoch führt die Anwendung 102 und nicht der Dienst 110 das COMMIT zu dieser Zeile durch. Wenn die Anwendung schließlich ein ROLLBACK durchführt, wird dadurch der Eintrag zu diesem Datenobjekt aus der Objektverzeichnistabelle 120 gelöscht, aber das Datenobjekt unter Umständen verwaist im Dateisystem 118 zurückgelassen. Anders ausgedrückt ist das Datenobjekt, da das Dateisystem 118 nicht der „Festschreib-Koordination” des DBMS 106 unterliegt, unter Umständen weiterhin im Dateisystem 118 vorhanden, selbst wenn der Eintrag zu dem Datenobjekt aus der Objektverzeichnistabelle 120 gelöscht worden ist. Wenn darüber hinaus die Anwendung 102 erneut versucht, dasselbe explizit benannte Datenobjekt im Dateisystem 118 zu speichern (wie dies bei einem „Speichern-Rückabwicklung-Speichern”-Szenario auftreten könnte), schlägt der Speichervorgang unter Umständen fehl, weil das benannte Datenobjekt bereits im Dateisystem 118 vorhanden ist.
  • Dementsprechend wäre es ein Fortschritt in diesem Fachgebiet, eine Vorrichtung und ein Verfahren zur Umkehrung der Aktionen bereitzustellen, die von einem Dienst 110 oder einer anderen Organisation außerhalb des Festschreib-Koordinators einer Anwendung durchgeführt werden. Ein weiterer Fortschritt wäre es, eine solche Vorrichtung und ein solches Verfahren bereitzustellen, ohne die Anwendung 102 und/oder das DBMS 106 zu verändern. Eine derartige Vorrichtung und ein derartiges Verfahren würden idealerweise die in der Anwendung 102 und/oder im DBMS 106 vorhandene Funktionalität nutzen.
  • Zur Bereitstellung dieser Merkmale ist eine Dateilöschungstabelle 124 vorhanden, die als Proxy für Ressourcen außerhalb der Festschreib-Koordination des DBMS fungiert. Die Dateilöschungstabelle 124 unterliegt der Festschreib-Koordination des DBMS und kann daher dazu verwendet werden, um datenbankfremde Ressourcen in einem synchronisierten Zustand mit Datenbank-Ressourcen und konsistent zu den Datenbank-Ressourcen zu halten. Die Funktion und die Handhabung der Dateilöschungstabelle 124 sowie andere Funktionalitäten werden in Verbindung mit den 2 bis 5 eingehender beschrieben.
  • In dem erläuterten Beispiel werden die Anwendung 102, das DBMS 106 und der Dienst 110 innerhalb desselben Host-Betriebssystems 126 ausgeführt, das auf einem Host-System 128 (z. B. ein Großrechner oder ein anderes Computersystem) installiert ist. Die Komponenten 102, 106, 110 müssen jedoch nicht notwendigerweise auf demselben Betriebssystem 126 oder Host-System 128 ausgeführt werden. Beispielsweise können die Komponenten 102, 106, 110 in unterschiedlichen Betriebssystemen 126 oder auf unterschiedlichen Host-Systemen 128 ausgeführt werden. Bei bestimmten Ausführungsformen können die Komponenten 102, 106, 110 auf unterschiedlichen Computern ausgeführt werden, die untereinander über ein Netzwerk (z. B. ein LAN, WAN, das Internet oder Ähnliches) Daten austauschen. Somit trägt die erläuterte Hardware- und Softwarekonfiguration lediglich beispielhaften Charakter und ist nicht als Einschränkung zu verstehen.
  • Unter Bezugnahme auf 2 wird eine Ausführungsform eines Verfahrens 200 zum Synchronisieren einer Datenbank und einer datenbankfremden Ressource erläutert. Das Verfahren 200 in 2 zeigt ein Szenario, bei dem eine Anwendung 102 ein ROLLBACK der von ihr durchgeführten Arbeit ausführt. 3 zeigt die Zustände verschiedener Datenstrukturen zu unterschiedlichen Zeitpunkten während der Ausführung des Verfahrens 200.
  • Wie in den 2 und 3 veranschaulicht überträgt 208 die Anwendung 102 (die unter einem Anwendungs-Thread 202 ausgeführt wird) zu Beginn eine Anforderung auf Speicherung eines benannten Datenobjekts an einen Dienst 110. Der Dienst 110 (der unter einem separaten Dienst-Thread 204 ausgeführt wird) erzeugt 210 dann eine eindeutige Kennung für das benannte Datenobjekt, um die Instanz des Datenobjekts von anderen Instanzen des benannten Datenobjekts zu unterscheiden. Diese Unterscheidung kann von Bedeutung sein, da sich der Inhalt einer Instanz eines benannten Datenobjekts vom Inhalt einer anderen Instanz desselben benannten Datenobjekts unterscheiden kann.
  • Der unter dem Dienst-Thread 204 ausgeführte Dienst 110 speichert 212 anschließend das benannte Datenobjekt als Datei mit einer eindeutigen Kennung im Dateisystem 118. Beispielsweise wird wie in 3 gezeigt ein Datenobjekt mit dem Namen myfile mit der eindeutigen Kennung „7” zum Zeitpunkt T1 im Dateisystem 118 als myfile.7 gespeichert.
  • Unter der Annahme, dass die Anwendung 102 die Anforderung auf Speicherung des benannten Datenobjekts rückgängig machen will, fügt 214 der Dienst 110 für das benannte Datenobjekt einen „Löschen”-Eintrag zur Dateilöschungstabelle 124 hinzu. Der Dienst kann dann ein COMMIT zu diesem Eintrag im Dienst-Thread 204 durchführen 214, um den Eintrag in der Dateilöschungstabelle 124 dauerhaft zu machen. Beispielsweise fügt der Dienst 110 wie zum Zeitpunkt T2 gezeigt den Eintrag myfile.7 löschen in die Dateilöschungstabelle (File-Deletion Table, FDT) 124 ein. Dadurch wird im Wesentlichen die Löschung der Datei zur Standardaktion, die vom Dienst 110 auszuführen ist.
  • Der unter dem Anwendungs-Thread 202 ausgeführte Dienst 110 fügt 216 dann das benannte Datenobjekt zur Objektverzeichnistabelle 120 hinzu und zeigt dadurch an, dass das benannte Datenobjekt im Dateisystem 118 gespeichert wurde. Wie zum Zeitpunkt T3 gezeigt fügt der Dienst 110 Metadaten zu dem benannten Datenobjekt in die Objektverzeichnistabelle 120 ein.
  • Der Dienst 110 löscht 218 dann den Eintrag aus der Dateilöschungstabelle 124 mit dem Ziel, die Anforderung auf Löschung des benannten Datenobjekts zu beseitigen.
  • Beispielsweise entfernt der Dienst 110 wie zum Zeitpunkt T4 gezeigt den Eintrag myfile.7 löschen aus der Dateilöschungstabelle 124. Die Dauerhaftigkeit dieser Löschung aus der Dateilöschungstabelle 124 hängt von der endgültigen Disposition der Transaktionen und insbesondere davon ab, ob die Anwendung 102 am Ende eine COMMIT oder ROLLBACK ausführt.
  • In diesem Beispiel führt 220 die Anwendung 102 schließlich ein ROLLBACK durch und macht dadurch die von der Anwendung 102 durchgeführte Arbeit rückgängig. Dadurch wird die Löschung des Eintrags myfile.7 löschen rückgängig gemacht und der Eintrag wieder zur Dateilöschungstabelle 124 hinzugefügt. Somit wird wie zum Zeitpunkt T5 gezeigt der Eintrag myfile.7 löschen in der Dateilöschungstabelle 124 wiederhergestellt, und der Eintrag des Datenobjekts in der Objektverzeichnistabelle 120 wird gelöscht. Zu beachten ist, dass der eigentliche Dateiname im Dateisystem 118 verbleibt. Des Weiteren ist zu beachten, dass der Dienst 110 keine Kenntnis davon hat, dass die Anwendung 102 durch die Ausführung eines ROLLBACK die Transaktion beseitigt hat.
  • Um die Datei, die das benannte Datenobjekt enthält, aus dem Dateisystem 118 zu löschen, führt der Dienst 110 zu einem späteren Zeitpunkt einen Bereinigungs-Thread 206 aus. Wie gezeigt ruft der Dienst 110 zu Beginn Einträge aus der Dateilöschungstabelle 124 ab, die älter als ein bestimmtes Intervall n sind. Das Intervall n kann so ausgewählt werden, dass die Anwendung 102 genügend Zeit hat, um die Transaktion zu beseitigen (durch ein COMMIT oder ROLLBACK). Dieses Intervall n kann je nach der Anwendung 102 in der Größenordnung von Sekunden, Minuten, Stunden, Tagen oder Wochen liegen.
  • Sobald ein Eintrag abgerufen worden ist, der älter als ein bestimmtes Intervall n ist, löscht der Dienst 110 die Datei, die durch den Eintrag in der Dateilöschungstabelle 124 vorgegeben ist. Dadurch wird das Dateisystem 118 mit der Objektverzeichnistabelle 120 synchronisiert, in der der Eintrag zu dem benannten Datenobjekt bereits durch das ROLLBACK 220 gelöscht wurde. Wie in 3 gezeigt wird zum Zeitpunkt T6 die Datei myfile.7 aus dem Dateisystem 118 gelöscht.
  • Schließlich löscht der Dienst 110 den Eintrag aus der Dateilöschungstabelle 124, mit dem die Löschung des benannten Datenobjekts angefordert wird. Der Dienst 110 führt zu dieser Änderung ein COMMIT im Bereinigungs-Thread 206 durch, um die Änderung dauerhaft zu machen. Somit wird wie zum Zeitpunkt T7 gezeigt der Eintrag myfile.7 löschen aus der Dateilöschungstabelle 124 gelöscht.
  • Aufgrund der zu jedem benannten Datenobjekt gehörenden eindeutigen Kennung kann die Anwendung 102 weitere Aktionen im Zusammenhang mit demselben benannten Datenobjekt durchführen, selbst wenn die vorherige Instanz des benannten Datenobjekts noch nicht aus dem Dateisystem 118 gelöscht wurde. Wenn die Anwendung 102 beispielsweise dasselbe benannte Datenobjekt noch einmal speichern soll, bevor die vorherige Instanz gelöscht wurde, erzeugt der Dienst 110 eine neue eindeutige Kennung für die neue Instanz (z. B. myfile.8). Diese Instanz könnte dann im Dateisystem 118 gespeichert werden, ohne dass dies einen Fehler aufgrund eines doppelten Dateinamens zur Folge hätte.
  • Unter Bezugnahme auf 4 wird eine weitere Ausführungsform eines Verfahrens 400 zum Synchronisieren einer Datenbank und einer datenbankfremden Ressource erläutert. Das Verfahren 400 in 4 zeigt ein Szenario, bei dem die Anwendung 102 ein COMMIT durchführt. 5 zeigt die Zustände verschiedener Datenstrukturen zu unterschiedlichen Zeitpunkten während der Ausführung des Verfahrens 400. Das Verfahren 400 ist mit dem in 2 veranschaulichten Verfahren 200 bis zu dem Zeitpunkt identisch, an dem die Anwendung 102 ein COMMIT durchführt 420 (anstelle eines ROLLBACK).
  • Wie in 4 gezeigt führt 420 die Anwendung 102 ein COMMIT durch und macht die von der Anwendung 102 durchgeführte Arbeit dauerhaft. Dadurch wird der Eintrag myfile.7 löschen permanent aus der Dateilöschungstabelle 124 gelöscht. Somit wird wie zum Zeitpunkt T5 in 5 gezeigt der Eintrag myfile.7 löschen aus der Dateilöschungstabelle 124 gelöscht. Der Eintrag in der Objektverzeichnistabelle 120 wird jedoch beibehalten. Wie im vorhergehenden Beispiel hat der Dienst 110 keine Kenntnis davon, dass die Anwendung 102 das COMMIT durchgeführt hat.
  • Wie im vorhergehenden Beispiel führt der Dienst 110 zu einem späteren Zeitpunkt einen Bereinigungs-Thread 406 aus. Da der Eintrag zu dem benannten Datenobjekt aus der Dateilöschungstabelle 124 entfernt wurde, löscht der Bereinigungs-Thread 406 die Datei myfile.7 nicht aus dem Dateisystem 118. Dadurch ist gewährleistet, dass das Dateisystem 118 mit der Objektverzeichnistabelle 120 synchronisiert bleibt.
  • Unter Bezugnahme auf 6 kann der Dienst 110 gemäß der vorliegenden Erfindung verändert werden, um die in den 2 und 4 veranschaulichten Verfahren 200, 400 zu realisieren. Ein derartiger Dienst 110 kann ein oder mehrere Module umfassen, um diese Funktionalität zu realisieren. Diese Module können in Hardware, Software oder in Firmware, die auf Hardware ausführbar ist, oder in einer Kombination hiervon realisiert sein. Bei ausgewählten Ausführungsformen umfassen diese Module ein oder mehrere Kennungserzeugungsmodule 600, ein Speichermodul 602, ein Zeilenhinzufügemodul 604, ein Festschreib-Modul 606, ein Verzeichnishinzufügemodul 608, ein Zeilenlöschmodul 610 und ein Bereinigungsmodul 612. Diese Module sind nur beispielhaft angegeben und nicht als Einschränkung gedacht. Bei bestimmten Ausführungsformen können mehr oder weniger Module als die hier aufgeführten vorgesehen sein. Bei weiteren Ausführungsformen kann die Funktionalität bestimmter Module in weniger Modulen zusammengefasst oder umgekehrt auf mehrere Module aufgeteilt sein.
  • Wenn der Dienst 110 eine Anforderung auf Speicherung eines benannten Datenobjekts erhält, erzeugt ein Kennungserzeugungsmodul 600 eine eindeutige Kennung für das benannte Datenobjekt, um die Instanz des Datenobjekts von anderen Instanzen des benannten Datenobjekts zu unterscheiden. Ein Speichermodul 602 speichert dann das benannte Datenobjekt als eindeutig benannte Datei im Dateisystem 118. Sobald die Datei gespeichert wurde, fügt ein Zeilenhinzufügemodul 604 auf dem Dienst-Thread 204 für das benannte Datenobjekt einen „Löschen”-Eintrag in die Dateilöschungstabelle 124 ein. Ein Festschreib-Modul 606 macht aus diesem Eintrag in der Dateilöschungstabelle 124 einen dauerhaften Eintrag. Dadurch wird die Löschung der Datei zur Standardaktion, die vom Dienst 110 auszuführen ist.
  • Sobald das Zeilenhinzufügemodul 604 einen „Löschen”-Eintrag zur Dateilöschungstabelle 124 hinzugefügt hat und dieser Eintrag festgeschrieben wurde, fügt 216 ein Verzeichnishinzufügemodul 608 auf dem Anwendungs-Thread 202 zur Objektverzeichnistabelle 120 einen Eintrag hinzu, der dem benannten Datenobjekt zugeordnet ist. Dies ist ein Hinweis darauf, dass das benannte Datenobjekt im Dateisystem 118 gespeichert ist. Ein Zeilenlöschmodul 610 löscht 218 dann den zuvor erörterten „Löschen”-Eintrag aus der Dateilöschungstabelle 124 mit dem Ziel, die Anforderung auf Löschung des benannten Datenobjekts zu beseitigen. Die Dauerhaftigkeit dieser Löschung hängt von der endgültigen Disposition der Transaktion ab. An diesem Punkt ist die Anwendung 102 für die Durchführung entweder eines COMMIT oder eines ROLLBACK zuständig, um die von der Anwendung 102 durchgeführte Arbeit entweder dauerhaft oder rückgängig zu machen.
  • Zu einem späteren Zeitpunkt entfernt ein Bereinigungsmodul 612 Dateien aus dem Dateisystem 118, die in der Dateilöschungstabelle 124 als zu löschen ermittelt wurden. Beispielsweise ist ein Verzögerungsmodul 614 so konfiguriert, dass Einträge aus der Dateilöschungstabelle 124 ausgelesen werden, die älter als ein bestimmtes Intervall n sind. Ein Dateilöschmodul 616 löscht dann alle Dateien, die in den Einträgen angegeben sind. Dadurch wird das Dateisystem 118 mit der Objektverzeichnistabelle 120 synchronisiert. Sobald eine Datei aus dem Dateisystem 118 gelöscht wurde, löscht ein Zeilenlöschmodul 618 den zugehörigen „Löschen”-Eintrag aus der Dateilöschungstabelle 124. Ein Festschreib-Modul 620 führt dann ein COMMIT aus, um diese Änderung in der Dateilöschungstabelle 124 dauerhaft zu machen.
  • Obwohl die im vorliegenden Dokument erörterten Vorrichtungen und Verfahren hauptsächlich im Zusammenhang mit dem Löschen von Dateien aus einem Dateisystem 118 erörtert wurden, haben die im vorliegenden Dokument erörterten Vorrichtungen und Verfahren unter Bezugnahme auf 7 viel mehr Anwendungsmöglichkeiten. Tatsächlich stellt das Löschen von Dateien aus einem Dateisystem 118 lediglich eine Aktionsart dar, für die die im vorliegenden Dokument erörterten Vorrichtungen und Verfahren eingesetzt werden können. Bei anderen Ausführungsformen können die Vorrichtungen und Verfahren zur Umkehrung einer Vielzahl von Aktionen verwendet werden, die nicht unter die normale „Festschreib-Koordination” einer Anwendung 102 oder eines DBMS 106 fallen. Insbesondere kann eine Datenbanktabelle 124 als Proxy genutzt werden, um eine Vielfalt von Aktionen rückgängig zu machen, wenn eine Anwendung 102 eine Transaktion z. B. durch ein ROLLBACK endgültig beseitigt. Ein Verfahren 700 mit größerem Anwendungsbereich, das die in den 2 und 4 beschriebenen Verfahren umfasst, ist in 7 beschrieben.
  • Wie in 7 veranschaulicht überträgt 708 eine Anwendung 102 (die unter einem Anwendungs-Thread 702 ausgeführt wird) zu Beginn eine Anforderung auf Durchführung einer bestimmten Aktion an einen Dienstanbieter 110. Diese Aktion könnte praktisch alles enthalten, z. B. Speichern einer Datei, Ausführen eines Programms, erzeugen eines Objekts oder Artefakts, Durchführen eines Dienstes oder Ähnliches. Bei bestimmten Ausführungsformen erzeugt 710 der Dienstanbieter 110 (der unter einem separaten Dienst-Thread 704 ausgeführt wird) eine eindeutige Kennung für diese Aktion, um diese Aktion von anderen Aktionen zu unterscheiden. Der Dienstanbieter 110 führt 712 anschließend die Aktion mit der eindeutigen Kennung durch.
  • Unter der Annahme, dass die Anwendung 102 die Anforderung auf Speicherung zur Durchführung der Aktion rückgängig macht, fügt 714 der Dienstanbieter 110 für die Aktion einen Eintrag zur Aktionsumkehrungstabelle (ähnlich der Dateilöschungstabelle 124) hinzu. Der Dienstanbieter führt 714 dann ein COMMIT zu diesem Eintrag im Dienst-Thread 204 durch, um den Eintrag in der Tabelle dauerhaft zu machen. Dadurch wird die Umkehrung der Aktion zur Standardaufgabe, die vom Dienstanbieter 110 auszuführen ist.
  • Der Dienstanbieter 110, der unter dem Anwendungs-Thread 702 ausgeführt wird, löscht 718 dann den Eintrag aus der Aktionsumkehrungstabelle mit dem Ziel, die Anforderung auf Durchführung der Aktion zu beseitigen. Die Dauerhaftigkeit dieser Löschung hängt von der endgültigen Disposition der Transaktionen und insbesondere davon ab, ob die Anwendung 102 am Ende ein COMMIT oder ein ROLLBACK ausführt.
  • Wenn die Anwendung 102 schließlich ein ROLLBACK durchführt 720 und dadurch die von der Anwendung 102 durchgeführte Arbeit rückgängig macht, macht die Anwendung 102 die Löschung des Eintrags rückgängig, wodurch der Eintrag wieder zur Aktionsumkehrungstabelle hinzugefügt wird. Zu beachten ist, dass die Aktion zu diesem Zeitpunkt immer noch ausgeführt und nicht rückgängig gemacht wird. Ebenso ist zu beachten, dass der Dienstanbieter 110 keine Kenntnis davon hat, dass die Anwendung 102 durch die Ausführung eines ROLLBACK die Transaktion beseitigt hat.
  • Um die in der Aktionsumkehrungstabelle bezeichnete Aktion rückgängig zu machen, führt der Dienstanbieter 110 zu einem späteren Zeitpunkt einen Bereinigungs-Thread 706 aus. Wie gezeigt ruft 722 der Dienstanbieter 110 zu Beginn Einträge aus der Aktionsumkehrungstabelle ab, die älter als ein bestimmtes Intervall n sind. Das Intervall n kann so ausgewählt werden, dass die Anwendung 102 genügend Zeit hat, um die Transaktion durch ein COMMIT oder ein ROLLBACK zu beseitigen. Sobald ein Eintrag abgerufen worden ist, der älter als ein bestimmtes Intervall n ist, macht der Dienstanbieter 110 die durch den Eintrag angegebene Aktion rückgängig 724. Schließlich löscht 726 der Dienstanbieter 110 den Eintrag aus der Aktionsumkehrungstabelle, mit dem die Umkehrung der Aktion angefordert wird. Der Dienstanbieter 110 führt 726 dann ein COMMIT durch, um diese Änderung dauerhaft zu machen. Auf diese Weise können alle Aktionen, die nicht unter den Festschreib-Koordinator einer Anwendung fallen, rückgängig gemacht werden.
  • Die Ablaufpläne und Blockschaltbilder in den Figuren veranschaulichen die Architektur, Funktionalität und Funktionsweise möglicher Realisierungsformen von Systemen, Verfahren und Computerprogrammprodukten gemäß den verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder einzelne Block in den Ablaufplänen bzw. in den Blockschaltbildern ein Modul, ein Segment oder einen Teil des Codes darstellen, der eine oder mehrere ausführbare Anweisungen zur Realisierung der angegebenen Logikfunktion bzw. Logikfunktionen umfasst. Außerdem ist anzumerken, dass bei einigen alternativen Realisierungsformen die im Block angegebenen Funktionen außerhalb der in den Figuren angegebenen Reihenfolge ausgeführt werden können. Beispielsweise können zwei hintereinander aufgeführte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können je nach der mit den Blöcken verbundenen Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Bei anderen Umsetzungen sind unter Umständen nicht alle der beschriebenen Schritte erforderlich, um die gewünschte Funktionalität zu erreichen. Darüber hinaus ist anzumerken, dass jeder einzelne Block der dargestellten Blockschaltbilder und/oder Ablaufpläne sowie Kombinationen von Blöcken in den dargestellten Blockschaltbildern und/oder Ablaufplänen mithilfe von speziellen, auf Hardware beruhenden Systemen zur Ausführung der angegebenen Funktionen bzw. Aktionen oder mithilfe von Kombinationen aus spezieller Hardware und Computeranweisungen realisiert werden kann.

Claims (7)

  1. Verfahren zur Synchronisierung einer Objektverzeichnistabelle (120) in einer transaktionssicheren Datenbank (108) mit einer datenbankfremden und außerhalb der Transaktionssicherheit liegenden Ressource, insbesondere einem Dateisystem (118; 212; 412), wobei das Verfahren das Ausführen von Abschnitten in einer Anzahl von Anwendungen (102; 202; 402) und/oder Diensten (110, 106) auf einer Rechneranlage (100) umfasst zum: – Senden einer Anforderung auf Speicherung eines Datenobjekts (208), – Empfangen der Anforderung (210, 212) und Speichern des Datenobjekts als Datei, wobei die Datei ein Element in der datenbankfremden Ressource ist (410, 412), – Einfügen eines Eintrags mit einer Bezeichnung der gespeicherten Datei in eine Dateilöschungstabelle (FDT) in der Datenbank innerhalb einer ersten Transaktion, – Abschließen der ersten Transaktion zum Herstellen der Dauerhaftigkeit der Einfügung (COMMIT; 214; 414), – Einfügen einer Beschreibung des gespeicherten Datenobjekts in der Objektverzeichnistabelle (216; 416) innerhalb einer zweiten Transaktion, – Löschen des Eintrags zu der gespeicherten Datei aus der Dateilöschungstabelle (218; 418) innerhalb der zweiten Transaktion – und entweder – Abschließen der zweiten Transaktion und Herstellen der Dauerhaftigkeit der Löschung (COMMIT; 420) oder – Zurücksetzen der zweiten Transaktion und Rückgängigmachen der Löschung (ROLLBACK; 220), wodurch in der Datenbank zu dem gespeicherten Datenobjekt entweder in der Objektverzeichnistabelle ein Eintrag enthalten ist oder das Datenobjekt in der Dateilöschungstabelle zum Löschen markiert ist.
  2. Verfahren nach Anspruch 1, ferner umfassend das Ausführen von Abschnitten der Anwendungen und/oder Dienste zum Erzeugen einer eindeutigen Kennung und das Zuordnen der Datei zu der eindeutigen Kennung (210; 410).
  3. Verfahren nach Anspruch 2, worin zur Bezeichnung der gespeicherten Datei in dem Eintrag in der Dateilöschungstabelle die eindeutige Kennung verwendet wird (212; 412).
  4. Verfahren nach einem der vorangehenden Ansprüche, ferner umfassend das Ausführen von Abschnitten der Anwendungen und/oder Dienste zum: – Feststellen des Vorliegens eines Eintrags in der Dateilöschungstabelle und – Löschen der in dem vorliegenden Eintrag in der Dateilöschungstabelle bezeichneten Datei aus der datenbankfremden Ressource.
  5. Verfahren nach Anspruch 4, wobei das Feststellen des Vorliegens eines Eintrags in der Dateilöschungstabelle dessen Vorhandensein über einen vorgegebenen Zeitraum hinweg voraussetzt.
  6. Rechenanlage mit einer transaktionssicheren Datenbank und einer datenbankfremden außerhalb der Transaktionssicherheit liegenden Ressource, wobei auf der Rechenanlage eine Anzahl von Anwendungen (102; 202; 402) und/oder Diensten (110, 106) eingerichtet ist, um ein Verfahren nach einem der Ansprüche 1 bis 5 auszuführen.
  7. Computerlesbares Medium mit einem darin verkörperten computernutzbaren Programmcode, wobei der computernutzbare Programmcode bei Ausführung auf einer Rechenanlage ein Verfahren nach einem der Ansprüche 1 bis 5 durchführt.
DE112010004185.7T 2009-10-31 2010-10-08 Synchronisieren einer Datenbank mit datenbankfremden Ressourcen Active DE112010004185B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/610,281 2009-10-31
US12/610,281 US9020905B2 (en) 2009-10-31 2009-10-31 Synchronizing database and non-database resources without a commit coordinator
PCT/EP2010/065101 WO2011051098A1 (en) 2009-10-31 2010-10-08 Synchronizing database and non-database resources

Publications (2)

Publication Number Publication Date
DE112010004185T5 DE112010004185T5 (de) 2012-08-30
DE112010004185B4 true DE112010004185B4 (de) 2014-07-24

Family

ID=43770488

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112010004185.7T Active DE112010004185B4 (de) 2009-10-31 2010-10-08 Synchronisieren einer Datenbank mit datenbankfremden Ressourcen

Country Status (5)

Country Link
US (1) US9020905B2 (de)
CN (1) CN102597995B (de)
DE (1) DE112010004185B4 (de)
GB (1) GB2487139A (de)
WO (1) WO2011051098A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105740131B (zh) * 2014-12-09 2020-09-25 深圳力维智联技术有限公司 软件用户行为回退处理方法及装置
US10048960B2 (en) * 2014-12-17 2018-08-14 Semmle Limited Identifying source code used to build executable files
US11132351B2 (en) 2015-09-28 2021-09-28 Hewlett Packard Enterprise Development Lp Executing transactions based on success or failure of the transactions
CN107239467B (zh) * 2016-03-29 2020-04-10 北京神州泰岳软件股份有限公司 基于数据库的数据处理方法及装置
CN108073596B (zh) * 2016-11-10 2020-08-14 北京国双科技有限公司 一种olap数据库的数据删除方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6029160A (en) * 1995-05-24 2000-02-22 International Business Machines Corporation Method and means for linking a database system with a system for filing data
US20020174103A1 (en) * 2000-06-08 2002-11-21 International Business Machines Corporation System and method for updating external file referenced by database with transactional consistency using SQL
US20030069902A1 (en) * 2001-10-05 2003-04-10 Ibm Method of maintaining data consistency in a loose transaction model
US6571259B1 (en) * 2000-09-26 2003-05-27 Emc Corporation Preallocation of file system cache blocks in a data storage system
US20060253502A1 (en) * 2005-05-06 2006-11-09 Microsoft Corporation Maintenance of link level consistency between database and file system
CA2549694A1 (en) * 2005-07-01 2007-01-01 Dan Dodge File system having deferred verification of data integrity
US7478115B2 (en) * 2005-06-13 2009-01-13 Microsoft Corporation System and method for database and filesystem coordinated transactions

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5297279A (en) 1990-05-30 1994-03-22 Texas Instruments Incorporated System and method for database management supporting object-oriented programming
US6128771A (en) 1996-02-09 2000-10-03 Sun Microsystems, Inc. System and method for automatically modifying database access methods to insert database object handling instructions
US5884327A (en) * 1996-09-25 1999-03-16 International Business Machines Corporation System, method and program for performing two-phase commit with a coordinator that performs no logging
US5765162A (en) 1996-10-25 1998-06-09 International Business Machines Corporation Method for managing queryable datastore persistent objects and queryable datastore collections in an object-oriented environment
US5953719A (en) * 1997-09-15 1999-09-14 International Business Machines Corporation Heterogeneous database system with dynamic commit procedure control
US6453356B1 (en) 1998-04-15 2002-09-17 Adc Telecommunications, Inc. Data exchange system and method
US6738971B2 (en) * 1999-03-10 2004-05-18 Oracle International Corporation Using a resource manager to coordinate the comitting of a distributed transaction
KR20030056540A (ko) * 2001-12-28 2003-07-04 한국전자통신연구원 데이터베이스 관리 시스템에서 시스템 고장에 대비한 파일삭제 및 회복 방법
US6873995B2 (en) 2002-04-23 2005-03-29 International Business Machines Corporation Method, system, and program product for transaction management in a distributed content management application
US7076508B2 (en) 2002-08-12 2006-07-11 International Business Machines Corporation Method, system, and program for merging log entries from multiple recovery log files
US7412455B2 (en) 2003-04-30 2008-08-12 Dillon David M Software framework that facilitates design and implementation of database applications
US7346905B2 (en) 2003-06-10 2008-03-18 International Business Machines Corporation Apparatus and method for maintaining resource integrity without a unified transaction manager in a software environment
EP1577776B1 (de) * 2004-03-18 2007-05-02 Alcatel Lucent Verfahren und Vorrichtung zur Datensynchronisierung eines verteilten Datenbanksystems
CN1725658A (zh) * 2004-07-21 2006-01-25 中兴通讯股份有限公司 一种实时数据库主备同步方法
US8271448B2 (en) * 2005-01-28 2012-09-18 Oracle International Corporation Method for strategizing protocol presumptions in two phase commit coordinator
US8117605B2 (en) 2005-12-19 2012-02-14 Oracle America, Inc. Method and apparatus for improving transactional memory interactions by tracking object visibility
US8880480B2 (en) * 2007-01-03 2014-11-04 Oracle International Corporation Method and apparatus for data rollback
US11281654B2 (en) * 2007-10-23 2022-03-22 International Business Machines Corporation Customized roll back strategy for databases in mixed workload environments
JP5257455B2 (ja) * 2008-09-17 2013-08-07 富士通株式会社 2相コミットによるデータ更新同期方法及びシステム
US9569254B2 (en) * 2009-07-28 2017-02-14 International Business Machines Corporation Automatic checkpointing and partial rollback in software transaction memory
US8356007B2 (en) * 2010-10-20 2013-01-15 Microsoft Corporation Distributed transaction management for database systems with multiversioning
US8825601B2 (en) * 2010-02-01 2014-09-02 Microsoft Corporation Logical data backup and rollback using incremental capture in a distributed database

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6029160A (en) * 1995-05-24 2000-02-22 International Business Machines Corporation Method and means for linking a database system with a system for filing data
US20020174103A1 (en) * 2000-06-08 2002-11-21 International Business Machines Corporation System and method for updating external file referenced by database with transactional consistency using SQL
US6571259B1 (en) * 2000-09-26 2003-05-27 Emc Corporation Preallocation of file system cache blocks in a data storage system
US20030069902A1 (en) * 2001-10-05 2003-04-10 Ibm Method of maintaining data consistency in a loose transaction model
US20060253502A1 (en) * 2005-05-06 2006-11-09 Microsoft Corporation Maintenance of link level consistency between database and file system
US7478115B2 (en) * 2005-06-13 2009-01-13 Microsoft Corporation System and method for database and filesystem coordinated transactions
CA2549694A1 (en) * 2005-07-01 2007-01-01 Dan Dodge File system having deferred verification of data integrity

Also Published As

Publication number Publication date
WO2011051098A1 (en) 2011-05-05
DE112010004185T5 (de) 2012-08-30
CN102597995A (zh) 2012-07-18
US9020905B2 (en) 2015-04-28
GB201201716D0 (en) 2012-03-14
GB2487139A (en) 2012-07-11
CN102597995B (zh) 2015-02-18
US20110106760A1 (en) 2011-05-05

Similar Documents

Publication Publication Date Title
DE60312746T2 (de) Wiederherstellung nach fehlern in datenverarbeitungsanlagen
DE102008015662B4 (de) Beseitigung von Daten
DE102012216022B4 (de) Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger
DE112005002402B4 (de) Hybride Hardware-/Software-Implementierung eines Transaktionsspeicherzugriffs
EP0929864B1 (de) Koordinations-system
DE602005004166T2 (de) Vorrichtung, system und verfahren zur reinitialisierung einer serialisierung von dateisystemen
DE4435751B4 (de) Dateiname- und Verzeichnis- Erfassungsverfahren zur Verwendung mit einem Betriebssystem
DE202019005483U1 (de) Datenreplikation und Datenausfallsicherung in Datenbanksystemen
DE602005002024T2 (de) Fernkopiersystem und Fernkopierverfahren
DE102013204521A1 (de) Transaktionsverwaltung für Datenbanksysteme
US20140095452A1 (en) In place point-in-time recovery of pluggable databases
DE112010004185B4 (de) Synchronisieren einer Datenbank mit datenbankfremden Ressourcen
EP1088280A1 (de) Verfahren und system zur schnellen speicherresidenten verarbeitung von transaktionsdaten
DE10112941A1 (de) System und Verfahren für das parallele Lesen von primären und sekundären Sicherungen zur Wiederherstellung mehrerer gemeinsam benutzter Datenbankdateien
DE112011100534T5 (de) Mehrstufiger Sicherungsprozess
DE102021125630A1 (de) Datensynchronisation in einem datenanalysesystem
DE112015000222T5 (de) Zusammenführen von mehreren Zeitpunktkopien zu einer zusammengeführten Zeitpunktkopie
DE112021002894T5 (de) On-the- fly- pit-auswahl bei disarter-recovery in der cloud
DE112011103367T5 (de) Replizieren von Daten
DE60315291T2 (de) Computersystem und Verfahren zum Betreiben eines Computersystems
DE10059006B4 (de) Verfahren und System zur sicheren Verwaltung von Dateien in nichtflüchtigen Speichern
DE112007002327T5 (de) Persistente Sperren auf Ressourcen zur Steuerung der Nebenläufigkeit
EP3622414B1 (de) Datenbank mit feldbezogenen zeitstempeln
WO2014173675A1 (de) Verfahren zum löschen von informationen, verwendung eines verfahrens, computerprogrammprodukt und computersystem
DE60315030T2 (de) Vermeiden von datenverlusten beim aktualisieren eines data warehouse

Legal Events

Date Code Title Description
R163 Identified publications notified
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final