DE112022000767T5 - ASYNCHRONOUS PERSISTENCE OF REPLICATED DATA CHANGES IN A DATABASE ACCELERATOR - Google Patents

ASYNCHRONOUS PERSISTENCE OF REPLICATED DATA CHANGES IN A DATABASE ACCELERATOR Download PDF

Info

Publication number
DE112022000767T5
DE112022000767T5 DE112022000767.2T DE112022000767T DE112022000767T5 DE 112022000767 T5 DE112022000767 T5 DE 112022000767T5 DE 112022000767 T DE112022000767 T DE 112022000767T DE 112022000767 T5 DE112022000767 T5 DE 112022000767T5
Authority
DE
Germany
Prior art keywords
database
target database
target
tables
recovery
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112022000767.2T
Other languages
German (de)
Inventor
Felix Beier
Dennis Butterstein
Einar Lueck
Sabine Perathoner-Tschaffler
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
Priority claimed from US17/206,240 external-priority patent/US11797570B2/en
Priority claimed from US17/206,221 external-priority patent/US11500733B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112022000767T5 publication Critical patent/DE112022000767T5/en
Pending legal-status Critical Current

Links

Images

Classifications

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

Abstract

Ein durch einen Computer ausgeführtes Verfahren für eine Wiederherstellung nach einem Absturz für verknüpfte Datenbanken kann bereitgestellt werden. Die verknüpften Datenbanken weisen eine Quellen- und eine zugehörige Zieldatenbank auf. Ausgewählte Abfragen der Quellendatenbank werden an die Zieldatenbank übertragen. Das Verfahren umfasst ein Synchronisieren von ausgewählten Teilen der Quellendatenbank mit Tabellen eines speicherinternen Teils einer Zieldatenbank und ein asynchrones und persistentes Speichern von persistent angewandten Änderungen an dem speicherinternen Zieldatenbankteil. Nach einem Datenbankabsturz des Zieldatenbanksystems umfasst das Verfahren auch ein Wiederherstellen des speicherinternen Zieldatenbankteils mit der verfügbaren aktuellsten Momentaufnahme und ein Anwenden von Änderungen aus der Wiederherstellungsprotokolldatei der Quellendatenbank, die einen späteren Zeitstempel als die in dem persistenten Zieldatenbankspeicher des speicherinternen Zieldatenbankteils verfügbare aktuellste Momentaufnahme haben.A computer-executed crash recovery method for linked databases can be provided. The linked databases have a source database and an associated target database. Selected queries from the source database are transferred to the target database. The method includes synchronizing selected portions of the source database with tables of an in-memory portion of a target database and asynchronously and persistently storing persistently applied changes to the in-memory target database portion. After a database crash of the target database system, the method also includes restoring the target database in-memory portion with the most recent snapshot available and applying changes from the source database recovery log file that have a later timestamp than the most recent snapshot available in the target database persistent database portion of the target database in-memory portion.

Description

HINTERGRUNDBACKGROUND

Gebiet der ErfindungField of invention

Die Erfindung betrifft allgemein eine Wiederherstellung nach einem Absturz für eine Datenbank und genauer gesagt ein durch einen Computer ausgeführtes Verfahren für eine Wiederherstellung nach einem Absturz für verknüpfte Datenbanken. Die Erfindung betrifft des Weiteren ein verknüpftes Datenbanksystem mit Wiederherstellung nach einem Absturz für verknüpfte Datenbanken und ein Computerprogrammprodukt.The invention relates generally to crash recovery for a database, and more particularly to a computer-executed method for crash recovery for linked databases. The invention further relates to a linked database system with crash recovery for linked databases and a computer program product.

Verwandte TechnikRelated technology

Das Verwalten von großen Datenmengen bleibt ein dauerhaftes Problem für IT-(Informationstechnologie-)Organisationen von Unternehmen. Dies ist (i) auf die immer größer werdende Menge an Daten und (ii) auch auf die Vielfalt der Daten zurückzuführen. Zusätzlich zu herkömmlichen strukturierten Daten werden auch semistrukturierte und sogenannte unstrukturierte Daten in großen Mengen in IT-Systemen von Unternehmen gespeichert. Darüber hinaus wurden zusätzlich zu herkömmlichen transaktionsorientierten Datenbanken spezielle Datenbanksysteme, die für eine Analyseverarbeitung optimiert sind, eingeführt, um dem Bedarf der Industrie an immer mehr Datenanalysen gerecht zu werden. Auf der anderen Seite wurden Versuche unternommen, die gesamte Analyseverarbeitung in einer herkömmlichen Transaktionsdatenbank vorzunehmen. Jedoch stellte sich heraus, dass die Analyseverarbeitung einen zu starken und unvorhersehbaren Einfluss auf die Leistungsfähigkeit der Onlinetransaktionsverarbeitung hat.Managing large amounts of data remains a persistent problem for enterprise IT (information technology) organizations. This is due to (i) the ever-increasing amount of data and (ii) also to the diversity of data. In addition to traditional structured data, semi-structured and so-called unstructured data are also stored in large quantities in company IT systems. Furthermore, in addition to traditional transaction-oriented databases, special database systems optimized for analytical processing have been introduced to meet the industry's need for more and more data analysis. On the other hand, attempts have been made to do all analytical processing in a traditional transactional database. However, it turned out that analytical processing has too strong and unpredictable an impact on the performance of online transaction processing.

Folglich wurden intelligente Kombinationen von transaktionsorientierten Datenbankverwaltungssystemen mit analyseoptimierten Datenbankverwaltungssystemen eingeführt. Ein Beispiel für solch kombinierte Produkte beruht auf der Architektur des IBM DB2 Analytics Accelerator (IDAA).Consequently, intelligent combinations of transaction-oriented database management systems with analytics-optimized database management systems have been introduced. An example of such combined products is based on the IBM DB2 Analytics Accelerator (IDAA) architecture.

Einerseits kann ein vollständiges, zeilenbasiertes Datenbankverwaltungssystem (DBMS) als ein Anwendungsendpunkt für Data-Manipulation-Language-(DML-)Operationen und Ausführungen von Abfragen dienen. Unter Verwendung von heuristischen Entscheidungskriterien und Regeln kann das Abfrageoptimierungsprogramm transparent entscheiden, ob eine Abfrage auf dem Quellen-DBMS - vor allem für eine Online-Transaktionsverarbeitung - ausgeführt oder an ein Ziel-DBMS - vor allem für eine Online-Analyseverarbeitung - ausgelagert werden soll.On the one hand, a complete, row-based database management system (DBMS) can serve as an application endpoint for data manipulation language (DML) operations and query executions. Using heuristic decision criteria and rules, the query optimizer can transparently decide whether a query should be executed on the source DBMS - primarily for online transaction processing - or offloaded to a target DBMS - primarily for online analytical processing.

Das Ziel-DBMS kann ein vollständiges, spaltenbasiertes Datenbankverwaltungssystem sein, das eine Schattenkopie eines ausgewählten Satzes der Tabellen des Quellen-DBMS hält. Strategien für ein Erstellen von Schattenkopien des Ziel-DBMS können ein Übertragen von in einer oder mehreren Tabellen des Quellen-DBMS gespeicherten Daten an das Ziel-DBMS zu einem gegebenen Zeitpunkt aufweisen. Jedoch könnten Abfragedaten in dem Ziel-DBMS veraltet sein, wenn das Laden vor einiger Zeit durchgeführt und die entsprechende Quellentabelle in der Zwischenzeit geändert wurde. Daher werden die Inhalte der Tabellen in der Regel inkrementell angepasst, wenn Änderungen in den entsprechenden Tabellen der Quellendatenbank aufgezeichnet werden.The target DBMS may be a complete column-based database management system that maintains a shadow copy of a selected set of the source DBMS's tables. Strategies for creating shadow copies of the target DBMS may include transferring data stored in one or more tables of the source DBMS to the target DBMS at a given time. However, query data in the target DBMS may be stale if the load was performed some time ago and the corresponding source table was changed in the meantime. Therefore, the contents of the tables are typically adjusted incrementally as changes are recorded in the corresponding tables in the source database.

Beide Datenbanksysteme führen Transaktionsmechanismen aus, um ACID-Eigenschaften (ACID = Atomizität, Konsistenz, Isolation, Dauerhaftigkeit) der jeweiligen Datenbank zu gewährleisten. D.h., gleichzeitige Änderungen werden über Sperrtechniken ordnungsgemäß isoliert und Konsistenzprüfungen können gewährleisten, dass der Datenbankzustand aus einem konsistenten Zustand in einen anderen überführt wird, und Protokollierungstechniken wie beispielsweise Write-ahead-Protokollierung können ausgeführt werden, um Atomizität und Dauerhaftigkeit für Transaktionsänderungen zu gewährleisten.Both database systems implement transaction mechanisms to ensure ACID properties (ACID = Atomicity, Consistency, Isolation, Durability) of the respective database. That is, concurrent changes are properly isolated via locking techniques, consistency checks can ensure that the database state is transitioned from one consistent state to another, and logging techniques such as write-ahead logging can be performed to ensure atomicity and durability for transaction changes.

Jedoch kann ein Gewährleisten von ACID-Eigenschaften erheblichen Aufwand verursachen, wenn die Quellendatenbank durch aktuelle Transaktionen geändert wird. Insbesondere verlangsamt ein Protokollieren die Verarbeitung von Einfüge-/ Aktualisierungs-/Lösch-(IUD-, Insert/Update/Delete-)Anweisungen, da Änderungsdatensätze in ein persistentes Speichermedium geschrieben werden müssen, bevor Transaktionen fortgesetzt werden können. Im Vergleich zu der häufig verwendeten speicherinternen Verarbeitung von Änderungen am Inhalt der Datenbanktabelle ist ein Hinzufügen dieser Persistenzebene unter Verwendung von Transaktionsprotokollen vergleichsweise langsam. Auf der anderen Seite ist eine Wiederherstellung nach einem Absturz erforderlich, um den aktuellsten konsistenten Zustand der jeweiligen Datenbank im Falle eines Ausfalls wiederherzustellen.However, ensuring ACID properties can incur significant overhead if the source database is changed by current transactions. In particular, logging slows down the processing of insert/update/delete (IUD) statements because change records must be written to a persistent storage medium before transactions can proceed. Compared to the commonly used in-memory processing of changes to the contents of the database table, adding this level of persistence using transaction logs is comparatively slow. On the other hand, crash recovery is required to restore the latest consistent state of the respective database in the event of a failure.

Im Kontext des Datenbankbeschleunigers, wie IDAA, spiegelt die Zielbeschleunigerdatenbank einfach eine Momentaufnahme der Quellendatenbank. D.h., die Quellendatenbank kann als der Master der Daten agieren oder Datenmanipulationen über IUDs können durch das Quellendatenbank-Verwaltungssystem verarbeitet werden, und Änderungen werden über eine Aktualisierungstechnik in die Zieldatenbank repliziert. Die Beschleunigerdatenbank kann daher als ein Cache zum Speichern von Partitionen der Quellendatenbank dienen, die gegebenenfalls schnelle Analyseoperationen benötigen.In the context of the database accelerator, such as IDAA, the target accelerator database simply mirrors a snapshot of the source database. That is, the source database can act as the master of the data or data manipulations via IUDs can be processed by the source database management system and changes are replicated to the target database via an update technique. The accelerator database can therefore act as a cache for storing Partitions of the source database that may require fast analysis operations.

Es gibt bereits mehrere Offenbarungen in diesem Kontext. Das Schriftstück US 2015 / 0 205 853 A1 beschreibt ein Verfahren zum Replizieren von Datenbankdaten und zum Erzeugen von schreibgeschützten Kopien der replizierten Daten in einem ordnungsgemäß heruntergefahrenen Zustand. Ein zugehöriges System kann ein Überwachungsmodul umfassen, das erste Transaktionen von einer Datenbankanwendung an eine Quellenspeichereinheit überwacht, um Protokolleinträge zu erzeugen, die über mindestens einen Marker verfügen, der einen als gut bekannten Zustand der Anwendung anzeigt. Das System umfasst des Weiteren einen Computer, der mit einer Zielspeichereinheit verbunden ist, die eine Datenbank und Protokolldateien aufweist. Der Computer verarbeitet die Transaktionen auf der Grundlage der Protokolleinträge, um Daten auf der Zielspeichereinheit zu replizieren, er führt eine erste Momentaufnahme durch und spielt in den Protokolldateien gespeicherte Daten wieder in die Datenbank ein.There are already several revelations in this context. The document US 2015 / 0 205 853 A1 describes a method for replicating database data and creating read-only copies of the replicated data in a properly shut down state. An associated system may include a monitoring module that monitors initial transactions from a database application to a source storage device to produce log entries that have at least one marker indicating a known good state of the application. The system further includes a computer connected to a target storage device having a database and log files. The computer processes the transactions based on the log entries to replicate data to the target storage device, takes an initial snapshot, and returns data stored in the log files to the database.

Zudem beschreibt das Schriftstück US 2014 / 0 279 930 A1 ein verteiltes Datenbanksystem, das eine schnelle Wiederherstellung nach einem Absturz ausführt. Nach der Wiederherstellung nach einem Ausfall eines Datenbank-Kopfknotens kann eine Verbindung mit einem oder mehreren Speicherknoten eines verteilten Speichersystems, das Daten für eine durch den Datenbank-Kopfknoten ausgeführte Datenbank speichert, hergestellt werden. Nach der Herstellung der Verbindung mit einem Speicherknoten kann diese Datenbank für einen Zugriff zur Verfügung gestellt werden, wie beispielsweise für verschiedene Zugriffsanforderungen.In addition, the document US 2014 / 0 279 930 A1 describes a distributed database system that performs rapid recovery after a crash. After recovering from a failure of a database head node, a connection may be established to one or more storage nodes of a distributed storage system that stores data for a database executed by the database head node. Once connected to a storage node, this database can be made available for access, such as for various access requests.

Jedoch können alle der herkömmlichen, verbundenen Datenbanken, die einerseits für Transaktionen und andererseits für eine Analyseverarbeitung optimiert sind, den bekannten Aufwand zum Verwalten von persistenten Wiederherstellungsprotokollen erforderlich machen, was zusätzlich zu einer nicht optimierten Nutzung der Änderungen aus der Quellendatenbank in der Zieldatenbank die Verarbeitung der kombinierten Datenbanken erheblich verlangsamen kann. Daher kann es notwendig sein, den erforderlichen Aufwand zu verringern, um höhere Leistungswerte für ein kombiniertes Transaktions-/ Analysedatenbank-Verwaltungssystem zu erzielen und gleichzeitig das Wiederherstellungsproblem der Zieldatenbank elegant zu lösen.However, all of the traditional connected databases that are optimized for transactions and analytical processing can require the known overhead of maintaining persistent recovery logs, in addition to unoptimized utilization of the changes from the source database in the target database combined databases can slow down considerably. Therefore, it may be necessary to reduce the effort required to achieve higher performance levels for a combined transactional/analytical database management system while elegantly solving the target database recovery problem.

KURZDARSTELLUNGSHORT PRESENTATION

Gemäß einem Aspekt der vorliegenden Erfindung kann ein durch einen Computer ausgeführtes Verfahren zur Wiederherstellung nach einem Absturz für verknüpfte Datenbanken bereitgestellt werden. Die verknüpften Datenbanken können eine Quellendatenbank und eine zugehörige Zieldatenbank aufweisen und ausgewählte, an ein Datenbankverwaltungssystem gerichtete Abfragen, welches die Quellendatenbank aufweist, können zur Verarbeitung an ein Datenbankverwaltungssystem übertragen werden, das die Zieldatenbank aufweist. Das Verfahren kann ein Synchronisieren von ausgewählten Teilen vom Inhalt von Tabellen der Quellendatenbank mit jeweiligen Teilen vom Inhalt von Tabellen der Zieldatenbank, ein Anwenden, während des Synchronisierens, von Änderungen an der Quellendatenbank auf einen speicherinternen Zieldatenbankteil des die Zieldatenbank aufweisenden Datenbankverwaltungssystems unter Verwendung einer Wiederherstellungsprotokolldatei der Quellendatenbank und ein asynchrones Speichern von auf den speicherinternen Zieldatenbankteil persistent angewandten Änderungen in einem persistenten Zieldatenbankspeicher umfassen.According to one aspect of the present invention, a computer-executed crash recovery method for linked databases may be provided. The linked databases may include a source database and an associated target database, and selected queries directed to a database management system comprising the source database may be transferred to a database management system comprising the target database for processing. The method may include synchronizing selected portions of the contents of tables of the source database with respective portions of the contents of tables of the target database, applying, during synchronization, changes to the source database to an in-memory target database portion of the database management system having the target database using a recovery log file of the source database and asynchronously storing changes persistently applied to the in-memory target database part in a persistent target database store.

Nach einem Datenbankabsturz des Zieldatenbanksystems kann das Verfahren ein Wiederherstellen des speicherinternen Zieldatenbankteils mit der in dem persistenten Zieldatenbankspeicher verfügbaren aktuellsten Momentaufnahme und ein Anwenden, nach dem Datenbankabsturz auf dem Zieldatenbanksystem, von Änderungen aus der Wiederherstellungsprotokolldatei der Quellendatenbank, die einen späteren Zeitstempel als die in dem persistenten Zieldatenbankspeicher verfügbare aktuellste Momentaufnahme haben, auf den speicherinternen Zieldatenbankteil umfassen.After a database crash of the target database system, the method may include restoring the in-memory target database portion with the most recent snapshot available in the target database persistent storage and applying, after the database crash on the target database system, changes from the source database recovery log file that have a later timestamp than those in the persistent Target database storage has the most recent snapshot available, to the in-memory target database portion.

Gemäß einem weiteren Aspekt der vorliegenden Erfindung kann ein verknüpftes Datenbanksystem mit Wiederherstellung nach einem Absturz für verknüpfte Datenbanken bereitgestellt werden. Die verknüpften Datenbanken können eine Quellendatenbank und eine zugehörige Zieldatenbank aufweisen, und ausgewählte Teile vom Inhalt von Tabellen der Quellendatenbank können mit jeweiligen Teilen des Inhalts der Tabellen der Zieldatenbank synchronisiert werden. Das verknüpfte Datenbanksystem kann einen Prozessor und einen per Datenaustausch mit dem Prozessor verbundenen Hauptspeicher aufweisen, wobei der Hauptspeicher Programmcodeteile speichern kann, die wenn sie ausgeführt werden, es dem Prozessor ermöglichen, ausgewählte Teile vom Inhalt von Tabellen der Quellendatenbank mit jeweiligen Teilen vom Inhalt von Tabellen der Zieldatenbank zu synchronisieren, während des Synchronisierens Änderungen an der Quellendatenbank auf einen speicherinternen Zieldatenbankteil des die Zieldatenbank aufweisenden Datenbankverwaltungssystems unter Verwendung einer Wiederherstellungsprotokolldatei der Quellendatenbank anzuwenden und persistent angewandte Änderungen an dem speicherinternen Zieldatenbankteil in einem persistenten Zieldatenbankspeicher asynchron zu speichern.According to another aspect of the present invention, a linked database system with crash recovery for linked databases may be provided. The linked databases may include a source database and an associated target database, and selected portions of the contents of tables of the source database may be synchronized with respective portions of the contents of the tables of the target database. The linked database system may include a processor and a main memory coupled to the processor via communication, the main memory being able to store portions of program code that, when executed, enable the processor to match selected portions of the contents of tables of the source database with respective portions of the contents of tables to synchronize the target database, while synchronizing, to apply changes to the source database to an in-memory target database portion of the database management system having the target database using a recovery log file of the source database, and persistently applied changes to the in-memory target data Asynchronously store the bank part in a persistent target database storage.

Der Hauptspeicher kann auch Programmcodeteile speichern, die, wenn sie ausgeführt werden, es dem Prozessor ermöglichen, nach einem Datenbankabsturz auf dem Zieldatenbanksystem den speicherinternen Zieldatenbankteil mit der in dem persistenten Zieldatenbankspeicher verfügbaren aktuellsten Momentaufnahme wiederherzustellen und nach dem Datenbankabsturz auf dem Zieldatenbanksystem Änderungen aus der Wiederherstellungsprotokolldatei der Quellendatenbank, die einen späteren Zeitstempel als die in dem persistenten Zieldatenbankspeicher verfügbare aktuellste Momentaufnahme haben, auf den speicherinternen Zieldatenbankteil anzuwenden.Main memory may also store portions of program code that, when executed, enable the processor to restore the in-memory target database portion to the most recent snapshot available in the target database persistent memory after a database crash on the target database system and to recover changes from the recovery log file of the target database system after the database crash Source databases that have a later timestamp than the most recent snapshot available in the target database persistent storage to the in-memory target database part.

Das vorgeschlagene, durch einen Computer ausgeführte Verfahren für eine Wiederherstellung nach einem Absturz für verknüpfte Datenbanken kann mehrere Vorteile, technische Wirkungen, Beiträge und/oder Verbesserungen bieten:The proposed computer-executed crash recovery method for linked databases may provide several advantages, technical effects, contributions and/or improvements:

