-
GEBIET DER ERFINDUNG
-
Die
Erfindung betrifft die Datenspiegelung zwischen einer Mehrzahl von
Standorten.
-
HINTERGRUND DER ERFINDUNG
-
Die
Datenspiegelung ist ein Verfahren, bei dem Daten von einem ersten
Standort zu einem oder mehreren sekundären Standorten kopiert werden, und
zwar gleichzeitig mit dem Speichern der Daten am ersten Standort.
Die Daten, die vom ersten Standort zu dem einen oder den mehreren
sekundären
Standorten kopiert werden, sind eine exakte Kopie der am ersten
Standort gespeicherten Daten. Demzufolge ist ein Spiegeln von Daten
sowohl zum Bereitstellen einer Datensicherung der gespiegelten Daten
als auch zum zeitgerechten Wiederherstellen der Daten nach einer 'Havarie' ("Disaster") von Nutzen. Das
Spiegeln von Daten ist unabhängig
davon, ob das Kopieren der Daten zu einem Standort erfolgt, der
sich geographisch nahe bei dem gespiegelten Standort oder der sich
entfernt zu diesem befindet.
-
1 ist
ein Blockdiagramm, welches ein System 100 darstellt, das
einen ersten Lösungsansatz
zur Datenspiegelung verwendet, bei dem am Standort A gespeicherte
Daten zu einem Standort B gespiegelt werden. Der Dateiserver 130 führt ein
synchrones Replizieren von in der Datenbank 140 gespeicherten
Daten bei der Datenbank 142 durch. Jedesmal, wenn der Dateiserver 130 eine
vom Datenbankserver 120 ausgegebene Transaktion verarbeitet,
die eine Änderung
an einem Datenblock in der Datenbank 140 vornimmt, sendet
der Dateiserver 130 eine die Änderung widerspiegelnde Nachricht
an den Dateiserver 132. Bei Empfang der Nachricht aktualisiert
der Dateiserver 132 in der Datenbank 142 gespeicherte
Daten, so dass diese die an der Datenbank 140 vorgenommene Änderung
widerspiegeln. Die Datenbank 142 kann unter Verwendung
einer Vielfalt von Verfahren aktualisiert werden, beispielsweise
entweder durch Durchführen
einer Transaktion bei der Datenbank 142, die derjenigen
entspricht, die bei der Datenbank 140 durchgeführt wurde,
oder durch Aktualisieren eines nicht flüchtigen Speichers bei der Datenbank 142,
so dass dieser den aktuellen Zustand der bei Datenbank 140 gespeicherten
Daten widerspiegelt.
-
Clients,
wie beispielsweise Client 110 und Client 112,
können
Ein-/Ausgabeanfragen an einen Datenbankserver ausgeben, um in einer
Datenbank befindliche Daten zu schreiben oder zu lesen. Um die Konsistenz
der Datenbanken 140 und 142 zu gewährleisten,
geben alle Clients des Systems 100 alle Ein-/Ausgabeanfragen über den
Datenbankserver 120 beim Standort A aus, was garantiert,
dass alle Clients die gleiche Ansicht der einer Spiegelung unterzogenen
Daten haben, ungeachtet des Standortes, zu dem der Client gehört.
-
Bei
dem in 1 dargestellten Lösungsansatz zum Spiegeln von
Daten bestehen mehrere Probleme. Als erstes können alle Ein-/Ausgabeanfragen von
nicht Standort A zugeordneten Clients, wie beispielsweise Client 112,
eine Leistungseinbuße
erleiden, da diese Clients ihre Ein-/Ausgabeanfrage an einen bei
einem unterschiedlichen Standort befindlichen Datenbankserver senden
müssen.
Da alle von einem Client kommenden Ein-/Ausgabeanfragen durch einen
einzelnen Datenbankserver geroutet werden, der sich geographisch
entfernt vom anfordernden Client befinden kann, können diese
Clients, die sich entfernt befinden, einer beträchtlichen der Ein-/Ausgabeanfrage
zugehörigen Übertragungsverzögerung unterliegen.
Weiter stellt der einzelne Datenbankserver einen 'Flaschenhals' für alle Ein-/Ausgabeanfragen
von Clients des Systems 100 dar.
-
Als
Zweites erfahren, falls Standort A funktionsunfähig wird, z. B. der Dateiserver 130 abstürzt oder
nicht-verfügbar
wird, dann der Datenbankserver 120 und alle Clients des
Systems 100, die mit dem Datenbankserver 120 verbunden
sind, einen vorübergehenden
Dienstausfall, bis ein Sicherungssystem, wie beispielsweise Standort
B, welcher das defekte System von Standort A ersetzt, funktionsfähig wird.
-
Als
Drittes muss, falls der Dateiserver 130 eine Schreiboperation
in den Dateiserver 132 nicht replizieren kann, möglicherweise
dadurch bedingt, dass die Kommunikationsverbindung zwischen dem Dateiserver 130 und
dem Dateiserver 132 funktionsunfähig wird, dann beim Bestimmen,
ob die Datenbank 140 oder die Datenbank 142 als
Sicherungssystem verwendet werden sollte, um das aufgetretene Problem
zu beheben, umsichtig vorgegangen werden, da die Datenbank 140 und 142 nicht
mehr zueinander synchron sind, da eine oder mehrere Schreiboperationen
nicht repliziert werden konnten. Eine an einer Datenbank vorgenommene
Anderung geht verloren, falls eine Datenbank als Sicherungssystem
gewählt
wird und die gewählte
Datenbank nicht alle Schreiboperationen widerspiegelt, die bei jedweder
Datenbank des Systems durchgeführt
wurde.
-
2 ist
ein Blockdiagramm, welches einen zweiten Lösungsansatz zur Spiegelung
von Daten darstellt. Wie in 2 dargestellt,
ist jede bei jedem Standort gespeicherte Datenbank in zwei oder
mehr Partitionen unterteilt. Beispielsweise weist die Datenbank 240 Partitionen
A und B' auf, und
die Datenbank 242 weist Partitionen A' und B auf. Daten, die in Partition
A in der Datenbank 240 gespeichert sind, werden auf Partition
A' in der Datenbank 242 gespiegelt, und
Daten, die in Partition B in der Datenbank 242 gespeichert
sind, werden auf der Partition B' in
der Datenbank 240 gespiegelt. Die Datenbank 240 wird als
der primäre
Standort für
die Partition A betrachtet, und die Datenbank 242 wird
als der primäre
Standort für
die Partition B betrachtet.
-
Anfragen
von Clients zum Schreiben oder Lesen von Daten können lokal durchgeführt werden (d.
h. der die Anfrage ausgebende Client und die die Anfrage bedienende
Datenbank befinden sich beide an demselben Standort), und zwar falls,
und nur falls die Anfrage lediglich Daten beinhaltet, die in der
Partition gespeichert sind, deren Spiegeln bei diesem Standort erfolgt.
Falls beispielsweise der Client 210 eine Schreib- oder
Leseanfrage an einen Datenblock in der Partition A ausgibt, dann
kann die Anfrage lokal bei der Datenbank 240 durchgeführt werden.
Falls jedoch der Client 210 eine Lese- oder Schreibanfrage an
einen Datenblock in Partition B ausgibt, dann würde der Datenbankserver 220 diese
Anfrage an den Dateiserver 232 routen, damit die Anfrage
bei der Datenbank 242 ausgeführt werden kann. Ein auf diese Weise
erfolgendes Partitionieren von Daten trägt dazu bei, die Leistungsverzögerung einer
Verarbeitung einer Transaktion zu verringern, und zwar gegenüber Daten,
die sich in Partitionen befinden, bei denen der primäre Standort
der lokale Standort ist, jedoch wird mit diesem Verfahren nicht
die Durchführungsverzögerung einer
Verarbeitung einer Transaktion gegenüber Daten in Partitionen verringert,
bei denen der primäre
Standort ein entfernter Standort ist.
-
Jedoch
ist dieser Lösungsansatz
problematisch, falls Daten nicht zwischen Standorten repliziert werden
können
oder falls ein spezieller Standort betriebsunfähig wird. Wenn eine Replikation
von Daten aus einer in einem ersten Standort (dem primären Standort)
befindlichen Partition zu einer entsprechenden Partition an einem
zweiten Standort (dem sekundären
Standort) nicht durchgeführt
werden kann, dann wird der Datenbank am primären Standort nicht mitgeteilt,
dass die Replikation nicht erfolgreich war. Als Ergebnis kann es
passieren, dass Partitionen, in denen replizierte Daten am sekundären Standort
gespeichert sind, zu veralteten oder überholten Partitionen werden.
Danach kann, falls der primäre
Standort betriebsunfähig
wird, eine Partition, in der replizierte Daten beim sekundären Standort
gespeichert sind, nicht verwendet werden, um bei Funktionsausfall
des primären
Standorts eine Wiederherstellung vorzunehmen, da die darin gespeicherten Daten überholt
(nicht mehr aktuell) sind. Eine Verwendung von überholten Daten würde Datenbankkonsistenzprinzipien
verletzen.
-
Demgemäß besteht
ein unberücksichtiger Bedarf
bei der Technik, um Daten zu spiegeln und dabei Probleme zu vermeiden,
die mit den zuvor beschriebenen Lösungsansätzen in Verbindung stehen.
-
Die
in diesem Abschnitt beschriebenen Lösungsansätze sind Lösungsansätze, die man verfolgen könnte, es
sind jedoch nicht notwendigerweise Lösungsansätze, die bereits zuvor erdacht
oder verfolgt wurden. Daher sollte man, falls nicht anders angegeben,
nicht davon ausgehen, dass einer der in diesem Abschnitt beschriebenen
Lösungsansätze lediglich
dadurch, dass er in diesem Abschnitt enthalten ist, als Stand der
Technik gilt.
-
US 2003/0188114 A1 offenbart
ein System und ein Verfahren zum Replizieren von Daten zwischen
Standorten in einem Speichernetzwerk (Storage Area Network) Ein
Kopiersatz (Copy Set), der eine Anzahl von Elementen aufweist, ist
definiert. Beim Durchführen
von Operationsdatentransaktionen bei einem der Elemente des Kopiersatzes
werden diese unmittelbar oder nach einer Verzögerung repliziert, und zwar
in jedem anderen Element des Kopiersatzes.
US 2003/0188114 A1 besagt
nichts über
die Möglichkeit
eines Schreiboperationsversagens und dessen Konsequenzen.
-
US 2002/0083036 A1 offenbart
ein Verfahren zum Vergrößern der
Verfügbarkeit
eines Computerclusters. Im Fall einer Dienstunterbrechung wird eine Quorum-Operation
durchgeführt,
um einen weiterhin funktionsfähigen
Server des Computer-Clusters zu bestimmen, der den gesamten Cluster
steuern soll. Jedoch wird in
US 2002/0083036 A1 keine Laufzeitinformation
offenbart, auf der die Quorum-Operation basieren könnte.
-
Die
Erfindung ist durch die unabhängigen Ansprüche definiert.
Die abhängigen
Ansprüche
betreffen optionale Merkmale einiger Ausführungsformen der Erfindung.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die
Erfindung ist beispielhaft und nicht einschränkend in den Figuren der anliegenden
Zeichnungen dargestellt, in denen gleiche Bezugszeichen ähnliche
Elemente bezeichnen; in diesen sind:
-
1 ein
Blockdiagramm, das einen ersten Lösungsansatz für ein Spiegeln
von Daten darstellt;
-
2 ein
Blockdiagramm, das einen zweiten Lösungsansatz für ein Spiegeln
von Daten darstellt;
-
3 ein
Block-Netzdiagramm, das ein Datenspiegelungssystem gemäß einer
Ausführungsform
der Erfindung darstellt;
-
4 ein
Ablaufdiagramm, welches die Schritte eines Spiegelns von Daten zwischen
einer Mehrzahl von Standorten gemäß einer Ausführungsform
darstellt;
-
5 ein
Ablaufdiagramm, welches die funktionalen Schritte eines Initialisierens
einer Mitgliedschaftsabstimmungsoperation gemäß einer Ausführungsform
der Erfindung darstellt;
-
6 ein
Ablaufdiagramm, welches die Schritte eines Spiegelns von Daten zwischen
einer Mehrzahl von Standorten gemäß einer Ausführungsform
der Erfindung darstellt;
-
7 ein
Ablaufdiagramm, welches die Schritte eines Spiegelns von Daten zwischen
einer Mehrzahl von Standorten gemäß einer Ausführungsform
der Erfindung darstellt;
-
8 ein
Ablaufdiagramm, welches die Schritte eines Spiegelns von Daten zwischen
einer Mehrzahl von Standorten gemäß einer Ausführungsform
der Erfindung darstellt;
-
9 ein
Ablaufdiagramm, welches die Schritte eines Spiegelns von Daten zwischen
einer Mehrzahl von Standorten gemäß einer Ausführungsform
der Erfindung darstellt; und
-
10 ein
Blockdiagramm, welches ein Computersystem darstellt, auf dem eine
Ausführungsform
der Erfindung implementiert werden kann.
-
DETAILLIERTE BESCHREIBUNG
DER ERFINDUNG
-
Es
werden ein Verfahren und ein System beschrieben, um Daten zwischen
einer Mehrzahl von Standorten zu spiegeln. In der folgenden Beschreibung
sind zu Erläuterungszwecken
zahlreiche spezielle Details dargelegt, um für ein grundlegendes Verständnis der
Erfindung zu sorgen. Es ist jedoch offensichtlich, dass die Erfindung
ohne diese speziellen Details ausgeführt werden kann. In anderen
Fällen sind
allgemein bekannte Strukturen und Vorrichtungen in Blockdiagrammform
dargestellt, um zu vermeiden, dass die Erfindung unnötig kompliziert
dargestellt wird.
-
ARCHITEKTURÜBERBLICK
-
3 ist
ein Blockdiagramm, welches ein Datenspiegelungssystem 300 gemäß einer
Ausführungsform
der Erfindung darstellt. Das Datenspiegelungssystem 300 kann
verwendet werden, um in bidirektionaler Weise ein Replizieren von
Daten zwischen jedem Standort im Datenspiegelungssystem 300 durchzuführen. Außerdem können, wie
hier beschrieben, weitere Vorteile unter Verwendung des Datenspiegelungssystems 300 erzielt
werden. Das Datenspiegelungssystem 300 in 1 beinhaltet
einen Standort 310 und einen Standort 320, einen
Client 320 und einen Client 322, einen Datenbankserver 330 und
einen Datenbankserver 332, einen Dateiserver 340 und
einen Dateiserver 342, eine Datenbank 350 und
eine Datenbank 352, eine Quorum-Vorrichtung 360 und
Kommunikationsverbindungen 370, 372, 374 und 376.
-
Der
Begriff 'Standort', wie hier weit gefasst verwendet,
bezieht sich auf eine logische Gruppierung von physischen Komponenten
in einem Datenspiegelungssystem 300. Daten können von
einem ersten Standort zu einem zweiten Standort im Datenspiegelungssystem 300 repliziert
werden. Zahlreiche Komponenten des Datenspiegelungssystems 300 können in
einem einzelnen Standort gespeichert sein. Beispielsweise kann ein
einziger Standort einen oder mehrere Clients, einen oder mehrere
Datenbank-Server, einen oder mehrere Dateiserver, eine oder mehrere
Datenbanken und eine oder mehrere Quorum-Vorrichtungen aufweisen.
Die logische Gruppierung physischer Komponenten an einem Standort
kann physisch in Gebieten unterschiedlicher Größe angeordnet sein. Beispielsweise
kann ein Standort einem speziellen Gebäude, einer speziellen Etage
eines Gebäudes
oder einem speziellen Raum eines Gebäudes entsprechen. Standorte
können
auch physisch nahe beieinander oder weit weg voneinander angeordnet
sein. Zur einfacheren Erläuterung
sind in 3 lediglich zwei Standorte dargestellt;
jedoch können
Ausführungsformen
mehr als zwei Standorte aufweisen.
-
Der
Begriff 'Client', wie hier weit gefasst
verwendet, bezieht sich auf eine beliebige Software- oder Hardware-Komponente,
die zum Ausgeben einer Dienstanfrage fähig ist. Beispielsweise wird
eine Komponente, die zum Ausgeben einer Anfrage an einen Daten bankserver
fähig ist,
typischerweise als Datenbank-Client bezeichnet. Zur einfacheren
Erklärbarkeit
ist in 3 jeder Standort mit einem einzelnen Client dargestellt;
jedoch kann ein Standort eine beliebige Anzahl von Clients enthalten;
nicht einschränkende,
illustrierende Beispiele eines Client wie beispielsweise Client 320 und 322 beinhalten
eine Softwareanwendung, einen Personal-Computer, eine Maschine,
die zum Ausgeben von Anfragen an einen Datenbankserver fähig ist,
und einen Datenbankserver.
-
Der
Begriff 'Datenbankserver', wie beispielsweise
der Datenbankserver 330 und der Datenbankserver 332,
bezeichnet eine oder mehrere Software und/oder Hardwarekomponenten,
die zum Verwalten von Daten verwendet werden. Neben weiteren Funktionen
einer Datenbankverwaltung steuert der Datenbankserver typischerweise
eine Datenbank und erleichtert einen Zugriff auf diese, und verarbeitet
durch Datenbank-Clients erfolgende Anforderungen zum Zugreifen auf
die Datenbank. Zwar sind lediglich zwei Datenbank-Server, und zwar
der Datenbankserver 330 und der Datenbankserver 332 in 3 dargestellt,
jedoch kann eine beliebige Anzahl von Datenbank-Servern im Datenspiegelungssystem 300 verwendet
werden.
-
Der
Begriff 'Dateiserver', wie hier weit gefasst
verwendet, bezieht sich auf eine beliebige Hardware- oder Software-Komponente,
die zum Durchführen
einer Dateihandhabung und einer Speicherfunktionalität fähig ist.
Ein Dateiserver, beispielsweise der Dateiserver 340 und
der Dateiserver 342, führen
Schreib- und Leseoperationen durch, die von einem Datenbankserver
empfangen werden und die bei einer Datenbank durchgeführt werden.
Man beachte, dass der Begriff "Dateiserver" hier breit gefasst
verwendet wird, da ein Dateiserver ein System, das separat von einem
Datenbankverwaltungssystem oder unabhängig von diesem arbeitet, oder
ein Modul in einem Datenbankverwaltungssystem beinhalten kann.
-
Der
Begriff 'Datenbank', wie beispielsweise die
Datenbank
350 und die Datenbank
352, bezeichnet
einen dauerhaften Speicher elektronischer Information. Nicht einschränkende illustrierende
Beispiele einer Datenbank beinhalten eine relationale Datenbank,
eine objektorientierte Datenbank, eine mehrdimensionale Datenbank,
eine Datenbank in einem ver teilten Cluster von Computern, und eine
Datenbank in einem Netz von Blade-Servern. Ein verteilter Cluster
von Datenbank-Servern wird detaillierter im
US-Patent Nr. 6,353,836 erläutert. Ein
Netz (Grid), über
das ein Satz von Datenbank-Servern betrieben wird, wird detaillierter
in der provisorischen US-Patentanmeldung mit der Seriennummer 60/500,050
erläutert.
-
Der
Begriff 'Quorum-Vorrichtung', wie hier breit
gefasst verwendet, bezieht sich auf eine beliebige Hardwarekomponente,
die fähig
ist, eine Mitgliedschaftsabstimmungsoperation durchzuführen. Bei
einer Ausführungsform
bestimmt eine Mitgliedschaftsabstimmungsoperation, welche(r) Datenbankserver aus
einer Replikationsmitgliedschaft entfernt werden sollte(n). Die
Funktionsweise einer Quorum-Vorrichtung, wie beispielsweise der
Quorum-Vorrichtung 360,
wird später
noch detaillierter in dem Abschnitt mit dem Titel "Bidirektionale Replikation" erläutert. Zur
einfacheren Erläuterung
ist in 3 lediglich ein einzige Quorum-Vorrichtung dargestellt;
jedoch können
Ausführungsformen
des Datenspiegelungssystems 300 eine beliebige Anzahl von
Quorum-Vorrichtungen beinhalten.
-
Kommunikationsverbindungen 370 und 372 können durch
ein beliebiges Medium oder einen beliebigen Mechanismus implementiert
werden, das/der für
einen Datenaustausch zwischen einem Datenbank-Server, z. B. dem
Datenbankserver 330 oder dem Datenbankserver 332,
und der Quorum-Vorrichtung 360 sorgt. Die Kommunikationsverbindungen 374 und 376 können durch
ein beliebiges Medium oder einen beliebigen Mechanismus implementiert
werden, das/der für
einen Austausch von Daten zwischen Dateiservern, z. B. dem Dateiserver 340 und
dem Dateiserver 342, sorgt. Beispiele von Kommunikationsverbindungen 370, 372, 374 und 376 beinhalten
ohne Einschränkung
ein Netz, wie beispielsweise ein lokales Netz (LAN), ein Weitverkehrsnetz
(WAN), Ethernet oder das Internet, oder eine oder mehrere terrestrische,
Satelliten- oder Drahtlosverbindungen.
-
FEHLERHANDHABUNG IN EINER SPIEGELUNGSUMGEBUNG – ÜBERBLICK
-
Verfahren
und Mechanismen zum Spiegeln von Daten zwischen einer Mehrzahl von
Standorten werden dargelegt. Gemäß einem
Verfahren wird eine Replikationsbeziehung zwischen der Mehrzahl
von Standorten eingerichtet, die einen ersten Standort und einen
zweiten Standort einschließen.
Die Replikationsbeziehung sorgt dafür, dass zumindest einige Änderungen,
die an einem beliebigen Standort der Mehrzahl von Standorten vorgenommen
wurden, an jedem anderen Standort der Mehrzahl von Standorten repliziert
werden.
-
Ein
erster Datenbank-Server, der dem ersten Standort der Replikationsbeziehung
zugeordnet ist, fordert eine Ausführung einer Schreiboperation
an. Danach wird die Schreiboperation am ersten Standort durchgeführt. Eine
Nachricht wird gesendet, um anzufordern, dass die Schreiboperation
am zweiten Standort der Replikationsbeziehung gespiegelt wird.
-
Zu
Erläuterungszwecken
gehe man davon aus, dass der zweite Standort die Schreiboperation nicht
erfolgreich durchführen
konnte. Demzufolge empfängt
der erste Datenbankserver eine Angabe, dass die Schreiboperation
am zweiten Standort nicht erfolgreich durchgeführt werden konnte. Reagierend darauf
initiiert der erste Datenbankserver eine Mitgliedschaftsabstimmungsoperation,
um zu bestimmen, ob der erste Datenbankserver oder ein dem zweiten
Standort zugeordneter zweiter Datenbankserver aus der Replikationsbeziehung
entfernt werden sollte.
-
Bei
einer Ausführungsform
initiiert der erste Datenbankserver die Mitgliedschaftsabstimmungsoperation
durch Kommunizieren mit einer Quorum-Vorrichtung. Eine Quorum-Vorrichtung ist eine Hardware-Komponente,
die fähig
ist, eine Mitgliedschaftsabstimmungsoperation durchzuführen. Die Quorum-Vorrichtung
kann bestimmen, welcher Datenbankserver aus der Replikationsmitgliedschaft entfernt
werden sollte, und zwar basierend auf einer Reihe von Faktoren,
wie beispielsweise welcher Datenbankserver wichtiger oder zuverlässiger ist.
Die Quorum-Vorrichtung kann eine Vielzahl von Mitgliedschafts-Abstimmungsprotokollen
verwenden, um die Mitgliedschaft zu bestimmen.
-
Falls
bestimmt wird, dass der dem zweiten Standort zugehörige zweite
Datenbankserver aus der Replikationsmitgliedschaft entfernt werden
sollte, dann kann der erste Datenbankserver eine Nachricht an den
Dateiserver beim ersten Standort senden, um anzugeben, dass keine
Schreiboperationen mehr am zweiten Standort repliziert werden sollen.
Zusätzliche Ausführungsformen
werden später
noch detaillierter beschrieben.
-
PRIORITÄTSBASIERTE COMMIT-HANDHABUNG – ÜBERBLICK
-
Es
werden auch Techniken zur Handhabung des Commit (Festschreiben)
von Transaktionen basierend auf diesen Transaktionen zugeordneten
Prioritätswerten
bereitgestellt. Gemäß einem
Verfahren werden Daten zwischen einer Mehrzahl von Standorten gespiegelt.
Bei einem ersten Standort von der Mehrzahl von Standorten wird ein
erster Datensatz gepflegt, der identifiziert, für welche Transaktionen, die
beim ersten Standort ausgeführt
wurden, ein Replizieren von deren Redo-Information an den anderen
Standorten der Mehrzahl von Standorten erfolgt ist. Der Begriff
Redo-Information, wie hier weit gefasst verwendet, betrifft Information,
die eine Transaktion beschreibt. Auch wird am ersten Standort ein zweiter
Datensatz gepflegt, der identifiziert, für welche Transaktion, die beim
ersten Standort ausgeführt wurde,
ein Protokollieren von deren Redo-Information im dauerhaften Speicher
am ersten Standort erfolgt ist.
-
Ein
Prioritätswert,
der einer Transaktion zugeordnet ist, die am ersten Standort ausgeführt werden
soll, wird bestimmt. Die Transaktion spezifiziert eine Modifikation
an einem Datenblock. Redo-Information wird typischerweise in einer
Redo-Protokolldatei gespeichert. Bei den meisten Implementierungen
ist in der Redo-Protokolldatei die Redo-Information sequentiell
in der Reihenfolge gespeichert, in welcher ein Commit der Transaktionen
erfolgt. Somit wird, durch Sicherstellen, dass die Redo-Information, die
zu einer hohe Priorität
aufweisenden Transaktion gehört
(eine Transaktion mit einem Prioritätswert, der angibt, dass die
Transaktion nicht verloren (unwirksam) sein sollte, falls der Standort,
bei dem sie ausgegeben wurde, funktionsunfähig wird), repliziert wurde,
sichergestellt, dass die Redo-Informa tion, die zu einer eine niedrige
Priorität
aufweisenden Transaktion gehört
(eine Transaktion mit einem Prioritätswert, der angibt, dass die
Transaktion verloren sein kann, falls der Standort, bei dem sie
ausgegeben wurde, funktionsunfähig
wird) einen Commit erreicht hat, bevor auch das Replizieren der
eine hohe Priorität
aufweisenden Transaktion erfolgt ist.
-
Falls
der Prioritätswert
angibt, dass die Transaktion nicht verloren sein sollte, falls der
erste Standort funktionsunfähig
wird, dann erfolgt der Commit der Transaktion erst, nachdem der
erste Datensatz angibt, dass bei allen anderen Transaktionen, deren
Commit vor der Transaktion am ersten Standort erfolgt ist, die jeweilige
Redo-Informationen an den anderen Standorten der Mehrzahl von Standorten
repliziert wurden.
-
Jedoch
erfolgt, falls der Prioritätswert
angibt, dass die Transaktion verloren sein kann, falls der erste
Standort funktionsunfähig
wird, das Commit der Transaktion, bevor der erste Datensatz angibt,
dass bei allen anderen Transaktionen, deren Commit vor der Transaktion
am ersten Standort erfolgt ist, deren jeweilige Redo-Information
an den anderen Standorten der Mehrzahl von Standorten repliziert
wurde. Bei einer weiteren Ausführungsform
erfolgt, falls der Prioritätswert
angibt, dass die Transaktion verloren sein kann, falls der erste
Standort funktionsunfähig
wird, dann ein Commit der Transaktion, nachdem der zweite Datensatz
angibt, dass bei allen anderen Transaktionen, deren Commit vor der
Transaktion am ersten Standort erfolgt ist, deren jeweilige Redo-Information
im dauerhaften Speicher am ersten Standort gespeichert wurde.
-
BIDIREKTIONALE REPLIKATION
-
Wie
später
noch detaillierter erläutert
wird, unterstützen
Ausführungsformen
gleichzeitige lokale Leseoperationen und lokale Schreiboperationen
an jedem Standort des Systems 300. Schreiboperationen können synchron
oder asynchron bei jedem anderen Standort im System 300 repliziert
werden. Bei einer Ausführungsform
kann die Leistungsfähigkeit einer
Schreiboperation dadurch verbessert werden, dass die Replikation
der Schreiboperation an einem anderen Standort verzögert wird.
Beispielsweise kann die Replikation einer Schreiboperation zu einem
anderen Standort verzögert
werden, bis ein Commit einer große Priorität aufweisenden Transaktion
erfolgen muss oder bis zu einem Punkt, bis zu dem eine vorausschreibende
Protokollierung (Write-Ahead-Protokollierung) oder Zurückschreib-Protokollierung
(Write-Back-Logging) aufbewahrt werden muss. Die Verzögerung von
Schreiboperationen ermöglicht,
dass das Replizieren von Schreiboperationen in effizienter Weise
in einer Stapelverarbeitung abgearbeitet werden kann.
-
4 ist
ein Ablaufdiagramm 400, welches die Schritte eines Spiegelns
von Daten zwischen einer Mehrzahl von Standorten gemäß einer
Ausführungsform
darstellt. Zu Anfang wird bei Schritt 410 eine Replikationsbeziehung
zwischen einer Mehrzahl von Standorten hergestellt. Bei einer Ausführungsform
wird eine Replikationsbeziehung für jeden Standort in dem Datenspiegelungssystem 300 eingerichtet,
z. B. wird eine Replikationsbeziehung für den Standort 310 und 312 in 3 eingerichtet.
Die Replikationsbeziehung sorgt dafür, dass zumindest einige Änderungen,
die bei einem beliebigen Standort im Datenspiegelungssystem 300 vorgenommen
werden, bei jedem anderen Standort im Datenspiegelungssystem 300 repliziert
werden. Nach der Durchführung
von Schritt 410 schreitet die Verarbeitung mit Schritt 420 fort.
-
Bei
Schritt 420 fordert ein erster Datenbank-Server, der einem
ersten Standort der Mehrzahl von Standorten zugehörig ist,
die Durchführung
einer Schreiboperation an. Bei einer Ausführungsform kann Schritt 420 durch
den Datenbankserver 330 am Standort 310 durchgeführt werden,
wobei die Durchführung
einer Schreiboperation angefordert wird. Die Schreiboperation kann
eine Operation sein, um Daten in eine Datenbank zu schreiben, die
sich am ersten Standort befindet, beispielsweise in eine Datenbank 350.
Nach der Durchführung
von Schritt 420 schreitet die Verarbeitung mit Schritt 430 fort.
-
Bei
Schritt 430 wird die Schreiboperation, die bei Schritt 420 angefordert
wurde, beim ersten Standort durchgeführt. Bei einer Ausführungsform kann
die Schreiboperation beim Standort 310 dadurch durchgeführt werden,
dass der Datenbankserver 330 den Dateiserver 340 anweist,
eine Schreiboperation bei der Datenbank 350 durchzuführen, und danach
der Dateiserver 340 die Schreiboperation bei der Datenbank 350 durchführt. Auch
wird bei Schritt 430 eine Nachricht gesendet, um anzufordern,
dass die Schreiboperation beim zweiten Standort gespiegelt wird.
Bei einer Ausführungsform
kann der Dateiserver 340 die Anfrage senden, dass die Schreiboperation
bei dem Standort 312 an dem Dateiserver 342 gespiegelt
wird. Nach der Durchführung
von Schritt 430 schreitet die Verarbeitung mit Schritt 440 fort.
-
Es
wird darauf verwiesen, dass die Schreiboperationen bei jedem Standort
im System durchgeführt
werden können,
da jeder Datenbankserver an jedem Standort einen Mechanismus verwendet,
der gewährleistet,
dass nicht mehr als eine Schreiboperation denselben dauerhaft auf
Platte gespeicherten Datenblock gleichzeitig ändern kann. Ein derartiger Mechanismus
könnte
unter Verwendung einer Vielzahl von Verfahren implementiert werden,
die eine Form globaler Sperrverwaltung (Gemeinschaftsplatten-Cluster
(Shared-Disk Clusters)) oder ein Partitionieren der Platten (keine
gemeinsam genutzten Cluster (Shared-nothing Clusters)) umfassen
können.
-
Bei
Schritt 440 empfängt
der erste Datenbankserver eine Angabe, dass die Schreiboperation bei
dem zweiten Standort nicht erfolgreich durchgeführt werden konnte. Beispielsweise
empfängt
der Datenbankserver 330 eine Angabe, dass die Schreiboperation
bei dem Standort 312 nicht erfolgreich durchgeführt werden
konnte. Bei einer Ausführungsform
ist diese Angabe ein Eingabe-/Ausgabefehler, der angibt, dass eine
Mitgliedschaftsabstimmungsoperation durchgeführt werden sollte. Der Ein-/Ausgabefehler
kann unter Verwendung eines eindeutigen Fehlercodes ausgedrückt werden,
der in einer Nachricht durch den Datenbankserver 330 empfangen wird.
Die bei Standort 310 empfangene Angabe kann ein Ein-/Ausgabefehler
sein, der angibt, dass die Schreiboperation bei dem Standort 312 nicht
repliziert werden konnte. Bei einer Ausführungsform wird die Angabe
nur dann bei Schritt 440 empfangen, wenn der eine Standort
im Datenspiegelungssystem 300 keine Schreiboperation widerspiegelt,
die bei einem anderen Standort im Datenspiegelungssystem 300 durchgeführt wurde;
demzufolge wird die Angabe von Schritt 440 nicht durch
den Standort 310 empfangen, falls der Datenbankserver 332 ausfällt. Bei einer
Ausführungsform
empfängt
der Stand ort 310 die Angabe von Schritt 440, falls
der Dateiserver 342 ausfallt, die Datenbank 352 ausfällt, die
Kommunikationsverbindung 374 ausfallt, oder die Kommunikationsverbindung 376 ausfällt. Nach
der Durchführung von
Schritt 440 schreitet die Verarbeitung mit Schritt 450 fort.
-
Bei
Schritt 450 initiiert der erste Datenbankserver eine Mitgliedschaftsabstimmungsoperation, um
zu bestimmen, ob der erste Datenbankserver oder ein zweiter Datenbank-Server,
der zum zweiten Standort gehört,
aus der Replikationsmitgliedschaft entfernt werden sollte. Beispielsweise
kann Schritt 450 dadurch durchgeführt werden, dass der Datenbankserver 330 eine
Mitgliedschaftsabstimmungsoperation initiiert, um zu bestimmen,
ob der Datenbankserver 330 oder der Datenbankserver 332 aus der
Replikationsmitgliedschaft entfernt werden sollte.
-
Bei
einer Ausführungsform
initiiert der erste Datenbankserver die Mitgliedschaftsabstimmungsoperation
durch Kommunizieren mit einer Quorum-Vorrichtung. Beispielsweise
initiiert der Datenbankserver 330 die Mitgliedschaftsabstimmungsoperation
dadurch, dass der über
die Kommunikationsverbindung 370 mit der Quorum-Vorrichtung 360 kommuniziert.
-
5 ist
ein Ablaufdiagramm, welches die funktionalen Schritte eines Initiierens
einer Mitgliedschaftsabstimmungsoperation gemäß einer Ausführungsform
der Erfindung erläutert.
Bei Schritt 510 wird eine Quorum-Vorrichtung benachrichtigt,
dass die Schreiboperation nicht erfolgreich durchgeführt werden
konnte. Beispielsweise kann Schritt 510 durch den Datenbankserver 330 durchgeführt werden,
welcher die Quorum-Vorrichtung 360 über die Kommunikationsverbindung 370 benachrichtigt,
dass die Schreiboperation bei Standort 312 nicht erfolgreich
durchgeführt
werden konnte. Nach der Durchführung
von Schritt 510 schreitet die Verarbeitung mit Schritt 520 fort.
-
Bei
Schritt 520 bestimmt die bei Schritt 510 benachrichtigte
Quorum-Vorrichtung, welcher Datenbankserver aus der Replikationsmitgliedschaft
entfernt werden sollte. Beispielsweise kann Schritt 520 dadurch
durchgeführt
werden, dass die Quorum-Vorrichtung 360 bestimmt, welcher
Datenbankserver aus der Replikationsbeziehung entfernt werden sollte.
Bei einer Ausführungsform
beinhaltet das Bestimmen, welcher Datenbankserver aus der Replikationsbeziehung
entfernt werden sollte, ein Bestimmen, welcher Datenbankserver wichtiger
oder zuverlässiger
ist. Falls alle Datenbankserver im Datenspiegelungssystem 300 gleich
wichtig oder zuverlässig sind,
kann von der Quorum-Vorrichtung ein Standard-Datenbankserver gewählt werden.
-
Bei
einer Ausführungsform
sendet, falls die Quorum-Vorrichtung 360 bestimmt, dass
der Datenbankserver 332 aus der Replikationsmitgliedschaft entfernt
werden sollte, der Datenbankserver 330 eine Nachricht an
den Dateiserver 340, welcher angibt, dass Schreiboperationen,
die bei dem Standort 310 durchgeführt werden, nicht mehr bei
dem Standort 312 repliziert werden sollen. Alternativ informiert, falls
die Quorum-Vorrichtung 360 bestimmt, dass der Standort 310 aus
der Replikationsmitgliedschaft entfernt werden sollte, dann der
Datenbankserver 332 den Dateiserver 342, dass
Daten nicht mehr bei dem Standort 310 repliziert werden
sollen. Ein Dateiserver kann weiterhin Lese- und Schreiboperationen
lokal verarbeiten, sogar wenn die Schreiboperationen nicht mehr
bei einem unterschiedlichen Standort repliziert werden.
-
Bei
einer Ausführungsform
besteht die Quorum-Vorrichtung 360 aus einer Mehrzahl von
gespiegelten Vorrichtungen, und Schritt 510 wird durch
einen primären
Dateiserver durchgeführt.
Der primäre Dateiserver
ist ein Dateiserver, der zu einer der Mehrzahl von Standorten gehört, über welchen
alle anderen Dateiserver, die zu anderen Standorten der Mehrzahl
von Standorten gehören,
mit der Quorum-Vorrichtung kommunizieren. Beispielsweise kann der Datenbankserver 330 ein
primärer
Dateiserver sein; demzufolge kommuniziert der Datenbankserver 332 mit
der Quorum-Vorrichtung 360 über den Datenbankserver 330.
-
Bei
einer weiteren Ausführungsform
befindet sich die Quorum-Vorrichtung 360 bei einem unterschiedlichen
Standort, der zu einem anderen Ausfallsdomäne als alle anderen Standorte
im Datenspiegelungssystem 300 gehört. Bei dieser Ausführungsform
kann jeder Datenbank server im Datenspiegelungssystem 300 mit
der Quorum-Vorrichtung 360 direkt in Kontakt treten. Jedoch
erfolgt, falls die Quorum-Vorrichtung 360 ausfällt, ein Ausfall von jedem
Standort im Datenspiegelungssystem 300, da jeder Standort
nicht mit der Quorum-Vorrichtung 360 kommunizieren kann,
obwohl diese Standorte im Übrigen
funktionsfähig
sind und über
eine Netz- und eine Ein-/Ausgabe-Konnektivität zueinander verfügen.
-
Bei
einer Ausführungsform
kann ein Standort der Replikationsbeziehung erneut beitreten, nachdem
die Quorum-Vorrichtung bestimmt, dass ein Datenbankserver des Standortes
aus der Replikationsmitgliedschaft entfernt werden sollte. Beispielsweise kann,
falls der Standort 312 aus der Replikationsbeziehung entfernt
wurde, dann der Standort 312 der Replikationsbeziehung
erneut beitreten. Reagierend darauf, dass der Standort 312 der
Replikationsbeziehung erneut beitritt, werden Daten im Standort 312 mit
Daten im Standort 310 erneut synchronisiert, und die Datenbank 352 wird
erneut gemountet.
-
VERBESSERUNG DER LEISTUNG
EINES SCHREIBENS VON REDO-INFORMATION
-
Ein
synchrones Replizieren von Schreiboperationen vergrößert die
Latenzzeit und die Kosten von Schreiboperationen. Dateiserver können auch ein
asynchrones Replizieren von Schreiboperationen durchführen, obschon
darauf geachtet werden muss, dass eine Koordination mit Schreiboperationen
erfolgt, die anderen Ortes initiiert wurden und die noch nicht repliziert
wurden, sowie Schreiboperationen, die gerade ausgegeben werden.
Zahlreiche Ausführungsformen,
die in vorteilhafter Weise ein asynchrone Replikation verwenden,
werden nachfolgend erläutert.
-
Mehrere
Mechanismen, welche die Leistungsfähigkeit eines Schreibens von
Redo-Information durch asynchrones Replizieren verbessern, werden
nachfolgend erläutert.
Der Begriff 'Redo-Information', wie er hier weit
gefasst verwendet wird, betrifft Information, die eine Transaktion
beschreibt. Bei einer Ausführungsform
beschreibt die Redo-Information eine Transaktion, deren Commit erfolgt
oder gerade erfolgt ist. Bei einer Ausführungsform kann Redo-Information
in einer Redo-Protokolldatei aufgezeichnet werden. Die Redo-Information kann
bei einem Rollback oder beim "Rückgängigmachen" einer Transaktion,
deren Commit erfolgt ist, verwendet werden.
-
6 ist
ein Ablaufdiagramm, welches die Schritte eines Spiegeln von Daten
zwischen einer Mehrzahl von Standorten gemäß einer Ausführungsform
der Erfindung darstellt. Die in 6 dargestellten
Schritte können
verwendet werden, um Redo-Information zwischen einer Mehrzahl von
Standorten zu spiegeln. Zu Anfang wird bei Schritt 610 ein
erster Datensatz an einem ersten Standort der Mehrzahl von Standorten
gepflegt, der identifiziert, für
welche Transaktionen, die beim ersten Standort ausgeführt wurden,
das Replizieren von deren Redo-Information bei
den anderen Standorten der Mehrzahl von Standorten erfolgt ist.
Schritt 610 kann durch den Datenbankserver 330 von
Standort 310 durchgeführt
werden. Bei einer Ausführungsform
kann Schritt 610 dadurch durchgeführt werden, dass ein Abschnitt
einer Redo-Protokolldatei identifiziert wird. Alle Transaktionen,
die im identifizierten Abschnitt der Redo-Protokolldatei von Schritt 610 widergespiegelt
werden, wurden an den anderen Standorten der Mehrzahl von Standorten
repliziert.
-
Beispielsweise
kann der Abschnitt der bei Schritt 610 identifizierten
Redo-Protokolldatei dadurch identifiziert werden, dass ein Datensatz
gepflegt wird, der eine spezielle Transaktion identifiziert, die
in der Redo-Protokolldatei widergespiegelt wird, deren jeweilige
Redo-Information
an den anderen Standorten der Mehrzahl von Standorten repliziert
wurde und der die größte Protokollier-Laufnummer
(LSN) zugeordnet ist. Alle Transaktionen in der Redo-Protokolldatei, deren
LSN kleiner oder gleich groß wie
die zur speziellen Transaktion gehörige LSN ist, befinden sich
in dem identifizierten Abschnitt der Redo-Protokolldatei, deren
Redo-Information an den anderen Standorten der Mehrzahl von Standorten
repliziert wurde. Nach der Durchführung von Schritt 610 schreitet
die Verarbeitung mit Schritt 620 fort.
-
Bei
Schritt 620 wird ein zweiter Datensatz bei einem ersten
Standort von der Mehrzahl von Standorten gepflegt, der identifiziert,
für welche
beim ersten Standort ausgeführte
Transaktionen ein Protokollieren von deren Redo-Information in einem
dauerhaften Speicher beim ersten Standort erfolgt ist. Schritt 620 kann
durch den Datenbankserver 330 des Standorts 310 durchgeführt werden.
Bei einer Ausführungsform
kann Schritt 620 dadurch durchgeführt werden, dass ein Abschnitt
einer Redo-Protokolldatei identifiziert wird. Alle Transaktionen,
die im identifizierten Abschnitt der Redo-Protokolldatei von Schritt 620 widergespiegelt
sind, wurden im dauerhaften Speicher am ersten Standort protokolliert.
-
Beispielsweise
kann der Abschnitt der bei Schritt 620 identifizierten
Redo-Protokolldatei dadurch identifiziert werden, dass ein Datensatz
gepflegt wird, der eine spezielle in der Redo-Protokolldatei widergespiegelte
Transaktion identifiziert, deren jeweilige Redo-Information im dauerhaften
Speicher am ersten Standort protokolliert wurde und die der größten Protokollier-Laufnummer
(LSN) zugeordnet ist. Alle Transaktionen in der Redo-Protokolldatei, deren
LSN kleiner oder gleich groß wie
die zur speziellen Transaktion gehörige LSN ist, befinden sich
in dem identifizierten Abschnitt der Redo-Protokolldatei, deren
Redo-Information
im dauerhaften Speicher am ersten Standort protokolliert wurde.
Nach der Durchführung
von Schritt 620 schreitet die Verarbeitung mit Schritt 630 fort.
-
Bei
Schritt 630 wird ein Prioritätswert bestimmt, der einer
Transaktion zugeordnet ist. Der Prioritätswert kann verwendet werden,
um zu bestimmen, wann bei einer Transaktion basierend auf der Wichtigkeit
der Transaktion ein Commit erfolgen sollte. Beispielsweise kann,
falls eine spezielle Transaktion nicht verloren sein sollte, falls
der erste Standort funktionsunfähig
wird, dann der Transaktion ein höherer
Prioritätswert
als einer Transaktion gegeben werden, die verloren sein kann, wenn
der erste Standort funktionsunfähig
wird.
-
Die
Transaktion, welcher der Prioritätswert von
Schritt 630 zugeordnet ist, soll beim ersten Standort durchgeführt werden.
Die Transaktion spezifiziert, dass eine Modifikation an mindestens
einem Datenblock vorgenommen werden soll. Ein durch die Transaktion
modifizierter Datenblock kann sich in der Datenbank 350 des
Standortes 310 befinden. Zur leichteren Erklärbarkeit
erfolgt die Erläuterung
so, als würde
die Transaktion einen einzigen Datenblock modifizieren, obschon
eine Transaktion zwei oder mehrere Datenblöcke modifizieren kann. Schritt 630 kann
durch den Datenbankserver 330 des Standortes 310 durchgeführt werden.
Nach der Durchführung
von Schritt 630 schreitet die Verarbeitung fort mit Schritt 640.
-
Bei
Schritt 640 wird bestimmt, ob der vorhergehende Wert angibt,
dass die Transaktion nicht verloren sein sollte, falls der erste
Standort funktionsunfähig
wird. Schritt 630 kann durch den Datenbankserver 330 von
Standort 310 durchgeführt
werden.
-
Falls
die Bestimmung von Schritt 640 positiv ist (der Prioritätswert gibt
an, dass die Transaktion nicht verloren sein sollte, falls der erste
Standort funktionsunfähig
wird), dann schreitet die Verarbeitung mit Schritt 650 fort.
Bei Schritt 650 erfolgt das Commit der Transaktion, und
zwar erst, nachdem der erste Datensatz angibt, dass die der Transaktion
zugeordnete Redo-Information bei jedem anderen Standort des Datenspiegelungssystems 300 repliziert
wurde. Schritt 650 kann durch den Datenbankserver 330 von
Standort 310 durchgeführt
werden.
-
Die
bei Schritt 650 erfolgte Bestimmung, ob die der Transaktion
zugeordnete Redo-Information bei den anderen Standorten der Mehrzahl
von Standorten repliziert wurde, erfolgt dadurch, dass ein der Transaktion
zugeordneter Commit-Datensatz mit dem ersten Datensatz verglichen
wird.
-
Falls
die Bestimmung von Schritt 640 negativ ist (der Prioritätswert gibt
an, dass die Transaktion verloren sein kann, falls der erste Standort
funktionsunfähig
wird), dann geht die Verarbeitung auf Schritt 660. Bei
Schritt 660 erfolgt ein Commit der Transaktion, und zwar
erst, nachdem der zweite Datensatz angibt, dass die der Transaktion
zugehörige Redo-Information
im dauerhaften Speicher am ersten Standort gespeichert wurde. Schritt 660 kann durch
den Datenbankserver 330 des Standorts 310 durchgeführt werden.
-
Die
bei Schritt 660 erfolgte Bestimmung, ob die der Transaktion
zugehörige
Redo-Information im dauerhaften Speicher gespeichert wurde, wird
dadurch durchgeführt,
dass ein der Transaktion zugehöriger
Commit-Datensatz mit dem zweiten Datensatz verglichen wird.
-
Alternativ
kann (nicht in 6 dargestellt) Schritt 660 dadurch
durchgeführt
werden, dass ein Commit der Transaktion erfolgt, bevor der erste
Datensatz angibt, dass die der Transaktion zugehörige Redo-Information bei den
anderen Standorten der Mehrzahl von Standorten repliziert wurde.
Bei einer Ausführungsform
erfolgt bei Datenbankserver 330 von Standort 310 ein
Commit der Transaktion, bevor der erste Datensatz angibt, dass die
der Transaktion zugehörige
Redo-Information an den anderen Standorten der Mehrzahl von Standorten
repliziert wurde. Durch eine Transaktion erzeugte Redo-Information wird
als der Transaktion zugehörig
betrachtet.
-
Die
zuvor erörterten
Mechanismen ermöglichen
in vorteilhafter Weise, dass die Bestimmung, wann ein Commit einer
Transaktion erfolgt, basierend auf der Wichtigkeit der Transaktion
durchgeführt wird.
Beispielsweise erfolgt, falls eine spezielle Transaktion eine sehr
wichtige Transaktion ist (die unter keinen Umständen verloren sein darf), dann
ein Commit der Transaktion erst, nachdem der erste Datensatz angibt,
dass für
alle anderen Transaktionen, deren Commit vor der Transaktion erfolgt
ist, die jeweilige Redo-Information an den anderen Standorten repliziert
wurde. Jedoch kann bei einer Transaktion, die nicht so wichtig ist,
ein Commit erfolgen, nachdem der zweite Datensatz angibt, dass für alle anderen
Transaktionen, deren Commit vor der Transaktion erfolgt ist, die
jeweilige Redo-Information im dauerhaften Speicher beim ersten Standort
gespeichert wurde. Auf diese Weise kann ein Commit einer Transaktion,
die nicht so wichtig ist, früher
als bei einer sehr wichtigen Transaktion erfolgen, jedoch kann die
nicht so wichtige Transaktion, deren Commit erfolgt ist, verloren
sein, falls der erste Standort funktionsunfähig wird, bevor die Änderung,
die zu der einen erfolgten Commit aufweisenden Transaktion gehört, an den
anderen Standorten der Mehrzahl von Standorten gespiegelt wird.
-
Falls
die Replikation einer Schreiboperation verzögert wird und der spezielle
Standort, der die Schreiboperation ausgegeben hat, funktionsunfähig wird,
dann muss ein weiterhin funktionsfähiger Standort darauf warten,
dass alle vom funktionsunfähigen
Standort gesendeten Nachrichten von jedem anderen Standort der Mehrzahl
von Standorten empfangen wurden, bevor er eine Wiederherstellung
des funktionsunfähigen
Standortes einleitet. Diese Praxis sorgt dafür, dass eine Nachricht, die
vom funktionsunfähigen
Standort gesendet wurde, bevor dieser Standort funktionsunfähig wurde,
und die noch nicht empfangen wurde, vom weiterhin funktionsfähigen Standort
nicht verarbeitet wird, nachdem dieser eine Wiederherstellung des
funktionsunfähigen
Standortes eingeleitet hat oder dessen Wiederherstellung vollendet
hat. Alternativ können
die weiterhin funktionsfähigen
Standorte jegliche Nachrichten ignorieren, die von dem funktionsunfähigen Standort
gesendet wurden, nachdem einer oder mehrere der weiterhin funktionsfähigen Standorte
eine Wiederherstellung des funktionsunfähigen Standortes eingeleitet oder
dessen Wiederherstellung abgeschlossen haben.
-
7 ist
ein Ablaufdiagramm, welches die Schritte eines Spiegelns von Daten
zwischen einer Mehrzahl von Standorten darstellt. Die in 7 dargestellten
Schritte können
verwendet werden, um in vorteilhafter Weise ein Replizieren einer
Schreiboperation in ein Redo-Protokoll
zu verzögern.
Es ist für einen
Datenbankserver vorteilhaft, die Latenzzeit eines Schreibens von
Daten in ein Redo-Protokoll zu verringern. Ein Datenbankserver kann
das Replizieren von Schreibvorgängen
in ein Redo-Protokoll verzögern,
vorausgesetzt, dass der Verlust von Transaktionen, deren Commit
zuletzt erfolgt ist, im Fall eines Ausfalls eines Standortes toleriert
werden kann. Vorteilhaft kann ein Replizieren von Schreibvorgängen in ein
Redo-Protokoll verzögert
werden, bis ein Datenblock, der Änderungen
widerspiegelt, die noch nicht dauerhaft gespeichert sind, entweder
dauerhaft gespeichert wird oder zu einem anderen Standort übertragen
wird.
-
Zu
Anfang wird bei Schritt 710 eine Transaktion bei einem
ersten Standort einer Mehrzahl von Standorten verarbeitet. Schritt 710 kann
durch den Datenbankserver 330 des Standorts 310 verarbeitet werden,
der eine Transaktion wie beispielsweise eine Schreiboperation verarbeitet.
-
Bei
Schritt 720 wird Information erzeugt, welche die verarbeitete
Transaktion widerspiegelt. Die Information kann im flüchtigen
Speicher erzeugt werden. Die Information kann Redo-Information betreffend
die verarbeitete Transaktion beinhalten. Schritt 720 kann
durch den Datenbankserver 330 des Standorts 310 durchgeführt werden.
Nachdem Information erzeugt wurde, welche die verarbeitete Transaktion
widerspiegelt, schreitet die Verarbeitung fort mit Schritt 730.
-
Bei
Schritt 730 wird bestimmt, ob die bei Schritt 720 erzeugte
Information dauerhaft gespeichert wurde, bevor entweder ein der
verarbeiten Transaktion zugehöriger
Datenblock dauerhaft gespeichert wird oder der Datenblock zu einem
anderen Standort übertragen
wird. Schritt 730 kann von dem Datenbankserver 330 des
Standorts 310 durchgeführt
werden.
-
Falls
die Bestimmung von Schritt 730 positiv ist (die bei Schritt 720 erzeugte
Information wurde dauerhaft gespeichert, bevor entweder ein der
verarbeiteten Transaktion zugehöriger
Datenblock dauerhaft gespeichert wird oder der Datenblock zu einem anderen
Standort übertragen
wird), dann schreitet die Verarbeitung fort mit Schritt 740.
Bei Schritt 740 wird die bei Schritt 720 erzeugte
Information dauerhaft gespeichert, bevor entweder der Datenblock dauerhaft
gespeichert wird oder der Datenblock zu einem anderen Standort der
Mehrzahl von Standorten übertragen
wird.
-
Schritt 740 kann
derart durchgeführt
werden, dass Information betreffend Mehrfach-Transaktionen dauerhaft
gespeichert wird. Beispielsweise kann bei einem ersten Standort
eine zweite Transaktion verarbeitet werden, und Information kann
im flüchtigen Speicher
beim ersten Standort erzeugt werden, welche die verarbeitete zweite
Transaktion widerspiegelt. Falls die bei Schritt 720 erzeugte
Information (nachfolgend als "erste
Information" bezeichnet),
und die Information, welche die zweite Transaktion widerspiegelt
(nachfolgend als "zweite
Information" bezeichnet)
noch nicht dauerhaft gespeichert wurde, bevor entweder ein zweiter
Datenblock, welcher der verarbeiteten zweiten Transaktion zugehörig ist,
dauerhaft gespeichert wird oder der zweite Datenblock zu einem anderen
Standort der Mehrzahl von Standorten übertragen wird, dann kann die
erste Information und die zweite Information unter Verwendung eines
Stapelverarbeitungsprozesses dauerhaft gespeichert werden, bevor
entweder der zweite Datenblock dauerhaft gespeichert wird oder der
zweite Datenblock zu einem anderen Standort der Mehrzahl von Standorten übertragen
wird. Der Datenbankserver 330 speichert dauerhaft die erste
Information und die zweite Information unter Verwendung eines Stapelverarbeitungsprozesses.
Der Stapelverarbeitungsprozess kann asynchron sein. Das Ergebnis
des asynchronen Stapelverarbeitungsprozesses kann unter Verwendung
eines Ein-/Ausgabe-Ergebnisdeskriptors bestimmt werden, z. B. aio_result_t
in UNIX. Der asynchrone Ein-/Ausgabeergebnis-Deskriptor kann verwendet
werden, um zu bestimmen, wann die Verarbeitung des Stapelverarbeitungsprozesses
abgeschlossen ist.
-
Falls
die Bestimmung von Schritt 730 negativ ist (die bei Schritt 720 erzeugte
Information wurde nicht dauerhaft gespeichert, bevor entweder ein
der verarbeiteten Transaktion zugehöriger Datenblock dauerhaft
gespeichert wird oder der Datenblock zu einem anderen Standort übertragen
wird), dann schreitet die Verarbeitung mit Schritt 750 fort.
Bei Schritt 750 wird der der verarbeiteten Transaktion
zugehörige
Datenblock dauerhaft gespeichert oder übertragen.
-
VERBESSERN DER LEISTUNGSFÄHIGKEIT
EINES SCHREIBENS VON DATENBANKDATEIEN
-
Mehrere
Mechanismen, welche die Leistungsfähigkeit beim Schreiben auf
Datenbankdateien mittels eines asynchronen Replizierens verbessern, werden
nachfolgend erläutert. 8 ist
ein Ablaufdiagramm, welches die Schritte eines Spiegelns von Daten
zwischen einer Mehrzahl von Standorten gemäß einer Ausführungsform
der Erfindung darstellt. Die in 8 dargestellten
Schritte können
verwendet werden, um Datenbankdateien unter Verwendung eines Write-Ahead-Protokollierschemas
zu schreiben.
-
Zu
Anfang wird bei Schritt 810 ein erster Datensatz bei einem
ersten Standort der Mehrzahl von Standorten gepflegt, der identifiziert,
welchen Änderungen,
die an einem oder mehreren Datenblöcken am ersten Standort vorgenommen
wurden, die Redo-Information zugeordnet wurde, die an den anderen
Standorten der Mehrzahl von Standorten repliziert wurde. Der erste
Standort implementiert ein Write-Ahead-Protokollierschema. Bei einem
Write-Ahead-Protokollierschema
wird ein Datenblock in einem Puffer-Cache, der Änderungen wider spiegelt, die
nicht dauerhaft gespeichert sind (ein verfälschter ("dirty") Datenblock), dauerhaft erst gespeichert, nachdem
Redo-Information, die dem einen oder den mehreren Datenblöcken zugeordnet
ist, dauerhaft gespeichert wurde. Bei einer Ausführungsform repliziert der erste
Standort Transaktionen an den anderen Standorten der Mehrzahl von
Standorten asynchron bezüglich
der Ausführung
der Transaktion. Schritt 810 kann vom Datenbankserver 330 des Standortes 310 durchgeführt werden,
und zwar unter Pflegen eines ersten Datensatzes, der identifiziert, welchen Änderungen,
die an einem oder mehreren in der Datenbank 350 am Standort 310 gespeicherten Datenblöcken vorgenommen
wurden, Redo-Information
zugeordnet wurde, die am Standort 312 repliziert wurde.
Die Änderungen,
die an einem oder mehreren Datenblöcken vorgenommen wurden, deren
zugehörige
Redo-Information an den anderen Standorten der Mehrzahl von Standorten
repliziert wurde, können
dadurch verfolgt werden, dass jeder Änderung eine Protokollier-Laufnummer
(LSN) in einem Redo-Protokoll zugeordnet wird und die Protokollier-Laufnummer
der als letztes replizierten Änderung gespeichert
wird. Außerdem
wird die LSN, die der letzten an einem speziellen Datenblock vorgenommenen Änderung
zugehörig
ist, im Header des speziellen Datenblockes gespeichert. Nach der
Durchführung
von Schritt 810 schreitet die Verarbeitung mit Schritt 820 fort.
-
Bei
Schritt 820 wird ein zweiter Datensatz bei einem ersten
Standort der Mehrzahl von Standorten gepflegt, der identifiziert,
welchen Änderungen,
die an einem oder mehreren am ersten Standort gespeicherten Datenblöcken vorgenommen
wurden, Redo-Information zugeordnet wurde, die im dauerhaften Speicher
am ersten Standort der Mehrzahl von Standorten protokolliert wurde.
Die Änderungen,
die an einem oder mehreren Datenblöcken vorgenommen wurde, denen
Redo-Information zugeordnet wurde, die im dauerhaften Speicher am
ersten Standort der Mehrzahl von Standorten protokolliert wurde, können dadurch
verfolgt werden, dass jeder Änderung
eine Protokollier-Laufnummer (LSN) in einem Redo-Protokoll zugeordnet wird und die Protokollier-Laufnummer
der jüngsten
(zuletzt durchgeführten) Änderung,
die im dauerhaften Speicher protokolliert wurde, gespeichert wird.
Schritt 820 kann vom Datenbankserver 330 des Standortes 310 durchgeführt werden,
und zwar unter Pflegen eines zweiten Datensatzes, der identifiziert,
welche Änderungen, die
an einem oder mehreren in der Datenbank 350 bei dem Standort 310 gespeicherten
Datenblöcken vorgenommen
wurden, Redo-Information zugeordnet wurde, die im dauerhaften Speicher
bei dem Standort 310 protokolliert ist. Nach der Durchführung von
Schritt 820 schreitet die Verarbeitung fort mit Schritt 830.
-
Bei
Schritt 830 wird eine Bestimmung vorgenommen, ob der erste
Standort Schreibtransaktionen in der gleichen Reihenfolge repliziert,
in welcher die Schreibtransaktionen beim ersten Standort ausgegeben
wurden. Der Datenbankserver 330 von Standort 310 kann
Schritt 830 durchführen.
-
Falls
die Bestimmung des Schritts 830 positiv ist (der erste
Standort führt
ein Replizieren von Schreibtransaktionen in der gleichen Reihenfolge durch,
in der die Schreibtransaktionen beim ersten Standort fertiggestellt
wurden), dann schreitet die Verarbeitung mit Schritt 840 fort.
Bei Schritt 840 wird ein Datenblock dauerhaft gespeichert,
nachdem der zweite Datensatz angibt, dass für jegliche Änderungen, die an dem einen
oder den mehreren am ersten Standort gespeicherten Datenblöcken vorgenommen wurden,
Redo-Information im dauerhaften Speicher protokolliert wurde. Die
am Datenblock vorgenommenen Änderungen
können
durch eine oder mehrere Transaktionen durchgeführt werden. Schritt 840 kann dadurch
durchgeführt
werden, dass ein spezieller Datenblock in der Datenbank 350 dauerhaft
gespeichert wird, nachdem der zweite Datensatz angibt, dass für jegliche Änderungen,
die an dem in der Datenbank 350 bei dem Standort 310 gespeicherte
Datenblock vorgenommen wurden, zugehörige Redo-Informationen im
dauerhaften Speicher bei dem Standort 310 protokolliert
wurden.
-
Falls
die Bestimmung des Schritts 830 negativ ist (der erste
Standort führt
kein Replizieren von Schreibtransaktionen in der gleichen Reihenfolge durch,
in der die Schreibtransaktionen beim ersten Standort fertiggestellt
wurden), dann schreitet die Verarbeitung mit Schritt 850 fort.
Bei Schritt 850 wird ein Datenblock dauerhaft gespeichert,
nachdem der erste Datensatz angibt, dass für jegliche Änderungen, die an dem einen
oder den mehreren am ersten Standort gespeicherten Datenblöcken vorgenommen wurden,
Redo-Information an den anderen Standorten der Mehrzahl von Standorten
repliziert wurde. Die an dem einen oder den mehreren Datenblöcken vorgenommenen Änderungen
können
durch eine oder mehrere Transaktionen durchgeführt werden. Schritt 850 kann
dadurch durchgeführt
werden, dass ein spezieller Datenblock in der Datenbank 350 an
dem Standort 310 dauerhaft gespeichert wird, nachdem der
erste Datensatz angibt, dass für
jegliche Änderungen,
die an dem einen oder den mehreren in der Datenbank 350 bei
dem Standort 310 gespeicherten Datenblöcken vorgenommen wurden, die
zugehörigen
Redo-Informationen an den anderen Standorten der Mehrzahl von Standorten
repliziert wurden. Nachdem der erste Datensatz angibt, dass Änderungen,
die an einem speziellen Datenblock vorgenommen wurden, an den anderen
Standorten der Mehrzahl von Standorten repliziert wurden, kann eine
dem Datenblock zugeordnete Sperrung freigegeben werden. Speziell
kann bei einer Gemeinschaftsplatte (Shared Disk) oder einer Gemeinschaft-Cache-Cluster-Datenbank
(Shared-Cache Cluster Database), bei der ein gleichzeitiger Zugriff
auf einen Datenblock unter Verwendung einer globalen Sperrungsverwaltung
(Global Lock Management) koordiniert wird, die dem Datenblock zugeordnete
Sperrung erst dann freigegeben werden, nachdem der erste Datensatz angibt,
dass Redo-Information,
die Änderungen
zugeordnet ist, die am Datenblock vorgenommen wurden, an den anderen
Standorten der Mehrzahl von Standorten repliziert wurde. Dies gewährleistet,
dass jeglicher Standort, der einen Datenblock von einem entfernt
befindlichen Standort empfängt,
kein Lesen oder Schreiben des Datenblockes durchführt, bis
alle Redo-Information, die früheren
am Datenblock vorgenommenen Änderungen
zugeordnet ist, im lokalen dauerhaften Speicher des Standortes verfügbar ist.
-
Unter
Verwendung der in 8 dargestellten Ausführungsform
kann, falls Schreiboperationen in unterschiedliche Dateien in der
Reihenfolge repliziert werden, in welcher die Schreiboperationen
ausgegeben werden, dann ein spezieller Datenblock dauerhaft gespeichert
werden, sobald der zweite Datensatz alle Transaktionen widerspiegelt,
mit denen der spezielle Datenblock aktualisiert wurde. Auf diese Weise
erfolgt eine Replizierung des speziellen Datenblockes erst, nachdem
die Redo-Information, die Änderungen
zugeordnet ist, die an dem speziellen Datenblock durch die eine
oder mehreren Transaktionen vorgenommen wurden, repliziert wurde.
-
Weitere
Mechanismen verbessern die Leistung des Schreibens in Datenbankdateien
unter Verwendung eines Zurückschreib-(Write-Back)-Protokollierschemas.
Bei einem Zurückschreib-Protokollierschema
wird ein Datenblock dauerhaft gespeichert, bevor eine Redo-Information für den Datenblock
erzeugt wird. 9 ist ein Ablaufdiagramm, welches
die Schritte eines Spiegeln von Daten zwischen einer Mehrzahl von
Standorten gemäß einer Ausführungsform
der Erfindung darstellt. Die in 9 dargestellten
Schritte können
verwendet werden, um Datenbankdateien unter Verwendung eines Zurückschreib-Protokollierschemas
zu schreiben. Zu Anfang wird bei Schritt 910 bei einem
ersten Standort der Mehrzahl von Standorten ein Datenblock dauerhaft
gespeichert, bevor ein dauerhaftes Speichern von Redo-Information
betreffend am Datenblock vorgenommenen Änderungen erfolgt. Schritt 910 kann durch
den Datenbankserver 330 des Standorts 310 durchgeführt werden,
wobei ein Datenblock in der Datenbank 350 dauerhaft gespeichert
wird, bevor Redo-Information
betreffend am Datenblock vorgenommene Änderungen dauerhaft gespeichert
wird. Nach Durchführung
des Schritts 910 schreitet die Verarbeitung mit Schritt 920 fort.
-
Bei
Schritt 920 wird am ersten Standort die Redo-Information,
welche am Datenblock vorgenommene Änderungen widerspiegelt, dauerhaft
gespeichert, nachdem die Änderungen
an den anderen Standorten in der Mehrzahl von Standorten repliziert wurden.
Schritt 920 kann vom Datenbankserver 330 des Standorts 310 durchgeführt werden,
wobei die Redo-Information
dauerhaft gespeichert wird, welche Änderungen widerspiegelt, die
am Datenblock vorgenommen wurden, nachdem die Änderungen an Standort 312 repliziert
wurden.
-
Bei
Schritt 920 wird eine Bestimmung vorgenommen, wann die
am Datenblock vorgenommenen Änderungen
an den anderen Standorten in der Mehrzahl von Standorten repliziert
wurden. Der Datenbankserver 330 des Standorts 310 nimmt
die Bestimmung vor, wann die am Datenblock vorgenommenen Änderungen
am Standort 312 repliziert wurden.
-
Ein
einzelner Prozess kann eine oder mehrere Transaktionen ausgeben,
die jeweils Änderungen an
einem Datenblock vornehmen. Die eine oder die mehreren Transaktionen
können
von zwei oder mehreren Prozessen ausgegeben werden. Der Datenbankserver 330 kann
bestimmen, wann die eine oder die mehreren Transaktionen, die Änderungen
an dem einen oder den mehreren Datenblöcken vornehmen, abgeschlossen
wurden. Nachdem die eine oder die mehreren Transaktionen, welche Änderungen
an den einen oder den mehreren Datenblöcken vornehmen, abgeschlossen
wurden, können
der eine oder die mehreren Datenblöcke dauerhaft gespeichert werden,
wie bei Schritt 910 beschrieben.
-
Unter
Verwendung der in 9 dargestellten Schritte kann
ein Datenbankserver warten, bis ein Dateiserver das Replizieren
aller Schreiboperationen auf Datenblöcke, die dauerhaft gespeichert
wurden, abschließt,
bevor die Redo-Information für
die Schreiboperationen dauerhaft gespeichert wird. Beispielsweise
kann der Datenbankserver 330 am Standort 310 warten,
bis der Dateiserver 340 das Replizieren am Standort 312 aller
Schreiboperationen in am Standort 310 dauerhaft gespeicherte
Datenblöcke
abschließt,
bevor der Datenbankserver 330 die Redo-Information für die Schreiboperationen
in der Datenbank 350 dauerhaft speichert.
-
STANDORT-WIEDERHERSTELLUNG
-
Bei
einer Ausführungsform
wird, falls ein spezieller Standort im Datenspiegelungssystem 300 funktionsunfähig wird,
dann ein Wiederherstellen des speziellen Standortes eingeleitet,
nachdem bestimmt wurde, dass alle Nachrichten, die von dem speziellen Standort
zu jedem anderen Standort im Datenspiegelungssystem 300 gesendet
wurden, an ihrem Zielort empfangen wurden. Beispielsweise wird bei der
in 3 dargestellten Ausführungsform, falls der Standort 310 funktionsunfähig würde, dann
ein Wiederherstellen des Standorts 310 erst dann eingeleitet,
nachdem bestimmt wurde, dass alle von dem Standort 310 an
den Standort 312 gesendete Nachrichten bei dem Standort 312 empfangen
wurden. Alternativ können
die weiterhin funktionsfähigen
Standorte jegliche Nachrichten ignorieren, die von dem funktionsunfähigen Standort
gesendet werden, nachdem einer oder mehrere der weiterhin funktionsfähigen Standorte
ein Wiederherstellen des funktionsunfähigen Standortes eingeleitet
oder abgeschlossen hat.
-
VERBESSERUNG DER LEISTUNGSFÄHIGKEIT EINES
SCHREIBENS VON TEMPORÄREN
DATEIEN
-
Temporäre Dateien
können
von einem Datenbankserver bei bestimmten Datenbankoperationen verwendet
werden, wie beispielsweise Sortieren (Sort) und Hash-Join. Die temporären Dateien
werden wie ein Notizblock bzw. Hilfsregister ("Scratch Pad") verwendet, um Daten für eine begrenzte
Zeitdauer aufzubewahren. In einigen Fällen müssen die Metadaten-Änderungen
in Bezug auf die Platzzuweisung von temporären Dateien repliziert werden.
Falls jedoch eine temporäre
Datei nicht von anderen Standorten der Mehrzahl von Standorten benötigt wird,
dann braucht die temporäre
Datei nicht repliziert werden.
-
Es
erfolgt eine Bestimmung bei einem Datenbankserver an einem ersten
Standort einer Mehrzahl von Standorten in Bezug darauf, ob eine
Datenstruktur, wie beispielsweise eine temporäre Datei, an jedem anderen
Standort der mehreren Standorte repliziert werden soll. Die Datenstruktur
am ersten Standort wird an jedem anderen Standort der Mehrzahl von
Standorten repliziert, sofern nicht bestimmt wird, dass die Datenstruktur
nicht an jedem anderen Standort der Mehrzahl von Standorten repliziert
werden soll. Beispielsweise kann bei der in 3 dargestellten
Ausführungsform
der Datenbankserver 330 des Standorts 310 bestimmen,
dass eine spezielle temporäre
Datei nicht am Standort 312 repliziert werden braucht.
Demzufolge führt
der Datenbankserver 330 kein Replizieren der temporären Datei
am Standort 312 durch.
-
IMPLEMENTIERUNGSMECHANISMEN
-
10 ist
ein Blockdiagramm, das ein Computersystem 1000 darstellt,
auf dem eine Ausführungsform
der Erfindung implementiert werden kann. Das Computersystem 1000 beinhaltet
einen Bus 1002 oder einen anderen Kommunikationsmechanismus
zum Weiterleiten von Information, und einem mit dem Bus 1002 verbundenen
Prozessor 1004 zum Verarbeiten von Informationen. Das Computersystem 1000 beinhaltet
auch einen Haupt speicher 1006, wie beispielsweise einen
RAM (Direktzugriffsspeicher) oder eine andere dynamische Speichervorrichtung,
die mit dem Bus 1002 verbunden ist, um Informationen und
durch den Prozessor 1004 auszuführende Anweisungen zu speichern.
Der Hauptspeicher 1006 kann auch zum Speichern von temporären Variablen
oder anderen Zwischeninformationen während eines Ausführens von
durch den Prozessor 1004 auszuführenden Anweisungen verwendet
werden. Das Computersystem 1000 beinhaltet weiter einen
ROM (Nur-Lese-Speicher) 1008 oder
eine andere mit dem Bus 1002 verbundene statische Speichervorrichtung
zum Speichern statischer Informationen und Anweisungen für den Prozessor 1004.
Eine Speichervorrichtung 1010, wie beispielsweise eine Magnetplatte
oder eine optische Platte, ist vorgesehen und mit dem Bus 1002 verbunden,
um Informationen und Anweisungen zu speichern.
-
Das
Computersystem 1000 kann über den Bus 1002 mit
einer Anzeigeeinrichtung 1012, wie beispielsweise einer
Kathodenstrahlröhre
(CRT), verbunden sein, um einem Computerbenutzer Informationen anzuzeigen.
Eine Eingabevorrichtung 1014, die alphanumerische und weitere
Tasten beinhaltet, ist mit dem Bus 1002 verbunden, um Informationen
und ausgewählte
Befehle an den Prozessor 1004 zu übermitteln. Ein weiterer Typ
vom Benutzereingabevorrichtung ist eine Cursorsteuerung 1016,
wie beispielsweise eine Maus, ein Trackball oder Cursor-Richtungstasten,
um Richtungsinformationen und ausgewählte Befehle an den Prozessor 1004 zu übermitteln
und die Cursorbewegung auf der Anzeigevorrichtung 1012 zu
steuern. Diese Eingabevorrichtung weist typischerweise zwei Freiheitsgrade
in zwei Achsen auf, einer ersten Achse (z. B. x) und einer zweiten
Achse (z. B. y), was es ermöglicht,
dass die Vorrichtung Positionen in einer Ebene bezeichnen kann.
-
Die
Erfindung betrifft die Verwendung des Computersystems 1000 zum Implementieren
der hier beschriebenen Verfahren. Gemäß einer Ausführungsform
der Erfindung werden diese Verfahren durch das Computersystem 1000 ausgeführt, und zwar
reagierend darauf, dass der Prozessor 1004 eine oder mehrere
Sequenzen von einer oder mehreren im Hauptspeicher 1006 enthaltenen
Anweisungen ausführt.
Derartige Anweisungen können
in den Hauptspeicher 1006 von einem weiteren computerlesbaren
Medium, wie beispielsweise einer Speichervorrichtung 1010,
eingelesen werden. Ein Ausführen der
im Hauptspeicher 1006 enthaltenen Anweisungssequenzen bewirkt,
dass der Prozessor 1004 die hier beschriebenen Prozessschritte
durchführt.
Bei alternativen Ausführungsformen
kann eine fest verdrahtete Schaltungsanordnung verwendet werden,
und zwar anstelle von Softwareanweisungen oder in Kombination mit
diesen, um die Erfindung zu implementieren. Daher sind die Ausführungsformen
der Erfindung nicht auf irgendeine spezielle Kombination aus Hardware-Schaltungsanordnung
und Software eingeschränkt.
-
Der
Begriff "computerlesbares
Medium", wie hier
verwendet, betrifft ein beliebiges Medium, das daran beteiligt ist,
Anweisungen an den Prozessor 1004 zum Ausführen zu
liefern. Ein derartiges Medium kann viele Formen annehmen, einschließlich, jedoch
nicht eingeschränkt
auf nichtflüchtige
Medien, flüchtige
Medien und Übertragungsmedien.
Nichtflüchtige
Medien beinhalten beispielsweise optische oder magnetische Platten,
wie beispielsweise die Speichervorrichtung 1010. Flüchtige Medien
beinhalten einen dynamischen Speicher, wie beispielsweise den Hauptspeicher 1006. Übertragungsmedien
beinhalten Koaxialkabel, Kupferdraht- und Glasfaserkabel, einschließlich der
Drähte,
die den Bus 1002 beinhalten. Übertragungsmedien können auch
die Form von akustischen Wellen oder Lichtwellen annehmen, beispielsweise
solche, die während
Radiowellen- und Infrarot-Datenkommunikationen erzeugt werden.
-
Übliche Formen
vom computerlesbaren Medien beinhalten beispielsweise eine Floppy-Disk, eine
Diskette, eine Festplatte, ein Magnetband oder ein beliebiges anderes
magnetisches Medium, eine CD-ROM, ein beliebiges anderes optisches
Medium, Lochkarten, Papierband, ein beliebiges anderes physisches
Medium mit Lochmustern, ein RAM, ein PROM und ein EPROM, ein FLASH-EPROM,
einen beliebigen anderen Speicherchip oder eine -kassette, eine
Trägerwelle,
wie nachfolgend beschrieben, oder ein beliebiges anderes Medium,
von dem ein Computer lesen kann.
-
Verschiedene
Formen von computerlesbaren Medien können daran beteiligt sein,
eine oder mehrere Sequenzen von einer oder mehreren Anweisungen
zum Prozessor 1004 zur Ausfüh rung zu transportieren. Beispielsweise
können
sich die Anweisungen zu Anfang auf einer Magnetscheibe eines entfernt
angeordneten Computers befinden. Der entfernt angeordnete Computer
kann die Anweisungen in seinen dynamischen Speicher laden und die
Anweisungen über
eine Telefonleitung unter Verwendung eines Modems senden. Ein Modem,
das sich lokal beim Computersystem 1000 befindet, kann
die auf der Telefonleitung befindlichen Daten empfangen und eine
Infrarot-Übertragungseinrichtung
verwenden, um die Daten in ein Infrarotsignal umzuwandeln. Eine
Infrarot-Erfassungseinrichtung kann die im Infrarotsignal transportierten
Daten empfangen, und eine geeignete Schaltungsanordnung kann die
Daten auf dem Bus 1002 platzieren. Der Bus 1002 transportiert
die Daten zum Hauptspeicher 1006, von dem aus der Prozessor 1004 die
Anweisungen ausliest und ausführt.
Die vom Hauptspeicher 1006 empfangenen Anweisungen können optional
in der Speichervorrichtung 1010 gespeichert werden, und
zwar entweder vor oder nach dem Ausführen durch den Prozessor 1004.
-
Das
Computersystem 1000 beinhaltet auch eine Kommunikationsschnittstelle 1018,
die mit dem Bus 1002 verbunden ist. Die Kommunikationsschnittstelle 1018 sorgt
für eine
Zweiweg-Datenkommunikationsverbindung
zu einem Netzwerk-Verbindungsglied 1020, das mit einem
lokalen Netz 1022 verbunden ist. Beispielsweise kann die
Kommunikationsschnittstelle 1018 eine ISDN-(Integrated
Services Digital Network)-Karte oder ein Modem sein, um eine Datenkommunikationsverbindung
zu einem entsprechenden Typ von Telefonleitung bereitzustellen.
Als weiteres Beispiel kann die Kommunikationsschnittstelle 1018 eine
LAN-(Local Area
Network)-Karte sein, um eine Datenkommunikationsverbindung zu einem
kompatiblen LAN bereitzustellen. Drahtlose Verbindungen können auch
implementiert sein. Bei jeder derartigen Implementierung sendet
und empfängt
die Kommunikationsschnittstelle 1018 elektrische, elektromagnetische
oder optische Signale, welche digitale Datenströme transportieren, die verschiedene
Typen von Information repräsentieren.
-
Das
Netzwerk-Verbindungsglied 1020 sorgt typischerweise für eine Datenkommunikation über eines
oder mehrere Netze zu anderen Datenvorrichtungen. Beispielsweise
kann das Netzwerk-Verbindungsglied 1020 eine Verbindung über ein
lokales Netz 1022 zu einem Host-Computer 1024 oder
zu einer Datenanlage bereitstellen, die durch einen Internetdienstanbieter
(ISP) 1026 betrieben wird. Der ISP 1026 stellt
seinerseits Datenkommunikationsdienste über das weltweite Paketdaten-Kommunikationsnetz bereit,
das heutzutage allgemein als "Internet" 1028 bezeichnet
wird. Das lokale Netz 1022 und das Internet 1028 verwenden
beide elektrische, elektromagnetische oder optische Signale, welche
digitale Datenströme
transportieren. Die über
die verschiedenen Netzwerke übertragenen
Signale, und die beim Netzwerk-Verbindungsglied 1020 und über die
Kommunikationsschnittstelle 1018 übertragenen Signale, welche
die digitalen Signale vom Computersystem 1000 weg und zu
diesem hin transportieren, sind beispielhafte Formen von die Informationen
transportierenden Trägerwellen.
-
Das
Computersystem 1000 kann Nachrichten senden und Daten,
einschließlich
Programmcode empfangen, und zwar über das/die Netzwerk(e), das Netzwerk-Verbindungsglied 1020 und
die Kommunikationsschnittstelle 1018. Beim Beispiel des
Internet könnte
ein Server 1030 einen angeforderten Code für ein Anwendungsprogramm über das
Internet 1028, den ISP 1026, das lokale Netz 1022 und
die Kommunikationsschnittstelle 1018 übertragen.
-
Der
empfangene Code kann durch den Prozessor 1004 bei seinem
Empfang ausgeführt
werden, und/oder in der Speichervorrichtung 1010 oder einem
anderen nichtflüchtigen
Speicher zur späteren Ausführung gespeichert
werden. Auf diese Weise kann das Computersystem 1000 Anwendungscode in
Form einer Trägerwelle
erhalten.