DE69614383T2 - Kontinuierlich verfügbarer datenbankserver mit mehreren knotengruppen mit sich minimal überschneidenden sätzen von datenbankteilkopien - Google Patents
Kontinuierlich verfügbarer datenbankserver mit mehreren knotengruppen mit sich minimal überschneidenden sätzen von datenbankteilkopienInfo
- Publication number
- DE69614383T2 DE69614383T2 DE69614383T DE69614383T DE69614383T2 DE 69614383 T2 DE69614383 T2 DE 69614383T2 DE 69614383 T DE69614383 T DE 69614383T DE 69614383 T DE69614383 T DE 69614383T DE 69614383 T2 DE69614383 T2 DE 69614383T2
- Authority
- DE
- Germany
- Prior art keywords
- fragment
- data
- data processors
- replicas
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 239000012634 fragment Substances 0.000 claims description 292
- 238000000034 method Methods 0.000 claims description 66
- 238000004891 communication Methods 0.000 claims description 26
- 238000013467 fragmentation Methods 0.000 claims description 24
- 238000006062 fragmentation reaction Methods 0.000 claims description 24
- 238000013507 mapping Methods 0.000 claims description 23
- 238000012545 processing Methods 0.000 claims description 7
- 238000001816 cooling Methods 0.000 claims description 6
- 238000013500 data storage Methods 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 27
- 230000006870 function Effects 0.000 description 26
- 239000011159 matrix material Substances 0.000 description 9
- 230000000903 blocking effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000008439 repair process Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 241001522296 Erithacus rubecula Species 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000012447 hatching Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 230000008929 regeneration Effects 0.000 description 2
- 238000011069 regeneration method Methods 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 235000021190 leftovers Nutrition 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000007616 round robin method Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60R—VEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
- B60R25/00—Fittings or systems for preventing or indicating unauthorised use or theft of vehicles
- B60R25/10—Fittings or systems for preventing or indicating unauthorised use or theft of vehicles actuating a signalling device
- B60R25/1003—Alarm systems characterised by arm or disarm features
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K17/00—Electronic switching or gating, i.e. not by contact-making and –breaking
- H03K17/94—Electronic switching or gating, i.e. not by contact-making and –breaking characterised by the way in which the control signals are generated
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60R—VEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
- B60R25/00—Fittings or systems for preventing or indicating unauthorised use or theft of vehicles
- B60R25/10—Fittings or systems for preventing or indicating unauthorised use or theft of vehicles actuating a signalling device
- B60R25/1004—Alarm systems characterised by the type of sensor, e.g. current sensing means
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60R—VEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
- B60R25/00—Fittings or systems for preventing or indicating unauthorised use or theft of vehicles
- B60R25/10—Fittings or systems for preventing or indicating unauthorised use or theft of vehicles actuating a signalling device
- B60R25/1018—Alarm systems characterised by features related to the general power supply
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60R—VEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
- B60R25/00—Fittings or systems for preventing or indicating unauthorised use or theft of vehicles
- B60R25/10—Fittings or systems for preventing or indicating unauthorised use or theft of vehicles actuating a signalling device
- B60R25/104—Fittings or systems for preventing or indicating unauthorised use or theft of vehicles actuating a signalling device characterised by the type of theft warning signal, e.g. visual or audible signals with special characteristics
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60R—VEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
- B60R25/00—Fittings or systems for preventing or indicating unauthorised use or theft of vehicles
- B60R25/20—Means to switch the anti-theft system on or off
- B60R25/24—Means to switch the anti-theft system on or off using electronic identifiers containing a code not memorised by the user
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07C—TIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
- G07C9/00—Individual registration on entry or exit
- G07C9/00174—Electronically operated locks; Circuits therefor; Nonmechanical keys therefor, e.g. passive or active electrical keys or other data carriers without mechanical keys
- G07C9/00182—Electronically operated locks; Circuits therefor; Nonmechanical keys therefor, e.g. passive or active electrical keys or other data carriers without mechanical keys operated with unidirectional data transmission between data carrier and locks
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07C—TIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
- G07C9/00—Individual registration on entry or exit
- G07C9/20—Individual registration on entry or exit involving the use of a pass
- G07C9/21—Individual registration on entry or exit involving the use of a pass having a variable access code
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07C—TIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
- G07C9/00—Individual registration on entry or exit
- G07C9/20—Individual registration on entry or exit involving the use of a pass
- G07C9/28—Individual registration on entry or exit involving the use of a pass the pass enabling tracking or indicating presence
-
- G—PHYSICS
- G08—SIGNALLING
- G08B—SIGNALLING OR CALLING SYSTEMS; ORDER TELEGRAPHS; ALARM SYSTEMS
- G08B25/00—Alarm systems in which the location of the alarm condition is signalled to a central station, e.g. fire or police telegraphic systems
- G08B25/003—Address allocation methods and details
-
- G—PHYSICS
- G08—SIGNALLING
- G08B—SIGNALLING OR CALLING SYSTEMS; ORDER TELEGRAPHS; ALARM SYSTEMS
- G08B25/00—Alarm systems in which the location of the alarm condition is signalled to a central station, e.g. fire or police telegraphic systems
- G08B25/01—Alarm systems in which the location of the alarm condition is signalled to a central station, e.g. fire or police telegraphic systems characterised by the transmission medium
- G08B25/10—Alarm systems in which the location of the alarm condition is signalled to a central station, e.g. fire or police telegraphic systems characterised by the transmission medium using wireless transmission systems
-
- G—PHYSICS
- G08—SIGNALLING
- G08B—SIGNALLING OR CALLING SYSTEMS; ORDER TELEGRAPHS; ALARM SYSTEMS
- G08B29/00—Checking or monitoring of signalling or alarm systems; Prevention or correction of operating errors, e.g. preventing unauthorised operation
- G08B29/18—Prevention or correction of operating errors
- G08B29/20—Calibration, including self-calibrating arrangements
- G08B29/24—Self-calibration, e.g. compensating for environmental drift or ageing of components
- G08B29/26—Self-calibration, e.g. compensating for environmental drift or ageing of components by updating and storing reference thresholds
-
- G—PHYSICS
- G08—SIGNALLING
- G08C—TRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
- G08C17/00—Arrangements for transmitting signals characterised by the use of a wireless electrical link
- G08C17/02—Arrangements for transmitting signals characterised by the use of a wireless electrical link using a radio link
-
- G—PHYSICS
- G08—SIGNALLING
- G08C—TRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
- G08C19/00—Electric signal transmission systems
- G08C19/16—Electric signal transmission systems in which transmission is by pulses
- G08C19/28—Electric signal transmission systems in which transmission is by pulses using pulse code
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B60—VEHICLES IN GENERAL
- B60R—VEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
- B60R25/00—Fittings or systems for preventing or indicating unauthorised use or theft of vehicles
- B60R25/10—Fittings or systems for preventing or indicating unauthorised use or theft of vehicles actuating a signalling device
- B60R2025/1013—Alarm systems characterised by the type of warning signal, e.g. visual, audible
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07C—TIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
- G07C9/00—Individual registration on entry or exit
- G07C9/00174—Electronically operated locks; Circuits therefor; Nonmechanical keys therefor, e.g. passive or active electrical keys or other data carriers without mechanical keys
- G07C9/00182—Electronically operated locks; Circuits therefor; Nonmechanical keys therefor, e.g. passive or active electrical keys or other data carriers without mechanical keys operated with unidirectional data transmission between data carrier and locks
- G07C2009/00238—Electronically operated locks; Circuits therefor; Nonmechanical keys therefor, e.g. passive or active electrical keys or other data carriers without mechanical keys operated with unidirectional data transmission between data carrier and locks the transmittted data signal containing a code which is changed
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07C—TIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
- G07C9/00—Individual registration on entry or exit
- G07C9/00174—Electronically operated locks; Circuits therefor; Nonmechanical keys therefor, e.g. passive or active electrical keys or other data carriers without mechanical keys
- G07C2009/00753—Electronically operated locks; Circuits therefor; Nonmechanical keys therefor, e.g. passive or active electrical keys or other data carriers without mechanical keys operated by active electrical keys
- G07C2009/00769—Electronically operated locks; Circuits therefor; Nonmechanical keys therefor, e.g. passive or active electrical keys or other data carriers without mechanical keys operated by active electrical keys with data transmission performed by wireless means
- G07C2009/00793—Electronically operated locks; Circuits therefor; Nonmechanical keys therefor, e.g. passive or active electrical keys or other data carriers without mechanical keys operated by active electrical keys with data transmission performed by wireless means by Hertzian waves
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07C—TIME OR ATTENDANCE REGISTERS; REGISTERING OR INDICATING THE WORKING OF MACHINES; GENERATING RANDOM NUMBERS; VOTING OR LOTTERY APPARATUS; ARRANGEMENTS, SYSTEMS OR APPARATUS FOR CHECKING NOT PROVIDED FOR ELSEWHERE
- G07C9/00—Individual registration on entry or exit
- G07C9/00174—Electronically operated locks; Circuits therefor; Nonmechanical keys therefor, e.g. passive or active electrical keys or other data carriers without mechanical keys
- G07C9/00817—Electronically operated locks; Circuits therefor; Nonmechanical keys therefor, e.g. passive or active electrical keys or other data carriers without mechanical keys where the code of the lock can be programmed
- G07C2009/00849—Electronically operated locks; Circuits therefor; Nonmechanical keys therefor, e.g. passive or active electrical keys or other data carriers without mechanical keys where the code of the lock can be programmed programming by learning
-
- G—PHYSICS
- G08—SIGNALLING
- G08C—TRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
- G08C2201/00—Transmission systems of control signals via wireless link
- G08C2201/50—Receiving or transmitting feedback, e.g. replies, status updates, acknowledgements, from the controlled devices
- G08C2201/51—Remote controlling of devices based on replies, status thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04B—TRANSMISSION
- H04B1/00—Details of transmission systems, not covered by a single one of groups H04B3/00 - H04B13/00; Details of transmission systems not characterised by the medium used for transmission
- H04B1/06—Receivers
- H04B1/16—Circuits
- H04B1/20—Circuits for coupling gramophone pick-up, recorder output, or microphone to receiver
- H04B1/202—Circuits for coupling gramophone pick-up, recorder output, or microphone to receiver by remote control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J13/00—Code division multiplex systems
- H04J13/0074—Code shifting or hopping
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mechanical Engineering (AREA)
- Computer Networks & Wireless Communication (AREA)
- Business, Economics & Management (AREA)
- Emergency Management (AREA)
- Computer Security & Cryptography (AREA)
- Selective Calling Equipment (AREA)
- Transmitters (AREA)
- Reduction Or Emphasis Of Bandwidth Of Signals (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
- Bei der vorliegenden Anmeldung handelt es sich um eine Teilfortführung der US-Patentanmeldung US-A-5 555 404 mit dem Titel "Kontinuierlich verfügbarer Datenbasis-Server mit mehreren Gruppen von Knoten, wobei jede Gruppe eine Datenbasis- Kopie mit gespeicherten Fragmenten über mehrere Knoten unterhält", bei der es sich um eine Fortführung der US-Patentanmeldung US-A-5 423 037 handelte.
- Die vorliegende Erfindung bezieht sich im allgemeinen auf Datenbasisserver-Computersysteme, die eine Vielzahl von miteinander verbundenen Computern verwenden, um kontinuierliche, zuverlässige Transaktionsdienste zu erbringen.
- In einer Vielzahl von wirtschaftlichen Zusammenhängen ist es sehr wichtig, daß ein Datenbasis-Transaktionsserver kontinuierlich zur Verfügung steht, und zwar 24 Stunden pro Tag, ohne Unterbrechung. Zum Beispiel muß ein Datenbasis-Server, der zum Sammeln von Benutzungsgebühren und anderen Rechnungsinformationen für ein Telefonsystem verwendet wird, ein Niveau an Zuverlässigkeit aufweisen, das dem des eigentlichen Telefonsystems ähnlich ist. Während die meisten ausfallbeständigen Computersysteme nur für einen einzigen Ausfall beständig sind, sollte zum Erreichen des Ausmaßes an Zuverlässigkeit, das für eine Telefongebühren-Datenbasis oder ein Fluglinien-Reservierungssystem erforderlich ist, der Datenbasis-Server auch eine rasche, automatische Selbstreparatur- Eigenschaft besitzen, um das ursprüngliche Ausfallbeständigkeits-Niveau wieder herzustellen.
- Im Zusammenhang mit der vorliegenden Erfindung ist unter Selbstreparatur-Eigenschaft zu verstehen, daß alle der Datenspeicherungs- und Transaktionshandhabungs-Verantwortlichkeiten des ausgefallenen Knotens auf andere Knoten in dem Datenbasis-Serversystem übertragen werden. Bei Beendigung des Selbstreparatur-Vorgangs muß die Ausfallbeständigkeit hinsichtlich eines einzelnen Ausfalls wieder hergestellt sein.
- Das heißt, es darf also nicht nur ein einzelner Hardware- Ausfall nicht in der Lage sein, ein Ausfallen des gesamten Systems hervorzurufen, sondern auch ein zweiter Hardware- Ausfall sollte nicht in der Lage sein, ein Ausfallen des gesamten Systems zu verursachen.
- Aufgrund des Erfordernisses kontinuierlicher Verfügbarkeit sollte der Selbstreparatur-Vorgang in nicht-blockierender Weise erfolgen, wobei dies bedeutet, daß der Datenbasis- Server kontinuierlich verfügbar bleibt (d. h. weiterhin Dienstleistungstransaktionen ausführen kann), während der Selbstreparatur-Vorgang durchgeführt wird.
- Zusätzlich zu der kontinuierlichen Verfügbarkeit besteht ein weiteres wünschenswertes Merkmal für Datenbasis-Server mit hoher Zuverlässigkeit in einer schonenden Minderung hinsichtlich der Datenverfügbarkeit, wenn mehrere Ausfälle auftreten. Mit anderen Worten, es sollte selbst dann, wenn mehrere Ausfälle dazu führen sollten, daß einige der Datenaufzeichnungen nicht verfügbar sind, der Datenbasis-Server dennoch weiterhin Transaktionen erbringen, die keinen Zugriff auf die nicht verfügbaren Daten benötigen.
- Ein übliches Verfahren zum Schaffen eines zuverlässigen Computerbetriebs besteht in der Verwendung von "ausfallbeständigen" Computersystemen, die typischerweise redundante Komponenten aufweisen. Die meisten ausfallbeständigen Computersysteme können jedoch innerhalb einer kurzen Zeitdauer nur einen einzigen Hardware-Komponentenausfall bewältigen, und außerdem sind die meisten derartigen Systeme auch anfällig für Ausfälle von peripheren Geräten, wie zum Beispiel Stromausfällen und Kommunikationsnetzausfällen.
- Ein Ziel der vorliegenden Erfindung besteht in der Überwindung dieser Mängel sowie in der Angabe eines Datenbasis- Servers mit hoher Zuverlässigkeit, der einzelausfallbeständig ist, eine automatische, nicht-blockierende Selbstreparatur beinhaltet, die die Einzelausfallbeständigkeit nach einem ersten Knotenausfall rasch wiederherstellt, und der eine schonende Minderung hinsichtlich der Datenverfügbarkeit bei Auftreten von mehreren Ausfällen besitzt.
- Zusammengefaßt handelt es sich bei der vorliegenden Erfindung um ein Datenbasisserver-Computersystem, das eine Vielzahl von Datenprozessoren aufweist, die auch als Knoten bezeichnet werden. Unter Verwendung einer sogenannten "shared-nothing"- Systemarchitektur (einer Systemarchitektur, bei der nichts gemeinsam verwendet wird), besitzt jeder Datenprozessor seine eigene zentrale Verarbeitungseinheit, einen primären und einen sekundären Speicher zum Speichern von Datenbasis- Tabellen und anderen Datenstrukturen sowie Kommunikationskanäle zur Kommunikation mit anderen von den Datenprozessoren.
- Einige oder alle der Datenprozessoren beinhalten einen Kommunikationsprozessor zum Empfangen von Transaktionsanfragen und zum Senden von Antworten darauf. Zur Verhinderung, daß irgendein Hardware-Ausfall ein Ausfallen des gesamten Systems hervorruft, sind die Datenprozessoren in mindestens eine erste und eine zweite Knotengruppe geteilt, wobei jede Knotengruppe keine Betriebseinrichtungen, einschließlich Stromversorgungs- und Kühlsystem-Komponenten, mit den anderen Gruppen teilt.
- Jede Datenbasis-Tabelle in dem System ist in Fragmente unterteilt, wobei die Anzahl der Datenprozessoren in dem System darstellt. Die Aufzeichnungen der Datenbasis-Tabelle werden unter den Tabellen-Fragmenten so gleichmäßig wie möglich zugeordnet, zum Beispiel durch Hashing oder Streuspeicherung eines primären Schlüsselwerts für jede Aufzeichnung mit einer vorbestimmten Hash- oder Streufunktion sowie Verwendung des resultierenden Werts zum Auswählen von einem der Datenbasis-Tabellenfragmente. Ein "primäres Replikat" jedes Fragments wird in einem entsprechenden der Datenprozessoren gespeichert.
- Für jedes primäre Fragmentreplikat erzeugt das System auch mindestens ein Reserve-Replikat, bei dem es sich im wesentlichen um eine Kopie des Primär-Replikats des Fragments handelt. Datenbasis-Transaktionen werden unter Verwendung der primären Fragmentreplikate durchgeführt, und die Reserve- Replikate werden unter Verwendung von Transaktions- Protokollaufzeichnungen aktualisiert.
- Zur Gewährleistung einer anhaltenden Datenverfügbarkeit selbst bei einem Einzelknoten-Ausfall werden die Primär- Replikate sowie die Reserve-Replikate für jedes Datenbasis- Tabellenfragment in Datenprozessoren in verschiedenen Knotengruppen der ersten und der zweiten Knotengruppe gespeichert.
- Jeder Knoten des Systems beinhaltet ein Datenlexikon, welches Information speichert, die angibt, wo jedes primäre Fragmentreplikat und jedes Reserve-Fragmentreplikat in den Datenprozessoren des Systems gespeichert sind. Ein Transaktions- Manager an jedem Systemknoten reagiert auf Datenbasis-Anfragen durch Bestimmen, auf welches Fragment einer Datenbasis durch die Datenbasis-Anfrage zugegriffen wird, sowie durch anschließendes Weiterleiten der Datenbasis-Anfrage zu dem Datenprozessor, in dem das Primär-Replikat dieses Fragments gespeichert ist.
- Bei Ausfall von irgendeinem der Datenprozessoren in dem System ändert jeder Knoten die Information in seinem Datenlexikon, (A), um anzuzeigen, daß das primäre Fragmentreplikat und das Reserve-Fragmentreplikat, die in dem ausgefallenen Datenprozessor gespeichert sind, nicht verfügbar sind, und (B), um anzuzeigen, daß für jedes in dem ausgefallenen Datenprozessor gespeicherte primäre Fragmentreplikat das entsprechende Reservereplikat an dessen Stelle verwendet werden soll.
- Außerdem werden die Fragmentreplikate, die durch den Knotenausfall unverfügbar geworden sind, anhand von anderen Replikaten derselben in dem System regeneriert und in Unterfragmenten in den verbleibenden verfügbaren Knoten des Datenbasis-Servers gespeichert. Auf diese Weise werden die Datenreplikate, die durch einen Knotenausfall nicht verfügbar geworden sind, über die verbliebenen verfügbaren Knoten umverteilt.
- Der Replikat-Regenerierungsvorgang ist nicht-blockierend, so daß es dem Datenbasis-Server ermöglicht wird, Transaktionen in kontinuierlicher Weise selbst während der Selbstreparatur des Datenbasis-Servers zu erbringen.
- Diese sowie weitere Aufgaben werden im Großen und Ganzen durch Anwendung der in den Hauptansprüchen angegebenen Merkmale in vorteilhafter Weise gelöst. Weiterbildungen sind in den Unteransprüchen angegeben.
- Weitere Ziele und Merkmale der Erfindung werden anhand der nachfolgenden ausführlichen Beschreibung und den beigefügten Ansprüchen in Verbindung mit den Zeichnungen noch deutlicher erläutert; in den Zeichnungen zeigen:
- Fig. 1 ein Blockdiagramm eines Multiprozessor-Computersystems mit Knoten, die durch ein Mehrweg-Hyperwürfel-Kommunikationsnetz miteinander verbunden sind;
- Fig. 2 ein weiteres Blockdiagramm des Multiprozessor- Computersystems der Fig. 1;
- Fig. 3 ein Blockdiagramm eines Prozessors in dem Multiprozessor-Computersystem der vorliegenden Erfindung;
- Fig. 4 ein Blockdiagramm zur Erläuterung der Fragmentierung einer einzelnen Datenbasis-Tabelle gemäß der vorliegenden Erfindung;
- Fig. 5 ein Blockdiagramm zur Erläuterung einer Umverteilung von Datenbasis-Tabellenfragmenten nach einem Einzelknotenausfall;
- Fig. 6 eine Darstellung von Beziehungen zwischen Software-Modulen und Datenstrukturen, wie sie bei einem bevorzugten Ausführungsbeispiel der vorliegenden Erfindung verwendet werden;
- Fig. 7A-7E eine Darstellung der Fragmentierung einer Datenbasis-Tabelle gegenüber Knoten an zwei getrennten Orten gemäß der vorliegenden Erfindung.
- In der Fig. 1 ist ein Multiprozessor-Datenbasisserver 100 dargestellt, der acht Datenprozessoren 102 aufweist, die häufig als Knoten bezeichnet werden und die durch ein Mehrweg-Hyperwürfel-Kommunikationsnetz 104 miteinander verbunden sind. Die Anzahl der in diesem Beispiel dargestellten Datenprozessoren beträgt acht oder 2³, was einem dreidimensionalen Hyperwürfel entspricht. Das Kommuniktionsnetz 104 beinhaltet alle Kommunikationswege zwischen den Knoten 102, die in Fig. 1 gezeigt sind. Bei einem N-dimensionalen Hyperwürfel weist jeder Knoten direkte Verbindungen zu benachbarten Knoten auf.
- Eine Vielzahl der Datenprozessoren 102 weist einen Kommunikations-Coprozessor 106 für externe Kommunikation auf, so daß ein Ausfall von irgendeinem einzelnen dieser Kommunikations- Coprozessoren nicht dazu führt, daß der Datenbasis-Server 100 nicht verfügbar wird. Der Datenbasis-Server 100 reagiert auf Anfragen, die er von Anfragesystemen 110 über Kommuniktionsverbindungen 112 empfängt, die diese Anfragesysteme mit den Kommunikations-Coprozessoren 106 verbinden. In dem bevorzugten Ausführungsbeispiel ist wenigstens ein Datenprozessor 102 in jeder Gruppe aus vier Datenprozessoren durch einen Kommunikations-Coprozessor und eine Kommunikationsverbindung 112 mit einem externen Host-Computer gekoppelt.
- Die Anzahl der verwendeten Prozessoren läßt sich nach oben oder unten erweitern, so daß sie an die Datenverarbeitungserfordernisse einer beliebigen speziellen Anwendung angepaßt ist. Es ist bevorzugt, jedoch nicht notwendig, Hyperwürfel- Architekturen mit 2J Datenprozessoren zu verwenden, die in einem Hyperwürfel-Kommunikationsnetz miteinander verbunden sind, wobei eine ganze Zahl größer oder gleich drei ist. Allgemeiner gesagt, es sollte der Datenbasis-Server 100 einen symmetrischen Satz von Knoten auf jeder Seite der "Spiegeldimension" des Systems aufweisen.
- Viele der Aspekte der Erfindung lassen sich unter Verwendung von so wenigen wie 22 (d. h. vier) Prozessoren ausführen. Ein System mit lediglich vier Knoten ist jedoch nicht in der Lage, das bevorzugte Niveau an Ausfallbeständigkeit nach einem Einzelknotenausfall zu erzielen.
- Wie unter Bezugnahme auf Fig. 2 gezeigt ist, ist ein System mit 16 Datenprozessoren 102 in zwei Gruppen von je acht Prozessoren geteilt, wobei sich eine Hälfte auf jeder Seite der "Spiegeldimension" des Computersystems befindet, wie dies gezeigt ist. Zur Gewährleistung der Ausfallbeständigkeit verwendet das Datenbasis-Serversystem eine Vielzahl homogener, leistungsfähiger Knoten mit einem hohen Maß an Knotentrennung.
- Insbesondere wird eine sogenannte "shared nothing"-Hardware- Architektur verwendet, wobei dies bedeutet, daß weder Primärspeicher noch Speicherplatten zwischen Knoten geteilt bzw. gemeinsam verwendet werden. In einem Datenbasis-Server mit Fehlerkaschierungseigenschaften kann weder ein Teilen von Primärspeichern noch ein Teilen von Sekundärspeichern erfolgen, da Speicher kritische Komponenten sind, die von Servern an allen Knoten verwendet wird.
- In dem bevorzugten Ausführungsbeispiel der Fig. 2 sind die 16 Datenprozessoren 102 entlang von zwei Dimensionen in vier Gruppen geteilt. Jede Gruppe teilt sich ein Paar Stromversorgungseinheiten 120 und ein Paar Kühlgebläse 122, wobei jedes Paar der Stromversorgungseinheiten und der Kühlgebläse Einzelausfallbeständigkeit besitzt.
- Wie nachfolgend noch ausführlicher beschrieben wird, ist es zur Schaffung von Mehrfach-Ausfallbeständigkeit sowie Fehlermaskierung wichtig, daß die Prozessoren auf jeder Seite der Spiegeldimension in mindestens zwei getrennte Gruppen geteilt sind, die sich keinerlei Betriebseinrichtungen teilen. Genau aus diesem Grund sind die Datenprozessoren 102 auf jeder Seite der Spiegeldimension in Fig. 2 in Untergruppen geteilt.
- Wie unter Bezugnahme auf Fig. 3 zu sehen ist, besitzt jeder Datenprozessor 102 bei dem bevorzugten Ausführungsbeispiel eine zentrale Verarbeitungseinheit (CPU) 132, wie zum Beispiel den von Intel hergestellten i486-Mikroprozessor, einen Systembus 134, der die CPU 132 mit einem Sekundärspeicher 136 verbindet (z. B. Magnetplatten-Speichereinrichtungen), sowie einen Primärspeicher 138 (z. B. einen RAM-Speicher mit hoher Geschwindigkeit).
- Jeder Datenprozessor 102 weist ferner eine Vielzahl von parallelen Kommunikationskanälen 140 zur Kommunikation mit mindestens zwei weiteren Datenprozessoren 102 in dem System auf. Mindestens ein Datenprozessor in jeder Knotengruppe (siehe Fig. 2) beinhaltet einen Kommunikations-Coprozessor 106 zum Empfangen von Transaktionsanfragen von den Anfragesystemen über einen Kommunikationsbus 112 und zum Senden von Antworten darauf.
- Der Sekundärspeicher 136 enthält typischerweise eine Anzahl von Plattenspeichereinrichtungen 144 bis 146, die zum Speichern von Daten und Programmen (z. B. einem Satz von vorgefertigten Transaktionen) verwendet werden. Bei Datenbasis- Servern mit sehr hohen Transaktionshandhabungsraten sind aufgrund der begrenzten Datenhandhabungsmöglichkeiten irgendeiner einzelnen Plattenspeichereinrichtung sowie aufgrund der großen Mengen von zu speichernden Daten mehrere Plattenspeichereinrichtungen erforderlich. Bei der vorliegenden Erfindung wird der Sekundärspeicher 136 dazu verwendet, Bereiche (vorliegend als Fragmente bezeichnet) von Daten- Tabellen 148 sowie entsprechende Tabellen-Indizes 150 zu speichern.
- In dem Primärspeicher 138 sind derzeit ablaufende Programme gespeichert, einschließlich der Knoten-Betriebssystemsoftware 152, Datenbankverwaltungssystem-(DBMS-)Software 154 sowie Kommunikations-Steuerungssoftware 156. Bei dem bevorzugten Ausführungsbeispiel beinhaltet die Datenbankverwaltungssystem-Software 154 ein Datenlexikon 158, Datenbasisfragmentierungs-Steuerungssoftware 160 sowie einen Transaktions-Manager 162. Eine Kopie des Datenlexikons wird auch auf Platte (Sekundärspeicher 236) vorrätig gehalten.
- Wie nachfolgend noch ausführlicher beschrieben ist, wird das Datenlexikon 158 dazu verwendet, den Ort von verschiedenen Fragmenten (Bereichen) einer beliebigen spezifizierten Datenbasis-Tabelle zu bestimmen, und die Datenbasisfragmentierungs-Steuerungssoftware 160 steuert den Vorgang der Fragmentierung von Datenbasis-Tabellen, die Kaschierung von Knotenausfällen, die Anfertigung zusätzlicher Replikate von Datenbasisfragmenten sowie die Rekonstruktion von Datenbasisfragmenten an Knoten nach Wiederherstellung einer Ausfallsituation.
- Unter Bezugnahme auf Fig. 4 wird zum Zweck der Erläuterung der Datenbasis-Tabellen-Fragmentierung ein System mit acht Knoten als Beispiel verwendet. Jede Datenbasis-Tabelle wird über die Systemknoten fragmentiert, und die Anzahl von Fragmenten jeder Tabelle entspricht der Anzahl von Knoten in dem System. Fig. 4 zeigt die Fragmente für eine Datenbasis- Tabelle, die als Primär-Replikatfragmente 0-7 und als einsatzbereite Reserve-Replikatfragmente 0-7 bezeichnet sind.
- Jedes Tabellenfragment, wie zum Beispiel das Primär-Replikatfragment 200, stellt einen Bereich der Aufzeichnungen in einer Tabelle dar. Die Aufzeichnungen in einer Datenbasis- Tabelle sind den verschiedenen Fragmenten so gleichmäßig wie möglich zugeordnet, um die Datenspeicherungs- und Transaktionshandhabungs-Belastung so gleichmäßig wie möglich unter den Knoten des Systems zu verteilen.
- Der Begriff "Aufzeichnung", wie er in dem vorliegenden Dokument verwendet wird, ist synonym mit dem Begriff "Tupel" zu verstehen, der sich häufig in der Literatur über Datenbasis-Computerwissenschaft findet. Eine Aufzeichnung oder ein Tupel ist als eine Dateneinheit definiert, die durch einen Schlüsselwert in eindeutiger Weise identifiziert ist.
- Bei dem bevorzugten Ausführungsbeispiel werden Aufzeichnungen einer Tabelle den Fragmenten unter Verwendung einer Hash- bzw. Streufunktion zugeordnet, beispielsweise derart:
- v = k modulo n,
- wobei der der Aufzeichnung zugeordnete Schlüsselwert ist, die Anzahl von Fragmenten ist und v das Resultat der Streuung ist, die zum Auswählen des Fragments der Aufzeichnung verwendet wird. Dabei hat stets einen Wert zwischen 0 und n-1. Wenn zum Beispiel der Schlüsselwert für eine Aufzeichnung 15 ist und n = 8 ist, dann gehört die Aufzeichnung in das Fragment 7.
- Wenn neue Aufzeichnungen für eine Tabelle erzeugt werden, werden diese in demjenigen Knoten gespeichert, in dem das entsprechende Tabellenfragment gespeichert ist.
- Bei der vorliegenden Erfindung weist jedes Tabellenfragment zwischen zwei und vier Replikaten auf. Das Beispiel in Fig. 4 zeigt lediglich zwei Replikate 200 und 202 für jedes Tabellenfragment. Eines der Replikate wird als Primär-Replikat bezeichnet, eine zweites wird als einsatzbereites Reserve- Replikat bezeichnet, und alle weiteren Replikate werden als "zusätzliche Nur-Lese-Replikate" bezeichnet. Durch Erhöhen der Anzahl von Tabellen-Replikaten erhöht sich das Niveau der geschaffenen Ausfallbeständigkeit.
- Ein wesentlicher Bestandteil der Replikat-Zuordnungsstrategie der vorliegenden Erfindung besteht darin, daß niemals zwei Replikate einer Datenaufzeichnung von den gleichen Software- oder Hardware-Servern abhängig sein dürfen. Die Fragmentreplikate werden deshalb an Knoten innerhalb von verschiedenen Knotengruppen gespeichert.
- Insbesondere werden das Primär-Replikat und das erste einsatzbereie Reserve-Replikat eines Fragments stets in Knoten auf gegenüberliegenden Seiten der Spiegeldimension des Systems gespeichert, um dadurch sicherzustellen, daß die beiden Replikate nicht von denselben Stromversorgungs- oder Kühlgebläse-Einheiten abhängig sind.
- Wenn ein drittes Replikat vorgesehen ist, wird das dritte Replikat stets in einer Knotengruppe gespeichert, die von den Knotengruppen verschieden ist, in denen das Primär-Replikat und das einsatzbereite Reserve-Replikat gespeichert sind.
- Während des "normalen" Betriebs werden dann, wenn alle Knoten des Datenbasis-Serversystems in Betrieb sind, Datenbasis- Operationen unter Verwendung der primären Fragmentreplikate ausgeführt. Die Aufzeichnungen in den einsatzbereiten Reserve-Replikatfragmenten werden dadurch auf einem aktueller Stand gehalten, daß alle Protokollaufzeichnungen, die durch Transaktionen von dem Knoten mit dem Primär-Replikat erzeugt werden, zu dem Knoten mit dem entsprechenden einsatzbereiten Reserve-Replikat gesendet werden.
- Die serialisierten Protokollaufzeichnungen werden gelesen und die entsprechenden Tabellenaufzeichnungen an dem Knoten des einsatzbereiten Reserve-Replikats aktualisiert, wobei dies als fortlaufender Vorgang erfolgt. Genauer gesagt, es werden Operationen, die durch die Protokollaufzeichnungen dargestellt werden, an dem Knoten des einsatzbereiten Reserve- Replikats aktualisiert, wobei dies als fortlaufender Vorgang erfolgt.
- Genauer gesagt, es werden Operationen, die durch die Protokollaufzeichnungen dargestellt werden, an dem Knoten des einsatzbereiten Reserve-Replikats wiederholt, nachdem die Datentabelle überprüft worden ist, um sicherzustellen, daß diese Operationen nicht bereits ausgeführt worden sind, was der Fall sein kann, wenn eine Tabelle refragmentiert oder neu aufgebaut worden ist.
- Wie unter Bezugnahme auf Fig. 5 zu sehen ist, führt das System dann, wenn ein Knoten, wie zum Beispiel der Knoten 2 des Systems ausfällt, eine automatische nicht-blockierende, korrigierende Online-Reparatur bzw. Reparatur während des Betriebs aus, die das Auftreten von Einzelknotenausfällen kaschiert. Für jedes Tabellen-Fragmentreplikat, auf das aufgrund eines Knoten- oder Plattenausfalls kein Zugriff möglich ist, wird ein neues Replikat auf jeder Seite der Spiegeldimension erzeugt. Während dieser Reparaturvorgang stattfindet, ist das System für einen zweiten Knoten- oder Plattenausfall anfällig. Nach der Ausführung der Reparatur ist das System wiederum einzelausfallbeständig.
- Wenn ein Fragmentreplikat einer Tabelle nicht verfügbar wird, dann wird das nicht verfügbare Fragment in eine Anzahl von Unterfragmenten refragmentiert. Genauer gesagt, es wird dann, wenn ein Primär-Fragmentreplikat, wie zum Beispiel das Fragment 204 in Fig. 5, nicht verfügbar wird, das entsprechende einsatzbereite Reserve-Replikatfragment 206 in den Primär- Replikat-Status erhoben.
- Unter Verwendung des noch verfügbaren Replikats 206 des Fragments werden die Datenaufzeichnungen in dem Fragment in neue Unterfragmente 2'A, 2'B und 2'C kopiert, die an den verbliebenen verfügbaren Knoten auf derselben Seite der Spiegeldimension wie der ausgefallene Knoten gespeichert werden. Gleichzeitig werden Replikate 2" A, 2" B und 2"C dieser Unterfragmente erzeugt und an den entsprechenden Knoten auf der anderen Seite der Spiegeldimension gespeichert.
- Wenn ein einsatzbereites Fragmentreplikat, wie zum Beispiel das Fragment 208 in Fig. 5, nicht verfügbar wird, dann wird das entsprechende Primär-Replikatfragment verwendet, um neue Unterfragmente 6'A, 6'B und 6'C zu erzeugen, die an den verbliebenen verfügbaren Knoten auf derselben Seite der Spiegeldimension wie der ausgefallene Knoten gespeichert werden, sowie dazu, Replikte 6"A, 6" B und 6"C dieser Unterfragmente auf der anderen Seite der Spiegeldimension zu erzeugen.
- Ein Unterfragment wird jedem verfügbaren Knoten zugeordnet, um die neu zugeordneten Daten und die zusätzliche Transaktions-Arbeitsbelastung auf möglichst viele Knoten zu verteilen. Sobald alle Unterfragmente für ein bestimmtes Tabellen-Fragment aufgebaut worden sind, wird das verbliebene Fragment höherer Ordnung (d. h. im Knoten 6) nicht mehr als Primär-Fragmentreplikat zum Handhaben von Transaktionen verwendet. Stattdessen erhalten nun die neuen Unterfragmente auf derselben Seite der Spiegeldimension wie das Primär-Fragmentreplikat den Status "primär".
- In dem in Fig. 5 gezeigten Beispiel werden die Tabellen-Fragmente 206 und 210 nach dem Aufbau der Unterfragmente nicht länger verwendet, und stattdessen werden die Unterfragmente 2'A, 2'B und 2'C als Primär-(Unter-)Fragmente anstelle des Primär-Fragments 2 verwendet, und die Unterfragmente 6" A, 6" B und 6"C werden als Primär-(Unter-)Fragmente für die Transaktionsverarbeitung anstelle des Primär-Fragments 6 verwendet. Infolgedessen bleibt der Knoten 6, sobald alle betroffenen Tabellen-Fragmente unterfragmentiert worden sind, im wesentlichen ruhend, bis der ausgefallene Knoten 2 neu gestartet wird.
- Wenn weitere Knotenausfälle auftreten, nachdem die vorstehend beschriebene Reparatur stattgefunden hat, kann ein Unterfragment weiter refragmentiert werden. Dabei werden die gleichen Vorgaben hinsichtlich Fragmentierung, Zuordnung und Primär-Replikatbestimmung wie für ein Unterfragment erster Ordnung verwendet. Die Daten für jedes Unterfragment werden in separaten Dateien aufbewahrt, um die Schreib- und Lesedatenvolumina zu reduzieren, wenn ein Replikat aufgebaut und gelöscht wird.
- Eine Ausnahme hinsichtlich des vorstehend beschriebenen Verfahrens zum Handhaben von Mehrfachknotenausfällen besteht darin, daß dann, wenn der zweite Knotenausfall auf derselben Seite der Spiegeldimension stattfindet, auf der sich der "ruhende" Knoten 6 befindet, die Tabellen-Fragmente in dem zweiten ausgefallenen Knoten an dem Knoten 6 wieder aufgebaut werden können und der Knoten 6 dann anstelle des zweiten ausgefallenen Knotens verwendet werden kann.
- Sollte zum Beispiel der Knoten 5 nach Beendigung der Selbstreparatur ausfallen, die durch den Ausfall des Knotens 2 veranlaßt worden ist, dann würde die Fragmentierungs-Steuerungssoftware alle der Tabellen-Fragmente von dem Knoten 1 in den Knoten 6 kopieren und dann den Knoten 6 anstelle des Knotens 5 verwenden.
- Bei einem bevorzugten Ausführungsbeispiel wird die nachfolgende Streufunktion verwendet, um das Fragment zu bestimmen, dem jede Datenbasis-Aufzeichnung zugeordnet ist:
- Streuung (k, n) = < v, r> = < k modulo n, k ÷ n > ,
- wobei k der der Aufzeichnung zugeordnete Schlüsselwert ist, die Anzahl von Fragmenten ist, das Resultat (mit einem Wert zwischen 0 und n-1) von der Streufunktion ist, und ein unabhängiger Wert für eine rekursive Verwendung der Streufunktion ist. In dem vorstehenden Ausdruck ist der Teilungsoperator "÷" von Operatoren " " und " " umgeben, um anzuzeigen, daß das Ergebnis des Teilungsvorgangs auf die nächste ganze Zahl abgerundet wird.
- Eine bestimmte Datenbasis-Aufzeichnung läßt sich durch Anwenden der Streufunktion auf den Schlüsselwert der Aufzeichnung sowie die Anzahl von Fragmenten auffinden. Der Wert bestimmt, zu welchem Fragment der Ordnung 1 die Aufzeichnung gehört.
- Wenn das Fragment der Ordnung 1 unterfragmentiert worden ist, wird der Wert als neuer Schlüsselwert verwendet, der einer Streuspeicherung unterzogen wird, um das korrekte Unterfragment der zweiten Ordnung zu bestimmen. Dieser Prozeß wird in sich wiederholender Weise fortgesetzt, bis ein Fragment mit Replikaten gefunden wird, und anschließend daran erfolgt ein Zugriff auf die Aufzeichnung von dem Primär-Replikat aus.
- Während sukzessiver Iterationen der vorstehend beschriebenen Streufunktion zum Lokalisieren einer Aufzeichnung in einer Datenbasis-Tabelle ist der Wert in der vorstehend genannten Streufunktion gleich der Anzahl von Unterfragmenten, in die ein Fragment der Tabelle geteilt worden ist. Typischerweise wird der Wert während sukzessiver Iterationen einer Sequenz von Werten zugeordnet, wie zum Beispiel
- n0 = Gesamtanzahl der Knoten in dem System
- n1 = (n0/2) - 1
- n2 = n1 -1
- n3 = n2 -1
- ...
- Eine alternative "lineare" Streufunktion, die zum Lokalisieren von Aufzeichnungen innerhalb von Tabellen-Fragmenten und Unterfragmenten verwendet werden könnte, sieht folgendermaßen aus:
- StreuungL(k, n) = < v, r> = < n (k - L) (U - L + 1) , N(k - L))modulo(U - L + 1) + L> ,
- wobei der Wert von gleich der Anzahl von Fragmenten oder Unterfragmenten ist, auf die eine Tabelle oder ein Tabellen- Fragment verteilt wird, und wobei ein Schlüsselwert in dem Bereich [L, U] ist. Diese Funktion teilt den Bereich von Schlüsselwerten in gleichmäßig dimensionierte Intervalle und geht von der Annahme aus, daß die Schlüsselwerte über den Wertebereich L bis U homogen verteilt sind. Dabei ist " " das Ergebnis (mit einem Wert zwischen 0 und n-1) aus der Streufunktion, und ist ein unabhängiger Wert für die rekursive Verwendung der Streufunktion.
- Wenn zum Beispiel der Schlüsselwert für eine bestimmte Aufzeichnung gleich 1377 ist, fallen alle Schlüsselwerte für die Tabelle in den Bereich [1000, 1999] und wenn n = 5 bei der ersten Ordnung ist und n = 4 bei der zweiten Ordnung der Streuung ist, dann wird die StreuungL(k, n) folgendermaßen ausgewertet:
- StreuungL (1377, 5) = < 5 · 377 ÷ 1000 , 5 · 377 modulo 1000 + 1000> = < 1, 1885>
- StreuungL(1885,4) = < 3540 ÷ 1000 , 3540 modulo 1000 + 1000> = < 3, 1540>
- Somit wird die Aufzeichnung mit dem Schlüsselwert 1377 bei der Fragmentierung der ersten Ordnung dem Knoten 1 zugeordnet und bei der Fragmentierung der zweiten Ordnung dem dritten Knoten zugeordnet.
- Ein "Fragment-Crash" tritt dann auf, wenn sowohl das Primär- Replikat als auch das einsatzbereite Reserve-Replikat eines Fragments oder eines Unterfragments nicht verfügbar werden, was typischerweise aufgrund eines Knoten- oder Plattenausfalls auftritt. Das zusammengebrochene Fragment wird nicht erreichbar, jedoch bleiben andere Fragmente der Tabelle erreichbar. Ein Fragment-Crash führt somit nur für diejenigen Transaktionen zu "Auslassungsfehlern", die versuchen, auf Datenaufzeichnungen zuzugreifen, die zu dem ausgefallenen Fragment gehören.
- Eine allmähliche Reduzierung der Datenverfügbarkeit ist sowohl für Unterfragmente als auch für Fragmente vorgesehen. Wenn alle Replikate eines Unterfragments oder die das Unterfragment enthaltenden Fragmentreplikate nicht verfügbar werden, spricht man von einem Crash bzw. Zusammenbruch des Unterfragments.
- Wenn zum Beispiel unter Bezugnahme auf Fig. 5 die Knoten 1 und 6 nach einem Ausfall des Knotens 2 sowie nach Abschluß der resultierenden Refragmentierungen ausfallen würden, würden die Unterfragmente 2'B und 6'B nicht verfügbar, während jedoch der Rest der Datenbasis-Tabelle immer noch verfügbar wäre.
- Wenn ein zuvor ausgefallener Knoten neu gestartet wird, werden die Daten wieder umverteilt, um eine in etwa gleichmäßige Verteilung von Daten unter den verfügbaren Knoten zu erzielen. Die Umverteilung wird auf einer Pro-Tabellen-Basis durchgeführt, um die Serialisierbarkeit des Umverteilungsvorgangs zu bewahren und um auch durch die Umverteilungsaktivität hervorgerufene Arbeitsbelastung zu begrenzen, um dadurch die Auswirkung derselben auf die zeitliche Abarbeitung von Datenbasis-Transaktionen zu begrenzen.
- Wenn Daten in dem neu gestarteten Knoten verfügbar sind (d. h. die Platte und die Datei, in denen die Tabelle gespeichert war, sind nicht verloren gegangen), wird das neu gestartete Replikat, dem während des Tabellen-Wiederaufbauvorgangs die Rolle eines einsatzbereiten Reserve-Replikats zugeordnet wird, unter Verwendung des Status des neu gestarteten Replikats an dem Punkt erzeugt, an dem der Knoten des Replikats ausgefallen ist, und außerdem werden hierfür die Protokollaufzeichnungen verwendet, die von dem Primär-Replikat während derjenigen Zeitdauer gesammelt worden sind, in der der ausgefallene Knoten nicht verfügbar war.
- Wenn Daten in dem neu gestarteten Knoten nicht verfügbar sind oder so alt sind, daß sie Rechtzeitigkeits-Kriterien (z. B. einen Neustart des Knotens innerhalb von 24 Stunden ab einem Knotenausfall) nicht erfüllen, wird das neu gestartete Replikat aus Resten durch Kopieren des Primär-Replikats neu aufgebaut, woraufhin die Protokollaufzeichnungen, die von dem Primär-Replikat während des Kopiervorgangs gesammelt worden sind, dazu verwendet werden, sicherzustellen, daß die Aufzeichnungen in dem neu gestarteten Replikat konsistent sind. Mit anderen Worten, es werden aufgrund der Tatsache, daß der Kopiervorgang Zeit benötigt, alle Datenaktualisierungen während der Zeit, die der Kopiervorgang einnimmt, wiederholt, um sicherzustellen, daß sich das neu gestartete Replikat in einem konsistenten Zustand befindet.
- Bei dem bevorzugten Ausführungsbeispiel besitzen die Knoten eine ausreichende Rechenleistungs- und Zwischenknotenkommunikations-Bandbreite, die über derjenigen liegt, die für normale Transaktions-Verarbeitungsbelastungen erforderlich ist, so daß die gesamte Tabellen-Unterfragmentierung, die durch einen Knotenausfall initiiert wird, innerhalb von etwa 15 Minuten ausgeführt werden kann, und zwar unter der Annahme, daß jeder Knoten Daten in der Größenordnung von 1 bis 5 Gigabytes speichert.
- Es ist wichtig, daß der Selbstreparatur-Vorgang rasch abgeschlossen wird, vorzugsweise in weniger als einer Stunde, um die Wahrscheinlichkeit zu reduzieren, daß ein zweiter Knoten ausfallen könnte, während ein früherer Knotenausfall repariert wird.
- Die "überschüssigen" Rechen- und Kommunikationsfähigkeiten, die zur Erzielung einer raschen Selbstreparatur vorgesehen sind, können während normaler Vorgänge für solche Aktivitäten, wie die Berechnung und das Vergleichen der Transaktions- und Datenspeicher-Belastungen an den Knoten des Systems sowie für die Umverteilung von Daten unter den Knoten (durch Auswählen einer neuen Streufunktion und anschließendes Fragmentieren der Daten-Tabellen und Verteilen der Daten auf die Knoten unter Verwendung dieser neuen Streufunktion) verwendet werden, wenn Transaktions- oder Datenspeicher-Belastungen im Ungleichgewicht sind.
- Eine nicht-blockierende Durchführung des Selbstreparatur- Vorgangs wird erzielt, indem nur die Seiten einer Datentabelle gesperrt werden, die derzeit ersetzt werden, während sie gelesen werden. Jede Seite wird somit nur für eine sehr kurze Zeitdauer durch den Selbstreparatur-Vorgang gesperrt. Auf diese Weise wird der Ablauf von Transaktionen durch den Selbstreparatur-Vorgang nicht blockiert.
- Es wird eine konsistente Version von jedem Fragmentreplikat erzeugt, indem zu dem neuen Fragmentreplikat zusammen mit den kopierten Seiten der Datentabelle folgendes geschickt wird: eine Kopie (A) von allen Protokollaufzeichnungen, die für dieses Fragment erzeugt worden sind, und zwar beginnend mit dem Zeitpunkt, an dem der Kopiervorgang begonnen hat, und (B) von allen "Rückgängigmachungs"-Protokollaufzeichnungen, die erforderlich sein können, um Datentabellenänderungen rückgängig zu machen, die durch abgebrochene Transaktionen erfolgt sind.
- Rückgängigmachungs-Aufzeichnungen sind nur für lang laufende Transaktionen erforderlich, die zu dem Zeitpunkt im Ablauf sind, an dem der Vorgang der Erzeugung der neuen Fragmentreplikate beginnt.
- Wie unter Bezugnahme auf Fig. 6 zu sehen ist, ist eine Kopie des Datenlexikons 158 an jedem Knoten des Systems gespeichert. Die Aufgabe des Datenlexikons besteht darin, die gesamte Information zu speichern, die zum Bestimmen der derzeitigen Konfiguration von Knoten in dem System sowie zum Auffinden einer jeden beliebigen identifizierten Aufzeichnung bzw. Datensatz in jeder beliebigen identifizierten Datentabelle notwendig ist.
- Insbesondere weist das Datenlexikon 158 einen Satz von "System"-Tabellen auf, deren Zweck und Struktur nachfolgend erläutert werden. Die System-Maschinen-Tabelle 220 weist lediglich einen Datensatz auf, der den Namen des Datenbasis- Serversystems, die Anzahl von Knoten (d. h. Datenprozessoren) in dem System sowie die Anzahl von Datenprozessorgruppen, die hier auch als Knotengruppen bezeichnet werden, in dem System angibt.
- Wie vorstehend erläutert worden ist, sind die Knotengruppen vollständig unabhängig voneinander, und zwar insofern als Hardware-Ausfälle betroffen sind. Die System-Gruppen-Tabelle 222 weist einen Datensatz 224 für jede Gruppe von Datenprozessoren auf. Dieser Datensatz 224 gibt die Gruppen-ID bzw. Gruppen-Identifizierung der Gruppe, ihren Status (z. B. in Betrieb oder nicht verfügbar) sowie einen Zählstand der Anzahl von Knoten in der Gruppe an.
- Die System-Knoten-Tabelle 226 weist einen Datensatz 228 für jeden Knoten in dem System auf. Jeder Datensatz 228 gibt die Knotennummer des Knotens, seinen Status (z. B. in Betrieb, Neustart, isoliert oder tot), die Gruppen-Identifizierung seiner Gruppe sowie eine Liste von "Knotenpaaren" in anderen Gruppen an, die für eine Tabellen-Replikation bevorzugt sind.
- Die Systemtabellen-Tabelle 230 weist einen Datensatz 232 für jede Datentabelle in dem System auf. Der Datensatz 232 für jede einzelne Tabelle gibt folgendes an: ihre Tabellen-ID, den Tabellennamen, eine "Replikat-Anzahl", die die Anzahl von Replikaten der Tabelle angibt, die in dem System vorhanden sind, die "Fragment-ID" der oberen Ordnung, die einem Eintrag in der System-Fragment-Tabelle 236 entspricht, das "Verteilungsverfahren" zum Lokalisieren des Fragments, das einem bestimmten Datensatz zugeordnet wird, die Fragment-ID der nullten Ordnung der Tabelle sowie einen Zeitstempel, der angibt, wann die Tabelle erzeugt wurde.
- Bei dem "Verteilungsverfahren" handelt es sich typischerweise um (1) eine von zwei oder mehr vordefinierten Streufunktionen, (2) ein "lineares" Verfahren, welches angibt, daß das einen speziellen Datensatz enthaltende Fragment lokalisiert wird durch Streuen des Schlüsselwerts für den Datensatz mit einer linearen Streufunktion, oder (3) ein sogenanntes "RoundRobin"-Verfahren bzw. Zeitrasterverfahren, welches anzeigt, daß die Datensätze in dieser Tabelle den Fragmenten in einer "RoundRobin"- bzw. Zeitraster-Weise zugeordnet werden.
- Das "RoundRobin"-Verteilungsverfahren wird nur für Tabellen mit geringer Verwendung benutzt, da eine Transaktion, die Datensätze in solchen Tabellen verwendet, zu allen Knoten gesendet werden muß, um denjenigen zu finden, in dem sich der angefragte Datensatz befindet.
- Es ist darauf hinzuweisen, daß es sich bei dem Feld Replikat- Anzahl für jede Tabelle um einen Wert handelt, der jeder Datentabelle entweder von dem Erzeuger der Tabelle oder durch ein Betriebssystem-Verfahren zugeordnet wird, wie zum Beispiel ein Verfahren, das jeder Datentabelle zwei Replikate zuordnet, es sei denn, diese Zuordnung wird von einem System- Operator ausdrücklich aufgehoben.
- Eine weitere Tabelle in dem Datenlexikon, die als Datentabellen-Schemata-Tabelle 234 bezeichnet wird, speichert die Spaltendefinitionen für jede Datentabelle, die häufig als Tabellen-Schemata bezeichnet werden.
- Die System-Fragment-Tabelle 236 weist einen separaten Datensatz 238 für jedes Fragment und jedes Unterfragment jeder Datentabelle in dem System auf. Der Datensatz 238 für jedes Tabellenfragment enthält die Fragment-ID des Fragments, eine geordnete Liste der Replikat-IDs des Fragments, einen Zählstand der Anzahl von Unterfragmenten bzw. Sub-Fragmenten bei der nächsten Ordnung der Unterfragmentierung der Tabelle, sowie eine geordnete Liste der Fragment-IDs für diese Unterfragmente.
- Da die "Tabellenfragmente" bei dem bevorzugten Ausführungsbeispiel als ein Wert zwischen 0 und n-1 definiert sind, wobei n die Anzahl von Fragmenten in einem beliebigen Satz ist, bedeutet "eine geordnete Liste" in diesem Zusammenhang, daß die Fragment-IDs in der Unterfragmentliste derart geordnet sind, daß die erste Fragment-ID in der Liste für das Fragment 0 gilt, die zweite Fragment-ID in der Liste für das Fragment 1 gilt und so weiter.
- Wenn eine bestimmte Datentabelle Replikate aufweist (wie dies in dem Feld Replikat-Anzahl der Systemtabellen-Tabelle 230 spezifiziert ist), dann enthält die Liste Replikat-ID in ähnlicher Weise Replikat-IDs für das Fragment 0, gefolgt von Replikat-IDs für das Fragment 1 und so weiter. Außerdem ist bei dem bevorzugten Ausführungsbeispiel die erste Replikat-ID in der Replikat-ID-Liste für ein bestimmtes Fragment die Replikat-ID für das Primär-Replikat, die nächste Replikat-ID in der Liste ist für das einsatzbereite Reserve- Replikat, und jegliche zusätzlichen Replikat-IDs in der Liste sind für zusätzliche Nur-Lese-Replikate.
- Der Zweck der System-Replikat-Tabelle 240 besteht in der Speicherung von Daten, die den Ort und den Status jedes Datentabellen-Fragmentreplikats darstellen. Für jedes Fragmentreplikat ist ein separater Datensatz 242 in der Tabelle 240 vorhanden, der folgendes angibt: (A) die Replikat-ID und die Fragment-ID des Fragmentreplikats, (B) den Knoten, an dem das Fragmentreplikat gespeichert ist, sowie die Datei-ID für die Datei, in der es gespeichert wird, (C) die Rolle des Fragmentreplikats, wie zum Beispiel "primär", "einsatzbereite Reserve" oder "zusätzliche Nur- Lese-Kopie", sowie (D) den Status des Fragmentreplikats, wie zum Beispiel "verfügbar", "unbesetzt" oder "Refragmentierung".
- Das Datenlexikon 158 kann auch weitere Tabellen beinhalten, die hier nicht von Bedeutung sind, wie zum Beispiel Tabellen zum Speichern von Sicherheitsinformation oder Datenzugriffs- Steuerungsinformation, Tabellen zum Anzeigen der "Ansichten" und Indizes, die in Verbindung mit jeder Datentabelle verwendet werden, usw..
- Jedesmal, wenn ein Knoten in dem Datenbasis-Serversystem eine Datenbasis-Anfrage empfängt, durchsucht ein Transaktions- Manager 162 in der Datenbasis-Management-System- (DBMS-)Software 154 die Systemtabellen-Tabelle 230, um die Fragment-Identifizierung für die anzuwendende Datenbasis sowie das Aufzeichnungs-Verteilungsverfahren für diese Tabelle zu finden.
- Der Schlüsselwert für die Aufzeichnung bzw. den Datensatz, auf den durch die Anfrage zugegriffen wird, wird streugespeichert oder anderweitig gemäß dem Verteilungsverfahren auf eine Fragmentanzahl reduziert, und anschließend daran durchsucht der Transaktions-Manager 162 die System-Fragment- sowie die System-Replikat-Tabelle 236 und 240, um das Primär- Fragmentreplikat zu finden, das dem Datensatz entspricht, auf den Zugriff genommen wird, sowie die Knoten-Nummer zu finden, bei der sich das Primär-Fragmentreplikat befindet.
- Wenn es sich bei dem Knoten, an dem sich das Primär-Fragmentreplikat befindet, nicht um den Knoten handelt, der die Anfrage empfangen hat, leitet der Transaktions-Manager 162 schließlich die Anfrage über das Hyperwürfel-Kommunikationsnetzwerk an den passenden Knoten weiter.
- Die DBMS-Software 252 an dem Knoten, der die weitergeleitete Anfrage erhält (oder an dem ursprünglichen Knoten, wenn die Anfrage nicht weitergeleitet werden mußte), führt die Anfrage aus, erzeugt Protokollaufzeichnungen, die durch Ausführung der Anfrage geänderte Datentabellen-Aufzeichnungen anzeigen und leitet eine Kopie jeder Protokollaufzeichnung weiter zu dem(den) Datenprozessor(en), an dem das Reserve-Replikat (oder ein anderes zusätzliches Replikat) des ausgeführten Datenbasis-Tabellenfragments gespeichert ist. Die DBMS-Software 252 an dem Knoten, der die Protokollaufzeichnungskopie empfängt, aktualisiert das Reserve-Replikat des ausgeführten Datenbasis-Tabellenfragments nach Maßgabe der Information in der empfangenen Protokollaufzeichnungskopie.
- In der Praxis werden die anfänglichen Eintragungen in das Datenlexikon 158 zu dem Zeitpunkt ausgeführt, zu dem das System das erste Mal in Betrieb genommen wird. Typischerweise werden nach der ersten Inbetriebnahme des Systems sehr wenige neue Datentabellen erzeugt, und die Anzahl von Knoten in dem System wird nicht häufig geändert. Infolgedessen handelt es sich bei den einzigen Tabellen in dem Datenlexikon, die eine Änderung auf einer regelmäßigen, fortlaufenden Basis erfahren, um die System-Fragment- und die System-Replikat-Tabellen 236 und 240.
- Wenn das Datenlexikon 158 Tabellen mit Datenzugriffs- Steuerungsinformation und Tabellen mit Information hinsichtlich der verschiedenen zum Zugreifen auf die Daten verwendeten Vorgänge enthält, können diese Datenlexikon-Tabellen ebenfalls häufig Änderungen erfahren, jedoch sind diese Tabellen und ihre Arbeitsweise hier nicht relevant.
- Wenn alle Knoten des Datenbasis-Serversystems normal arbeiten und keine Knotenausfälle in der jüngeren Vergangenheit aufgetreten sind, besitzt jede Datentabelle lediglich zwei Ordnungen von Eintragungen in der System-Fragment-Tabelle 236: eine Fragment-Eintragung oberster Ordnung für die gesamte Tabelle sowie eine Eintragung für jedes Fragment der Tabelle. Die Eintragung oberster Ordnung (als nullte Ordnung bezeichnet) listet alle Unterfragment-IDs für die Tabellenfragmente auf, und jede der Eintragungen der nächsten Ordnung gibt an, daß sie 0 Unterfragmente aufweist und nur die Replikat-IDs für das entsprechende Tabellenfragment der ersten Ordnung angibt.
- In Wirklichkeit erleidet ein stark verwendetes System mit 16 oder mehr Datenprozessoren, die 24 Stunden pro Tag in Benutzung sind, typischerweise Knotenausfälle in Zufallsweise. Zum Beispiel kann ein bestimmtes System im Durchschnitt einen Knotenausfall pro Woche aufweisen, jedoch kommt es nur einmal ungefähr alle dreißig Jahre zu einem Ausfall von zwei oder mehr Knoten innerhalb einiger weniger (z. B. 15) Minuten voneinander, und gelegentlich kann es zu einem Stromversorgungsausfall kommen, der zu einem gleichzeitigen Ausfall von vier Knoten führt.
- Knotenausfälle werden durch benachbarte Knoten festgestellt, und zwar unter Verwendung eines Signalgabeprotokolls (Knotenstatus-Überwachungssoftware 250 in Fig. 6), welches verlangt, daß jeder Knoten seinen Nachbarn vorbestimmte Signale, die gelegentlich als "ich-bin-am-Leben"-Signale bezeichnet werden, auf einer periodischen Basis (z. B. einmal pro Millisekunde) schickt.
- Jeder Knoten ist mit mehreren benachbarten Knoten verbunden, zum Beispiel nach Maßgabe des Hyperwürfel-Verbindungsschemas des bevorzugten Ausführungsbeispiels. Wenn ein Knoten die erwarteten periodischen Signale von einem seiner Nachbarn nicht empfängt, wird ein vorgegebener Status-Verifizierungsvorgang ausgeführt, der versucht, mit dem benachbarten Knoten zu kommunizieren und dann feststellt, daß der benachbarte Knoten nicht verfügbar ist, wenn seine Versuche ohne Erfolg sind. Solche Vorgänge sind dem Fachmann allgemein bekannt.
- Ein zusätzliches Merkmal des Knotenstatus-Überwachungsvorgangs, das bei der vorliegenden Erfindung von Nutzen ist, besteht darin, daß der Status-Überprüfungsvorgang den Status von allen Knoten in einer Gruppe überprüft, und zwar zum Zweck der Feststellung von Gruppen-Ausfällen bei jeder Feststellung, daß zwei oder mehr Knoten von derselben Knotengruppe ausgefallen sind.
- Wenn ein Knoten feststellt, daß einer seiner benachbarten Knoten nicht verfügbar ist, schickt er eine Knotenausfall- Nachricht zu allen seinen Nachbarn, die wiederum die Knotenausfall-Nachricht zu ihren Nachbarn weiterschicken, bis die "Wellenfront" der Nachrichten alle Knoten in dem System erreicht. Die Funktionsknoten in dem System, die die Knotenausfall-Nachricht empfangen, schicken Bestätigungsnachrichten zurück zu dem Knoten, von dem die Knotenausfall-Nachricht ausgegangen ist. Nach Sammeln von allen diesen Bestätigungen schickt der ursprüngliche Knoten dann eine Nachricht "neue Konfiguration" zu allen Knoten in dem System, die den Satz der funktionsfähigen Knoten in dem System angibt.
- Jeder Knoten, der noch betriebsfähig ist, antwortet auf die neue Konfigurations-Nachricht dadurch, daß er die Fragmentierungs-Steuerungssoftware 160 (die an jedem Knoten vorhanden ist) aufruft, die dann die Ausführung der nachfolgenden Abfolge von Schritten veranlaßt. Zuerst überprüft der Knoten sein eigenes Datenlexikon, um festzustellen, welche Datentabellen durch den bzw. die Knotenausfälle betroffen sind und welche neuen Tabellen-Unterfragmente erzeugt und an diesem Knoten gespeichert werden müssen.
- Bei jedem betriebsfähigen Knoten werden die Fragmentreplikat- Statuswerte in dem Datenlexikon aktualisiert. Zum Beispiel wird für jedes Primär-Fragmentreplikat, das an dem ausgefallenen Knoten vorhanden war, der Fragment-Status geändert auf "Refragmentierung", und das entsprechende betriebsbereite Reserve-Replikat erhält die Rolle "primär".
- Jeder Knoten erzeugt dann die erforderlichen Dateien zum Speichern der neuen Unterfragmente, die diesem Knoten zugeordnet sind (nach Maßgabe der vordefinierten Refragmentierungsvorgänge des Systems in der Fragmentierungs- Steuerungssoftware 160), und er schickt Nachrichten mit dieser Information zu den anderen Knoten, so daß alle Knoten ihre Datenlexika entsprechend aktualisieren können, woraufhin er den Vorgang der Erzeugung jedes neuen UnterFragmentreplikats durchläuft, das bei diesem Knoten gespeichert werden soll.
- Wenn der Vorgang der Erzeugung jedes neuen UnterFragmentreplikats abgeschlossen ist, wird sein Status geändert auf "verfügbar", und eine diesbezügliche Nachricht wird zu allen anderen Knoten geschickt. Dieser Vorgang setzt sich fort, bis alle der neuen UnterFragmentreplikate aufgebaut worden sind. Im allgemeinen modifiziert jeder Knoten seine eigenen Datenlexikon-Eintragungen in Abhängigkeit von den Status-Nachrichten, die er von den anderen Knoten empfängt.
- Da jeder Knoten die gleiche Fragmentierungs-Steuerungssoftware 160 für die Datentabellen-Refragmentierung und für den Datentabellen-Wiederaufbau (nachdem ein ausgefallener Knoten wieder in den aktiven Zustand zurückkehrt) aufweist, besteht keine andere Notwendigkeit zur Koordinierung der Aktivitäten zwischen den Knoten als die Übertragung von Status-Nachrichten.
- Nachdem das System auf einen Knotenausfall reagiert hat, wird der Vorgang des Zugreifens auf Datenaufzeichnungen durch die veränderten Fragment- und Replikat-Aufzeichnungen bzw. Datensätze in dem Datenlexikon komprimiert. Insbesondere müssen möglicherweise mehr Ebenen der System-Fragment- und der System-Replikat-Tabellen durchsucht werden, um den Knoten zu finden, zu dem eine Transaktion geschickt werden sollte.
- Außerdem müssen möglicherweise mehr Ebenen dieser Systemtabellen bei der Bestimmung der Knoten durchsucht werden, zu denen Kopien der Protokollaufzeichnungen für eine Transaktion geschickt werden sollten (um die betriebsbereiten Reserve- Replikate sowie die anderen Replikate auf einem aktuellen Stand zu halten).
- Wenn ein ausgefallener Knoten repariert ist, läuft der vorstehend beschriebene Fragmentierungsvorgang in umgekehrter Weise ab. Insbesondere durchläuft der reparierte Knoten einen Vorgang des Wiederaufbaus seiner Datentabellen-Fragmentreplikate, und er schickt Status-Nachrichten zu allen anderen Knoten, wenn jedes wiederhergestellte Tabellen-Fragmentreplikat bereit ist, seine normale Rolle wieder aufzunehmen. Die anderen Knoten aktualisieren ihre Datenlexikon-Eintragungen in entsprechender Weise und löschen ferner UnterFragmentreplikat-Dateien, die nicht mehr erforderlich sind.
- Wenn eine ganze Gruppe von Knoten gleichzeitig ausfällt, wie zum Beispiel beim Auftreten eines Stromausfalls, bleibt der Unterfragmentierungsvorgang entsprechend unverändert, mit der Ausnahme, daß die Anzahl der Zielknoten für die neuen Unterfragmente reduziert ist. Um sicherzustellen, daß kein einzelner Gruppenausfall dazu führen kann, daß Daten nicht verfügbar sind, weist bei dem bevorzugten Ausführungsbeispiel jede Hälfte des Systems mindestens zwei separate Gruppen von Knoten auf, die sich keine Betriebsmittel mit den anderen Knotengruppen teilen. Wenn eine Gruppe von Knoten ausfällt, kann somit mindestens eine Kopie jedes Tabellen-Fragments an einer anderen Stelle in dem System aufgefunden werden, so daß die Erzeugung eines neuen Replikats davon ermöglicht wird.
- Der anschließende Teil dieses Dokuments beschreibt Datenbasisfragmentierungs- und Fragmentreplikat-Regenerierungsschemata, die bei drei bevorzugten Ausführungsbeispielen der Datenbasisfragmentierungs-Steuerungssoftware 160 verwendet werden.
- Das allgemeine Konzept des Minimum Intersecting Sets Declustering (MISD) bzw. der Mindest-Schnittmengen-Entclusterung ist wie folgt. Beziehungen (d. h. Datenbasis- Tabellen) werden in eine große Anzahl von Fragmenten unterteilt. Jedes Fragment wird zu Beginn mit einem Replikat für jeden Ort erzeugt. Ein "Ort" ist vorliegend als Satz von Knoten definiert, die als Gruppe behandelt werden und die von anderen Orten entfernt vorgesehen sind und sich keine Betriebseinrichtungen, einschließlich Stromversorgung und Kühlsystem, mit den Knoten an den anderen Orten teilen. Innerhalb eines Orts werden Fragmentreplikate den Knoten gleichmäßig zugeteilt. Die einem Knoten zugeordneten Fragmente bilden einen "Fragmentsatz". Die Sätze sollten derart zugeordnet werden, daß die maximale Kardinalität der Schnittmenge zwischen einem beliebigen Paar von Fragmentsätzen (d. h. einem Satz von jeweils zwei wohldefinierten Orten) auf ein Minimum reduziert ist. Im Fall eines Knotenausfalls werden die verlorenen Fragmentreplikate zu anderen Fragmentsätzen an demselben Ort bewegt.
- Bei dem bevorzugten Ausführungsbeispiel beträgt die Anzahl von Fragmenten mindestens das Zweifache der Anzahl von Knoten an jedem Ort, an dem die Fragmente gespeichert werden sollen.
- Die Schnittmenge von zwei Fragmentsätzen ist für die Zwecke des vorliegenden Dokuments definiert als der Satz von Fragmenten, den die beiden Sätze gemeinsam haben. Wenn ein Knoten ausfällt, müssen die Knoten mit sich schneidenden Fragmentsätzen die gesamte Arbeit an den gemeinsamen Fragmenten übernehmen. Eine geringere Schnittmenge bedeutet weniger gemeinsame Fragmente und somit auch weniger zusätzliche Belastung in einer Ausfallsituation.
- Durch Verwendung eines Fragmentreplikat-Lagezuordnungsschemas, das eine "minimal größte Schnittmengen-Kardinalität" besitzt, wird die auf einen beliebigen Knoten im schlimmsten Fall zusätzlich ausgeübte Belastung auf ein Minimum reduziert, so daß die zum Kaschieren von Fehlern erforderliche Überkapazität vermindert wird.
- Die Begriffe "eigenständiger freier" und "freier Knoten" werden in dem vorliegenden Dokument mit der Bedeutung eines Knotens verwendet, der nicht für eine Fragmentreplikat- Speicherung verwendet wird, wenn alle Knoten an dem Ort des freien Knotens korrekt arbeiten, und der zum Speichern von Ersatz-Fragmentreplikaten verwendet wird, wenn ein nicht freier Knoten an dem Ort ausfällt.
- Der Begriff "dezentral frei" wird in dem vorliegenden Dokument mit der Bedeutung verwendet, daß Ersatz-Fragmentreplikate an Knoten gespeichert werden, die normalerweise zur Speicherung von anderen Fragmentreplikaten verwendet werden, wenn der Knoten ausfällt, an dem die entsprechenden Fragmentreplikate gespeichert werden. Bei Verwendung dieser Technik besitzen alle Knoten an jedem Ort die Fähigkeit, mindestens ein zusätzliches Datenbasisfragmentreplikat als der normalerweise an diesen Knoten gespeicherten und betriebenen Anzahl zu speichern und zu betreiben.
- In den Fig. 7A bis 7E stellen ohne Schraffierung dargestellte Datenbasisfragmente Primär-Replikate dar, während Fragmente mit diagonaler Schraffur einsatzbereite Reserve-Replikate darstellen. In diesen Figuren bezieht sich der Ausdruck Fxy auf ein Replikat eines Fragments y an dem Ort x. Die Ausdrücke F&sup0;&sub2; und F¹&sub2; beziehen sich somit auf zwei Replikate desselben Datenbasis-Tabellenfragments, die an den Orten 0 bzw. 1 gespeichert sind. In ähnlicher Weise bezieht sich der Ausdruck Nsz auf den Knoten z an dem Ort s. Zum Beispiel bezieht sich der Ausdruck N&sup0;&sub3; auf den Knoten 3 an dem Ort 0.
- Die in Fig. 7A gezeigte Konfiguration genügt dem Erfordernis der "größten minimalen Schnittmengen-Kardinalität". Fig. 7A zeigt 20 Fragmente, die über zehn Knoten und zwei Orte verteilt sind. Keine Knoten an dem Ort 50 haben mehr als ein Fragment mit dem Knoten an dem Ort 51 gemeinsam. Die Verteilung der Fragmentreplikate, wie sie in Fig. 7A gezeigt ist, erfolgt gemäß dem Fragmentreplikat-Zuordnungsverfahren mit "rotierten Spalten", das nachfolgend ausführlicher erläutert wird.
- Fig. 7B zeigt, daß bei Ausfall des Knotens N¹&sub1; die Fragmentreplikate F&sup0;&sub5; und F&sup0;&sub1;&sub8;, bei denen es sich ursprünglich um einsatzbereite Reserve-Replikate handelte, als Primär- Replikate übernehmen müssen, so daß sich die Rechenbelastung und die Eingangs-/Ausgangsbelastung erhöht, die von den Knoten zu handhaben ist, an denen sich diese Replikate befinden.
- Fig. 7C zeigt, daß während des Selbstreparatur-Vorgangs, wenn keine freien Knoten verfügbar sind (d. h. bei Verwendung der dezentralen Freilassung), Replikate an den Knoten an dem Ort S&sub0; kopiert werden, um dadurch neue Replikate der Datenbasisfragmentreplikate an dem ausgefallenen Knoten N¹&sub1; zu erzeugen. Die neuen Replikate werden über die verbliebenen betriebsfähigen Knoten an dem Ort S&sub1; verteilt.
- Fig. 7D zeigt, daß während des Selbstreparatur-Vorgangs, wenn ein freier Knoten verfügbar ist (d. h. bei Verwendung eines eigenständigen freien Knotens, Replikate an den Knoten an dem Ort S&sub0; kopiert werden, um dadurch neue Replikate der Datenbasisfragmentreplikate an dem ausgefallenen Knoten N¹&sub1; zu erzeugen. Die neuen Replikate werden an dem freien Knoten N¹&sub5; an dem Ort S&sub1; erzeugt.
- Fig. 7E zeigt, daß bei Reparatur oder Ersetzen des ausgefallenen Knotens N¹&sub1; durch einen arbeitsfähigen, funktionierenden Knoten der ausgetauschte oder reparierte Knoten zu dem neuen freien Knoten wird. Selbst bevor der ausgefallene Knoten N¹&sub1; repariert oder ersetzt wird, wird die Belastung an dem System wieder ausgeglichen, indem die Fragmente F¹&sub5; und F¹&sub1;&sub8; zu Primär-Replikaten gemacht werden und die Fragmente F&sup0;&sub5; und F&sup0;&sub1;&sub8; wieder in den einsatzbereiten Reserve-Status zurückgeführt werden.
- Wenn freie Knoten nicht verfügbar sind, nachdem der ausgefallene Knoten N¹&sub1; repariert oder ersetzt worden ist, wird die auf das System wirkende Belastung wieder ins Gleichgewicht gebracht, indem die neu erzeugten Replikate wieder zurück an ihren ursprünglichen Ort kopiert werden und die Fragmente F¹&sub5; und F¹&sub1;&sub8; zu Primär-Replikaten gemacht werden und die Fragmente F&sup0;&sub5; und F&sup0;&sub1;&sub8; wieder in den einsatzbereiten Reserve- Status zurückgeführt werden.
- Die Fragmentreplikat-Entclusterungs-Methodik der vorliegenden Erfindung behält nur ein einziges Replikat jedes Datenbasisfragments an jedem Ort, wobei sichergestellt ist, daß jeder Ort die Unterhaltung dieses Datenbasisfragments allein übernehmen kann. Die Reproduktion von verlorenen Replikaten innerhalb desselben Ortes stellt sicher, daß dieser Zustand auch nach Beendigung der Reparatur eines ausgefallenen Knotens anhält.
- Die vorstehend angegebene Definition von MISD ist allgemein, reicht jedoch für die Verwendung in der Praxis nicht aus. Für eine bestimmte Anzahl von Knoten und Orten ist es nicht trivial, eine Zuordnung von Fragmentreplikat-Lagen zu finden, die die Erfordernisse der MISD erfüllt, und falls eine gefunden wird, gibt es keine Garantie, daß es sich hierbei um die optimale Zuordnung von Fragmentreplikat-Lagen handelt. Damit der MISD-Verfahrensweg verwendbar wird, ist eine systematische Verfahrensweise für die Zuordnung von Primär-Fragmenten und einsatzbereiten Reserve-Fragmenten zu den Knoten erforderlich.
- Fragment-Zuordnungsverfahren mit transponierter Matrix (TM) In der Tabelle 1 ist das Resultat der Anwendung des Zuordnungsverfahrens mit transponierter Matrix bei einer Datenbasis gezeigt, die in 25 Fragmente fragmentiert ist und über fünf Knoten an jeweils zwei Orten verteilt ist (d. h. insgesamt zehn Knoten). Aus Gründen der Vereinfachung wird bei diesem Beispiel sowie allen weiteren nachfolgend erläuterten Beispielen dieselbe Anzahl von Knoten NS(Ort) an jedem Ort verwendet.
- In der Tabelle 1 handelt es sich bei den in dem Hauptteil der Tabelle gezeigten Zahlen um Fragmentnummern. In der ersten Spalte unter der Bezeichnung "transponierte Matrix" beziehen sich die Ziffern 0, 1, 2, 3 und 4 auf Datenbasis-Tabellenfragmente F&sup0;&sub0;, F&sup0;&sub1;, F&sup0;&sub2;, F&sup0;&sub3; und F&sup0;&sub4;. Außerdem sind in der Tabelle 1 Primär-Replikate durch fettgedruckte Nummern dargestellt, und einsatzbereite Reserve-Replikate sind durch Nummern in normaler, nicht fetter Schrift dargestellt.
- Unter Verwendung des Zuordnungsverfahrens mit transponierter Matrix ist es bevorzugt, daß die in dem System zu speichernde Datenbasis in F Fragmente fragmentiert wird, wobei F eine beliebige Anzahl zwischen kNS(NS-1) und kNS² ist, wobei NS die Anzahl von Knoten an dem Ort ist und k eine positive ganze Zahl ist. Die bevorzugte Anzahl von Fragmenten ist NS².
- Fragmente werden den Knoten in dem Zuordnungsverfahren mit transponierter Matrix folgendermaßen zugeordnet. An einem ersten Ort (Ort S&sub0; in dem in der Tabelle 1 gezeigten Beispiel) werden die Fragmente Knoten zeitrasterweise zugeordnet, wobei jedes sukzessive Fragment einem in der Folge nächsten Knoten zugeordnet wird. Anschließend werden alle Fragmente, die an jedem einzelnen Knoten an dem ersten Ort gespeichert sind, einzelnen der Knoten an dem zweiten Ort zugeordnet.
- Wenn Replikate der Fragmente A, B, C, D und E an einem einzelnen Knoten an dem ersten Ort gespeichert sind, werden somit Replikate der Fragmente A, B, C, D und E jeweils an verschiedenen Knoten an dem zweiten Ort gespeichert. Bei Betrachtung der Fragmentzuordnung als Matrix, wie dies in der Tabelle 1 dargestellt ist, sind die Fragmentzuordnungen für den zweiten Ort von den Fragmentzuordnungen für den ersten Ort durch Transponieren der Matrix der Fragmentzuordnungen für den ersten Ort abgeleitet.
- Das Zuordnungsverfahren mit transponierter Matrix stellt ein optimales Zuordnungsschema dar, wenn nur zwei Orte zum Speichern einer Beziehung verwendet werden, da die Schnittmenge zwischen jedem beliebigen Paar von Fragmentsätzen (d. h. einem Satz von jeweils zwei getrennten Orten) niemals größer ist als ein Fragment. Das Zuordnungsverfahren mit transponierter Matrix ist jedoch nur bei Systemen mit zwei Orten anwendbar und liefert keine Fragmentzuordnungen, und zwar weder optimale noch anderweitige, für zusätzliche Orte.
- Wie in der Tabelle 1 gezeigt ist, sind Primär-Replikate und einsatzbereite Reserve-Replikate in einem Schachbrettmuster zugeordnet. Dies ist aufgrund der Transponierungs-Symmetrie möglich. TABELLE 1 Fragmentzuordnungs-Schemata
- Wie unter Bezugnahme auf Fig. 1 zu erkennen ist, werden bei dem Fragment-Zuordnungsverfahren mit rotierten Spalten Fragmente den Knoten an einem ersten Ort (z. B. S&sub0; in Tabelle 1) in Round-Robin- bzw. Zeitrasterweise zugeordnet. Dann ordnet das Zuordnungsverfahren mit rotierten Spalten Fragmente Knoten an jedem zusätzlichen Ort zeitrasterweise ähnlich wie bei den Fragment-Lagezuordnungen für den Ort S&sub0; zu, mit der Ausnahme, daß der Startknoten um Q Knoten verschoben wird, jedesmal wenn eine Spalte gefüllt wird, wobei Q ein ganzzahliger "Rotationsquotient" ist.
- Der Rotationsquotient wird gleich Null für den Ort S&sub0; gesetzt und wird gleich 1 für den Ort S&sub1; in dem Beispiel der Tabelle 1 gesetzt. In der Tabelle 1 sieht somit die Tabelle für die Fragmentzuordnungen für den zweiten Ort S&sub1; visuell so aus, als ob jede Spalte relativ zu der vorausgehenden Spalte um einen Schritt nach unten rotiert ist.
- Während bei diesem Beispiel die gleiche Anzahl von Knoten NS an jedem Ort verwendet wird, ist die Fragment-Zuordnungsmethodik mit rotierten Spalten gemäß der vorliegenden Erfindung ebenso bei einem System mit einer anderen Anzahl von Knoten an jedem Ort anwendbar, da die Fragment-Zuordnungsmethodik zum Zuordnen von Fragmenten zu Knoten an jedem beliebigen Ort unabhängig von den Fragmentzuordnungen an irgendeinem anderen Ort ist.
- Bei der Verfahrensweise mit rotierten Spalten wird jedem Ort ein Rotationsquotient (Q) zugeordnet. Dabei muß jedem Ort ein anderer Rotationsquotient als den übrigen Orten zugeordnet werden. Außerdem muß es sich bei jedem Rotationsquotienten um eine ganze Zahl mit einem Wert zwischen 0 und NS-1 handeln. Den Datenbasisfragmenten werden numerische Indizes im Bereich von 0 bis F-1 zugeordnet, wobei F die Anzahl von Fragmenten ist, in die die Datenbasis fragmentiert worden ist. Hinsichtlich der Auswahl des Wertes von F gibt es zwar keine Einschränkungen, jedoch wird bei dem bevorzugten Ausführungsbeispiel F derart gewählt, daß es mindestens gleich der doppelten Anzahl von Knoten (2 · NS) an dem Ort mit der geringsten Anzahl von Knoten ist.
- Datenbasisfragmente werden den Knoten an einem Ort in Zeitraster-Reihenfolge zugeordnet. An jedem Ort S werden die ersten NS-Datenbasisfragmente FSx, wobei x = 0 bis NS-1 ist, nacheinander einem jeden der Knoten zugeordnet. Danach beginnt die Zuordnung der nächsten NS-Fragmente an einem Knoten, der um eine Anzahl von Schritten versetzt ist, die durch den Rotationsquotienten bestimmt ist. Wie in dem Teil der Tabelle 1 mit der Bezeichnung "rotierte Spalten" gezeigt ist, werden zum Beispiel 25 Fragmente bei einem zugeordneten Rotationsquotienten von 0 fünf Knoten an dem Ort S&sub0; zugeordnet, und 25 Fragmente werden bei einem zugeordneten Rotationsquotienten von 1 fünf Knoten an dem Ort S&sub1; zugeordnet.
- Primär-Fragmentreplikate und einsatzbereite Reserve-Replikate werden vorzugsweise in einander abwechselnden Spalten zugeordnet, wie dies in der Tabelle 1 gezeigt ist. Zahlreiche andere Schemata zum Zuordnen von Primär-Status und einsatzbereitem Reserve-Status erzeugen eine ebenso gleichmäßige Belastungsverteilung über die Knoten.
- Das Fragment-Zuordnungsverfahren mit rotierten Spalten ist auch bei Datenbasis-Serversystemen mit einer Vielzahl von Orten anwendbar, die eine "beliebiges-Lesen-alles Schreiben"- Verfahrensweise (die häufig auch als "eines- Lesen-alles- Schreiben"-Verfahrensweise bezeichnet wird) anstelle des Primär-Modells/des einsatzbereiten Reserve-Modells des bevorzugten Ausführungsbeispiel verwenden.
- In einem "beliebiges-Lesen-alles-Schreiben"-System wird jedes Datenbasisfragment noch an Knoten an zwei oder mehr Orten gespeichert, jedoch wird keines der Datenbasisfragmente als Primär-Replikat betrachtet. Der Server kann vielmehr auf jedes beliebige der Replikate eines Fragments für einen Lese- Zugriff auf ein bestimmtes Tupel oder eine bestimmte Aufzeichnung in der Datenbasis zugreifen.
- Wenn ein Tupel aktualisiert wird, müssen alle Replikate des zugehörigen Fragments aktualisiert werden (wobei dies auch für das Primär-System und das Reserve-System gilt). "Beliebiges-Lesen-alles-Schreiben"-Systeme verteilen dadurch die Lesezugriffen zugeordneten Belastungen über alle Knoten und die Datenbasisfragmentreplikate, wobei dies bei einigen Systemen von Vorteil sein kann, insbesondere bei Systemen mit leichten Schreib-Zugriffsbelastungen und starken Lese- Zugriffsbelastungen sowie Orten, die weit (z. B. über 1000 Kilometer) voneinander entfernt sind.
- Die Tabelle 2 zeigt eine Pseudocode-Darstellung eines Vorgangs, der als MapNode-Funktion bezeichnet wird, um den Knoten zu bestimmen, an dem ein Fragmentreplikat gespeichert werden sollte, und zwar einschließlich des Knotens, dem das Fragmentreplikat zugeordnet werden sollte, wenn ein Ausfall des Knotens vorliegt, an dem das Fragmentreplikat zuvor gespeichert war. Die MapNode-Funktion ist zur Verwendung bei "dezentralen freien" Systemen oder Orten ausgebildet, die keinen eigenständigen freien Knoten aufweisen. TABELLE 2 Funktion MapNode (FragNo, S)
- Die MapNode-Funktion wird separat für jedes Fragmentreplikat aufgerufen. Ein Ausfall eines Knotens X an einem Ort Y führt somit zu keiner Beeinträchtigung der Knotenzuordnung von Fragmentreplikaten an anderen Knoten und Orten. Mit anderen Worten, es nimmt die MapNode-Funktion eine anfängliche Knotenzuordnung für ein bestimmtes Fragment (FragNo) an einem bestimmten Ort (Site) vor und läßt dann diese Zuordnung unverändert, es sei denn, es kommt zu einem Ausfall des Knotens, dem das Fragment ursprünglich zugeordnet wurde.
- In diesem Fall werden die Knoten-Indizes für die Knoten an dem Ort des ausgefallenen Knotens "umdefiniert", und zwar zum Zweck der Schaffung eines benachbarten Satzes von Knoten- Indizes (d. h. 0 bis avail -1, wobei avail die Anzahl der verfügbaren Knoten ist), und danach wird das zuvor an dem ausgefallenen Knoten gespeicherte Fragment einem anderen Knoten zugeordnet, und zwar unter Verwendung derselben "Zuordnungsfunktion von Fragment zu Knoten", die zur Ausführung der ursprünglichen Knotenzuordnung verwendet wurde, mit der Ausnahme, daß die Zuordnung nun anders erfolgt, da sich die Anzahl der verfügbaren Knoten geändert hat und die Knoten- Indizes auf die verfügbaren Knoten umdefiniert worden sind. Genauer gesagt, es führt die MapNode-Funktion zu Beginn eine Zuordnung jedes Fragments FSx zu einem Datenprozessor y an einem Ort S gemäß der folgenden Zuordnungsgleichung von Fragment zu Knoten aus.
- y = (x + (x div NS) · Q(S)) modulo avail,
- wobei y der Knoten-Index des Knotens ist, an dem das Fragment FSx gespeichert werden soll, NS die Anzahl von Datenprozessoren an dem Ort S ist, die zum Speichern von Datenbasisfragmenten verwendet wird, Q(S) ein ganzzahliger "Rotationsquotient" zwischen 0 und NS-1 ist, wobei Q(S) ein wohldefinierter Wert für jeden Ort ist, und wobei avail die Anzahl der NS Datenprozessoren ist, die nicht ausgefallen sind. Unter der Annahme, daß alle Prozessoren anfangs arbeiten, ist avail zu Beginn gleich NS.
- Wenn ein Knoten ausfällt, führt die MapNode-Funktion zuerst eine Umdefinierung der Knoten-Indizes für die nicht ausgefallenen Knoten an dem Ort des ausgefallenen Knotens in einen neuen benachbarten Satz im Bereich von 0 bis avail -1 durch, wobei avail die Anzahl der Datenprozessoren ist, die nicht ausgefallen sind.
- Danach wird die vorstehend gezeigte modulo-Funktion wieder ausgeführt, um eine neue Knotenzuordnung für das zuvor an dem ausgefallenen Knoten gespeicherte Fragment zu bestimmen. Das Fragment wird dann an dem Knoten regeneriert, der seiner neuen Knotenzuordnung zugeordnet ist.
- Die MapNode-Funktion kann auch für die anfängliche Zuordnung von Knotenlagen in Systemen oder an Orten verwendet werden, die einen eigenständigen freien Knoten aufweisen. Wenn ein eigenständiger freier Knoten verfügbar ist, werden jedoch neue Kopien der Fragmentreplikate, die an dem ausgefallenen Knoten verloren gegangen sind, einfach dem eigenständigen freien Knoten zugeordnet und an diesem erzeugt, und zwar an demselben Ort wie der ausgefallene Knoten.
- Bei dem Fragment-Zuordnungsverfahren mit leerer Diagonalen handelt es sich um eine spezielle Form des Verfahrens mit rotierten Spalten. Das Verfahren mit leerer Diagonale geht von der Annahme aus, daß die Datenbasis in F = kNS(NS-1) Fragmente geteilt ist. Die Fragmente werden an dem Ort 50 in Zeitrasterweise zugeordnet. An dem Ort 51 werden die Fragmente zeitrasterweise zugeordnet, wobei jedoch für jedes NSte Fragment ein Knoten ausgelassen wird, und zwar beginnend mit dem ersten Knoten, wie dies in der Tabelle 1 dargestellt ist.
- Bei Betrachtung der Tabelle 1 ist zu erkennen, daß das Verfahren mit rotierten Spalten und das Verfahren mit leerer Diagonale die Fragmente in identischer Weise zuordnen, mit Ausnahme der Knotenaufzählung an dem Ort S&sub1;. Zum Beispiel handelt es sich bei den Fragmenten, die bei dem Verfahren mit rotierten Spalten dem Knoten N&sub1;&sub0; zugeordnet werden, um die gleichen wie die Fragmente, die bei dem Verfahren mit leeren Diagonalen dem Knoten N&sub1;&sub1; zugeordnet werden. Primär-Status und einsatzbereiter Reserve-Status werden den Datenbasisfragmenten in der gleichen Weise wie bei dem Verfahren mit rotierten Spalten zugeordnet.
- Wenn ein Knoten ausfällt, gehen k(NS-1) Fragmentreplikate verloren. Unter Verwendung der "dezentralen Freilassung" werden jedem verbleibenden Knoten an dem Ort des ausgefallenen Knotens neue Fragmente zugeordnet, so daß die auf jeden solchen Knoten wirkende Belastung um einen Faktor von 1/(NS- 1) zunimmt. Dies gewährleistet eine gleichmäßige Umverteilung der Belastung. Wenn es zu einem zweiten Ausfall an einem Ort kommt, führen die neu zugeordneten Fragmente normalerweise zu einer geringeren als perfekt gleichmäßigen Belastungsumverteilung.
- Die vorliegende Erfindung ist vorstehend zwar unter Bezugnahme auf einige wenige spezielle Ausführungsformen beschrieben worden, jedoch dient die Beschreibung lediglich der Erläuterung der Erfindung und soll diese nicht einschränken.
- Für den Fachmann ergeben sich verschiedene Modifikationen im Rahmen des Umfangs der Erfindung, wie sie durch die beigefügten Ansprüche definiert ist.
Claims (7)
1. Multiprozessor-Computersystem, das folgendes aufweist:
- Datenprozessoren, wobei eine positive ganze Zahl
größer als Drei ist, wobei jeder Datenprozessor
seine eigene separate zentrale Verarbeitungseinheit,
Speicher zum Speichern von Datenbasis-Tabellen und
anderen Datenstrukturen, sowie Kommunikationskanäle:
zur Kommunikation mit anderen von den
Datenprozessoren besitzt; wobei jeder von den
Datenprozessoren unabhängig einen wohldefinierten
Befehlsdatenstrom ausführt;
- wobei zumindest eine Vielzahl von den
Datenprozessoren einen Kommunikationsprozessor zum Empfangen
von Transaktionsanfragen und zum Senden von
Antworten darauf aufweist;
- wobei die Datenprozessoren in mindestens zwei
Gruppen geteilt sind, wobei jede von ihnen
mindestens zwei Datenprozessoren besitzt;
- wobei jeder Datenprozessor folgendes aufweist:
- Fragmentierungs-Einrichtungen zum Teilen von
jeder der Datenbasis-Tabellen in Fragmente
und zum Speichern von Replikaten von jedem
Fragment in verschiedenen Datenprozessoren der
Datenprozessoren, wobei die verschiedenen der
Datenprozessoren verschiedene
Datenprozessoren der Gruppen von Datenprozessoren sind, so
daß eine vollständige Kopie von jeder der
Datenbasis-Tabellen sich innerhalb von jeder
Gruppe von Datenprozessoren befindet und daß
ein gleichzeitiger Ausfall von sämtlichen
Datenprozessoren in einer der Gruppen eine
vollständige Kopie von jeder der Datenbasis-Tabellen
in der anderen der Gruppen von
Datenprozessoren lassen würde;
- ein Datenlexikon, welches Information
speichert, die angibt, wo jedes der Replikate von
jedem Fragment der Datenbasis-Tabellen in den
Datenprozessoren gespeichert ist;
- wobei die Fragmentierungs-Einrichtung ferner
dazu ausgelegt ist, die in dem Datenlexikon
gespeicherte Information beim Ausfall von
irgendeinem der Datenprozessoren zu ändern, um
anzugeben, daß die in dem ausgefallenen
Datenprozessor gespeicherten Replikate nicht verfügbar
sind, und um die Replikate des ausgefallenen
Datenprozessors in nicht ausgefallenen
Datenprozessoren, falls vorhanden, der
Datenprozessoren in derselben Gruppe von Datenprozessoren
wie der des ausgefallenen Datenprozessors zu
regenerieren; und
- wobei die Fragmentierungs-Einrichtung ferner
dazu ausgelegt ist, die Datenbasis-Tabellen in
Fragmente FSx zu teilen, um die F Fragmente
in den Datenprozessoren in jeder Gruppe zu
speichern, wobei für ein spezielles Fragment
FSx das S die Gruppe von Datenprozessoren
identifiziert, in der das Fragment gespeichert ist,
und ein Index ist, der das Fragment
identifiziert und einen Wert zwischen 0 und F-1
besitzt;
- wobei die Fragmentierungs-Einrichtung dazu
ausgelegt ist, jedem Fragment FSx einem
Datenprozessor y in der Gruppe zuzuordnen, und zwar
gemäß der folgenden Zuordnungsgleichung von
Fragment zu Knoten:
y = (x + (x div NS) · Q(S)) modulo avail
wobei y identifiziert, welches
Datenprozessorfragment FSx zugeordnet ist, NS die Anzahl von
Datenprozessoren in der Gruppe ist, die zum Speichern von
Datenbasisfragmenten verwendet wird, Q(S) eine ganze
Zahl zwischen 0 und NS-1 ist, wobei Q(S) ein
wohldefinierter Wert für jede Gruppe ist, und wobei avail
die Anzahl von den NS Datenprozessoren ist, die
nicht ausgefallen sind.
2. Multiprozessor-Computersystem nach Anspruch 1,
wobei jede der Gruppen von Datenprozessoren verschiedene
Stromversorgungen und verschiedene Kühlsysteme aufweist.
3. Multiprozessor-Computersystem nach Anspruch 1,
wobei die Fragmentierungs-Einrichtung dazu ausgelegt ist,
auf den Ausfall eines Datenprozessors in einer der
Gruppen zu reagieren, und zwar durch (A) Umdefinieren von
Datenprozessor-Indizes y, die der einen Gruppe zugeordnet
sind, in einen benachbarten Satz mit einem Bereich von 0
bis avail-1, wobei avail die Anzahl von den
Datenprozessoren an dem einen Ort ist, die nicht ausgefallen sind,
und (B) erneutes Zuordnen von jedem Fragment FSx, das
vorher in dem ausgefallenen Datenprozessor gespeichert
worden ist, zu einem anderen Datenprozessor y in der
einen Gruppe gemäß der Zuordnungsgleichung von Fragment
zu Knoten.
4. Multiprozessor-Computersystem nach Anspruch 1,
wobei die Fragmentierungs-Einrichtung in jedem
Datenprozessor dazu ausgelegt ist, auf den Ausfall von einem der
N Datenprozessoren zu reagieren, und zwar durch (A)
Aktualisieren des Datenlexikons, um anzugeben, daß die
Fragmentreplikate für den einen Datenprozessor nicht
verfügbar sind, (B) Lokalisieren von verfügbaren
Fragmentreplikaten der Fragmentreplikate, die den
Fragmentreplikaten für den einen Datenprozessor entsprechen, und (C)
Speichern von neuen Replikaten der Fragmentreplikate, die
durch den Ausfall bei dem einen Datenprozessor nicht
verfügbar geworden sind, in einem Teilsatz von den N
Datenprozessoren, die nicht ausgefallen sind, derart, daß ein
Replikat von jedem Datenbasis-Tabellenfragment in
Datenprozessoren gespeichert ist, die in jeder Gruppe von
Datenprozessoren nicht ausgefallen sind.
5. Verfahren zum Verteilen von Datenspeicherungs- und
Transaktions-Arbeitsbelastungen in einem Multiprozessor-
Computersystem, das folgendes aufweist:
- Datenprozessoren, wobei eine positive ganze Zahl
größer als Drei ist, wobei jeder Datenprozessor
seine eigene, separate zentrale
Verarbeitungseinheit, Speicher zum Speichern von Datenbasis-Tabellen
und anderen Datenstrukturen, sowie
Kommunikationskanäle zur Kommunikation mit anderen der
Datenprozessoren aufweist;
- wobei zumindest eine Vielzahl der Datenprozessoren
einen Kommunikationsprozessor besitzt, der
Transaktions-Anfragen empfängt und Antworten darauf sendet;
- wobei die Datenprozessoren in mindestens zwei
Gruppen unterteilt sind, von denen jede mindestens
zwei Datenprozessoren besitzt;
- wobei das Verfahren folgende Schritte aufweist:
- ein wohldefinierter Befehlsdatenstrom wird
unabhängig in jedem der Datenprozessoren ausgeführt;
- jede der Datenbasis-Tabellen wird in Fragmente
geteilt, und die Replikate von jedem Fragment werden
in verschiedenen Datenprozessoren der
Datenprozessoren gespeichert, wobei die verschiedenen der
Datenprozessoren in verschiedenen Gruppen von
Datenprozessoren gelegen sind, so daß eine vollständige
Kopie von jeder der Datenbasis-Tabellen sich in
jeder Gruppe von Datenprozessoren befindet und daß bei
einem gleichzeitigen Ausfall von allen
Datenprozessoren in einer der Gruppen eine vollständige Kopie
von jeder der Datenbasis-Tabellen in der anderen der
Gruppen von Datenprozessoren bleiben würde;
- wobei der Schritt der Fragmentierung die Zuordnung
von jeder Aufzeichnung in irgendeiner der
Datenbasis-Tabellen zu einem bestimmten Fragment ihrer
Fragmente gemäß vorher definierter Kriterien umfaßt;
- in einem Datenlexikon in jedem der
Datenprozessoren wird Information gespeichert, die angibt, wo
jedes der Replikate von jedem Fragment der Datenbasis-
Tabellen in den Datenprozessoren gespeichert ist;
und
- wobei beim Ausfall von irgendeinem der
Datenprozessoren die Information, die in dem Datenlexikon
gespeichert ist, geändert wird, um anzugeben, daß
die bei dem ausgefallenen Datenprozessor
gespeicherten Replikate nicht verfügbar sind;
- wobei der Schritt der Fragmentierung folgendes
umfaßt: die Datenbasis-Tabellen werden in Fragmente
FSx geteilt, die Fragmente in den Datenprozessoren
in jeder Gruppe werden gespeichert, wobei für ein
spezielles Fragment FSx das die Gruppe von
Datenprozessoren identifiziert, in welchem das Fragment
gespeichert ist, und ein Index ist, der das
Fragment identifiziert und einen Wert zwischen 0 und F-i
besitzt; wobei in dem Schritt der Fragmentierung
jedes Fragment FSx einem Datenprozessor y in der
Gruppe gemäß der folgenden Zuordnungsgleichung von
Fragment zu Knoten zugeordnet wird:
y = (x + (x div NS) · Q(S)) modulo avail
wobei y identifiziert, welches
Datenprozessorfragment FSx zugeordnet ist, NS die Anzahl von
Datenprozessoren in der Gruppe ist, die zum Speichern
von Datenbasisfragmenten verwendet wird, Q(S) eine
ganze Zahl zwischen 0 und NS-1 ist, wobei Q(S) ein
wohldefinierter Wert für jede Gruppe ist, und wobei
avail der Anzahl von den NS Datenprozessoren ist,
die nicht ausgefallen sind.
6. Verfahren nach Anspruch 5,
wobei dann, wenn ein Datenprozessor in einer der Gruppen
ausfällt, die Indizes in den Gruppen in einen
benachbarten Satz umdefiniert werden, der im Bereich von 0 bis
avail-1 liegt, wobei avail die Anzahl von
Datenprozessoren an dem einen Ort ist, die nicht ausgefallen sind, und
wobei dann jedes Fragment FSx, das vorher bei dem
ausgefallenen Datenprozessor gespeichert worden ist, einem
anderen Datenprozessor y in der einen Gruppe gemäß der
Zuordnungsgleichung von Fragment zu Knoten neu zugeordnet
wird.
7. Verfahren nach Anspruch 5,
das ferner das Reagieren auf den Ausfall von einem der
Datenprozessoren umfaßt, und zwar durch (A)
Aktualisieren des Datenlexikons, um anzugeben, daß die
Fragmentreplikate bei dem einen Datenprozessor nicht verfügbar
sind, (B) Lokalisieren von verfügbaren Fragmentreplikaten
der Fragmentreplikate, die den Fragmentreplikaten bei dem
einen Datenprozessor entsprechen; und (C) Speichern von
neuen Replikaten der Fragmentreplikate, die durch den
Ausfall bei dem einen Datenprozessor nicht verfügbar
geworden sind, in einem Teilsatz von Datenprozessoren,
die nicht ausgefallen sind, derart, daß ein Replikat von
jedem Datenbasis-Tabellenfragment in den Datenprozessoren
gespeichert wird, die in jeder Gruppe von
Datenprozessoren nicht ausgefallen sind.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/451,855 US5712638A (en) | 1992-09-16 | 1995-05-26 | Multiple transmission channel group transmitter |
PCT/NO1996/000122 WO1996037837A2 (en) | 1995-05-26 | 1996-05-21 | Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69614383D1 DE69614383D1 (de) | 2001-09-13 |
DE69614383T2 true DE69614383T2 (de) | 2002-02-07 |
Family
ID=23793988
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69614383T Expired - Lifetime DE69614383T2 (de) | 1995-05-26 | 1996-05-21 | Kontinuierlich verfügbarer datenbankserver mit mehreren knotengruppen mit sich minimal überschneidenden sätzen von datenbankteilkopien |
Country Status (8)
Country | Link |
---|---|
US (1) | US5712638A (de) |
EP (1) | EP0829138A4 (de) |
KR (1) | KR19990021999A (de) |
CN (1) | CN1185243A (de) |
AU (1) | AU694925B2 (de) |
CA (1) | CA2222496A1 (de) |
DE (1) | DE69614383T2 (de) |
WO (1) | WO1996037956A1 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103481859A (zh) * | 2013-09-16 | 2014-01-01 | 四川航天天搏科技有限公司 | 一种车用防盗电路及防盗器 |
Families Citing this family (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2224515A1 (en) | 1995-05-04 | 1996-11-07 | Darrell E. Issa | Advanced method of indicating incoming threat level |
US6618754B1 (en) * | 1995-10-23 | 2003-09-09 | Sun Microsystems, Inc. | System for transmission of embedded applications over a network |
US7248150B2 (en) * | 1997-01-29 | 2007-07-24 | Directed Electronics, Inc. | Menu-driven remote control transmitter |
US5907195A (en) * | 1997-05-30 | 1999-05-25 | Directed Electronics, Inc. | Channel expander for remotely controlled automotive security and convenience systems |
US6591094B1 (en) | 1999-07-06 | 2003-07-08 | Televoke, Inc. | Automated user notification system |
US6529723B1 (en) | 1999-07-06 | 2003-03-04 | Televoke, Inc. | Automated user notification system |
US7310509B2 (en) * | 2000-04-17 | 2007-12-18 | Decarta Inc. | Software and protocol structure for an automated user notification system |
FR2823923A1 (fr) * | 2001-04-18 | 2002-10-25 | Koninkl Philips Electronics Nv | Procede et ensemble d'interconnexion sans fil pour etablir une communication bidirectionnelle entre deux dispositifs audio et/ou video |
US7002483B2 (en) * | 2001-07-11 | 2006-02-21 | Trw Inc. | Configurable arrangement of multiple transmitters and multiple receivers for the performance of remote convenience functions |
CN1653461A (zh) * | 2002-05-09 | 2005-08-10 | 凯斯特无线有限公司 | 能够通过个人装置进行电子交易的方法和系统 |
US6990317B2 (en) * | 2002-05-28 | 2006-01-24 | Wireless Innovation | Interference resistant wireless sensor and control system |
US7050756B2 (en) * | 2002-08-29 | 2006-05-23 | Kestrel Wireless, Inc. | Phone enabled direct response |
AU2004251358A1 (en) * | 2003-06-23 | 2005-01-06 | Kestrel Wireless, Inc | Method and apparatus for activating optical media |
US8117651B2 (en) | 2004-04-27 | 2012-02-14 | Apple Inc. | Method and system for authenticating an accessory |
US20060100983A1 (en) * | 2004-10-26 | 2006-05-11 | Paul Atkinson | Method and system for selectively controlling the utility a target |
US20070194945A1 (en) * | 2004-12-07 | 2007-08-23 | Paul Atkinson | Mobile Device for Selectively Activating a Target and Method of Using Same |
WO2006063051A2 (en) * | 2004-12-07 | 2006-06-15 | Kestrel Wireless, Inc. | Device and method for selectively controlling the utility of a taget |
US7823214B2 (en) | 2005-01-07 | 2010-10-26 | Apple Inc. | Accessory authentication for electronic devices |
US20060192653A1 (en) * | 2005-02-18 | 2006-08-31 | Paul Atkinson | Device and method for selectively controlling the utility of an integrated circuit device |
WO2007006005A2 (en) * | 2005-07-06 | 2007-01-11 | Kestrel Wireless Inc. | Device and method for authenticating and securing transactions using rf communication |
US20070008169A1 (en) * | 2005-07-11 | 2007-01-11 | Conero Ronald S | A Radio Frequency Activated Integrated Circuit and Method of Disabling the Same |
US20070080823A1 (en) * | 2005-10-07 | 2007-04-12 | Apple Computer, Inc. | Techniques for pairing remote controllers with host devices |
US20070223692A1 (en) * | 2005-10-18 | 2007-09-27 | Paul Atkinson | Activation confirmation feedback circuits and methods |
WO2007085016A2 (en) * | 2006-01-20 | 2007-07-26 | Kestrel Wireless Inc. | Optical media with reduced areal-sized optical shutters |
US8086332B2 (en) * | 2006-02-27 | 2011-12-27 | Apple Inc. | Media delivery system with improved interaction |
US7643895B2 (en) * | 2006-05-22 | 2010-01-05 | Apple Inc. | Portable media device with workout support |
US9137309B2 (en) * | 2006-05-22 | 2015-09-15 | Apple Inc. | Calibration techniques for activity sensing devices |
US20070271116A1 (en) * | 2006-05-22 | 2007-11-22 | Apple Computer, Inc. | Integrated media jukebox and physiologic data handling application |
US20080046114A1 (en) * | 2006-08-15 | 2008-02-21 | White Charles A | System, packaging, and method for distributing products |
US7813715B2 (en) * | 2006-08-30 | 2010-10-12 | Apple Inc. | Automated pairing of wireless accessories with host devices |
US7913297B2 (en) | 2006-08-30 | 2011-03-22 | Apple Inc. | Pairing of wireless devices using a wired medium |
US7698101B2 (en) | 2007-03-07 | 2010-04-13 | Apple Inc. | Smart garment |
WO2009032513A1 (en) * | 2007-09-04 | 2009-03-12 | Apple Inc. | Smart dock for chaining accessories |
US9953519B2 (en) * | 2008-11-17 | 2018-04-24 | Universal Electronics Inc. | System and method for rapid configuration of a universal controlling device |
CN101923770B (zh) * | 2009-06-11 | 2013-01-09 | 鸿富锦精密工业(深圳)有限公司 | 遥控器及电量提示系统 |
DE102014109528A1 (de) * | 2014-07-08 | 2016-01-14 | Carl Fuhr Gmbh & Co. Kg | Zutrittskontrollvorrichtung |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE2305208A1 (de) * | 1973-02-02 | 1974-08-22 | Stiefenhofer Kg C | Rehabilitationsgeraet fuer schwerstkoerperbehinderte |
US4202038A (en) * | 1977-08-10 | 1980-05-06 | Stig Anders Petersson | Method of effecting one of several different circuit connections |
US4481503A (en) * | 1982-07-29 | 1984-11-06 | Kerr-Mcgee Corporation | Production monitoring system |
DE3228354C2 (de) * | 1982-07-29 | 1985-10-10 | Standard Elektrik Lorenz Ag, 7000 Stuttgart | Benutzerführende Bedienung bei Geräten der Unterhaltungselektronik |
JPS59119995A (ja) * | 1982-12-25 | 1984-07-11 | Toshiba Corp | リモ−トコントロ−ル用送信回路 |
DE3446806A1 (de) * | 1984-12-21 | 1986-06-26 | Braun Electronic GmbH, 6000 Frankfurt | Fernbedienungsgeraet fuer rundfunkempfangsgeraete und dergleichen |
JPS61202597A (ja) * | 1985-03-06 | 1986-09-08 | Alps Electric Co Ltd | 遠隔操作装置 |
IL80686A0 (en) * | 1986-11-18 | 1987-02-27 | Gg Electronics Ltd | Portable code transmitter and wireless remote control system including same |
JPS63129715A (ja) * | 1986-11-20 | 1988-06-02 | Fujitsu General Ltd | リモコン送信器 |
US5367316A (en) * | 1990-03-27 | 1994-11-22 | Matsushita Electric Industrial Co., Ltd. | Remote-control apparatus for electronics apparatus |
US5258748A (en) * | 1991-08-28 | 1993-11-02 | Hewlett-Packard Company | Accessing and selecting multiple key functions with minimum keystrokes |
KR950003286B1 (ko) * | 1992-01-06 | 1995-04-07 | 삼성전자 주식회사 | 리모트 송수신 장치 |
FR2691554B1 (fr) * | 1992-05-19 | 1994-07-29 | Somfy | Dispositif de selection et d'affichage pour telecommande multicanaux. |
US5451953A (en) * | 1993-02-03 | 1995-09-19 | Thomson Consumer Electronics, Inc. | Programmable remote control unit without extra key for configuration |
US5457448A (en) * | 1993-08-03 | 1995-10-10 | Sony Electronics, Inc. | Self-standing mini remote commander |
US5491472A (en) * | 1993-12-28 | 1996-02-13 | Kurtz; Fred R. | RF switching with remote controllers dedicated to other devices |
-
1995
- 1995-05-26 US US08/451,855 patent/US5712638A/en not_active Expired - Lifetime
- 1995-06-21 CA CA002222496A patent/CA2222496A1/en not_active Abandoned
- 1995-06-21 WO PCT/US1995/007876 patent/WO1996037956A1/en not_active Application Discontinuation
- 1995-06-21 CN CN95197869A patent/CN1185243A/zh active Pending
- 1995-06-21 KR KR1019970708474A patent/KR19990021999A/ko not_active Application Discontinuation
- 1995-06-21 AU AU29467/95A patent/AU694925B2/en not_active Ceased
- 1995-06-21 EP EP95925284A patent/EP0829138A4/de not_active Withdrawn
-
1996
- 1996-05-21 DE DE69614383T patent/DE69614383T2/de not_active Expired - Lifetime
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103481859A (zh) * | 2013-09-16 | 2014-01-01 | 四川航天天搏科技有限公司 | 一种车用防盗电路及防盗器 |
CN103481859B (zh) * | 2013-09-16 | 2016-06-01 | 四川航天天搏科技有限公司 | 一种车用防盗电路及防盗器 |
Also Published As
Publication number | Publication date |
---|---|
EP0829138A4 (de) | 1999-02-10 |
WO1996037956A1 (en) | 1996-11-28 |
CN1185243A (zh) | 1998-06-17 |
DE69614383D1 (de) | 2001-09-13 |
AU2946795A (en) | 1996-12-11 |
AU694925B2 (en) | 1998-08-06 |
CA2222496A1 (en) | 1996-11-28 |
KR19990021999A (ko) | 1999-03-25 |
EP0829138A1 (de) | 1998-03-18 |
US5712638A (en) | 1998-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69614383T2 (de) | Kontinuierlich verfügbarer datenbankserver mit mehreren knotengruppen mit sich minimal überschneidenden sätzen von datenbankteilkopien | |
DE68928546T2 (de) | Dateisystem für eine vielzahl von speicherklassen | |
DE69807077T2 (de) | Verfahren und vorrichtung zur wiederherstellung in einem verteilten datenbanksystem mit nicht global erreichbaren daten unter verwendung von gemeinsam genutzten virtuellen platten | |
DE69801418T2 (de) | Datenaufteilung und -dupliziering in einem verteilten datenverarbeitungssystem | |
US5423037A (en) | Continuously available database server having multiple groups of nodes, each group maintaining a database copy with fragments stored on multiple nodes | |
DE69710578T2 (de) | Verfahren zum unabhängigen und gleichzeitigen zugriff auf eine gemeinsame datensammlung | |
US5555404A (en) | Continuously available database server having multiple groups of nodes with minimum intersecting sets of database fragment replicas | |
DE69623229T2 (de) | Bindungsverfahren in einer Transaktion in einer verteilten Datenbank | |
DE69128271T2 (de) | Verfahren und System zur Erhöhung der Betriebsverfügbarkeit eines Systems von Rechnerprogrammen, wirkend in einem verteilten Rechnerssystem | |
DE69724834T2 (de) | System für hochverfügbare datenspeicherung mit allgemein-adressiertem speicher | |
DE69803476T2 (de) | Hochverfügbare gruppenkonfigurationsdatenbank | |
DE69327679T2 (de) | Nachrichtenübertragung zwischen Prozessoren und einer Koppeleinrichtung | |
DE112010004947B4 (de) | Wiederherstellung einer vollständigen Systemsicherung und inkrementeller Sicherungen unter Verwendung von mehreren gleichzeitigen Datenströmen von Einheiten | |
DE602005002532T2 (de) | Cluster-datenbank mit ferndatenspiegelung | |
DE69838367T2 (de) | Paralleles Dateiensystem und Verfahren zur unabhängigen Aufzeichnung von Metadaten | |
DE60312746T2 (de) | Wiederherstellung nach fehlern in datenverarbeitungsanlagen | |
DE69714344T2 (de) | Vorrichtung und Verfahren für die Verfügbarkeit und Wiedergewinnung von Dateien unter Verwendung von Sammlungen von Kopierspeicher | |
DE602005004166T2 (de) | Vorrichtung, system und verfahren zur reinitialisierung einer serialisierung von dateisystemen | |
DE69231873T2 (de) | Verfahren zur Synchronisierung von reservierten Bereichen in einer redundanten Speicheranordnung | |
DE602005002713T2 (de) | Informationsverarbeitungssystem mit redundanten Pfaden und Zugriffsverfahren | |
DE69311952T2 (de) | Verfahren und System zur inkrementalen Datensicherung | |
DE69629444T2 (de) | Datenverarbeitungsgerät und Verfahren zur Ersetzung von ausgefallenen Speichereinheiten | |
DE60018872T2 (de) | System und Methode für das Löschen von Datenbank-Aktualisierungsbilddateien nach Abschluss der dazugehörigen Transaktionen | |
DE69805826T2 (de) | Verfahren zum sequentiellen und konsistenten start und/oder nachladen von multiprozessorknoten in einer vielfachknotengruppe | |
DE10123067B4 (de) | Synchrone Vervielfältigung von Transaktionen in einem verteilten System |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: SUN MICROSYSTEMS, INC., SANTA CLARA, CALIF., US |
|
8328 | Change in the person/name/address of the agent |
Representative=s name: WSL PATENTANWAELTE, 65183 WIESBADEN |