Die Aktualisierung und die Änderung sowie die Abfragen an den speicherinternen Teil können ohne Verlangsamung fortgesetzt werden, indem auch die Änderungen an der Zieldatenbank persistent gespeichert werden. Somit kann das Protokollieren und die Zustandsspeicherung von Datenstrukturen einer physischen Datenbank von der Verarbeitung von IUDs in Datenbanktransaktionen entkoppelt werden. Das heißt, dass die Persistenzphase übersprungen wird, wenn Änderungen an der Zieldatenbank durchgeführt werden - insbesondere in dem speicherinternen Teil - und Aktualisierungsoperationen ohne zusätzliche Verzögerung fortgesetzt werden können. Daher können Datensätze, die für eine Wiederherstellung der Zieldatenbank nach einem Absturz benötigt würden, durch einen zugeordneten asynchronen Datenpersistenzservice asynchron geschrieben werden. Durch IUD-Transaktionen vorgenommene Änderungen werden lediglich auf die speicherinterne Darstellung der Daten angewandt, wo sie durch an die Zieldatenbank, d.h. den Beschleuniger, ausgelagerte Datenbankabfragen ungeachtet dessen, ob sie bereits auf persistenten Datenträgern gespeichert sind oder nicht, unmittelbar verarbeitet werden können. Dies kann auch als ein Aufheben der Bedingung der Dauerhaftigkeit von ACID-Eigenschaften der Datenbank interpretiert werden.The update and change as well as the queries to the in-memory part can continue without slowdown by also persisting the changes to the target database. Thus, the logging and state storage of data structures of a physical database can be decoupled from the processing of IUDs in database transactions. This means that the persistence phase is skipped when changes are made to the target database - especially in the in-memory part - and update operations can continue without additional delay. Therefore, records that would be required for crash recovery of the target database can be written asynchronously by an associated asynchronous data persistence service. Changes made by IUD transactions are applied only to the in-memory representation of the data, where it can be immediately processed by database queries offloaded to the target database, i.e. the accelerator, regardless of whether or not it is already stored on persistent disks. This can also be interpreted as removing the persistence condition of database ACID properties.

Aufgrund des asynchronen Schreibens von festgeschriebenen Änderungen aus speicherinternen Datenstrukturen in ihre persistenten Pendants könnten einige von ihnen im Falle eines Datenbankabsturzes im Zieldatenbanksystem fehlen. Die Wiederherstellung nach einem Absturz muss daher gegebenenfalls die möglicherweise unvollständige Momentaufnahme mit dem Quellendatenbanksystem synchronisieren, indem fehlende Änderungen wieder eingespielt werden. Im Unterschied zu anderen Lösungen, bei denen ausgelagerte Tabellen nicht mit einem Mechanismus zum Laden von Massendaten vollständig neu geladen werden, können die fehlenden Teile inkrementell wiederhergestellt werden. Das heißt, der Zustand der Zieldatenbank kann aus der aktuellsten, asynchron persistenten Momentaufnahme der Zieldatenbank wiederhergestellt werden, und mit Hilfe von Wiederherstellungsmetadaten ermittelt er, welche zusätzlichen Änderungen möglicherweise immer noch fehlen. D.h., welche Änderungen aus der Quellendatenbank durch die Zieldatenbanken aus der Transaktions- oder Wiederherstellungsprotokolldatei des Quellendatenbanksystems wieder eingespielt werden müssen, um den aktuellen konsistenten Zustand der Zieldatenbank schließlich wiederherzustellen.Due to the asynchronous writing of committed changes from in-memory data structures to their persistent counterparts, some of them may be missing from the target database system in the event of a database crash. Crash recovery may therefore need to synchronize the potentially incomplete snapshot with the source database system by restoring missing changes. Unlike other solutions that do not fully reload paged tables with a bulk data loading mechanism, the missing parts can be restored incrementally. That is, the state of the target database can be restored from the most recent, asynchronously persistent snapshot of the target database and uses restore metadata to determine what additional changes may still be missing. That is, what changes from the source database must be restored by the target databases from the transaction or recovery log file of the source database system in order to ultimately restore the current consistent state of the target database.

Dadurch können eingehende Abfragen in der Zieldatenbank verzögert werden, während die Wiederherstellungsprozesse aktiv sind, bis in dem speicherinternen Teil der Zieldatenbank wieder ein konsistenter und aktualisierter Zustand hergestellt wurde. Die durch die Wiederherstellung verursachte Verzögerung kann im Vergleich zu bekannten Lösungen deutlich geringer sein, jedoch können Verarbeitungs- und Speicherkosten für ein asynchrones Verwalten der Datenbank-Momentaufnahme in dem Zieldatenbanksystem etwas höher sein. Dies ist jedoch nur ein geringer Preis für eine höhere Verfügbarkeit und kurzfristige Wiederherstellungszeiten des Zieldatenbanksystems.This allows incoming queries on the target database to be delayed while the recovery processes are active until the in-memory portion of the target database is restored to a consistent and updated state. The delay caused by the restore can be significantly lower compared to known solutions, but processing and storage costs for asynchronously maintaining the database snapshot in the target database system may be slightly higher. However, this is a small price to pay for increased availability and short-term recovery times of the target database system.

Die asynchrone persistente Speicherung von Änderungen an der Zieldatenbank kann auch dazu beitragen, die Protokollierung effizienter auszuführen, E/A-Operationen können effizienter ausgeführt werden - z.B. durch einen Batchprozess - oder selbstkompensierende Änderungen können ganz gelöscht werden. Das heißt, ein Zieldatensatz, der auf eine Weise geändert wurde, die vor einem nächsten persistenten Speicherschritt von Änderungen der Zieldatenbank zurückgesetzt werden kann, kann in einem Puffer zwischen der Zieldatenbank und dem persistenten Speichermedium gelöscht werden.Asynchronously persisting changes to the target database can also help logging to be performed more efficiently, I/O operations can be performed more efficiently - for example through a batch process - or self-compensating changes can be deleted entirely. That is, a target record that has been changed in a way that can be rolled back from changes to the target database before a next persistent storage step can be deleted in a buffer between the target database and the persistent storage medium.

Im Folgenden werden zusätzliche Ausführungsformen des erfindungsgemäßen Konzepts - die sowohl auf das Verfahren als auch das System anwendbar sind - beschrieben.Additional embodiments of the concept according to the invention - which are applicable to both the method and the system - are described below.

Gemäß einer interessanten Ausführungsform des Verfahrens kann das Synchronisieren ein Lesen von Einträgen einer Wiederherstellungsprotokolldatei, die sich auf die Quellendatenbank bezieht, und ein Anwenden der gelesenen Einträge auf die Zieldatenbank aufweisen. Dies kann durch den Verwaltungsteil des Zieldatenbank-Verwaltungssystems durchgeführt werden. Jedoch können auch andere Techniken zur Synchronisierung verwendet werden, die z.B. auf SQL (Structured Query Language) oder Q, d.h. einer für spaltenbasierte Datenbanken optimierten Abfragesprache, beruhen.According to an interesting embodiment of the method, synchronizing may include reading entries of a recovery log file related to the source database and applying the read entries to the target database. This can be done through the management part of the target database management system be performed. However, other synchronization techniques can also be used, for example based on SQL (Structured Query Language) or Q, ie a query language optimized for column-based databases.

Gemäß einer einzelnen nützlichen Ausführungsform des Verfahrens kann die Quellendatenbank für Transaktionen - d.h. für eine Online-Transaktionsverarbeitung (OLTP, online transaction processing) - optimiert sein, und/oder wobei die Quellendatenbank ein zeilenorientiertes relationales DBMS ist. Dies kann das operative Rückgrat von IT-(Informationstechnologie-)Operationen eines Unternehmens darstellen und effizient unterstützen. Eine zeilenorientierte Datenbank kann für symmetrische, schnelle Lese-, Schreib- und Änderungsoperationen an den Daten in der Datenbank optimiert sein. Sie kann auch für ein Erzeugen von Berichten geeignet sein. Jedoch ist dieser Typ von Datenbank oftmals nicht optimal für Analyseoperationen.According to a single useful embodiment of the method, the source database may be optimized for transactions - i.e., online transaction processing (OLTP) - and/or wherein the source database is a row-oriented relational DBMS. This can represent and efficiently support the operational backbone of a company's IT (information technology) operations. A row-oriented database can be optimized for symmetric, fast read, write, and modify operations on the data in the database. It can also be suitable for generating reports. However, this type of database is often not optimal for analytical operations.

Gemäß einer einzelnen zulässigen Ausführungsform des Verfahrens kann die Zieldatenbank für Analyseoperationen - d.h. für eine Online-Analyseverarbeitung (OLAP, online analytical processing) - optimiert und/oder die Zieldatenbank kann eine spaltenorientierte Datenbank sein. Bei diesem Typ von Datenbank - gemäß einer weiteren Ausführungsform - kann es sich um eine spaltenorientierte Datenbank handeln. Sie kann Abfragen mit vielen Abhängigkeiten und Kreuzkorrelationen viel besser als OLTP-optimierte Datenbanksysteme unterstützen.According to a single acceptable embodiment of the method, the target database may be optimized for analytical operations - i.e. for online analytical processing (OLAP) - and/or the target database may be a column-oriented database. This type of database - according to a further embodiment - can be a column-oriented database. It can support queries with many dependencies and cross-correlations much better than OLTP-optimized database systems.

Gemäß einer vorteilhaften Ausführungsform kann das Verfahren auch ein Verzögern, im Falle eines Absturzes der Zieldatenbank, von Abfragen an die Zieldatenbank umfassen, bis eine Wiederherstellung der Zieldatenbank beendet werden kann. Somit kann der Wiederherstellungsprozess für einen Benutzer transparent sein. Es kann schließlich zu einer geringfügigen Verzögerung bei seiner Analyseabfrage kommen. Da die Antwortzeit bei komplexen Analyseabfragen jedoch ohnehin vergleichsweise lang ist, bemerkt der Benutzer die Verzögerung möglicherweise überhaupt nicht.According to an advantageous embodiment, the method can also include delaying, in the event of a crash of the target database, queries to the target database until a recovery of the target database can be completed. Thus, the recovery process can be transparent to a user. Finally, there may be a slight delay in its analysis query. However, since the response time for complex analysis queries is already comparatively long, the user may not notice the delay at all.

Optional können an die Zieldatenbank gerichtete Abfragen während des Wiederherstellungsprozesses der Zieldatenbank durch die Quellendatenbank ausgeführt werden. Dadurch kann die Quellendatenbank während der Transaktionen etwas langsamer werden, jedoch kann dies für die Gesamtzufriedenheit des Benutzers einen akzeptablen Kompromiss darstellen.Optionally, queries directed at the target database can be executed by the source database during the target database recovery process. This may make the source database slightly slower during transactions, but this may be an acceptable trade-off for overall user satisfaction.

Gemäß einer vorteilhaften Ausführungsform des Verfahrens können Metadaten, welche die ausgewählten Tabellen definieren, Teil der Wiederherstellungsprotokolldatei sein. Auf diese Weise kann die allgemeine Architektur der speicherinternen Zieldatenbank bereits in der Wiederherstellungsprotokolldatei der Quellendatenbank definiert sein. Dies gilt gegebenenfalls auch für die Teile von Daten von Tabellen, die an die Quellendatenbank gespiegelt werden sollen. Somit kann eine einzige Quelle für Datendefinitionen verwendet werden, so dass keine Konfliktsituationen hervorgerufen werden können.According to an advantageous embodiment of the method, metadata defining the selected tables may be part of the recovery log file. In this way, the general architecture of the target in-memory database can already be defined in the recovery log file of the source database. This may also apply to the portions of table data that are to be mirrored to the source database. This means that a single source for data definitions can be used so that no conflict situations can arise.

Gemäß einer erweiterten Ausführungsform des Verfahrens kann das Speichern von persistent angewandten Änderungen ein Warten aufweisen, bis gegebenenfalls eine vorher festgelegte Anzahl von Änderungen in dem speicherinternen Zieldatenbankteil abgeschlossen wurde. Die vorher festgelegte Anzahl kann während der Konfiguration der Datenbank konfigurierbar sein und/oder während des Betriebs des Datenbankverwaltungssystems auch geändert werden. Jedoch kann der Vorteil dieses Ansatzes darin bestehen, dass er die Analyseoperationen der Zieldatenbank nicht verlangsamt. Somit kann eine Gruppe von Aktualisierungen an der Zieldatenbank in einem Schritt entnommen und persistent gespeichert werden. Neben der Verwendung einer vorher festgelegten Anzahl von Änderungen auf der Zieldatenbank kann auch in Erwägung gezogen werden, die Belastung für die Zieldatenbank zu überwachen und die persistente Speicherung von Änderungen an der Zieldatenbank während Zeiträumen durchzuführen, in denen die Analysebelastung für die Zieldatenbank vergleichsweise gering ist.According to an extended embodiment of the method, saving persistently applied changes may include waiting until, if necessary, a predetermined number of changes in the in-memory target database part has been completed. The predetermined number may be configurable during configuration of the database and/or may also be changed during operation of the database management system. However, the advantage of this approach may be that it does not slow down the analysis operations of the target database. This means that a group of updates to the target database can be extracted and stored persistently in one step. In addition to using a predetermined number of changes on the target database, one may also consider monitoring the load on the target database and persisting changes to the target database during periods when the analysis load on the target database is comparatively low.

Dieses Merkmal kann innerhalb eines einzelnen Threads oder Prozesses ausgeführt sein, der warten kann, bis eine vorher festgelegte Anzahl von Änderungen in dem speicherinternen Teil abgeschlossen ist. Bei jeder Änderung innerhalb des Satzes der abgeschlossenen Änderungen seit der letzten Ausführung werden die Änderungen in dem persistenten Datenbankteil der Zieldatenbank persistent gespeichert. Zusätzlich werden auch zugehörige Metadaten persistent gespeichert, welche die vor Kurzem persistent gespeicherte Änderung (wie beispielsweise die letzte entsprechende Folgenummer des Blockdatensatzes innerhalb des Quellendatenbanksystems) beschreiben, damit Änderungswiedereinspielpunkte während der Wiederherstellungsphase angegeben werden können. Daraus kann sich ein Zeitpunkt des letzten konsistenten geänderten Satzes, der gespeichert wurde, ergeben. Dieser Zeitpunkt kann hilfreich sein, um den speicherinternen Teil der Zieldatenbank aus dem persistenten Teil der Zieldatenbank wiederherzustellen und die restlichen IUDs des speicherinternen Teils der Zieldatenbank aus der Wiederherstellungsprotokolldatei der Quellendatenbank inkrementell wiederherzustellen. Diese zusätzlichen Daten werden - im Falle einer erforderlichen Wiederherstellung der Zieldatenbank - aus der Quellendatenbank oder dem inkrementellen Aktualisierungsprozess angefordert. Am Ende des Wiederherstellungsprozesses kann der Abfrageprozessor durch ein Signal „wieder aktiv“ darüber informiert werden, dass Abfragen von da ab von der Zieldatenbank verarbeitet werden können.This feature can be implemented within a single thread or process that can wait until a predetermined number of changes in the in-memory portion are completed. For each change within the set of completed changes since the last execution, the changes are persisted to the persistent database part of the target database. Additionally, associated metadata describing the recently persisted change (such as the last corresponding sequence number of the block record within the source database system) is also persisted so that change replay points can be specified during the restore phase. This can result in a time of the last consistent changed record that was saved. This point in time can be useful to restore the in-memory portion of the target database from the persistent portion of the target database and to incrementally restore the remaining IUDs of the in-memory portion of the target database from the source database recovery log file. This additional data is - in the event of a required restore of the target database - from the source database or the incremental len update process requested. At the end of the recovery process, the query processor can be informed by a "back in action" signal that queries can then be processed by the target database.

Gemäß einer weiteren vorteilhaften Ausführungsform des Verfahrens kann das Wiederherstellen von Tabellen - oder der Partitionen davon - des speicherinternen Zieldatenbankteils ein Priorisieren oder eine Priorisierung des Wiederherstellens bzw. der Wiederherstellung gemäß einer Option aufweisen, die aus der aus einer Datennutzung, einer Abfragepriorität und einer Datenpriorität bestehenden Gruppe ausgewählt wird.According to a further advantageous embodiment of the method, restoring tables - or the partitions thereof - of the in-memory target database part may include prioritizing the restoring or restoring according to an option consisting of a data usage, a query priority and a data priority Group is selected.

Diese Optionen werden in den nachstehenden Absätzen detailliert beschrieben. Jedoch besteht das allgemeine Konzept darin, verschiedene Optimierungsverfahren während des Wiederherstellungsprozesses zu ermöglichen, um eine Ausführung von Abfragen zu ermöglichen, obwohl die Zieldatenbank „in der Wiederherstellung befindlich“ ist, d.h. sich im Wiederherstellungsmodus befindet. Diese Optimierungsoptionen können konfigurierbar und - im Allgemeinen - in einer einzelnen Ausführung kombinierbar sein.These options are detailed in the paragraphs below. However, the general concept is to enable various optimization techniques during the recovery process to allow queries to be executed even though the target database is “in recovery”, i.e. in recovery mode. These optimization options can be configurable and - generally - combined in a single execution.

Gemäß einer einzelnen optionalen Ausführungsform des Verfahrens kann das Priorisieren der Wiederherstellung gemäß der Datennutzung ein Verwalten eines Zählers für jede Tabelle - oder einer Partition davon - in der Zieldatenbank aufweisen. Der Zählerwert des Zählers kann anzeigen, wie viele Abfragen möglicherweise auf die zugehörige Tabelle warten, sowie anzeigen, dass zunächst die Datenbanktabelle mit dem höchsten Zählerwert zuerst wiederhergestellt wird. Später können dann die anderen Tabellen wiederhergestellt werden. Diese Option kann eine schnelle Wiederherstellung derjenigen Tabellen der Zieldatenbank ermöglichen, welche stark nachgefragt werden. Somit kann den Benutzern so bald wie möglich ein vollständig wiederhergestellter Teil der Datenbank, d.h. die stark nachgefragten Tabellen, bereitgestellt werden. Diese Option kann als nachfrage- oder datennutzungsoptimierte Wiederherstellung bezeichnet werden.According to a single optional embodiment of the method, prioritizing recovery according to data usage may include maintaining a counter for each table - or a partition thereof - in the target database. The counter value of the counter can indicate how many queries may be waiting on the associated table, as well as indicate that the database table with the highest counter value will be restored first. The other tables can then be restored later. This option can enable quick recovery of those tables in the target database that are in high demand. Thus, a fully restored part of the database, i.e. the high-demand tables, can be provided to users as soon as possible. This option can be referred to as demand-optimized or data usage-optimized recovery.

Somit kann die Liste der wartenden Abfragen zur Steuerung des Wiederherstellungsprozesses und zur Minimierung der Wiederherstellungszeit berücksichtigt werden. Sobald eine neue Datenbankabfrage an der Zieldatenbank ankommt, während eine Wiederherstellung im Gang ist, können deren Datenzugriffe analysiert werden. Wenn sie nicht auf nicht wiederhergestellte Daten zugreift, kann sie sofort verarbeitet werden. Andernfalls wird die Abfrage in eine Liste mit wartenden Abfragen als Teil des Wiederherstellungszustands eingetragen. Die Wiederherstellungsstufen werden durch einen Wiederherstellungszeitplan ausgewertet, um eine Folge von Wiederherstellungsaktionen abzuleiten, wobei diejenigen Tabellen und/oder Tabellenpartitionen bevorzugt werden, die Abfragen tatsächlich blockieren. Die nützlichste Wiederherstellungsaktion kann nach Abschluss der Wiederherstellung über eine der verfügbaren Wiederherstellungsstrategien terminiert werden, der Wiederstellungszustand kann aktualisiert und auf die wiederhergestellte Tabelle und/oder Partition wartende Abfragen können benachrichtigt werden, wenn sie nicht mehr blockiert werden müssen.Thus, the list of waiting queries can be taken into account to control the recovery process and minimize the recovery time. As soon as a new database query arrives at the target database while a restore is in progress, its data access can be analyzed. If it does not access unrecovered data, it can be processed immediately. Otherwise, the query is entered into a waiting query list as part of the recovery state. The recovery levels are evaluated through a recovery schedule to derive a sequence of recovery actions, favoring those tables and/or table partitions that actually block queries. The most useful restore action can be scheduled after the restore is complete using one of the available restore strategies, the restore state can be updated, and queries waiting on the restored table and/or partition can be notified when they no longer need to be blocked.

Detaillierter betrachtet, kann die Wiederherstellung nach einem Absturz auf der Zieldatenbank wie folgt beschrieben werden: erstens die Liste der Tabellen oder Tabellenpartitionen, die wiederhergestellt werden müssen, indem bekannte Wiederherstellungsmetadaten auf der Zieldatenbank verwendet werden. Zweitens wird die Liste der wiederherzustellenden Tabellen oder Tabellenpartitionen in dem Wiederstellungszustand gespeichert. Drittens kann Folgendes ausgeführt werden, solange die wiederherzustellende Liste nicht leer ist:

  • (i) ermittle die nächste(n) wiederherzustellende(n) Tabellen und/oder Tabellenpartition aus der Liste;
  • (ii) terminiere die Wiederherstellungsaktion über die für die Zieldatenbank konfigurierte Wiederherstellungsstrategie;
  • (iii) warte, bis die Wiederherstellungsaktion abgeschlossen ist;
  • (iv) aktualisiere den Wiederherstellungszustand, d.h., markiere die wiederherzustellende Tabelle/Partition und entferne die Tabelle/Partition aus der Blockierungsdatenliste einer jeden auf die Tabelle und/oder Tabellenpartition wartenden Abfrage; und
  • (v) ermittle die Liste der Abfragen, deren Blockierungsdatenliste leer wurde, und benachrichtige den Abfrageprozessor, so dass er die Abfrage jetzt verarbeiten kann.
In more detail, crash recovery on the target database can be described as follows: first, the list of tables or table partitions that need to be recovered using known recovery metadata on the target database. Second, the list of tables or table partitions to be restored is stored in the restore state. Third, as long as the list to be restored is not empty, the following can be done:
  • (i) determine the next table(s) and/or table partition(s) to be restored from the list;
  • (ii) schedule the recovery action using the recovery strategy configured for the target database;
  • (iii) wait for the recovery action to complete;
  • (iv) update the recovery state, ie, mark the table/partition to be recovered and remove the table/partition from the blocking data list of each query waiting on the table and/or table partition; and
  • (v) identify the list of queries whose blocking data list has become empty and notify the query processor so that it can now process the query.

Dabei kann die Liste der wiederherzustellenden Tabellen und/oder Tabellenpartitionen durch eine Prioritätenwarteschlange ausgeführt sein, wobei der nachstehend beschriebene Algorithmus verwendet wird, um das nächste Wiederherstellungselement für den nächsten Wiederherstellungszyklus dynamisch zu berechnen. Die unter (iii) genannten Schritte können für mehrere Tabellen und/oder Tabellenpartitionen parallel ausgeführt werden, um den Wiederherstellungsprozess zu beschleunigen.The list of tables and/or table partitions to be restored may be executed through a priority queue, using the algorithm described below to dynamically calculate the next restore item for the next restore cycle. The steps mentioned in (iii) can be performed for multiple tables and/or table partitions in parallel to speed up the recovery process.

Die Ermittlung der wiederherzustellenden Tabellen und/oder Tabellenpartitionen kann wie folgt ausgeführt werden:

  • (i) wenn der Wiederherstellungsprozess nach einem Absturz eingeleitet wird, erstelle ein leeres Histogramm von Blockierungstabellen und/oder Blockierungstabellenpartitionen;
  • (ii) wenn die Blockierungsabfrage in dem Wiederherstellungszustand eingetragen wird, erhöhe den Nutzungszähler für jede Tabelle und/oder Tabellenpartition in der Blockierungsbereichsliste der Abfrage um eins;
  • (iii) wenn die nächste wiederherzustellende Tabelle/Tabellenpartition ermittelt werden muss, wähle die Tabelle/Tabellenpartition aus, welche den größten Nutzungszähler hat; und
  • (iv) wenn eine Wiederherstellungsaktion einer Tabelle/Tabellenpartition beendet wird, entferne die entsprechenden Histogrammdaten.
Determining which tables and/or table partitions to restore can be done as follows:
  • (i) when the crash recovery process is initiated, create an empty histogram of blocking tables and/or blocking table partitions;
  • (ii) if the blocking query is entered into the recovery state, increment the usage count for each table and/or table partition in the query's blocking range list by one;
  • (iii) if the next table/table partition to restore needs to be determined, select the table/table partition that has the largest usage count; and
  • (iv) when a table/table partition restore action terminates, remove the corresponding histogram data.

Gemäß einer weiteren optionalen Ausführungsform des Verfahrens kann das Priorisieren der Wiederherstellung gemäß der Abfragepriorität ein zunächst erfolgendes Wiederherstellen derjenigen Datenbanktabellen aufweisen, die Abfragen mit der höchsten Priorität empfangen. Ein solcher Prioritätswert kann einem Datenbanksystem - z.B. einer Produktionsdatenbank im Vergleich zu einer Testdatenbank - oder auch auf der Grundlage einer einzelnen Abfrage zugewiesen werden. Diese Option kann als Abfragepriorität oder einfach als datenprioritätsoptimierte Wiederherstellung bezeichnet werden.According to a further optional embodiment of the method, prioritizing the restore according to the query priority may include first restoring those database tables that receive queries with the highest priority. Such a priority value can be assigned to a database system - for example, a production database compared to a test database - or even on the basis of a single query. This option can be called query priority or simply data priority optimized recovery.

Gemäß einer weiteren optionalen Ausführungsform des Verfahrens kann das Priorisieren der Wiederherstellung gemäß der Datenpriorität ein Verwalten von (mindestens) zwei Gruppen von Datenbanktabellen, wobei sich jede Gruppe auf eine einzelne Gruppe von Benutzern bezieht, und ein zunächst erfolgendes Wiederherstellen der Datenbanktabellen der Gruppe aufweisen, die über eine höher konfigurierte Gruppenpriorität verfügt. Eine solche Situation kann in einer Umgebung mit mehreren Benutzern/mehreren Gruppen/mehreren Tenants vorkommen, in der einem Benutzer oder einer Gruppe oder einem Tenant eine höhere Priorität für Abfragen zugewiesen sein kann. Z.B. kann ein Tenant eine höher garantierte Verfügbarkeit des Datenbanksystems haben. In einem solchen Fall kann diesem Tenant eine höhere Priorität zugewiesen werden. Ein solches Szenario kann am besten in einer Multi-Tenant-Datenbank funktionieren, die in einem Cloud-Computing-Rechenzentrum betrieben wird. Diese Option kann als kundenprioritätsoptimierte Wiederherstellung bezeichnet werden.According to a further optional embodiment of the method, prioritizing recovery according to data priority may include managing (at least) two groups of database tables, each group relating to a single group of users, and initially restoring the group's database tables has a higher group priority configured. Such a situation may occur in a multi-user/multi-group/multi-tenant environment where a user or a group or a tenant may be assigned a higher priority for queries. For example, a tenant can have a higher guaranteed availability of the database system. In such a case, that tenant may be assigned a higher priority. Such a scenario may work best in a multi-tenant database operating in a cloud computing data center. This option can be referred to as customer priority optimized recovery.

Gemäß einer weiteren interessanten Ausführungsform kann das Verfahren auch ein Ermitteln des wiederherzustellenden Datenvolumens für nächste wiederherzustellende Tabellen und ein Wiederherstellen der Tabelle(n) unter Verwendung einer Wiederherstellungsstrategie umfassen, die von dem wiederherzustellenden Volumen abhängt. Dabei handelt es sich bei der Wiederherstellungsstrategie um eine inkrementelle Aktualisierungsstrategie oder eine Strategie zum Aktualisieren von Massendaten. Somit kann Datenbanktabelle für Datenbanktabelle (oder Gruppe von Datenbanktabellen) entschieden werden, welche Aktualisierungsstrategie verwendet werden soll, um die Gesamtwiederherstellungszeit der Zieldatenbank zu minimieren. Diese Option kann als zeitoptimierte Wiederherstellung bezeichnet werden.According to another interesting embodiment, the method may also include determining the data volume to be restored for next tables to be restored and restoring the table(s) using a restore strategy that depends on the volume to be restored. The recovery strategy is an incremental refresh strategy or a bulk data refresh strategy. Thus, database table by database table (or group of database tables) it can be decided which update strategy should be used to minimize the overall recovery time of the target database. This option can be called time-optimized recovery.

Darüber hinaus können Ausführungsformen die Form eines zugehörigen Computerprogrammprodukts annehmen, auf das von einem durch einen Computer verwendbaren oder durch einen Computer lesbaren Datenträger aus zugegriffen werden kann, der Programmcode zur Verwendung durch einen Computer oder ein beliebiges Anweisungsausführungssystem oder in Verbindung mit einem Computer oder einem beliebigen Anweisungsausführungssystem bereitstellt. Zum Zweck dieser Beschreibung kann ein durch einen Computer verwendbarer oder durch einen Computer lesbarer Datenträger eine beliebige Vorrichtung sein, die Mittel enthalten kann, um das Programm zur Verwendung durch das Anweisungsausführungssystem, die Anweisungsausführungsvorrichtung oder -einheit oder zur Verwendung in Verbindung mit dem Anweisungsausführungssystem, der Anweisungsausführungsvorrichtung oder -einheit zu speichern, zu übertragen, weiterzugeben oder zu transportieren.Additionally, embodiments may take the form of an associated computer program product accessible from a computer-usable or computer-readable medium, the program code for use by or in connection with a computer or any instruction execution system Instruction execution system provides. For purposes of this description, a computer-usable or computer-readable medium may be any device that may contain means for converting the program for use by the instruction execution system, instruction execution device or device, or for use in conjunction with the instruction execution system Store, transmit, distribute or transport instruction execution device or unit.

KURZBESCHREIBUNG DER DIVERSEN ANSICHTEN DER ZEICHNUNGENBRIEF DESCRIPTION OF THE VARIOUS VIEWS OF THE DRAWINGS

Es sei angemerkt, dass Ausführungsformen der Erfindung unter Bezugnahme auf verschiedene Gegenstände beschrieben werden. Insbesondere werden einige Ausführungsformen unter Bezugnahme auf Verfahrensansprüche beschrieben, wohingegen andere Ausführungsformen unter Bezugnahme auf Vorrichtungsansprüche beschrieben werden. Der Fachmann entnimmt der vorstehenden und der nachfolgenden Beschreibung jedoch, dass, vorbehaltlich anderer Angaben, neben jeder beliebigen Kombination aus Merkmalen, die zu einem Typ von Gegenstand gehören, auch jede beliebige Kombination zwischen Merkmalen, die sich auf verschiedene Gegenstände beziehen, insbesondere zwischen Merkmalen der Verfahrensansprüche und Merkmalen der Vorrichtungsansprüche, als eine in diesem Schriftstück zu offenbarende Kombination betrachtet wird.It should be noted that embodiments of the invention will be described with reference to various subject matter. In particular, some embodiments are described with reference to method claims, whereas other embodiments are described with reference to device claims. However, the person skilled in the art will understand from the above and the following description that, unless otherwise stated, in addition to any combination of features belonging to a type of object, also any combination between features relating to different objects, in particular between features of the Method claims and features of the device claims, is considered a combination to be disclosed in this document.

Die vorstehend definierten Aspekte und weitere Aspekte der vorliegenden Erfindung gehen aus den Beispielen von Ausführungsformen, die nachstehend zu beschreiben sind, hervor und werden unter Bezugnahme auf die Beispiele von Ausführungsformen erklärt, auf welche die Erfindung jedoch nicht beschränkt ist.The aspects defined above and other aspects of the present invention will be apparent from the examples of embodiments to be described below and will be discussed with reference to the examples of embodiments men explained, to which the invention is not limited.

Bevorzugte Ausführungsformen der Erfindung werden lediglich beispielhaft und unter Bezugnahme auf die folgenden Zeichnungen beschrieben:

  • 1 zeigt ein Blockschaubild einer Ausführungsform des erfindungsgemäßen, durch einen Computer ausgeführten Verfahrens für eine Wiederherstellung nach einem Absturz für verknüpfte Datenbanken.
  • 2 zeigt ein Blockschaubild einer Ausführungsform von verknüpften Datenbanken.
  • 3 zeigt ein Blockschaubild einer Ausführungsform der Art und Weise, in der die Zieldatenbank synchronisiert werden kann.
  • 4 zeigt ein Blockschaubild einer Ausführungsform des vorgeschlagenen Konzepts in einer ausführungsnäheren Form.
  • 5 zeigt ein Blockschaubild einer Ausführungsform des verknüpften Datenbanksystems, das Komponenten für eine kundenprioritätsoptimierte Wiederherstellungsstrategie aufweist.
  • 6 zeigt ein Blockschaubild einer Ausführungsform des verknüpften Datenbanksystems, das Komponenten für eine volumenoptimierte Wiederherstellungsstrategie aufweist.
  • 7 zeigt ein Blockschaubild einer Ausführungsform des verknüpften Datenbanksystems für eine Wiederherstellung nach einem Absturz für verknüpfte Datenbanken.
  • 8 zeigt eine Ausführungsform eines Datenverarbeitungssystems, welches das verknüpfte Datenbanksystem aufweist.
Preferred embodiments of the invention are described by way of example only and with reference to the following drawings:
  • 1 1 shows a block diagram of an embodiment of the computer-executed method for crash recovery for linked databases according to the invention.
  • 2 shows a block diagram of an embodiment of linked databases.
  • 3 shows a block diagram of an embodiment of the manner in which the target database may be synchronized.
  • 4 shows a block diagram of an embodiment of the proposed concept in a more detailed form.
  • 5 shows a block diagram of an embodiment of the linked database system having components for a customer priority optimized recovery strategy.
  • 6 shows a block diagram of an embodiment of the linked database system having components for a volume-optimized recovery strategy.
  • 7 shows a block diagram of an embodiment of the linked database system for crash recovery for linked databases.
  • 8th shows an embodiment of a data processing system that has the linked database system.

AUSFÜHRLICHE BESCHREIBUNGDETAILED DESCRIPTION

Im Kontext dieser Beschreibung werden gegebenenfalls die folgenden Konventionen, Begriffe und/oder Ausdrücke verwendet:The following conventions, terms and/or expressions may be used in the context of this description:

Der Begriff „Wiederherstellung nach einem Absturz“ kann einen Prozess des Wiederherstellens eines Zustands einer Datenbank bezeichnen, in dem sich die Datenbank vor Eintritt des Absturzes befand. Wenn ein Absturz eintritt, sind Daten möglicherweise nicht verfügbar oder inkonsistent.The term “crash recovery” can refer to a process of restoring a database to a state that the database was in before the crash occurred. If a crash occurs, data may be unavailable or inconsistent.

Der Begriff „verknüpfte Datenbanken“ kann mindestens zwei Datenbanken bezeichnen, die eng miteinander verbunden sind. Im Kontext dieses Schriftstücks können verknüpfte Datenbanken als diejenigen bezeichnet werden, die, zumindest teilweise, identische Daten speichern können. Auf der anderen Seite kann die primäre Datenbank bei einem solchen Paar für andere Tasks als die sekundäre Datenbank optimiert sein.The term “linked databases” can mean at least two databases that are closely linked to each other. In the context of this document, linked databases can be referred to as those that can store, at least partially, identical data. On the other hand, in such a pair, the primary database may be optimized for different tasks than the secondary database.

Der Begriff „Quellendatenbank“ - oder „primäre Datenbank“ - kann eine Datenbank bezeichnen, die z.B. für schnelle Transaktionen, d.h. eine Onlinetransaktionsverarbeitung, optimiert ist. Jedoch können auf diese Weise optimierte Datenbanken - d.h. für schnelle Lese-, Schreib-, Aktualisierungsoperationen an den Daten - langsam bei der Durchführung von komplexen Abfragen sein, die eine hohe Anzahl von Tabellen oder eine große Anzahl von Daten einschließen, wie im Falle der Online-Analyseverarbeitung. Zudem kann die Online-Analyseverarbeitung die Online-Transaktionsverarbeitung verlangsamen. Daher können hochoptimierte Datenbankverwaltungssysteme der soeben genannten Datenbanktypen erfolgreich als Tandem arbeiten.The term “source database” - or “primary database” - can refer to a database that is optimized, for example, for fast transactions, i.e. online transaction processing. However, databases optimized in this way - i.e. for fast read, write, update operations on the data - can be slow in performing complex queries involving a large number of tables or a large number of data, as in the case of online -Analysis processing. Additionally, online analytics processing can slow down online transaction processing. Therefore, highly optimized database management systems of the database types just mentioned can work successfully in tandem.

Der Begriff „Zieldatenbank“ - oder „sekundäre Datenbank“ kann die zweite Datenbank in einem solchen Tandem von Datenbanken bezeichnen, die für verschiedene Tasks optimiert ist. Im Kontext des hier beschriebenen Konzepts kann die Zieldatenbank für die Online-Analyseverarbeitung optimiert sein. Sie kann mindestens Teile der Tabellen und Teile der Daten in den Tabellen der Quellendatenbank speichern. Die Zieldatenbank kann auch aus zwei Teilen bestehen: einem speicherinternen Teil für eine schnelle Ausführung von komplexen und mehrdimensionalen Abfragen und einem persistenten Teil, der die Tabellen und Daten des speicherinternen Teils der Zieldatenbank in dem längerfristigen Speicher, z.B. einer Festplatte oder einem Flashspeicher, speichern kann. Auf diese Weise kann es der Zieldatenbank ermöglicht werden - im Falle eines Absturzes der Zieldatenbank -, den größten Teil ihres Inhalts aus dem persistenten Speicher wiederherzustellen.The term “target database” or “secondary database” can mean the second database in such a tandem of databases that is optimized for different tasks. In the context of the concept described here, the target database may be optimized for online analytical processing. It can store at least parts of the tables and parts of the data in the tables of the source database. The target database may also consist of two parts: an in-memory part for fast execution of complex and multi-dimensional queries and a persistent part that can store the tables and data of the in-memory part of the target database in the longer-term storage, such as a hard drive or flash memory . This can allow the target database - in the event of a crash of the target database - to recover most of its contents from persistent storage.

Der Begriff „ausgewählte Teile vom Inhalt von Tabellen“ kann die soeben genannten Teile oder Partitionen der Daten von Teilen der Tabellen der primären Datenbank bezeichnen, die kopiert und in der Zieldatenbank synchron gehalten werden können.The term “selected parts of the contents of tables” may mean the aforementioned parts or partitions of data from parts of the tables of the primary database that can be copied and kept synchronous in the target database.

Der Begriff „ausgewählte Abfragen“ kann einen bestimmten, an die verknüpften Datenbanken gerichteten Typ von Abfragen bezeichnen, welche je nach Art der Abfrage besser durch eine der beiden Datenbanken - insbesondere die Zieldatenbank - ausgeführt werden sollten. Wenn sich der Typ der Abfrage z.B. auf eine Online-Analyseverarbeitung bezieht, kann die Abfrage an die Zieldatenbank weitergeleitet und darf nicht durch die Quellendatenbank ausgeführt werden.The term "selected queries" can refer to a specific type of queries directed at the linked databases, which, depending on the type of query, are better executed by one of the two databases - in particular the target database. For example, if the type of query is related to online analytical processing, the query may be routed to the target database and may not be executed by the source database.

Der Begriff „Datenbankverwaltungssystem“ kann eine Kombination aus Administrations-/Verwaltungssystem bezeichnen, das in der Regel in einer Kombination aus Hardware und Software und mindestens einer zugehörigen Datenbank, welche die Daten speichert, ausgeführt ist.The term “database management system” can refer to a combination of administration/management system, usually in one Combination of hardware and software and at least one associated database that stores the data.

Der Begriff „speicherinterner Zieldatenbankteil“ kann den Teil der Zieldatenbank bezeichnen, der nahezu alle seiner Daten im Hauptspeicher des Computersystems halten kann. Das Datenbankverwaltungssystem der Zieldatenbank kann einen speicherinternen Teil und einen persistenten Teil der Zieldatenbank aufweisen, wobei es sich bei dem persistenten Teil - abgesehen von den letzten Änderungen am speicherinternen Teil - um eine persistent gespeicherte Kopie des speicherinternen Teils handeln kann.The term “in-memory target database part” can refer to the part of the target database that can hold almost all of its data in the main memory of the computer system. The database management system of the target database may have an in-memory portion and a persistent portion of the target database, where the persistent portion may be a persistently stored copy of the in-memory portion, except for recent changes to the in-memory portion.

Der Begriff „persistenter Zieldatenbankspeicher“ kann den Teil des Zieldatenbank-Verwaltungssystems beschreiben, der fähig ist, die Daten der Zieldatenbank persistent zu speichern, d.h. unter Verwendung einer Festplatte oder eines Flashspeichers anstelle eines speicherinternen Speichers.The term "target database persistent storage" may describe the part of the target database management system capable of storing the target database's data persistently, i.e. using a hard drive or flash memory instead of in-memory storage.

Der Begriff „aktuellste Momentaufnahme“ kann einen letzten konsistenten gespeicherten Status der Zieldatenbank bezeichnen.The term “most recent snapshot” may mean a most recent consistent saved state of the target database.

Der Begriff „späterer Zeitstempel“ - insbesondere eine Änderung, die einen späteren Zeitstempel hat - kann z.B. einen Datensatz der Wiederherstellungsprotokolldatei der Quellendatenbank bezeichnen, der eine Zeitanzeige aufweist, welche zeitlich später als die durch den persistenten Teil der Zieldatenbank gespeicherte aktuellste Momentaufnahme erstellt werden kann.For example, the term "later timestamp" - particularly a change that has a later timestamp - may mean a record of the source database's recovery log file that has a time indication that may be taken later in time than the most recent snapshot stored by the persistent portion of the target database.

Der Begriff „Wiederherstellungsprotokolldatei“ kann eine sequenzielle Datei bezeichnen, die Operationen protokolliert, welche auf einer Datenbank durchgeführt werden, insbesondere all jene Operationen, die die Daten ändern, d.h. Einfüge-, Aktualisierungs- und Löschoperationen. Die Wiederherstellungsprotokolldatei kann dafür vorgesehen sein, eine vollständige Wiederherstellung der Datenbank zu ermöglichen. Daher können auch die Tabellendefinitionen der Datenbank Teil der Wiederherstellungsprotokolldatei sein.The term "recovery log file" can mean a sequential file that logs operations performed on a database, particularly all those operations that modify the data, i.e. insert, update and delete operations. The recovery log file can be intended to enable a full recovery of the database. Therefore, the database table definitions can also be part of the recovery log file.

Der Begriff „Metadaten“ kann Daten über Daten bezeichnen, insbesondere eine Definition von Daten von Tabellen in einer Datenbank und möglicherweise Beziehungen zwischen ihnen.The term “metadata” can mean data about data, particularly a definition of data from tables in a database and possibly relationships between them.

Im Folgenden werden die Figuren ausführlich beschrieben. Alle Anweisungen in den Figuren sind schematisch. Zunächst ist ein Blockschaubild einer Ausführungsform des erfindungsgemäßen, durch einen Computer ausgeführten Verfahrens für eine Wiederherstellung nach einem Absturz für verknüpfte Datenbanken dargestellt. The figures are described in detail below. All instructions in the figures are schematic. First, a block diagram of an embodiment of the computer-executed method for crash recovery for linked databases according to the invention is shown.

Anschließend werden weitere Ausführungsformen sowie Ausführungsformen des verknüpften Datenbanksystems mit Wiederherstellung nach einem Absturz für verknüpfte Datenbanken beschrieben.Further embodiments and embodiments of the linked database system with crash recovery for linked databases will then be described.

1 zeigt ein Blockschaubild einer bevorzugten Ausführungsform des durch einen Computer ausgeführten Verfahrens 100 für eine Wiederherstellung nach einem Absturz für verknüpfte Datenbanken - insbesondere gemäß einer IDAA-Architektur - wobei die bereitgestellten, 102, verknüpften Datenbanken eine Quellen- oder primäre Datenbank - die insbesondere für Transaktionen optimiert ist, z.B. eine rollenbasierte Datenbank, - und eine zugehörige Ziel- oder sekundäre Datenbank aufweisen. Diese kann für Online-Analyseverarbeitungsoperationen (OLAP) optimiert und vorteilhafterweise spaltenbasiert organisiert sein. 1 shows a block diagram of a preferred embodiment of the computer-executed method 100 for crash recovery for linked databases - in particular according to an IDAA architecture - where the provided, 102, linked databases a source or primary database - in particular optimized for transactions - e.g. a role-based database - and an associated target or secondary database. This can be optimized for online analytical processing operations (OLAP) and advantageously organized in a column-based manner.

Ausgewählte Abfragen - insbesondere auf Analyseoperationen ausgerichtete - an ein Datenbankverwaltungssystem, das die Quellendatenbank aufweist, werden zur Verarbeitung an ein Datenbankverwaltungssystem, das die Zieldatenbank aufweist, übertragen, d.h. ausgelagert.Selected queries - in particular those aimed at analysis operations - to a database management system that has the source database are transferred for processing to a database management system that has the target database, i.e. outsourced.

Das Verfahren 100 umfasst auch ein Synchronisieren, 104, von ausgewählten Teilen vom Inhalt von Tabellen der Quellendatenbank - in einigen Datenbanken nur von Teilen von Daten von Teilen der Tabellen und in anderen Ausführungen einer vollständigen Kopie - mit jeweiligen Teilen vom Inhalt von Tabellen der Zieldatenbank, indem während des Synchronisierens Änderungen an der Quellendatenbank auf einen speicherinternen Zieldatenbankteil des Datenbankverwaltungssystems, das die Zieldatenbank aufweist, unter Verwendung einer Wiederherstellungsprotokolldatei der Quellendatenbank angewendet werden, 106.The method 100 also includes synchronizing, 104, selected portions of the contents of tables of the source database - in some databases only portions of data from portions of the tables and in other embodiments a complete copy - with respective portions of the contents of tables of the target database, by applying changes to the source database to an in-memory target database portion of the database management system having the target database using a recovery log file of the source database during synchronization, 106.

Zusätzlich umfasst das Verfahren 100 ein asynchrones Speichern, 108, von persistent angewandten Änderungen an dem speicherinternen Zieldatenbankteil in einem persistenten Zieldatenbankspeicherteil und, nach einem Datenbankabsturz auf dem Zieldatenbanksystem, ein Wiederherstellen, 110, des speicherinternen Zieldatenbankteils mit der in dem persistenten Zieldatenbankspeicher verfügbaren aktuellsten Momentaufnahme sowie ein Anwenden, 112, nach dem Datenbankabsturz des Zieldatenbanksystems, von Änderungen aus der Wiederherstellungsprotokolldatei der Quellendatenbank, die einen späteren Zeitstempel als die in dem persistenten Zieldatenbankspeicher verfügbare aktuellste Momentaufnahme haben, auf den speicherinternen Zieldatenbankteil.Additionally, the method 100 includes asynchronously storing, 108, persistently applied changes to the in-memory target database portion in a persistent target database storage portion and, after a database crash on the target database system, restoring, 110, the in-memory target database portion with the most current snapshot available in the persistent target database storage, and applying, 112, after the database crash of the target database system, to the in-memory target database portion, changes from the recovery log file of the source database that have a later timestamp than the most recent snapshot available in the target database persistent storage.

Optional kann auch der persistente Teil der Zieldatenbank parallel aktualisiert werden. Dazu müsste jedoch auch der persistente Speicherprozess oder Speicherprozessor aktiv sein, um Änderungen des speicherinternen Teils der Zieldatenbank persistent zu speichern.Optionally, the persistent part of the target database can also be updated in parallel. In addition However, the persistent storage process or storage processor would also have to be active to persist changes to the in-memory part of the target database.

Zusätzlich kann es vorteilhaft sein, die Zieldatenbank mit Massendaten aus der Quellendatenbank zu laden, insbesondere während eines Initialisierungsprozesses. Dies kann dazu beitragen, den vergleichsweise langsameren inkrementellen Aktualisierungs- oder Synchronisierungsprozess zu vermeiden, da die Quellendatenbank möglicherweise bereits über eine größere Anzahl von Einträgen und somit eine größere Anzahl von Einträgen in ihrer Wiederherstellungsprotokolldatei verfügt. Die Initialisierung kann auch für ausgewählte Tabellen oder lediglich Partitionen davon funktionieren.Additionally, it may be advantageous to load the target database with bulk data from the source database, particularly during an initialization process. This can help avoid the comparatively slower incremental update or synchronization process as the source database may already have a larger number of entries and thus a larger number of entries in its recovery log file. Initialization can also work for selected tables or just partitions of them.

2 zeigt ein Blockschaubild einer Ausführungsform 200 von verknüpften Datenbanken. Die primäre oder Quellendatenbank 202 empfängt OLTP-Abfragen 210 und OLAP-Abfragen 214. Diejenigen Abfragen, die als OLAP-Abfragen 214 angegeben sind, werden an die sekundäre oder Zieldatenbank 206 übertragen oder ausgelagert, 222. Die Quellendatenbank 202 weist eine Mehrzahl von Tabellen 204 und zugehörige gespeicherte Daten auf. Die Zieldatenbank 206 weist auch Tabellen auf, die mindestens eine Teilmenge der Datenbanktabellen 204 der Quellendatenbank 202 und mindestens eine Teilmenge der Daten in den Datenbanktabellen 208 darstellen. 2 shows a block diagram of an embodiment 200 of linked databases. The primary or source database 202 receives OLTP queries 210 and OLAP queries 214. Those queries specified as OLAP queries 214 are transferred or offloaded 222 to the secondary or target database 206. The source database 202 has a plurality of tables 204 and associated stored data. The target database 206 also includes tables that represent at least a subset of the database tables 204 of the source database 202 and at least a subset of the data in the database tables 208.

Nachdem die OLAP-Operation durch die Zieldatenbank 206 durchgeführt wurde, werden die Daten zurückgegeben, 224, und die OLAP-Ausgabe 220 wird wieder an das anfordernde Programm bzw. den anfordernden Prozess zurückgegeben. OLTP-Abfragen 210 werden direkt in der Quellendatenbank 202 ausgeführt und als OLTP-Ausgabe 212 an das anfordernde Programm bzw. den anfordernden Prozess zurückgegeben. Somit kann die OLTP- oder Quellendatenbank 202 bei Höchstleistung betrieben werden, da sie nicht durch ressourcenintensive OLAP-Abfragen verlangsamt wird.After the OLAP operation is performed by the target database 206, the data is returned 224 and the OLAP output 220 is returned back to the requesting program or process. OLTP queries 210 are executed directly on the source database 202 and returned as OLTP output 212 to the requesting program or process. Thus, the OLTP or source database 202 can operate at peak performance because it is not slowed down by resource-intensive OLAP queries.

Aufgrund einer möglicherweise anderen Datenorganisation in der Zieldatenbank 206 - z.B. spaltenorientiert anstelle von zeilenorientiert wie in der Quellen- oder OLTP-Datenbank 202 - kann die Zieldatenbank OLAP-Ergebnisse viel schneller als die Quellendatenbank 202 zurückgeben, 224.Due to a possible different data organization in the target database 206 - e.g., column-oriented instead of row-oriented as in the source or OLTP database 202 - the target database may return OLAP results much faster than the source database 202, 224.

3 zeigt ein Blockschaubild einer Ausführungsform 300 der Art und Weise, in der die Zieldatenbank synchronisiert werden kann. Das Quellendatenbank-Verwaltungssystem 302 steuert den Betrieb der Quellendatenbank 202 und ihrer zugehörigen Tabellen 204 (vergleiche 2). Dasselbe gilt für das Zieldatenbank-Verwaltungssystem 308 für die Zieldatenbank 206 und die zugehörigen Tabellen 208. 3 shows a block diagram of an embodiment 300 of the manner in which the target database may be synchronized. The source database management system 302 controls the operation of the source database 202 and its associated tables 204 (see 2 ). The same applies to the target database management system 308 for the target database 206 and the associated tables 208.

Das Quellendatenbank-Verwaltungssystem 302 verwaltet auch die Wiederherstellungsprotokolldatei 306 für die Quellendatenbank 202. Eine Protokollleseeinheit oder Protokolldateileseeinheit 314, welche die Wiederherstellungsprotokolldatei 306 liest, stellt diese Daten der Anwendungseinheit 316 bereit, die die an der Quellendatenbank durchgeführten Änderungen (d.h. Einfügen, Aktualisieren, Löschen) auch auf die Zieldatenbank 206 für die ausgewählten Tabellen und den ausgewählten Satz von Daten anwendet. Bei den ausgewählten Tabellen und dem ausgewählten Satz von Daten kann es sich um eine Teilmenge jener zugehörigen Tabellen und Daten in der Quellendatenbank 202 handeln, die zuvor definiert wurden. Die Anwendungseinheit 316 kann die Anwendung der Änderungen auf die Zieldatenbank 206 in Abhängigkeit von ausgeführten OLAP-Abfragen optimieren. Dazu kann der Protokollpuffer 318 hilfreich sein.The source database management system 302 also manages the recovery log file 306 for the source database 202. A log reader or log file reader 314, which reads the recovery log file 306, provides this data to the application unit 316, which contains the changes made to the source database (i.e., insert, update, delete). also applies to the target database 206 for the selected tables and set of data. The selected tables and set of data may be a subset of those associated tables and data in the source database 202 that were previously defined. The application entity 316 can optimize the application of the changes to the target database 206 depending on OLAP queries being executed. The protocol buffer 318 can be helpful for this.

Für eine Initialisierung der Zieldatenbank 206 kann aus Gründen der Leistungsfähigkeit eine Operation 312 zum Laden von Massendaten aus der Quellendatenbank 202 in die Zieldatenbank 206 durchgeführt werden.To initialize the target database 206, an operation 312 to load bulk data from the source database 202 into the target database 206 may be performed for performance reasons.

Es sei darauf hingewiesen, dass 3 - aus Gründen der Übersichtlichkeit des erfindungsgemäßen Konzepts - noch nicht die Aufteilung des Zieldatenbank-Verwaltungssystems in einen speicherinternen Teil und einen persistenten Teil der Zieldatenbank 206 und ihrer Tabellen 208 zeigt. Dies wird in der nächsten Figur gezeigt.It should be noted that 3 - for reasons of clarity of the concept according to the invention - does not yet show the division of the target database management system into an in-memory part and a persistent part of the target database 206 and its tables 208. This is shown in the next figure.

Es sei darauf hingewiesen, dass dieser Synchronisierungsmechanismus eine von vielen Synchronisierungstechniken darstellen kann. Auch andere Synchronisierungstechniken können anwendbar sein.It should be noted that this synchronization mechanism can represent one of many synchronization techniques. Other synchronization techniques may also be applicable.

4 zeigt ein Blockschaubild einer Ausführungsform des vorgeschlagenen Konzepts in einer ausführungsnäheren Form 400. Die Elemente des Quellendatenbank-Verwaltungssystems bei denjenigen, die optional verwendet werden, um die Quellendatenbank mit der Zieldatenbank (hauptsächlich dem oberen Teil von 4) zu synchronisieren, werden nicht erneut beschrieben. 4 shows a block diagram of an embodiment of the proposed concept in a more detailed form 400. The elements of the source database management system in those which are optionally used to interface the source database with the target database (mainly the upper part of 4 ) to synchronize are not described again.

Das Zieldatenbank-Verwaltungssystem 308 weist den speicherinternen Teil 402 der Zieldatenbank und den persistenten Teil 404 der Zieldatenbank auf. Der Persistenzservice 406 schreibt den Status des speicherinternen Zieldatenbankteils 402 während der Operation in die persistente Datenbank 404. Während solcher regelmäßigen Operationen - z.B. nachdem eine vorher festgelegte Anzahl von Aktualisierungen an der speicherinternen Datenbank 402 vorgenommen wurde - überträgt der Abfrageprozessor 408 die eingehenden Abfragen an den speicherinternen Teil 402 der Zieldatenbank.The target database management system 308 includes the in-memory portion 402 of the target database and the persistent portion 404 of the target database. The persistence service 406 writes the status of the in-memory target database part 402 to the persistent database 404 during operation. During such periodic operations - for example, after a predetermined number of Updates have been made to the in-memory database 402 - the query processor 408 transmits the incoming queries to the in-memory portion 402 of the target database.

Wenn das Ziel-DBMS aktuell jedoch eine Wiederherstellung nach einem Absturz durchführt - besonders im Falle der nachfrage- oder datennutzungsoptimierten Wiederherstellung - funktionieren die Dinge anders:

  • (i) der Abfrageprozessor 408 analysiert zusammen mit dem Wiederherstellungsprozessor 410 die Datenzugriffe der Abfragen, um eine Liste von Zieltabellen und/oder Listen von Tabellenpartitionen zu ermitteln, die für die Abfrage zur Verfügung stehen müssen, wobei Query-Parsing-a-View-Lösungsverfahren nach dem Stand der Technik verwendet werden;
  • (ii) eine Blockierungsdatenliste wird ermittelt, indem man sich alle Tabellen und/oder Tabellenpartitionen der Datenzugriffsliste aus dem vorherigen Schritt innerhalb des Wiederherstellungszustands anschaut, der noch nicht wiederhergestellt wurde;
  • (iii) wenn die Liste aus dem vorherigen Schritt nicht leer ist, werden die Abfrage und ihre Blockierungsdatenliste zu der wartenden Abfrage hinzugefügt, und der Abfrageprozess wartet, bis die Wiederherstellung beendet wird (die Blockierungsdatenliste wird leer), dann kann das Abfragen fortgesetzt werden; und
  • (iv) die Abfrage der Zieldatenbank wird wie üblich verarbeitet, nachdem eine Abschlussbenachrichtigung von dem Wiederherstellungsprozessor 410 an den Abfrageprozessor 408 gesendet wurde.
However, if the target DBMS is currently performing crash recovery - particularly in the case of demand-optimized or data-usage optimized recovery - things work differently:
  • (i) the query processor 408, together with the recovery processor 410, analyzes the data accesses of the queries to determine a list of target tables and/or lists of table partitions that must be available for the query, using query parsing-a-view solving techniques be used according to the state of the art;
  • (ii) a blocking data list is determined by looking at all tables and/or table partitions of the data access list from the previous step within the recovery state that have not yet been recovered;
  • (iii) if the list from the previous step is not empty, the query and its blocking data list are added to the waiting query, and the query process waits until the recovery finishes (the blocking data list becomes empty), then querying can continue; and
  • (iv) the query of the target database is processed as usual after a completion notification has been sent from the recovery processor 410 to the query processor 408.

Während der durch den Wiederherstellungsprozessor 410 gesteuerten Aktion wird die in der persistenten Datenbank 404 verfügbare aktuellste konsistente Momentaufnahme der relevanten Tabellen und/oder Tabellenpartitionen in den speicherinternen Teil 402 der Zieldatenbank geladen, 412, und die Einträge in der Wiederherstellungsprotokolldatei 306 der Quellendatenbank 202, die einen späteren Zeitstempel als die Momentaufnahme der persistenten Datenbank 404 haben, werden wieder in die speicherinterne Datenbank 402 eingespielt. Diese werden von dem Wiederherstellungsprozessor 410 über den Abfrageprozessor 408 aus dem Quellen-DBMS 302 angefordert, z.B. aus der Wiederherstellungsprotokolldatei 306 über die Protokollleseeinheit 314 und die Anwendungseinheit 316.During the action controlled by the recovery processor 410, the most current consistent snapshot of the relevant tables and/or table partitions available in the persistent database 404 is loaded into the in-memory portion 402 of the target database, 412, and the entries in the recovery log file 306 of the source database 202, which are a have a later time stamp than the snapshot of the persistent database 404 are imported back into the in-memory database 402. These are requested by the recovery processor 410 via the query processor 408 from the source DBMS 302, e.g. from the recovery log file 306 via the log reader unit 314 and the application unit 316.

5 zeigt ein Blockschaubild einer Ausführungsform 500 des verknüpften Datenbanksystems, das Komponenten für eine kundenprioritätsoptimierte Wiederherstellungsstrategie aufweist. Das Quellen-DBMS 542 hat beispielhaft eine erste Quellendatenbank 504 eines ersten Benutzers oder Tenants (z.B. in einer Cloud-Computing-Umgebung) und eine zweite Quellendatenbank 506 eines zweiten Benutzers oder Tenants. Zusätzlich können einzelne Quellendatenbanksysteme für andere Benutzer oder Tenants zur Verfügung stehen. 5 shows a block diagram of an embodiment 500 of the linked database system that includes components for a customer priority optimized recovery strategy. The source DBMS 542 exemplarily has a first source database 504 of a first user or tenant (eg, in a cloud computing environment) and a second source database 506 of a second user or tenant. Additionally, individual source database systems may be available to other users or tenants.

Einzelne Datensynchronisationssubsysteme 510, 512 sind in dem Datensynchronisationssystem 508 ausgeführt, um die Quellendatenbanken 504, 508 mit den jeweiligen speicherinternen Teilen 518, 520 der speicherinternen Zieldatenbank 516 zu synchronisieren. Der Abfrageprozess 522 empfängt die Datenbankabfragen zur Ausführung in dem speicherinternen Teil der Zieldatenbank(en) 516. Bei diesen Abfragen handelt es sich üblicherweise um OLAP-Abfragen, die aus der/den Quellendatenbank(en) 504, 506 ausgelagert wurden.Individual data synchronization subsystems 510, 512 are implemented in the data synchronization system 508 to synchronize the source databases 504, 508 with the respective in-memory parts 518, 520 of the in-memory target database 516. The query process 522 receives the database queries for execution in the in-memory portion of the target database(s) 516. These queries are typically OLAP queries that have been offloaded from the source database(s) 504, 506.

Der Wiederherstellungsprozess bzw. Wiederherstellungsprozessor 524 des Ziel-DBMS 514 empfängt auch Daten von dem Abfrageprozessor in Bezug auf Abfragen, die in die Datenzugriffsanalysekomponente 526 eingetragen und darin analysiert werden sollen. Während des Wiederherstellungsprozesses der Zieldatenbank ermittelt die Abfrageanalysekomponente die wartenden Abfragen 530 und die bereits wiederhergestellten Tabellenpartitionen 532 in dem Wiederherstellungszustand-Verwaltungssystem 528, um - auf der Grundlage einer Priorität von Abfragen eines bestimmten Benutzers - zu ermitteln, welche Tabellen zuerst wiederhergestellt werden sollen. Dies wird schließlich durch den Wiederherstellungszeitplan 534 ermittelt und entschieden. Um diese Task durchzuführen, befindet sich der Wiederherstellungszeitplan 534 in ständigem Datenaustausch mit dem Wiederherstellungszustand-Verwaltungssystem 528, um den tatsächlichen Wiederherstellungsstatus zu prüfen, und empfängt Konfigurationsdaten aus dem Konfigurationsspeicher des Arbeitslastverwaltungssystems. Darüber hinaus tauscht der Wiederherstellungszeitplan 534 auch Daten mit dem Datensynchronisationssystem 508 aus, um ein Laden der Wiederherstellungsdatenbank des Zieldatenbank-Verwaltungssystems aus dem Quellendatenbank-Verwaltungssystem 502 auszulösen.The recovery process or recovery processor 524 of the target DBMS 514 also receives data from the query processor regarding queries to be entered into and analyzed in the data access analysis component 526. During the target database restore process, the query analysis component determines the waiting queries 530 and the already restored table partitions 532 in the restore state management system 528 to determine which tables should be restored first based on a priority of queries from a particular user. This is ultimately determined and decided by the recovery schedule 534. To perform this task, the recovery schedule 534 is in constant communication with the recovery state management system 528 to check the actual recovery status and receives configuration data from the workload management system's configuration store. In addition, the recovery schedule 534 also exchanges data with the data synchronization system 508 to trigger a load of the target database management system's recovery database from the source database management system 502.

Auf diese Weise kann sichergestellt werden, dass der Benutzer oder Kunde mit einer konfigurierten höheren Priorität einen frühzeitigen Zugriff auf wiederhergestellte Datenbanktabellen hat, deren Wiederherstellungszeit auch in Abhängigkeit von einer Verwendung des Zugriffs von bestimmten Tabellen optimiert werden kann.In this way, it can be ensured that the user or customer with a configured higher priority has early access to restored database tables, the recovery time of which can also be optimized depending on the use of access from specific tables.

Im Einzelnen kann dies durch die folgende Prozedur erreicht werden: Wenn der Wiederherstellungsprozess nach einem Absturz für die Zieldatenbank initialisiert wird, wird für jeden Tenant ein leeres Histogramm einer blockierten Tabelle/von blockierten Tabellenpartitionen erstellt. Wenn eine neue Blockierungsabfrage in dem Wiederherstellungszustand eingetragen wird, wird der Nutzungszähler für jede Tabelle/Partition in der Blockierungsdatenliste der Abfrage um 1 erhöht. Dann, wenn eine nächste wiederherzustellende Tabelle/Partition ermittelt werden muss, wird eine Wiederherstellungspriorität der Tabelle auf der Grundlage der Zähleranzahl der Nutzung blockierter Abfragen und der aktuellen Konfiguration des Arbeitslastverwaltungssystems (WLM, workload management system) der Tenants (d.h. seiner Priorität oder Wichtigkeit) ermittelt und das Wiederherstellungselement mit der höchsten Priorität wird ausgewählt. Schließlich wird, wenn die Wiederherstellungsaktion der Tabelle/Partition beendet wird, auch der entsprechende Histogrammeintrag entfernt.Specifically, this can be achieved through the following procedure: If the crash recovery process for the target data bank is initialized, an empty histogram of blocked table/partitions is created for each tenant. When a new blocking query is entered into the recovery state, the usage count for each table/partition in the query's blocking data list is incremented by 1. Then, when a next table/partition to be restored needs to be determined, a restore priority of the table is determined based on the blocked query usage count and the tenant's current workload management system (WLM) configuration (i.e., its priority or importance). and the highest priority recovery item is selected. Finally, when the restore action of the table/partition is completed, the corresponding histogram entry is also removed.

Die Berechnung der benutzer- oder tenantspezifischen Wiederherstellungsprioritäten kann beispielhaft wie folgt ausgeführt werden: Wenn es eine strikte Priorität zwischen Tenant-Paaren gibt - ein Produktionssystem ist z.B. wichtiger als ein Testsystem (was durch einen einfachen Konfigurationstext angegeben werden kann), wird die Liste von wiederherzustellenden Tabellen/Partitionen nach Benutzern/Tenant gruppiert; die Liste der Gruppen wird nach abnehmender Priorität der Benutzer/des Tenants geordnet; und die nächste Tabelle/Partition wird aus der ersten nicht leeren Gruppe über den Auswahlalgorithmus des Abfragenutzungszählers ausgewählt.The calculation of user or tenant specific restore priorities can be carried out as an example: If there is a strict priority between tenant pairs - e.g. a production system is more important than a test system (which can be specified by a simple configuration text), the list of restores is calculated Tables/partitions grouped by user/tenant; the list of groups is ordered by decreasing user/tenant priority; and the next table/partition is selected from the first non-empty group via the query usage counter selection algorithm.

Wenn es für jeden Tenant in der WLM-Konfiguration jedoch eine relative Position für eine gemeinsame Nutzung von Ressourcen gibt (z.B. Tenant-1 50%, Tenant-2 30%, Tenant-3 20%), wird eine Priorität für jedes Wiederherstellungselement wie folgt berechnet: (i) der Abfragenutzungszähler q für das Wiederherstellungselement wird ermittelt; (ii) dann wird der Tenant t, dem das Wiederherstellungselement gehört, ermittelt; (iii) als Nächstes wird die Position für eine gemeinsame Nutzung von Ressourcen r(t) für den Tenant t ermittelt; (iv) darauf beruhend wird die Priorität als a * q * b * r(t) ermittelt, wobei a und b statische Konfigurationsparameter sind - insbesondere im Bereich zwischen [0 ... 1] - wobei b beruhend auf a, z.B. b = 1-a, berechnet werden kann, um die Anzahl der Parameter zu verringern. Schließlich (v) kann die Liste der Wiederherstellungselemente nach Priorität, z.B. in einer Prioritätenwarteschlange, geordnet werden.However, if there is a relative resource sharing position for each tenant in the WLM configuration (e.g. Tenant-1 50%, Tenant-2 30%, Tenant-3 20%), a priority for each recovery item becomes as follows calculates: (i) the query usage counter q for the recovery item is determined; (ii) then the tenant t that owns the recovery item is determined; (iii) next, the resource sharing position r(t) is determined for the tenant t; (iv) based on this, the priority is determined as a * q * b * r(t), where a and b are static configuration parameters - in particular in the range between [0 ... 1] - where b is based on a, e.g. b = 1-a, can be calculated to reduce the number of parameters. Finally (v) the list of recovery items can be ordered by priority, e.g. in a priority queue.

6 zeigt ein Blockschaubild einer Ausführungsform 600 des verknüpften Datenbanksystems, das Komponenten für eine volumenoptimierte Wiederherstellungsstrategie aufweist. Bereits mit 5 eingeführte Elemente sind mit den gleichen Bezugszahlen gezeigt. Oben links ist das Quellen-DBMS 502 mit einer Quellendatenbank 504 und einer zugehörigen Wiederherstellungsprotokolldatei 604 gezeigt. Zunächst kann der speicherinterne Datenbankteil 516 des Ziel-DBMS 514 (wobei der persistente Teil nicht gezeigt ist) über das Ladeprogramm 602 zum Laden von Massendaten mit Massendaten geladen werden. 6 shows a block diagram of an embodiment 600 of the linked database system that includes components for a volume-optimized recovery strategy. Already with 5 introduced elements are shown with the same reference numbers. The source DBMS 502 is shown at the top left with a source database 504 and an associated recovery log file 604. First, the in-memory database portion 516 of the target DBMS 514 (with the persistent portion not shown) may be loaded with bulk data via the bulk data loader 602.

Neben dem speicherinternen Teil 516 des Ziel-DBMS 514 kann hier der Fokus auf anderen Metadaten 608 und dem Wiederherstellungsprozess bzw. dem Wiederherstellungsprozessor 614 liegen. Der Wiederherstellungsprozess weist mindestens drei Komponenten auf: die Wiederherstellungselement-Auswahleinheit 616, die Änderungsschätzeinheit 618 und den Wiederherstellungszeitplan 620. Der Wiederherstellungsprozessor 614 befindet sich im Datenaustausch mit der speicherinternen Datenbank 516, um Statusinformationen über die Tabellen in dem speicherinternen Datenbankteil 516 des Ziel-DBMS 514 zu erfassen.In addition to the in-memory part 516 of the target DBMS 514, the focus here may be on other metadata 608 and the recovery process or recovery processor 614. The restore process has at least three components: the restore item selector 616, the change estimate unit 618, and the restore schedule 620. The restore processor 614 communicates with the in-memory database 516 to provide status information about the tables in the in-memory database portion 516 of the target DBMS 514 capture.

Falls auf Seiten des Ziel-DBMS ein Datenbankabsturz stattfindet, muss die Zieldatenbank 516 aus der Quellendatenbank 504 entweder über einen Mechanismus zum Laden von Massendaten oder inkrementell wiederhergestellt werden, wie bereits vorstehend beschrieben wurde. Zusätzlich werden die wiederherzustellende(n) Tabelle/Tabellenpartitionen hier durch den Wiederherstellungsprozess 614 dynamisch ausgewählt. Das hier vorgeschlagene Konzept wird um eine Änderungsschätzkomponente 618 erweitert, die dafür zuständig ist, die Menge an Daten zu schätzen oder zu ermitteln, die während einer Wiederherstellung nach einem Absturz wiederhergestellt werden muss. Daher wertet diese Änderungsschätzkomponente 618 Datenänderungsstatistiken aus, um zu extrapolieren, wie viele Datenänderungen in der Quellendatenbank seit einem Wiederherstellungsbaseline-Zeitstempel aufgelaufen sind. Auf der Grundlage dieser Informationen wählt der Wiederherstellungszeitplan 620 die effizienteste Datensynchronisationsmethode zum Wiederherstellen der Daten der wiederherzustellenden Tabelle/Tabellenpartition aus. Die Datenänderungsstatistiken werden während einer regelmäßigen Aktualisierungsverarbeitung, entweder inkrementell oder über ein Laden von Massendaten, der Zieldatenbank (d.h. des speicherinternen Datenbankteils 516) verwaltet. Die Änderungsschätzung 618 kann durch die Wiederherstellungselement-Auswahlkomponente 616 ausgelöst werden.If a database crash occurs on the target DBMS side, the target database 516 must be recovered from the source database 504 either through a bulk data loading mechanism or incrementally, as previously described. In addition, the table/table partitions to be restored are dynamically selected here by the restore process 614. The concept proposed here is extended to include a change estimation component 618, which is responsible for estimating or determining the amount of data that needs to be restored during crash recovery. Therefore, this change estimation component 618 evaluates data change statistics to extrapolate how many data changes have accumulated in the source database since a recovery baseline timestamp. Based on this information, the restore schedule 620 selects the most efficient data synchronization method for restoring the data of the table/table partition to be restored. The data change statistics are maintained during periodic update processing, either incrementally or via a bulk data load, of the target database (i.e., the in-memory database portion 516). The change estimate 618 may be triggered by the recovery item selection component 616.

Der Wiederherstellungszeitplan 620 befindet sich auch im Datenaustausch mit dem Ladeprogramm 602 zum Laden von Massendaten und mit Einzelheiten des inkrementellen Aktualisierungsprozesses 606, um den Wiederherstellungsprozess des speicherinternen Datenbankteils 516 zu verwalten. Wenn z.B. die Wiederherstellung des speicherinternen Datenbankteils 516 abgeschlossen ist, wird von dem Ladeprogramm 602 zum Laden von Massendaten eine Wiederherstellungs-Abschlussbenachrichtigung empfangen. Auf der anderen Seite fordert der Wiederherstellungszeitplan 620 Änderungseinspielungen für bestimmte Tabellen in dem speicherinternen Datenbankteil 516 an. Ähnlich dem Signal von den Ladeprogrammen zum Laden von Massendaten 602 empfängt der Wiederherstellungszeitplan 620 auch eine Wiederherstellungs-Abschlussbenachrichtigung von dem inkrementellen Aktualisierungsprozess(or) 606. Wie bereits im Kontext von 3 beschrieben wurde, weist der inkrementelle Aktualisierungsprozess 606 die Protokollleseeinheit (hier nicht gezeigt), die so ausgelegt ist, dass sie die Wiederherstellungsprotokolldatei-Einträge aus der Wiederherstellungsprotokolldatei 604 liest, sowie die Wiederherstellungsprotokolldatei-Anwendungseinheit (hier nicht gezeigt) auf, die so ausgelegt ist, dass sie den Hauptspeicherdatenbankteil 516 unter Verwendung der jeweiligen Wiederherstellungsprotokolldatei-Einträge aus der Quellendatenbank 504 inkrementell aktualisiert. Bezüglich Einzelheiten sei wieder auf 3 verwiesen.The recovery schedule 620 is also in communication with the loader 602 for loading bulk data and with details of the incremental update process 606 to support the recovery process to manage the in-memory database part 516. For example, when the restore of the in-memory database portion 516 is complete, a restore completion notification is received from the bulk data loader 602. On the other hand, the recovery schedule 620 requests change commits for specific tables in the in-memory database portion 516. Similar to the signal from the bulk data loaders 602, the restore schedule 620 also receives a restore completion notification from the incremental update process(or) 606. As discussed in the context of 3 As described, the incremental update process 606 includes the log reader unit (not shown here) configured to read the recovery log file entries from the recovery log file 604, and the recovery log file application unit (not shown here) configured to that it incrementally updates the main storage database portion 516 using the respective recovery log file entries from the source database 504. Stay tuned for details 3 referred.

Um den Prozess der hier beschriebenen Ausführungsform erfolgreich zu verwalten, sollten Datenänderungsstatistiken in dem in den Metadaten 608 des Zieldatenbanksystems 514 enthaltenen persistenten Metadatenkatalog gespeichert und verwaltet werden, wenn das Zieldatenbanksystem 514 aktualisiert wird, d.h. über die inkrementelle Aktualisierungsstrategie oder die Strategie zum Laden von Massendaten. Er kann die folgenden Informationen speichern: (i) einen Zeitstempel, wann die Aktualisierung verarbeitet wurde; (ii) Schemainformationen der Datenbanktabellen, z.B. Spaltentypen, Spaltenbreiten, ...; (iii) die Menge der Datenänderungen je Tabelle/Tabellenpartition, die von der Aktualisierung betroffen waren; d.h. eingefügte Datensätze und gelöschte Datensätze, aktualisierte Datensätze; und aggregierte Metriken wie beispielsweise die Gesamtzahl der geänderten Datensätze, das gesamte Datenvolumen, das angewendet wurde, die gesamte Ausführungszeit der Aktualisierungen usw.To successfully manage the process of the embodiment described herein, data change statistics should be stored and managed in the persistent metadata catalog contained in the metadata 608 of the target database system 514 when the target database system 514 is updated, i.e. via the incremental update strategy or the bulk data load strategy. It may store the following information: (i) a timestamp of when the update was processed; (ii) Schema information of the database tables, e.g. column types, column widths, ...; (iii) the amount of data changes per table/table partition that were affected by the update; i.e. inserted records and deleted records, updated records; and aggregated metrics such as the total number of records changed, the total volume of data applied, the total execution time of updates, etc.

Die Statistikdaten können mit einem Zeitintervall, z.B. den letzten x Tagen, verknüpft werden. Zudem können die Statistikdaten inkrementell als Teil eines jeden Aktualisierungszyklus verwaltet werden.The statistical data can be linked to a time interval, e.g. the last x days. Additionally, the statistics data can be managed incrementally as part of each update cycle.

Darüber hinaus wird die Wiederherstellungsbaseline 610 auch in den persistenten Metadaten 608 (z.B. einem Metadatenkatalog) des Zieldatenbanksystems 514 verwaltet. Sie wird zum Schätzen benötigt, um das Datenvolumen zu ermitteln, das wiederhergestellt werden muss. Daher ist es nicht notwendig, einen genauen Zeitstempel zu ermitteln, vielmehr ist ein Interpolieren des Wertes ausreichend, z.B.: Er kann als Heartbeat-Zeitstempel verwaltet werden, der durch das Zieldatenbanksystem in regelmäßigen Zeitintervallen aktualisiert wird; er kann als Startpunkt des Wiederherstellungsprozesses nach dem Absturz verwaltet werden; und er kann als Zeitpunkt der letzten erfolgreich persistent gespeicherten Momentaufnahme der Zieldatenbank verwaltet werden. Dabei kann der Zeitstempel je Tabelle in der Zieldatenbank verwaltet werden.In addition, the recovery baseline 610 is also maintained in the persistent metadata 608 (e.g., a metadata catalog) of the target database system 514. It is needed for estimation to determine the volume of data that needs to be restored. Therefore, it is not necessary to determine an exact timestamp, rather interpolating the value is sufficient, e.g.: It can be managed as a heartbeat timestamp, which is updated by the target database system at regular time intervals; it can be managed as a starting point of the crash recovery process; and it can be managed as the time of the last successfully persisted snapshot of the target database. The timestamp can be managed for each table in the target database.

Die Wiederherstellung nach einem Absturz auf der Zieldatenbank kann wie folgt ausgeführt werden: (i) zunächst wird die nächste wiederherzustellende Tabelle/Partition ermittelt; (ii) das Datenvolumen, das seit der Wiederherstellungsbaseline wiederhergestellt werden muss, wird geschätzt; (iii) die beste Wiederherstellungsstrategie wird auf der Grundlage des geschätzten Datenvolumens ausgewählt und die Wiederherstellungszeit wird geschätzt; (iv) dann wird die Wiederherstellung der Tabelle mit der ausgewählten Strategie terminiert; und (v) diese Schritte werden in einer Schleife wiederholt, bis alle Daten wiederhergestellt worden sind.Crash recovery on the target database can be performed as follows: (i) first, the next table/partition to be recovered is determined; (ii) the volume of data to be restored since the restore baseline is estimated; (iii) the best recovery strategy is selected based on the estimated data volume and the recovery time is estimated; (iv) then the table recovery is scheduled using the selected strategy; and (v) these steps are repeated in a loop until all data has been restored.

Die Schätzung der wiederherzustellenden Datenvolumina kann wie folgt ausgeführt werden: (i) für eine wiederherzustellende Tabelle/Partition werden die entsprechenden Datenänderungsstatistiken 612 gesucht; (ii) die Wiederherstellungsbaseline für die Tabelle/Partition wird ermittelt; und (iii) die Anzahl der Änderungen, die über den inkrementellen Aktualisierungsprozess in dem Intervall repliziert werden müssen [Wiederherstellungsbaseline, aktuelle Wiederherstellungszeit], wird interpoliert.The estimation of the data volumes to be restored can be carried out as follows: (i) for a table/partition to be restored, the corresponding data change statistics 612 are searched; (ii) the recovery baseline for the table/partition is determined; and (iii) the number of changes that need to be replicated via the incremental update process at the interval [recovery baseline, current recovery time] is interpolated.

7 zeigt ein Blockschaubild einer Ausführungsform des verknüpften Datenbanksystems 700 für eine Wiederherstellung nach einem Absturz für verknüpfte Datenbanken. Die verknüpften Datenbanken 700 weisen eine Quellendatenbank 706 und eine zugehörige Zieldatenbank 708 auf, wobei ausgewählte Teile vom Inhalt von Tabellen der Quellendatenbank mit jeweiligen Teilen des Inhalts der Tabellen der Zieldatenbank synchronisiert werden. 7 shows a block diagram of an embodiment of the linked database system 700 for crash recovery for linked databases. The linked databases 700 include a source database 706 and an associated target database 708, wherein selected portions of the contents of tables of the source database are synchronized with respective portions of the contents of the tables of the target database.

Das verknüpfte Datenbanksystem 700 weist einen Prozessor 702 und einen mit dem Prozessor 702 per Datenaustausch verbundenen Hauptspeicher 704 auf, wobei der Hauptspeicher 704 Programmcodeteile speichert, die, wenn sie ausgeführt werden, dem Prozessor ermöglichen, ausgewählte Teile vom Inhalt von Tabellen der Quellendatenbank 706 mit jeweiligen Teilen vom Inhalt von Tabellen der Zieldatenbank 708 - z.B. unter Verwendung einer Synchronisationseinheit 714 - zu synchronisieren.The linked database system 700 includes a processor 702 and a main memory 704 communicated to the processor 702, the main memory 704 storing portions of program code that, when executed, enable the processor to match selected portions of the contents of tables of the source database 706 with respective ones Sharing the contents of tables of the target database 708 - for example using a synchronization unit 714 - to synchronize.

Die gespeicherten Programmcodeteile, die, wenn sie ausgeführt werden, dem Prozessor 702 ermöglichen - unter Verwendung einer Anwendungseinheit 716 - Änderungen an der Quellendatenbank 706 während des Synchronisierens auf den speicherinternen Zieldatenbankteil 710 des Datenbankverwaltungssystems, das die Zieldatenbank aufweist, anzuwenden und - z.B. durch einen Speicherprozessor 718 - auf den speicherinternen Zieldatenbankteil 712 persistent angewandte Änderungen asynchron in einem persistenten Zieldatenbankspeicher zu speichern.The stored program code portions which, when executed, enable the processor 702 to apply - using an application unit 716 - changes to the source database 706 during synchronization to the in-memory target database portion 710 of the database management system having the target database and - for example, through a storage processor 718 - asynchronously save changes applied to the in-memory target database part 712 in a persistent target database storage.

Darüber hinaus ermöglichen die gespeicherten Programmcodeteile, wenn sie ausgeführt werden, dem Prozessor 702 - z.B. durch eine Wiederherstellungseinheit 720 -, nach einem Datenbankabsturz auf dem Zieldatenbanksystem den speicherinternen Zieldatenbankteil 710 mit der in dem persistenten Zieldatenbankspeicherteil 712 verfügbaren aktuellsten Momentaufnahme wiederherzustellen und - z.B. durch eine zweite Anwendungseinheit 722 - nach dem Datenbankabsturz auf dem Zieldatenbanksystem Änderungen aus der Wiederherstellungsprotokolldatei der Quellendatenbank, die einen späteren Zeitstempel als die in dem persistenten Zieldatenbankspeicherteil 712 verfügbare aktuellste Momentaufnahme haben, auf den speicherinternen Zieldatenbankteil 710 anzuwenden.In addition, the stored program code portions, when executed, enable the processor 702 - for example through a recovery unit 720 - to restore the in-memory target database portion 710 with the most current snapshot available in the target database persistent storage portion 712 following a database crash on the target database system and - for example through a second one Application entity 722 - after the database crash on the target database system, apply changes from the recovery log file of the source database that have a later timestamp than the most recent snapshot available in the target database persistent storage portion 712 to the in-memory target database portion 710.

Es sei auch darauf hingewiesen, dass alle Module und Einheiten des verknüpften Datenbanksystems 700 für einen Signal- und/oder Datenaustausch elektrisch miteinander verbunden sein können. Dies kann für den Prozessor 702, den Hauptspeicher 704, das Quellendatenbanksystem 706, das Zieldatenbanksystem 708, das den speicherinternen Teil 710 und den persistenten Teil 712 umfasst, die Synchronisationseinheit 714, die Anwendungseinheit 716, den Speicherprozessor 718, die Wiederherstellungseinheit 720 und die zweite Anwendungseinheit 722 gelten. Anstelle einer 1:1-Verbindung zwischen diesen Modulen und Einheiten können sie auch mit einem internen Bussystem 724 eines verknüpften Datenbanksystems für einen Signalisierungsdatenaustausch verbunden sein.It should also be noted that all modules and units of the linked database system 700 may be electrically connected to one another for signal and/or data exchange. This may be for the processor 702, the main memory 704, the source database system 706, the target database system 708, which includes the in-memory part 710 and the persistent part 712, the synchronization unit 714, the application unit 716, the storage processor 718, the recovery unit 720 and the second application unit 722 apply. Instead of a 1:1 connection between these modules and units, they can also be connected to an internal bus system 724 of a linked database system for signaling data exchange.

Ausführungsformen der Erfindung können zusammen mit praktisch jeder Art von Computer, ungeachtet der zur Speicherung und/oder Ausführung von Programmcode geeigneten Plattform, umgesetzt werden. 8 zeigt als Beispiel ein Datenverarbeitungssystem 800, das zur Ausführung von Programmcode in Bezug auf das vorgeschlagene Verfahren geeignet ist.Embodiments of the invention may be implemented with virtually any type of computer, regardless of the platform suitable for storing and/or executing program code. 8th shows, as an example, a data processing system 800 suitable for executing program code related to the proposed method.

Das Datenverarbeitungssystem 800 ist lediglich ein Beispiel eines geeigneten Computersystems und sollte ungeachtet dessen, ob das Computersystem 800 ausführungsfähig und/oder in der Lage ist, jedwede der vorstehend dargelegten Funktionalität durchzuführen, nicht als Hinweis auf eine Einschränkung hinsichtlich des Nutzungsumfangs oder der Funktionalität von Ausführungsformen der hierin beschriebenen Erfindung verstanden werden. In dem Computersystem 600 gibt es Komponenten, die mit zahlreichen anderen Universal- oder Spezialdatenverarbeitungssystemumgebungen oder - konfigurationen betrieben werden können. Zu Beispielen für hinlänglich bekannte Datenverarbeitungssysteme, -umgebungen und/oder -konfigurationen, die gegebenenfalls zur Verwendung mit dem Computersystem/Server 800 geeignet sind, gehören, ohne darauf beschränkt zu sein, Personal-Computer-Systeme, Server-Computersysteme, Thin Clients, Thick Clients, Handheld- oder Laptop-Einheiten, Mehrprozessorsysteme, auf einem Mikroprozessor beruhende Systeme, Set-Top-Boxen, programmierbare Unterhaltungselektronik, Netzwerk-PCs, Minicomputersysteme, Mainframe-Computersysteme und verteilte Cloud-Computing-Umgebungen, die beliebige der vorstehenden Systeme oder Einheiten umfassen, und dergleichen. Das Computersystem/der Server 800 kann in dem allgemeinen Kontext von durch ein Computersystem ausführbaren Anweisungen, wie zum Beispiel Programmmodulen, die durch ein Computersystem 800 ausgeführt werden, beschrieben werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen und so weiter umfassen, die bestimmte Tasks durchführen oder bestimmte abstrakte Datentypen ausführen. Das Computersystem/der Server 800 kann in verteilten Cloud-Computing-Umgebungen in die Praxis umgesetzt werden, in denen Tasks durch ferne Verarbeitungseinheiten durchgeführt werden, die durch ein Übertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl in lokalen als auch in fernen Speichermedien eines Computersystems, zu denen auch Hauptspeichereinheiten gehören, befinden.The data processing system 800 is merely an example of a suitable computer system and, regardless of whether the computer system 800 is executable and/or capable of performing any of the functionality set forth above, should not be considered as an indication of a limitation on the scope of use or functionality of embodiments of the The invention described herein can be understood. There are components in the computer system 600 that are operable with various other general-purpose or special-purpose computing system environments or configurations. Examples of well-known computing systems, environments and/or configurations that may be suitable for use with the computer system/server 800 include, but are not limited to, personal computer systems, server computer systems, thin clients, thick Clients, handheld or laptop devices, multiprocessor systems, microprocessor-based systems, set-top boxes, programmable consumer electronics, network PCs, minicomputer systems, mainframe computer systems and distributed cloud computing environments, any of the foregoing systems or devices include, and the like. The computer system/server 800 may be described in the general context of computer system-executable instructions, such as program modules executed by a computer system 800. In general, program modules can include routines, programs, objects, components, logic, data structures, and so on that perform specific tasks or execute specific abstract data types. The computer system/server 800 may be practiced in distributed cloud computing environments where tasks are performed by remote processing units connected by a communications network. In a distributed cloud computing environment, program modules can reside in both local and remote storage media of a computer system, including main storage devices.

Wie in der Figur gezeigt ist, ist das Computersystem/der Server 800 in Form einer Universal-Datenverarbeitungseinheit gezeigt. Zu den Komponenten des Computersystems/Servers 800 können, ohne darauf beschränkt zu sein, ein oder mehrere Prozessoren oder Verarbeitungseinheiten 802, ein Systemspeicher 804 und ein Bus 806 gehören, die verschiedene Systemkomponenten, darunter den Systemspeicher 804, mit dem Prozessor 802 verbinden. Der Bus 806 stellt eine oder mehrere von beliebigen Busstrukturen von mehreren Arten von Busstrukturen dar, darunter einen Speicherbus oder einen Speichercontroller, einen peripheren Bus, einen Accelerated Graphics Port und einen Prozessor- oder lokalen Bus, der beliebige einer Vielfalt an Busarchitekturen verwendet. Beispielhaft und nicht einschränkend gehören zu diesen Architekturen ein Industry-Standard-Architecture-(ISA-)Bus, ein Micro-Channel-Architecture-(MCA-)Bus, ein Enhanced-ISA-(EISA-)Bus, ein lokaler Video-Electronics-Standards-Association-(VESA-)Bus und ein Peripheral-Component-Interconnects-(PCI-)Bus. Das Computersystem/der Server 800 umfasst üblicherweise eine Vielfalt an durch ein Computersystem lesbaren Datenträgern. Bei diesen Datenträgern kann es sich um jedwede verfügbaren Datenträger handeln, auf die durch das Computersystem/den Server 800 zugegriffen werden kann, und zu ihnen gehören sowohl flüchtige und nicht flüchtige als auch austauschbare und nicht austauschbare Datenträger.As shown in the figure, the computer system/server 800 is shown in the form of a general purpose data processing unit. The components of the computer system/server 800 may include, but are not limited to, one or more processors or processing units 802, a system memory 804, and a bus 806 that connect various system components, including the system memory 804, to the processor 802. Bus 806 represents one or more of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. By way of example and not by way of limitation, these architectures include: Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a local Video Electronics Standards Association (VESA) bus bus and a Peripheral Component Interconnects (PCI) bus. The computer system/server 800 typically includes a variety of media readable by a computer system. These media may be any available media accessible by the computer system/server 800 and include both volatile and non-volatile media as well as removable and non-removable media.

Der Systemspeicher 804 kann durch ein Computersystem lesbare Datenträger in Form von flüchtigem Speicher, wie beispielsweise einen Direktzugriffsspeicher (RAM) 808 und/oder einen Cache 810, umfassen. Das Computersystem/der Server 800 kann des Weiteren weitere auswechselbare/nicht auswechselbare, flüchtige/nicht flüchtige Speichermedien eines Computersystems umfassen. Lediglich beispielhaft kann ein Speichersystem 812 für das Lesen von und das Schreiben auf einen nicht austauschbaren, nicht flüchtigen Magnetdatenträger (nicht gezeigt und üblicherweise als „Festplattenlaufwerk“ bezeichnet) bereitgestellt werden. Obgleich nicht gezeigt, können ein Magnetplattenlaufwerk für das Lesen von und das Schreiben auf eine austauschbare, nicht flüchtige Magnetplatte (z.B. eine „Diskette“) und ein optisches Plattenlaufwerk für das Lesen von oder das Schreiben auf eine austauschbare, nicht flüchtige optische Platte, wie beispielsweise ein CD-ROM, DVD-ROM oder andere optische Datenträger, bereitgestellt sein. In diesen Fällen kann jedes Laufwerk durch eine oder mehrere Datenträgerschnittstellen mit dem Bus 806 verbunden sein. Wie weiter dargestellt und nachstehend beschrieben wird, kann der Hauptspeicher 804 mindestens ein Programmprodukt umfassen, das über einen Satz (z.B. zumindest einen) von Programmmodulen verfügt, die so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.System memory 804 may include computer system-readable volumes in the form of volatile memory, such as a random access memory (RAM) 808 and/or a cache 810. The computer system/server 800 may further include other removable/non-removable, volatile/non-volatile storage media of a computer system. By way of example only, a storage system 812 may be provided for reading from and writing to a non-removable, non-volatile magnetic media (not shown and commonly referred to as a “hard disk drive”). Although not shown, a magnetic disk drive for reading from and writing to a removable, non-volatile magnetic disk (e.g., a "floppy disk") and an optical disk drive for reading from or writing to a removable, non-volatile optical disk, such as a CD-ROM, DVD-ROM or other optical data carrier. In these cases, each drive may be connected to bus 806 through one or more disk interfaces. As further illustrated and described below, main memory 804 may include at least one program product that has a set (e.g., at least one) of program modules configured to perform the functions of embodiments of the invention.

Das Programm/Dienstprogramm, das über einen Satz (zumindest einen) von Programmmodulen 816 verfügt, kann beispielhaft, und nicht als Einschränkung, im Hauptspeicher 804 gespeichert sein, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten. Die Betriebssysteme, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten oder eine Kombination daraus können jeweils eine Ausführung einer Netzwerkumgebung umfassen. Die Programmmodule 816 führen im Allgemeinen die Funktionen und/oder die Vorgehensweisen von Ausführungsformen der Erfindung aus, die hierin beschrieben sind.By way of example, and not limitation, the program/utility having a set (at least one) of program modules 816 may be stored in main memory 804, as well as an operating system, one or more application programs, other program modules, and program data. The operating systems, one or more application programs, other program modules and program data, or a combination thereof, may each comprise an execution of a network environment. The program modules 816 generally perform the functions and/or procedures of embodiments of the invention described herein.

Das Computersystem/der Server 800 kann auch mit einer oder mehreren externen Einheiten 818 wie beispielsweise einer Tastatur, einer Zeigereinheit, einem Bildschirm 820 usw.; mit einer oder mehreren Einheiten, die es einem Benutzer ermöglicht/ermöglichen, mit dem Computersystem/Server 800 zu interagieren; und/oder beliebigen Einheiten (z.B. Netzwerkkarte, Modem usw.), die dem Computersystem/Server 800 einen Datenaustausch mit einer oder mehreren anderen Datenverarbeitungseinheiten ermöglichen, Daten austauschen. Ein solcher Datenaustausch kann über Eingabe-/Ausgabe-(E/A-)Schnittstellen 814 erfolgen. Dennoch kann das Computersystem/der Server 800 mit einem oder mehreren Netzwerken wie zum Beispiel einem lokalen Netz (LAN), einem allgemeinen Weitverkehrsnetz (WAN) und/oder einem öffentlichen Netz (z.B. dem Internet) über einen Netzwerkadapter 822 Daten austauschen. Wie dargestellt ist, kann der Netzwerkadapter 822 mit den anderen Komponenten des Computersystems/Servers 800 über den Bus 806 Daten austauschen. Es sollte klar sein, dass auch andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem/Server 800 verwendet werden könnten, obgleich diese nicht gezeigt sind. Zu Beispielen gehören, ohne darauf beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Anordnungen von Plattenlaufwerken, RAID-Systeme, Bandlaufwerke sowie Speichersysteme zur Datenarchivierung usw.The computer system/server 800 may also be equipped with one or more external devices 818 such as a keyboard, a pointing device, a monitor 820, etc.; with one or more devices that enable a user to interact with the computer system/server 800; and/or any units (e.g. network card, modem, etc.) that enable the computer system/server 800 to exchange data with one or more other data processing units. Such data exchange can occur via input/output (I/O) interfaces 814. However, the computer system/server 800 may communicate with one or more networks such as a local area network (LAN), a general wide area network (WAN), and/or a public network (e.g., the Internet) via a network adapter 822. As shown, the network adapter 822 may communicate with the other components of the computer system/server 800 via the bus 806. It should be understood that other hardware and/or software components could also be used in connection with the computer system/server 800, although these are not shown. Examples include, but are not limited to: microcode, device drivers, redundant processing units, external disk drive arrays, RAID systems, tape drives, and data archiving storage systems, etc.

Zudem kann das verknüpfte Datenbanksystem 700 mit Wiederherstellung nach einem Absturz für verknüpfte Datenbanken an das Bussystem 806 angeschlossen sein.Additionally, the linked database system 700 may be connected to the bus system 806 with crash recovery for linked databases.

Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung erfolgten zum Zweck der Veranschaulichung, sie sollen jedoch nicht erschöpfend oder auf die offenbarten Ausführungsformen beschränkt sein. Viele Modifikationen und Varianten sind für den Fachmann erkennbar, ohne vom Umfang der beschriebenen Ausführungsformen abzuweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder technische Verbesserung gegenüber auf dem Markt befindlichen Technologien am besten zu erklären bzw. um anderen Fachleuten das Verständnis der hierin offenbarten Ausführungsformen zu ermöglichen.The descriptions of the various embodiments of the present invention have been presented for purposes of illustration, but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variants will be apparent to those skilled in the art without departing from the scope of the described embodiments. The terminology used herein has been chosen to best explain the principles of the embodiments, practical application, or technical improvement over marketed technologies, or to enable others skilled in the art to understand the embodiments disclosed herein.

Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) mit durch einen Computer lesbaren Programmanweisungen darauf umfassen, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.The present invention may be a system, a method and/or a computer program product. The computer program product may include a computer readable storage medium (or media) having computer readable program instructions thereon for use by a processor to carry out aspects of the present invention.

Bei dem Medium kann es sich um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder ein Halbleitersystem für ein Weitergabemedium handeln. Zu Beispielen für einen durch einen Computer lesbaren Datenträger können ein Halbleiter- oder Solid-State-Speicher, ein Magnetband, eine austauschbare Computerdiskette, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), eine magnetische Festplatte und eine optische Platte gehören. Zu aktuellen Beispielen für optische Platten gehören ein Compact-Disk-Nur-Lese-Speicher (CD-ROM), eine CD-RW, eine digitale Videoplatte (DVD) und eine Blu-Ray-Disk.The medium may be an electronic, magnetic, optical, electromagnetic, infrared or a semiconductor system for a distribution medium. Examples of a computer-readable medium include a semiconductor or solid-state memory, a magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a magnetic hard disk, and an optical disk belong. Current examples of optical disks include a compact disk read-only memory (CD-ROM), a CD-RW, a digital video disk (DVD), and a Blu-Ray disk.

Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die folgenden: eine auswechselbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein auswechselbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. Lichtwellenleiterkabel durchlaufende Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.The computer readable storage medium may be a physical device that can retain and store instructions for use by an instruction execution system. The computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination thereof. A non-exhaustive list of more specific examples of computer-readable storage media include the following: a removable computer diskette, a hard drive, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), a static random access memory (SRAM), a removable compact disk read-only memory (CD-ROM), a DVD (digital versatile disc), a memory stick, a floppy disk, a mechanically coded device such as for example, punch cards or raised structures in a groove on which instructions are stored, and any suitable combination thereof. A computer-readable storage medium, as used herein, is not intended to be construed as transient signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., light pulses passing through an optical fiber cable). ) or electrical signals transmitted through a wire.

Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.Computer-readable program instructions described herein may be transferred from a computer-readable storage medium to respective computing/processing devices or via a network such as the Internet, a local area network, a wide area network, and/or a wireless network to an external computer or device external storage device can be downloaded. The network may include copper transmission cables, fiber optic transmission cables, wireless transmission, routing computers, firewalls, switches, gateway computers and/or edge servers. A network adapter card or network interface in each computing/processing unit receives computer-readable program instructions from the network and forwards the computer-readable program instructions for storage in a computer-readable storage medium within the corresponding computing/processing unit.

Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch einen beliebigen Typ Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel durch das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, vor Ort programmierbare Gatter-Anordnungen (FPGA, field-programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.Computer readable program instructions for carrying out operations of the present invention may be assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state setting data, or either source code or object code which are written in any combination of one or more programming languages, including object-oriented programming languages such as Smalltalk, C++ or similar, as well as traditional procedural programming languages such as the “C” programming language or similar programming languages. The computer-readable program instructions may be executed entirely on the user's computer, partially on the user's computer, as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on the remote computer or server. In the latter case, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet service provider). In some embodiments, electronic circuits, including, for example, programmable logic circuits, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA), may execute the computer-readable program instructions by reading state information of the use computer-readable program instructions to personalize the electronic circuits to carry out aspects of the present invention.

Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbarer Programmanweisungen ausgeführt werden können.Aspects of the present invention are described herein with reference to flowcharts and/or block diagrams of methods, devices (systems) and computer programs products according to embodiments of the invention are described. It is noted that each block of the flowcharts and/or the block diagrams or diagrams, as well as combinations of blocks in the flowcharts and/or the block diagrams or diagrams, can be executed using computer-readable program instructions.

Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.These computer-readable program instructions may be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing device to produce a machine so that the instructions executed via the processor of the computer or other programmable data processing device provide a means for implementing the in Generate functions/steps defined in the block or blocks of the flowcharts and/or the block diagrams or diagrams. These computer-readable program instructions may also be stored on a computer-readable storage medium that can control a computer, a programmable data processing device, and/or other devices to function in a particular manner, such that the computer-readable storage medium , on which instructions are stored, a product of manufacture, including instructions which implement aspects of the function/step specified in the block or blocks of the flowchart and/or the block diagrams or diagrams.

Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, anderen programmierbaren Vorrichtungen oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.The computer-readable program instructions may also be loaded onto a computer, other programmable data processing device, or other device to cause a series of process steps to be executed on the computer, other programmable device, or other device to be executed on a computer Process so that the instructions executed on the computer, other programmable device or other device implement the functions/steps defined in the block or blocks of the flowcharts and / or the block diagrams or diagrams.

Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in dem Ablaufplan oder in den Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, das bzw. der eine oder mehrere ausführbare Anweisungen zur Ausführung der festgelegten logischen Funktion(en) aufweist. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit weitgehend gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder den festgelegten Schritt durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.The flowcharts and block diagrams in the figures illustrate the architecture, functionality and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this context, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions that includes one or more executable instructions for performing the specified logical function(s). In some alternative embodiments, the functions specified in the block may occur in a different order than shown in the figures. For example, two blocks shown one after the other may in reality be executed largely simultaneously, or the blocks may sometimes be executed in reverse order depending on the relevant functionality. It should also be noted that each block of the block diagrams and/or the flowcharts, as well as combinations of blocks in the block diagrams or diagrams and/or the flowcharts, can be implemented by special hardware-based systems that implement the specified functions or the specified Perform step, or execute combinations of specialized hardware and computer instructions.

Die hierin verwendete Terminologie dient lediglich dazu, bestimmte Ausführungsformen zu beschreiben, und ist nicht als Einschränkung der Erfindung zu verstehen. In der Verwendung hierin sollen die Singular-Formen „ein“, „eine“ und „der“, „die“, „das“ auch die Pluralformen umfassen, sofern der Kontext nicht eindeutig etwas anderes angibt. Es wird des Weiteren darauf hingewiesen, dass die Begriffe „aufweist“ und/oder „aufweisend“, wenn sie in dieser Beschreibung verwendet werden, das Vorhandensein von angegebenen Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen und/oder Komponenten bezeichnen, das Vorhandensein oder das Hinzufügen von einem oder mehreren anderen/weiteren Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen davon jedoch nicht ausschließen.The terminology used herein is intended solely to describe certain embodiments and is not to be construed as limiting the invention. As used herein, the singular forms "a", "an" and "the", "the", "the" shall also include the plural forms unless the context clearly indicates otherwise. It is further noted that the terms “comprising” and/or “comprising” when used in this specification denote the presence of specified features, integers, steps, operations, elements and/or components or but does not exclude the addition of one or more other/further features, integers, steps, operations, elements, components and/or groups thereof.

Die entsprechenden Strukturen, Materialien, Vorgänge und Äquivalente von allen Mitteln oder Schritten plus Funktionselementen in den nachstehenden Ansprüchen sollen jedwede Struktur, jedwedes Material oder jedweden Vorgang zur Durchführung der Funktion in Kombination mit anderen beanspruchten Elementen, wie sie im Einzelnen beansprucht sind, umfassen. Die Beschreibung der vorliegenden Erfindung erfolgte zum Zweck der Veranschaulichung und Erläuterung, sie soll jedoch nicht erschöpfend oder auf die Erfindung in der offenbarten Form beschränkt sein. Viele Modifikationen und Varianten sind für den Fachmann erkennbar, ohne vom Umfang der Erfindung abzuweichen. Die Ausführungsformen sind gewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung bestmöglich zu erklären und um anderen Fachleuten das Verständnis der Erfindung hinsichtlich verschiedener Ausführungsformen mit verschiedenen Änderungen, wie sie für die jeweilige vorgesehene Verwendung geeignet sind, zu ermöglichen.The corresponding structures, materials, operations and equivalents of any means or steps plus functional elements in the following claims are intended to include any structure, material or operation for performing the function in combination with other claimed elements as specifically claimed. The description of the present invention has been made for purposes of illustration and explanation, but is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of the invention. The embodiments are chosen and described in order to best explain the principles of the invention and its practical application and to enable others skilled in the art to understand the invention in terms of various embodiments with various modifications as may be applicable to each intended use.

In aller Kürze kann das erfindungsgemäße Konzept in den folgenden Ausführungsformen zusammengefasst werden:

  • 1. Durch einen Computer ausgeführtes Verfahren zur Wiederherstellung nach einem Absturz für verknüpfte Datenbanken, wobei die verknüpften Datenbanken eine Quellendatenbank und eine zugehörige Zieldatenbank aufweisen, wobei ausgewählte, an ein Datenbankverwaltungssystem gerichtete Abfragen, welches die Quellendatenbank aufweist, zur Verarbeitung an ein Datenbankverwaltungssystem übertragen werden, das die Zieldatenbank aufweist, wobei das Verfahren umfasst
    • - Synchronisieren von ausgewählten Teilen vom Inhalt von Tabellen der Quellendatenbank mit jeweiligen Teilen vom Inhalt von Tabellen der Zieldatenbank,
    • - Anwenden, während des Synchronisierens, von Änderungen an der Quellendatenbank auf einen speicherinternen Zieldatenbankteil des Datenbankverwaltungssystems, das die Zieldatenbank aufweist, und
    • - asynchrones Speichern von persistent angewandten Änderungen an dem speicherinternen Zieldatenbankteil in einem persistenten Zieldatenbankspeicher,
    • - Wiederherstellen, nach einem Datenbankabsturz auf dem Zieldatenbanksystem, des speicherinternen Zieldatenbankteils mit der in dem persistenten Zieldatenbankspeicher verfügbaren aktuellsten Momentaufnahme und
    • - Anwenden, nach dem Datenbankabsturz auf dem Zieldatenbanksystem, von Änderungen aus der Wiederherstellungsprotokolldatei der Quellendatenbank, die einen späteren Zeitstempel als die in dem persistenten Zieldatenbankspeicher verfügbare aktuellste Momentaufnahme haben, auf den speicherinternen Zieldatenbankteil.
  • 2. Verfahren nach Ausführungsform 1, wobei das Synchronisieren aufweist:
    • - Lesen von Einträgen einer Wiederherstellungsprotokolldatei, die sich auf die Quellendatenbank bezieht, und Anwenden der gelesenen Einträge auf die Zieldatenbank.
  • 3. Verfahren nach Ausführungsform 1 oder 2, wobei die Quellendatenbank für Transaktionen optimiert und/oder wobei die Quellendatenbank ein zeilenorientiertes relationales Datenbankverwaltungssystem ist.
  • 4. Verfahren nach einer der vorhergehenden Ausführungsformen, wobei die Zieldatenbank für Analyseoperationen optimiert und/oder die Zieldatenbank eine spaltenorientierte Datenbank ist.
  • 5. Verfahren nach einer der vorhergehenden Ausführungsformen, das auch umfasst
    • - Verzögern, im Falle eines Absturzes der Zieldatenbank, von Abfragen an die Zieldatenbank, bis eine Wiederherstellung der Zieldatenbank beendet ist.
  • 6. Verfahren nach einer der vorhergehenden Ausführungsformen, wobei Metadaten, welche die ausgewählten Tabellen definieren, Teil der Wiederherstellungsprotokolldatei sind.
  • 7. Verfahren nach einem der vorhergehenden Ausführungsformen, wobei das Speichern von persistent angewandten Änderungen aufweist
    • - Warten, bis eine vorher festgelegte Anzahl von Änderungen in dem speicherinternen Zieldatenbankteil abgeschlossen wurde.
  • 8. Verfahren nach einer der vorstehenden Ausführungsformen, wobei das Wiederherstellen von Tabellen des speicherinternen Zieldatenbankteils ein Priorisieren des Wiederherstellens gemäß einer Option aufweist, die aus der aus einer Datennutzung, einer Abfragepriorität und einer Datenpriorität bestehenden Gruppe ausgewählt wird.
  • 9. Verfahren nach Ausführungsform 8, wobei das Priorisieren der Wiederherstellung gemäß der Datennutzung aufweist
    • - Verwalten eines Zählers für jede Tabelle in der Zieldatenbank, wobei der Zählerwert des Zählers anzeigt, wie viele Abfragen auf die zugehörige Tabelle warten, und
    • - zunächst erfolgendes Wiederherstellen der Datenbanktabelle mit dem höchsten Zählerwert zuerst.
  • 10. Verfahren nach Ausführungsform 8 oder 9, wobei das Priorisieren der Wiederherstellung gemäß der Abfragepriorität aufweist
    • - zunächst erfolgendes Wiederherstellen der Datenbanktabellen, die Abfragen mit der höchsten Priorität empfangen.
  • 11. Verfahren nach einer der Ausführungsformen 8 bis 10, wobei das Priorisieren der Wiederherstellung gemäß der Datenpriorität aufweist
    • - Verwalten von zwei Gruppen von Datenbanktabellen, wobei sich jede Gruppe auf eine einzelne Gruppe von Benutzern bezieht, und
    • - zunächst erfolgendes Wiederherstellen der Datenbanktabellen der Gruppe, die eine höher konfigurierte Gruppenpriorität hat.
  • 12. Verfahren nach einer der vorhergehenden Ausführungsformen, das auch umfasst
    • - Ermitteln des Datenvolumens, das für eine nächste wiederherzustellende Tabelle wiederhergestellt werden soll,
    • - Wiederherstellen der Tabelle unter Verwendung einer Wiederherstellungsstrategie in Abhängigkeit von dem wiederherzustellenden Volumen, wobei die Wiederherstellungsstrategie eine inkrementelle Aktualisierungsstrategie oder eine Strategie zum Aktualisieren von Massendaten ist.
  • 13. Verknüpftes Datenbanksystem mit Wiederherstellung nach einem Absturz für verknüpfte Datenbanken, wobei die verknüpften Datenbanken eine Quellendatenbank und eine zugehörige Zieldatenbank aufweisen, wobei ausgewählte Teile vom Inhalt von Tabellen der Quellendatenbank mit jeweiligen Teilen des Inhalts der Tabellen der Zieldatenbank synchronisiert werden, wobei das verknüpfte Datenbanksystem aufweist
    • - einen Prozessor und einen per Datenaustausch mit dem Prozessor verbundenen Hauptspeicher, wobei der Hauptspeicher Programmcodeteile speichert, die, wenn sie ausgeführt werden, dem Prozessor ermöglichen,
    • - ausgewählte Teile des Inhalts der Tabellen der Quellendatenbank mit jeweiligen Teilen des Inhalts von Tabellen der Zieldatenbank zu synchronisieren,
    • - während des Synchronisierens Änderungen an der Quellendatenbank auf einen speicherinternen Zieldatenbankteil des Datenbankverwaltungssystems, das die Zieldatenbank aufweist, anzuwenden und
    • - persistent angewandte Änderungen an dem speicherinternen Zieldatenbankteil asynchron in einem persistenten Zieldatenbankspeicher zu speichern,
    • - nach einem Datenbankabsturz auf dem Zieldatenbanksystem den speicherinternen Zieldatenbankteil mit der in dem persistenten Zieldatenbankspeicher verfügbaren aktuellsten Momentaufnahme wiederherzustellen und
    • - nach dem Datenbankabsturz auf dem Zieldatenbanksystem Änderungen aus der Wiederherstellungsprotokolldatei der Quellendatenbank, die einen späteren Zeitstempel als die in dem persistenten Zieldatenbankspeicher verfügbare aktuellste Momentaufnahme haben, auf den speicherinternen Zieldatenbankteil anzuwenden.
  • 14. Verknüpftes Datenbanksystem nach Ausführungsform 13, wobei die Programmcodeteile dem Prozessor auch ermöglichen,
    • - die Einträge einer Wiederherstellungsprotokolldatei, die sich auf die Quellendatenbank bezieht, für das Synchronisieren zu lesen und die gelesenen Einträge auf die Zieldatenbank anzuwenden.
  • 15. Verknüpftes Datenbanksystem nach Ausführungsform 13 oder 14, wobei die Quellendatenbank für Transaktionen optimiert und/oder wobei die Quellendatenbank ein zeilenorientiertes relationales Datenbankverwaltungssystem ist.
  • 16. Verknüpftes Datenbanksystem nach einer der Ausführungsformen 13 bis 15, wobei die Zieldatenbank für Analyseoperationen optimiert und/oder die Zieldatenbank eine spaltenorientierte Datenbank ist.
  • 17. Verknüpftes Datenbanksystem nach einer der Ausführungsformen 13 bis 16, wobei die Programmcodeteile dem Prozessor auch ermöglichen,
    • - im Falle eines Absturzes der Zieldatenbank Abfragen an die Zieldatenbank zu verzögern, bis eine Wiederherstellung der Zieldatenbank beendet ist.
  • 18. Verknüpftes Datenbanksystem nach einer der Ausführungsformen 13 bis 17, wobei Metadaten, welche die ausgewählten Tabellen definieren, Teil der Wiederherstellungsprotokolldatei sind.
  • 19. Verknüpftes Datenbanksystem nach einer der Ausführungsformen 13 bis 18, wobei die Programmcodeteile dem Prozessor auch ermöglichen,
    • - auf das Speichern von persistent angewandten Änderungen zu warten, bis eine vorher festgelegte Anzahl von Änderungen in dem speicherinternen Zieldatenbankteil abgeschlossen wurde.
  • 20. Verknüpftes Datenbanksystem nach einer der Ausführungsformen 13 bis 19, wobei das Wiederherstellen von Tabellen des speicherinternen Zieldatenbankteils ein Priorisieren des Wiederherstellens gemäß einer Option aufweist, die aus der aus einer Datennutzung, einer Abfragepriorität und einer Datenpriorität bestehenden Gruppe ausgewählt wird.
  • 21. Verknüpftes Datenbanksystem nach Ausführungsform 21, wobei die Programmcodeteile dem Prozessor für das Priorisieren der Wiederherstellung gemäß der Datennutzung auch ermöglichen,
    • - einen Zähler für jede Tabelle in der Zieldatenbank zu verwalten, wobei der Zählerwert des Zählers anzeigt, wie viele Abfragen auf die zugehörige Tabelle warten, und
    • - zunächst die Datenbanktabelle mit dem höchsten Zählerwert zuerst wiederherzustellen.
  • 22. Verknüpftes Datenbanksystem nach Ausführungsform 20 oder 21, wobei die Programmcodeteile dem Prozessor für das Priorisieren der Wiederherstellung gemäß der Abfragepriorität auch ermöglichen,
    • - zunächst die Datenbanktabellen wiederherzustellen, die Abfragen mit der höchsten Priorität empfangen.
  • 23. Verknüpftes Datenbanksystem nach einer der Ausführungsformen 20 bis 22, wobei die Programmcodeteile dem Prozessor für das Priorisieren der Wiederherstellung gemäß der Datenpriorität auch ermöglichen,
    • - zwei Gruppen von Datenbanktabellen zu verwalten, wobei sich jede Gruppe auf eine einzelne Gruppe von Benutzern bezieht, und
    • - zunächst die Datenbanktabellen der Gruppe wiederherzustellen, die eine höher konfigurierte Gruppenpriorität hat.
  • 24. Verknüpftes Datenbanksystem nach einer der Ausführungsformen 13 bis 15, wobei die Programmcodeteile dem Prozessor auch ermöglichen,
    • - das Datenvolumen zu ermitteln, das für eine nächste wiederherzustellende Tabelle wiederhergestellt werden soll,
    • - die Tabelle unter Verwendung einer Wiederherstellungsstrategie in Abhängigkeit von dem wiederherzustellenden Volumen wiederherzustellen, wobei die Wiederherstellungsstrategie eine inkrementelle Aktualisierungsstrategie oder eine Strategie zum Aktualisieren von Massendaten ist.
  • 25. Computerprogrammprodukt für ein verknüpftes Datenbanksystem mit Wiederherstellung nach einem Absturz für verknüpfte Datenbanken, wobei die verknüpften Datenbanken eine Quellendatenbank und eine zugehörige Zieldatenbank aufweisen, wobei ausgewählte Teile vom Inhalt von Tabellen der Quellendatenbank mit jeweiligen Teilen des Inhalts von Tabellen der Zieldatenbank synchronisiert werden, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium mit damit verkörperten Programmanweisungen aufweist, wobei die Programmanweisungen durch ein oder mehrere Datenverarbeitungssysteme oder Controller ausführbar sind, um das eine oder die mehreren Datenverarbeitungssysteme dazu zu veranlassen,
    • - einen Prozessor und einen per Datenaustausch mit dem Prozessor verbundenen Hauptspeicher, wobei der Hauptspeicher Programmcodeteile speichert, die, wenn sie ausgeführt werden, dem Prozessor ermöglichen,
    • - ausgewählte Teile vom Inhalt von Tabellen der Quellendatenbank mit jeweiligen Teilen vom Inhalt von Tabellen der Zieldatenbank zu synchronisieren,
    • - während des Synchronisierens Änderungen an der Quellendatenbank auf einen speicherinternen Zieldatenbankteil des Datenbankverwaltungssystems, das die Zieldatenbank aufweist, anzuwenden und
    • - persistent angewandte Änderungen an dem speicherinternen Zieldatenbankteil asynchron in einem persistenten Zieldatenbankspeicher zu speichern,
    • - nach einem Datenbankabsturz auf dem Zieldatenbanksystem den speicherinternen Zieldatenbankteil mit der in dem persistenten Zieldatenbankspeicher verfügbaren aktuellsten Momentaufnahme wiederherzustellen und
    • - nach dem Datenbankabsturz auf dem Zieldatenbanksystem Änderungen aus der Wiederherstellungsprotokolldatei der Quellendatenbank, die einen späteren Zeitstempel als die in dem persistenten Zieldatenbankspeicher verfügbare aktuellste Momentaufnahme haben, auf den speicherinternen Zieldatenbankteil anzuwenden.
In brief, the concept according to the invention can be summarized in the following embodiments:
  • 1. A computer-implemented crash recovery method for linked databases, the linked databases comprising a source database and an associated target database, wherein selected queries directed to a database management system comprising the source database are transmitted to a database management system for processing, which the target database has, the method comprising
    • - synchronizing selected parts of the contents of tables in the source database with respective parts of the contents of tables in the target database,
    • - Apply, during synchronization, changes to the source database to an in-memory target database portion of the database management system having the target database, and
    • - asynchronously storing persistently applied changes to the in-memory target database part in a persistent target database store,
    • - Restore, after a database crash on the target database system, the in-memory target database portion with the most recent snapshot available in the target database persistent storage and
    • - Apply, after the database crash on the target database system, to the in-memory target database portion changes from the source database recovery log file that have a later timestamp than the most recent snapshot available in the target database persistent storage.
  • 2. Method according to embodiment 1, wherein synchronizing comprises:
    • - Reading entries from a recovery log file related to the source database and applying the read entries to the target database.
  • 3. The method according to embodiment 1 or 2, wherein the source database is optimized for transactions and/or wherein the source database is a row-oriented relational database management system.
  • 4. Method according to one of the preceding embodiments, wherein the target database is optimized for analysis operations and/or the target database is a column-oriented database.
  • 5. Method according to one of the preceding embodiments, which also includes
    • - In the event of a target database crash, delay queries to the target database until a target database recovery is complete.
  • 6. The method according to any one of the preceding embodiments, wherein metadata defining the selected tables is part of the recovery log file.
  • 7. Method according to one of the preceding embodiments, wherein saving persistently applied changes
    • - Wait for a predetermined number of changes to be completed in the in-memory target database part.
  • 8. The method of any of the preceding embodiments, wherein restoring tables of the in-memory target database portion includes prioritizing the restoring according to an option selected from the group consisting of data usage, query priority, and data priority.
  • 9. The method of embodiment 8, comprising prioritizing recovery according to data usage
    • - Maintain a counter for each table in the target database, where the counter value of the counter shows how many queries are waiting on the associated table, and
    • - restoring the database table with the highest counter value first.
  • 10. The method of embodiment 8 or 9, wherein prioritizing recovery according to query priority
    • - first restoring the database tables that receive queries with the highest priority.
  • 11. The method of any of embodiments 8 to 10, comprising prioritizing recovery according to data priority
    • - Manage two groups of database tables, each group relating to a single group of users, and
    • - first restoring the database tables of the group that has a higher configured group priority.
  • 12. Method according to one of the preceding embodiments, also comprising
    • - Determine the volume of data to be restored for a next table to be restored,
    • - Restore the table using a recovery strategy depending on the volume to be restored, where the recovery strategy is an incremental update strategy or a bulk data update strategy.
  • 13. A linked database system with crash recovery for linked databases, the linked databases comprising a source database and an associated target database, wherein selected portions of the contents of tables of the source database are synchronized with respective portions of the contents of the tables of the target database, the linked database system having
    • - a processor and a main memory connected to the processor via data exchange, the main memory storing parts of program code which, when executed, enable the processor to
    • - synchronize selected parts of the content of the tables of the source database with respective parts of the content of tables of the target database,
    • - during synchronization, apply changes to the source database to an in-memory target database portion of the database management system having the target database and
    • - save persistently applied changes to the in-memory target database part asynchronously in a persistent target database storage,
    • - after a database crash on the target database system, restore the in-memory target database portion with the most recent snapshot available in the target database persistent storage and
    • - After the database crash on the target database system, apply changes from the recovery log file of the source database that have a later timestamp than the most recent snapshot available in the target database persistent storage to the in-memory target database part.
  • 14. Linked database system according to embodiment 13, wherein the program code parts also enable the processor to
    • - read the entries of a recovery log file related to the source database for synchronization and apply the read entries to the target database.
  • 15. The linked database system of embodiment 13 or 14, wherein the source database is optimized for transactions and/or wherein the source database is a row-oriented relational database management system.
  • 16. Linked database system according to one of embodiments 13 to 15, wherein the target database is optimized for analysis operations and/or the target database is a column-oriented database.
  • 17. Linked database system according to one of embodiments 13 to 16, wherein the program code parts also enable the processor to
    • - In the event of a crash of the target database, to delay queries to the target database until a recovery of the target database has been completed.
  • 18. A linked database system according to any one of embodiments 13 to 17, wherein metadata defining the selected tables is part of the recovery log file.
  • 19. Linked database system according to one of embodiments 13 to 18, wherein the program code parts also enable the processor to
    • - wait to save persistently applied changes until a predetermined number of changes have been completed in the in-memory target database part.
  • 20. The linked database system of any one of embodiments 13 to 19, wherein restoring tables of the in-memory target database portion includes prioritizing the restoring according to an option selected from the group consisting of data usage, query priority, and data priority.
  • 21. Linked database system according to embodiment 21, wherein the program code parts are assigned to the processor for prioritizing the data also enable production according to data usage,
    • - maintain a counter for each table in the target database, where the counter value of the counter indicates how many queries are waiting on the associated table, and
    • - first restore the database table with the highest counter value first.
  • 22. A linked database system according to embodiment 20 or 21, wherein the program code portions also enable the processor to prioritize recovery according to query priority,
    • - first restore the database tables that receive queries with the highest priority.
  • 23. An associated database system according to any one of embodiments 20 to 22, wherein the program code portions also enable the processor to prioritize recovery according to data priority,
    • - manage two groups of database tables, each group relating to a single group of users, and
    • - first restore the database tables of the group that has a higher configured group priority.
  • 24. Linked database system according to one of embodiments 13 to 15, wherein the program code parts also enable the processor to
    • - determine the volume of data to be restored for a next table to be restored,
    • - restore the table using a recovery strategy depending on the volume to be restored, wherein the recovery strategy is an incremental update strategy or a bulk data update strategy.
  • 25. Computer program product for a linked database system with crash recovery for linked databases, the linked databases comprising a source database and an associated target database, wherein selected portions of the contents of tables of the source database are synchronized with respective portions of the contents of tables of the target database, wherein the computer program product has a computer-readable storage medium with program instructions embodied therein, the program instructions being executable by one or more data processing systems or controllers in order to cause the one or more data processing systems to do so,
    • - a processor and a main memory connected to the processor via data exchange, the main memory storing parts of program code which, when executed, enable the processor to
    • - synchronize selected parts of the contents of tables in the source database with respective parts of the contents of tables in the target database,
    • - during synchronization, apply changes to the source database to an in-memory target database portion of the database management system having the target database and
    • - save persistently applied changes to the in-memory target database part asynchronously in a persistent target database storage,
    • - after a database crash on the target database system, restore the in-memory target database portion with the most recent snapshot available in the target database persistent storage and
    • - After the database crash on the target database system, apply changes from the recovery log file of the source database that have a later timestamp than the most recent snapshot available in the target database persistent storage to the in-memory target database part.

Claims (25)

Durch einen Computer ausgeführtes Verfahren zur Wiederherstellung nach einem Absturz für verknüpfte Datenbanken, wobei die verknüpften Datenbanken eine Quellendatenbank und eine zugehörige Zieldatenbank aufweisen, wobei ausgewählte, an ein Datenbankverwaltungssystem gerichtete Abfragen, welches die Quellendatenbank aufweist, zur Verarbeitung an ein Datenbankverwaltungssystem übertragen werden, das die Zieldatenbank aufweist, wobei das Verfahren umfasst: Synchronisieren von ausgewählten Teilen vom Inhalt von Tabellen der Quellendatenbank mit jeweiligen Teilen vom Inhalt von Tabellen der Zieldatenbank; Anwenden, während des Synchronisierens, von Änderungen an der Quellendatenbank auf einen speicherinternen Zieldatenbankteil des Datenbankverwaltungssystems, das die Zieldatenbank aufweist; asynchrones Speichern von persistent angewandten Änderungen an dem speicherinternen Zieldatenbankteil in einem persistenten Zieldatenbankspeicher; Wiederherstellen, nach einem Datenbankabsturz auf dem Zieldatenbanksystem, des speicherinternen Zieldatenbankteils mit der in dem persistenten Zieldatenbankspeicher verfügbaren aktuellsten Momentaufnahme; und Anwenden, nach dem Datenbankabsturz auf dem Zieldatenbanksystem, von Änderungen aus der Wiederherstellungsprotokolldatei der Quellendatenbank, die einen späteren Zeitstempel als die in dem persistenten Zieldatenbankspeicher verfügbare aktuellste Momentaufnahme haben, auf den speicherinternen Zieldatenbankteil.A computer-implemented crash recovery method for linked databases, the linked databases comprising a source database and an associated target database, wherein selected queries directed to a database management system comprising the source database are transmitted for processing to a database management system comprising the target database, the method comprising: synchronizing selected portions of the contents of tables of the source database with respective portions of the contents of tables of the target database; Apply, during synchronization, changes to the source database to an in-memory target database portion of the database management system that has the target database; asynchronously storing persistently applied changes to the in-memory target database portion in a persistent target database store; After a database crash on the target database system, recovering the in-memory target database portion with the most recent snapshot available in the target database persistent storage; and applying, after the database crash on the target database system, to the in-memory target database portion changes from the recovery log file of the source database that have a later timestamp than the most recent snapshot available in the target database persistent storage. Verfahren nach Anspruch 1, wobei das Synchronisieren aufweist: Lesen von Einträgen einer Wiederherstellungsprotokolldatei, die sich auf die Quellendatenbank bezieht, und Anwenden der gelesenen Einträge auf die Zieldatenbank.Procedure according to Claim 1 , wherein synchronizing comprises: reading entries of a recovery log file related to the source database and applying the read entries to the target database. Verfahren nach Anspruch 1, wobei die Quellendatenbank für Transaktionen optimiert oder wobei die Quellendatenbank ein zeilenorientiertes relationales Datenbankverwaltungssystem ist.Procedure according to Claim 1 , where the source database is optimized for transactions or where the source database is a row-oriented relational database management system. Verfahren nach Anspruch 1, wobei die Zieldatenbank für Analyseoperationen optimiert oder die Zieldatenbank eine spaltenorientierte Datenbank ist.Procedure according to Claim 1 , where the target database is optimized for analysis operations or the target database is a column-oriented database. Verfahren nach Anspruch 1, das auch umfasst: Verzögern, im Falle eines Absturzes der Zieldatenbank, von Abfragen an die Zieldatenbank, bis eine Wiederherstellung der Zieldatenbank beendet ist.Procedure according to Claim 1 , which also includes: In the event of a target database crash, delaying queries to the target database until a recovery of the target database is complete. Verfahren nach Anspruch 1, wobei Metadaten, welche die ausgewählten Tabellen definieren, Teil der Wiederherstellungsprotokolldatei sind.Procedure according to Claim 1 , where metadata defining the selected tables is part of the recovery log file. Verfahren nach Anspruch 1, wobei das Speichern von persistent angewandten Änderungen aufweist: Warten, bis eine vorher festgelegte Anzahl von Änderungen in dem speicherinternen Zieldatenbankteil abgeschlossen wurde.Procedure according to Claim 1 , where saving persistently applied changes comprises: waiting until a predetermined number of changes have completed in the in-memory target database part. Verfahren nach Anspruch 1, wobei das Wiederherstellen von Tabellen des speicherinternen Zieldatenbankteils ein Priorisieren des Wiederherstellens gemäß einer Option aufweist, die aus der aus einer Datennutzung, einer Abfragepriorität und einer Datenpriorität bestehenden Gruppe ausgewählt wird.Procedure according to Claim 1 wherein restoring tables of the in-memory target database portion includes prioritizing the restoring according to an option selected from the group consisting of data usage, query priority, and data priority. Verfahren nach Anspruch 8, wobei das Priorisieren der Wiederherstellung gemäß der Datennutzung aufweist: Verwalten eines Zählers für jede Tabelle in der Zieldatenbank, wobei der Zählerwert des Zählers anzeigt, wie viele Abfragen auf die zugehörige Tabelle warten; und zunächst erfolgendes Wiederherstellen der Datenbanktabelle mit dem höchsten Zählerwert zuerst.Procedure according to Claim 8 wherein prioritizing recovery according to data usage comprises: maintaining a counter for each table in the target database, the counter value of the counter indicating how many queries are waiting on the associated table; and restoring the database table with the highest count value first. Verfahren nach Anspruch 8, wobei das Priorisieren der Wiederherstellung gemäß der Abfragepriorität aufweist: zunächst erfolgendes Wiederherstellen der Datenbanktabellen, die Abfragen mit der höchsten Priorität empfangen.Procedure according to Claim 8 , wherein prioritizing restore according to query priority includes: first restoring the database tables that receive queries with the highest priority. Verfahren nach Anspruch 8, wobei das Priorisieren der Wiederherstellung gemäß der Datenpriorität aufweist: Verwalten von zwei Gruppen von Datenbanktabellen, wobei sich jede Gruppe auf eine einzelne Gruppe von Benutzern bezieht: und zunächst erfolgendes Wiederherstellen der Datenbanktabellen der Gruppe, die eine höher konfigurierte Gruppenpriorität hat.Procedure according to Claim 8 , wherein prioritizing recovery according to data priority includes: managing two groups of database tables, each group relating to a single group of users: and first restoring the database tables of the group that has a higher configured group priority. Verfahren nach Anspruch 1, das auch umfasst: Ermitteln des Datenvolumens, das für eine nächste wiederherzustellende Tabelle wiederhergestellt werden soll: Wiederherstellen der Tabelle unter Verwendung einer Wiederherstellungsstrategie in Abhängigkeit von dem wiederherzustellenden Volumen, wobei die Wiederherstellungsstrategie eine inkrementelle Aktualisierungsstrategie oder eine Strategie zum Aktualisieren von Massendaten ist.Procedure according to Claim 1 , which also includes: determining the volume of data to be restored for a next table to be restored: restoring the table using a restore strategy depending on the volume to be restored, the restore strategy being an incremental refresh strategy or a bulk data refresh strategy. Verknüpftes Datenbanksystem mit Wiederherstellung nach einem Absturz für verknüpfte Datenbanken, wobei die verknüpften Datenbanken eine Quellendatenbank und eine zugehörige Zieldatenbank aufweisen, wobei ausgewählte Teile vom Inhalt von Tabellen der Quellendatenbank mit jeweiligen Teilen des Inhalts der Tabellen der Zieldatenbank synchronisiert werden, wobei das verknüpfte Datenbanksystem aufweist: einen Prozessor und einen per Datenaustausch mit dem Prozessor verbundenen Hauptspeicher, wobei der Hauptspeicher Programmcodeteile speichert, die, wenn sie ausgeführt werden, dem Prozessor ermöglichen: - ausgewählte Teile des Inhalts der Tabellen der Quellendatenbank mit jeweiligen Teilen des Inhalts von Tabellen der Zieldatenbank zu synchronisieren; während des Synchronisierens Änderungen an der Quellendatenbank auf einen speicherinternen Zieldatenbankteil des Datenbankverwaltungssystems, das die Zieldatenbank aufweist, anzuwenden; und persistent angewandte Änderungen an dem speicherinternen Zieldatenbankteil asynchron in einem persistenten Zieldatenbankspeicher zu speichern: nach einem Datenbankabsturz auf dem Zieldatenbanksystem den speicherinternen Zieldatenbankteil mit der in dem persistenten Zieldatenbankspeicher verfügbaren aktuellsten Momentaufnahme wiederherzustellen; und nach dem Datenbankabsturz auf dem Zieldatenbanksystem Änderungen aus der Wiederherstellungsprotokolldatei der Quellendatenbank, die einen späteren Zeitstempel als die in dem persistenten Zieldatenbankspeicher verfügbare aktuellste Momentaufnahme haben, auf den speicherinternen Zieldatenbankteil anzuwenden.A linked database system with crash recovery for linked databases, the linked databases comprising a source database and an associated target database, wherein selected portions of the contents of tables of the source database are synchronized with respective portions of the contents of the tables of the target database, the linked database system comprising: a processor and a main memory connected to the processor via communication, the main memory storing parts of program code which, when executed, enable the processor to: - synchronize selected parts of the contents of the tables of the source database with respective parts of the contents of tables of the target database; apply changes to the source database to an in-memory target database portion of the database management system having the target database during synchronization; and asynchronously store persistently applied changes to the target database in-memory portion in a target database persistent store: after a database crash on the target database system, restore the target database in-memory portion with the most current snapshot available in the target database persistent store; and after the database crash on the target database system, apply changes from the recovery log file of the source database that have a later timestamp than the most recent snapshot available in the target database persistent storage to the in-memory target database portion. Verknüpftes Datenbanksystem nach Anspruch 13, wobei die Programmcodeteile dem Prozessor auch ermöglichen: die Einträge einer Wiederherstellungsprotokolldatei, die sich auf die Quellendatenbank bezieht, für das Synchronisieren zu lesen und die gelesenen Einträge auf die Zieldatenbank anzuwenden.Linked database system according to Claim 13 , wherein the program code parts also enable the processor to: read the entries of a recovery log file relating to the source database for synchronization and apply the read entries to the target database. Verknüpftes Datenbanksystem nach Anspruch 13, wobei die Quellendatenbank für Transaktionen optimiert oder wobei die Quellendatenbank ein zeilenorientiertes relationales Datenbankverwaltungssystem ist.Linked database system according to Claim 13 , where the source database is optimized for transactions or where the source database is a row-oriented relational database management system. Verknüpftes Datenbanksystem nach Anspruch 13, wobei die Zieldatenbank für Analyseoperationen optimiert oder die Zieldatenbank eine spaltenorientierte Datenbank ist.Linked database system according to Claim 13 , where the target database is optimized for analysis operations or the target database is a column-oriented database. Verknüpftes Datenbanksystem nach Anspruch 13, wobei die Programmcodeteile dem Prozessor auch ermöglichen: im Falle eines Absturzes der Zieldatenbank Abfragen an die Zieldatenbank zu verzögern, bis eine Wiederherstellung der Zieldatenbank beendet ist.Linked database system according to Claim 13 , whereby the program code parts also enable the processor: in the event of a crash of the target database, to delay queries to the target database until a recovery of the target database has been completed. Verknüpftes Datenbanksystem nach Anspruch 13, wobei Metadaten, welche die ausgewählten Tabellen definieren, Teil der Wiederherstellungsprotokolldatei sind.Linked database system according to Claim 13 , where metadata defining the selected tables is part of the recovery log file. Verknüpftes Datenbanksystem nach Anspruch 13, wobei die Programmcodeteile dem Prozessor auch ermöglichen: auf das Speichern von persistent angewandten Änderungen zu warten, bis eine vorher festgelegte Anzahl von Änderungen in dem speicherinternen Zieldatenbankteil abgeschlossen wurde.Linked database system according to Claim 13 , wherein the program code portions also enable the processor to: wait to save persistently applied changes until a predetermined number of changes have been completed in the in-memory target database portion. Verknüpftes Datenbanksystem nach Anspruch 13, wobei das Wiederherstellen von Tabellen des speicherinternen Zieldatenbankteils ein Priorisieren des Wiederherstellens gemäß einer Option aufweist, die aus der aus einer Datennutzung, einer Abfragepriorität und einer Datenpriorität bestehenden Gruppe ausgewählt wird.Linked database system according to Claim 13 wherein restoring tables of the in-memory target database portion includes prioritizing the restoring according to an option selected from the group consisting of data usage, query priority, and data priority. Verknüpftes Datenbanksystem nach Anspruch 20, wobei die Programmcodeteile dem Prozessor für das Priorisieren der Wiederherstellung gemäß der Datennutzung auch ermöglichen: einen Zähler für jede Tabelle in der Zieldatenbank zu verwalten, wobei der Zählerwert des Zählers anzeigt, wie viele Abfragen auf die zugehörige Tabelle warten; und zunächst die Datenbanktabelle mit dem höchsten Zählerwert zuerst wiederherzustellen.Linked database system according to Claim 20 , wherein the program code parts also enable the processor to prioritize recovery according to data usage: maintain a counter for each table in the target database, the counter value of the counter indicating how many queries are waiting for the associated table; and first restore the database table with the highest counter value first. Verknüpftes Datenbanksystem nach Anspruch 20, wobei die Programmcodeteile dem Prozessor für das Priorisieren der Wiederherstellung gemäß der Abfragepriorität auch ermöglichen: zunächst die Datenbanktabellen wiederherzustellen, die Abfragen mit der höchsten Priorität empfangen.Linked database system according to Claim 20 , wherein the program code portions for prioritizing recovery according to query priority also enable the processor to: first recover the database tables that receive queries with the highest priority. Verknüpftes Datenbanksystem nach Anspruch 20, wobei die Programmcodeteile dem Prozessor für das Priorisieren der Wiederherstellung gemäß der Datenpriorität auch ermöglichen: zwei Gruppen von Datenbanktabellen zu verwalten, wobei sich jede Gruppe auf eine einzelne Gruppe von Benutzern bezieht; und zunächst die Datenbanktabellen der Gruppe wiederherzustellen, die eine höher konfigurierte Gruppenpriorität hat.Linked database system according to Claim 20 , wherein the program code parts also enable the processor for prioritizing recovery according to data priority to: maintain two groups of database tables, each group relating to a single group of users; and first restore the database tables of the group that has a higher configured group priority. Verknüpftes Datenbanksystem nach Anspruch 13, wobei die Programmcodeteile dem Prozessor auch ermöglichen: das Datenvolumen zu ermitteln, das für eine nächste wiederherzustellende Tabelle wiederhergestellt werden soll; und die Tabelle unter Verwendung einer Wiederherstellungsstrategie in Abhängigkeit von dem wiederherzustellenden Volumen wiederherzustellen, wobei die Wiederherstellungsstrategie eine inkrementelle Aktualisierungsstrategie oder eine Strategie zum Aktualisieren von Massendaten ist.Linked database system according to Claim 13 , wherein the program code parts also enable the processor to: determine the volume of data to be restored for a next table to be restored; and restore the table using a restore strategy depending on the volume to be restored, the restore strategy being an incremental update strategy or a bulk data update strategy. Computerprogrammprodukt für ein verknüpftes Datenbanksystem mit Wiederherstellung nach einem Absturz für verknüpfte Datenbanken, wobei die verknüpften Datenbanken eine Quellendatenbank und eine zugehörige Zieldatenbank aufweisen, wobei ausgewählte Teile vom Inhalt von Tabellen der Quellendatenbank mit jeweiligen Teilen des Inhalts von Tabellen der Zieldatenbank synchronisiert werden, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium mit damit verkörperten Programmanweisungen aufweist, wobei die Programmanweisungen durch ein oder mehrere Datenverarbeitungssysteme oder Controller ausführbar sind, um das eine oder die mehreren Datenverarbeitungssysteme dazu zu veranlassen: einen Prozessor und einen per Datenaustausch mit dem Prozessor verbundenen Hauptspeicher, wobei der Hauptspeicher Programmcodeteile speichert, die, wenn sie ausgeführt werden, dem Prozessor ermöglichen: ausgewählte Teile vom Inhalt von Tabellen der Quellendatenbank mit jeweiligen Teilen vom Inhalt von Tabellen der Zieldatenbank zu synchronisieren; während des Synchronisierens Änderungen an der Quellendatenbank auf einen speicherinternen Zieldatenbankteil des Datenbankverwaltungssystems, das die Zieldatenbank aufweist, anzuwenden; und persistent angewandte Änderungen an dem speicherinternen Zieldatenbankteil asynchron in einem persistenten Zieldatenbankspeicher zu speichern; nach einem Datenbankabsturz auf dem Zieldatenbanksystem den speicherinternen Zieldatenbankteil mit der in dem persistenten Zieldatenbankspeicher verfügbaren aktuellsten Momentaufnahme wiederherzustellen; und nach dem Datenbankabsturz auf dem Zieldatenbanksystem Änderungen aus der Wiederherstellungsprotokolldatei der Quellendatenbank, die einen späteren Zeitstempel als die in dem persistenten Zieldatenbankspeicher verfügbare aktuellste Momentaufnahme haben, auf den speicherinternen Zieldatenbankteil anzuwenden.Computer program product for a linked database system with crash recovery for linked databases, the linked databases comprising a source database and an associated target database, wherein selected portions of the contents of tables of the source database are synchronized with respective portions of the contents of tables of the target database, the computer program product a computer-readable storage medium with program instructions embodied therein, the program instructions being executable by one or more data processing systems or controllers to process the one or more data processing systems to cause: a processor and a main memory connected to the processor via data exchange, the main memory storing parts of program code which, when executed, enable the processor to: selected parts of the contents of tables of the source database with respective parts of the contents of tables of the synchronize target database; apply changes to the source database to an in-memory target database portion of the database management system having the target database during synchronization; and asynchronously store persistently applied changes to the in-memory target database portion in a persistent target database store; after a database crash on the target database system, restore the in-memory target database portion with the most recent snapshot available in the target database persistent storage; and after the database crash on the target database system, apply changes from the recovery log file of the source database that have a later timestamp than the most recent snapshot available in the target database persistent storage to the in-memory target database portion.
DE112022000767.2T 2021-03-19 2022-02-16 ASYNCHRONOUS PERSISTENCE OF REPLICATED DATA CHANGES IN A DATABASE ACCELERATOR Pending DE112022000767T5 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US17/206,240 US11797570B2 (en) 2021-03-19 2021-03-19 Asynchronous persistency of replicated data changes in a database accelerator
US17/206,240 2021-03-19
US17/206,221 US11500733B2 (en) 2021-03-19 2021-03-19 Volatile database caching in a database accelerator
US17/206,221 2021-03-19
PCT/CN2022/076471 WO2022193894A1 (en) 2021-03-19 2022-02-16 Asynchronous persistency of replicated data changes in database accelerator

Publications (1)

Publication Number Publication Date
DE112022000767T5 true DE112022000767T5 (en) 2023-11-09

Family

ID=83321517

Family Applications (2)

Application Number Title Priority Date Filing Date
DE112022000767.2T Pending DE112022000767T5 (en) 2021-03-19 2022-02-16 ASYNCHRONOUS PERSISTENCE OF REPLICATED DATA CHANGES IN A DATABASE ACCELERATOR
DE112022000492.4T Pending DE112022000492T5 (en) 2021-03-19 2022-02-16 NON-PERMANENT DATABASE CAPACING IN A DATABASE ACCELERATOR

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE112022000492.4T Pending DE112022000492T5 (en) 2021-03-19 2022-02-16 NON-PERMANENT DATABASE CAPACING IN A DATABASE ACCELERATOR

Country Status (3)

Country Link
JP (2) JP2024512335A (en)
DE (2) DE112022000767T5 (en)
WO (2) WO2022193893A1 (en)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6205449B1 (en) * 1998-03-20 2001-03-20 Lucent Technologies, Inc. System and method for providing hot spare redundancy and recovery for a very large database management system
US7287043B2 (en) * 2003-08-21 2007-10-23 International Business Machines Corporation System and method for asynchronous data replication without persistence for distributed computing
US10803066B2 (en) 2010-06-29 2020-10-13 Teradata Us, Inc. Methods and systems for hardware acceleration of database operations and queries for a versioned database based on multiple hardware accelerators
US11030055B2 (en) * 2013-03-15 2021-06-08 Amazon Technologies, Inc. Fast crash recovery for distributed database systems
CN104239476B (en) * 2014-09-04 2018-09-25 上海天脉聚源文化传媒有限公司 A kind of method, apparatus and system of database synchronization
CN106815275B (en) * 2015-12-02 2020-11-27 阿里巴巴集团控股有限公司 Method and equipment for realizing synchronization of main database and standby database through standby database
US10242050B2 (en) * 2015-12-23 2019-03-26 Sybase, Inc. Database caching in a database system
US10216589B2 (en) * 2016-03-02 2019-02-26 International Business Machines Corporation Smart data replication recoverer
CN108052681B (en) * 2018-01-12 2020-05-26 毛彬 Method and system for synchronizing structured data between relational databases
US11003549B2 (en) * 2018-07-25 2021-05-11 Microsoft Technology Licensing, Llc Constant time database recovery

Also Published As

Publication number Publication date
JP2024510137A (en) 2024-03-06
WO2022193894A1 (en) 2022-09-22
DE112022000492T5 (en) 2023-12-14
WO2022193893A1 (en) 2022-09-22
JP2024512335A (en) 2024-03-19

Similar Documents

Publication Publication Date Title
DE112020000749T5 (en) Index creation for evolving large data sets in hybrid transaction and analysis processing systems with multiple masters
DE102012216022B4 (en) Management of a point-in-time copy relationship for space-efficient volumes
DE202020005681U1 (en) Journaled tables in database systems
DE4216871C2 (en) Execution rules to ensure the serializability of distributed transactions
US10152396B2 (en) Time-based checkpoint target for database media recovery
DE102012215665B4 (en) Dynamically changing the TTL values in a data cache
DE4497149B4 (en) Computer-based method for data replication in peer-to-peer environment
DE112010004652B4 (en) Reliable high-throughput replication of transformed data in data systems
DE202019005716U1 (en) Track changes in database data
DE112013000465B4 (en) Management of remote data replication
DE202019005715U1 (en) Tracking of interim changes in database data
DE112010004931T5 (en) Multi-Phase File System Restoration with Selective Requirement Data Availability (
DE102016216843A1 (en) Distributed merging of files
DE202010018481U1 (en) Asynchronous Distributed Object Upload for Replicated Associative Storage Clusters
DE112012004099T5 (en) Transaction processing system, procedures and program
DE202016007901U1 (en) Data flow - window and trigger function
DE112015000222T5 (en) Merging multiple point-in-time copies into a merged point-in-time copy
WO2002021327A2 (en) Method and computer program for generating files for a database system for a business management user program
US11797570B2 (en) Asynchronous persistency of replicated data changes in a database accelerator
DE112018005359T5 (en) Prevent record locks from being held by long-term transactions
DE112010004185B4 (en) Synchronize a database with non-database resources
DE60006121T2 (en) SYSTEM AND METHOD FOR SYNCHRONIZING DATA COPIES IN A COMPUTER SYSTEM
DE112022000767T5 (en) ASYNCHRONOUS PERSISTENCE OF REPLICATED DATA CHANGES IN A DATABASE ACCELERATOR
CN115858486A (en) Data processing method and related equipment
DE102021125858A1 (en) TRACK A LOG HISTORY OF CHANGE DATA COLLECTION

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R084 Declaration of willingness to licence