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 datenbankteilkopien

Info

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
Application number
DE69614383T
Other languages
English (en)
Other versions
DE69614383D1 (de
Inventor
Svein-Olaf Hvasshovd
Oeystein Torbjoernsen
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Clustra Systems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Clustra Systems Inc filed Critical Clustra Systems Inc
Priority claimed from PCT/NO1996/000122 external-priority patent/WO1996037837A2/en
Publication of DE69614383D1 publication Critical patent/DE69614383D1/de
Application granted granted Critical
Publication of DE69614383T2 publication Critical patent/DE69614383T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60RVEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
    • B60R25/00Fittings or systems for preventing or indicating unauthorised use or theft of vehicles
    • B60R25/10Fittings or systems for preventing or indicating unauthorised use or theft of vehicles actuating a signalling device
    • B60R25/1003Alarm systems characterised by arm or disarm features
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K17/00Electronic switching or gating, i.e. not by contact-making and –breaking
    • H03K17/94Electronic switching or gating, i.e. not by contact-making and –breaking characterised by the way in which the control signals are generated
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60RVEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
    • B60R25/00Fittings or systems for preventing or indicating unauthorised use or theft of vehicles
    • B60R25/10Fittings or systems for preventing or indicating unauthorised use or theft of vehicles actuating a signalling device
    • B60R25/1004Alarm systems characterised by the type of sensor, e.g. current sensing means
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60RVEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
    • B60R25/00Fittings or systems for preventing or indicating unauthorised use or theft of vehicles
    • B60R25/10Fittings or systems for preventing or indicating unauthorised use or theft of vehicles actuating a signalling device
    • B60R25/1018Alarm systems characterised by features related to the general power supply
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60RVEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
    • B60R25/00Fittings or systems for preventing or indicating unauthorised use or theft of vehicles
    • B60R25/10Fittings or systems for preventing or indicating unauthorised use or theft of vehicles actuating a signalling device
    • B60R25/104Fittings 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
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60RVEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
    • B60R25/00Fittings or systems for preventing or indicating unauthorised use or theft of vehicles
    • B60R25/20Means to switch the anti-theft system on or off
    • B60R25/24Means to switch the anti-theft system on or off using electronic identifiers containing a code not memorised by the user
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07CTIME 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/00Individual registration on entry or exit
    • G07C9/00174Electronically operated locks; Circuits therefor; Nonmechanical keys therefor, e.g. passive or active electrical keys or other data carriers without mechanical keys
    • G07C9/00182Electronically 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
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07CTIME 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/00Individual registration on entry or exit
    • G07C9/20Individual registration on entry or exit involving the use of a pass
    • G07C9/21Individual registration on entry or exit involving the use of a pass having a variable access code
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07CTIME 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/00Individual registration on entry or exit
    • G07C9/20Individual registration on entry or exit involving the use of a pass
    • G07C9/28Individual registration on entry or exit involving the use of a pass the pass enabling tracking or indicating presence
    • GPHYSICS
    • G08SIGNALLING
    • G08BSIGNALLING OR CALLING SYSTEMS; ORDER TELEGRAPHS; ALARM SYSTEMS
    • G08B25/00Alarm systems in which the location of the alarm condition is signalled to a central station, e.g. fire or police telegraphic systems
    • G08B25/003Address allocation methods and details
    • GPHYSICS
    • G08SIGNALLING
    • G08BSIGNALLING OR CALLING SYSTEMS; ORDER TELEGRAPHS; ALARM SYSTEMS
    • G08B25/00Alarm systems in which the location of the alarm condition is signalled to a central station, e.g. fire or police telegraphic systems
    • G08B25/01Alarm 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/10Alarm 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
    • GPHYSICS
    • G08SIGNALLING
    • G08BSIGNALLING OR CALLING SYSTEMS; ORDER TELEGRAPHS; ALARM SYSTEMS
    • G08B29/00Checking or monitoring of signalling or alarm systems; Prevention or correction of operating errors, e.g. preventing unauthorised operation
    • G08B29/18Prevention or correction of operating errors
    • G08B29/20Calibration, including self-calibrating arrangements
    • G08B29/24Self-calibration, e.g. compensating for environmental drift or ageing of components
    • G08B29/26Self-calibration, e.g. compensating for environmental drift or ageing of components by updating and storing reference thresholds
    • GPHYSICS
    • G08SIGNALLING
    • G08CTRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
    • G08C17/00Arrangements for transmitting signals characterised by the use of a wireless electrical link
    • G08C17/02Arrangements for transmitting signals characterised by the use of a wireless electrical link using a radio link
    • GPHYSICS
    • G08SIGNALLING
    • G08CTRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
    • G08C19/00Electric signal transmission systems
    • G08C19/16Electric signal transmission systems in which transmission is by pulses
    • G08C19/28Electric signal transmission systems in which transmission is by pulses using pulse code
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60RVEHICLES, VEHICLE FITTINGS, OR VEHICLE PARTS, NOT OTHERWISE PROVIDED FOR
    • B60R25/00Fittings or systems for preventing or indicating unauthorised use or theft of vehicles
    • B60R25/10Fittings or systems for preventing or indicating unauthorised use or theft of vehicles actuating a signalling device
    • B60R2025/1013Alarm systems characterised by the type of warning signal, e.g. visual, audible
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07CTIME 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/00Individual registration on entry or exit
    • G07C9/00174Electronically operated locks; Circuits therefor; Nonmechanical keys therefor, e.g. passive or active electrical keys or other data carriers without mechanical keys
    • G07C9/00182Electronically 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/00238Electronically 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
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07CTIME 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/00Individual registration on entry or exit
    • G07C9/00174Electronically operated locks; Circuits therefor; Nonmechanical keys therefor, e.g. passive or active electrical keys or other data carriers without mechanical keys
    • G07C2009/00753Electronically 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/00769Electronically 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/00793Electronically 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
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07CTIME 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/00Individual registration on entry or exit
    • G07C9/00174Electronically operated locks; Circuits therefor; Nonmechanical keys therefor, e.g. passive or active electrical keys or other data carriers without mechanical keys
    • G07C9/00817Electronically 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/00849Electronically 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
    • GPHYSICS
    • G08SIGNALLING
    • G08CTRANSMISSION SYSTEMS FOR MEASURED VALUES, CONTROL OR SIMILAR SIGNALS
    • G08C2201/00Transmission systems of control signals via wireless link
    • G08C2201/50Receiving or transmitting feedback, e.g. replies, status updates, acknowledgements, from the controlled devices
    • G08C2201/51Remote controlling of devices based on replies, status thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04BTRANSMISSION
    • H04B1/00Details 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/06Receivers
    • H04B1/16Circuits
    • H04B1/20Circuits for coupling gramophone pick-up, recorder output, or microphone to receiver
    • H04B1/202Circuits for coupling gramophone pick-up, recorder output, or microphone to receiver by remote control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04JMULTIPLEX COMMUNICATION
    • H04J13/00Code division multiplex systems
    • H04J13/0074Code 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.
  • Hintergrund der Erfindung
  • 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.
  • Kurzbeschreibung der Erfindung
  • 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.
  • Kurzbeschreibung der Zeichnungen
  • 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.
  • Beschreibung der bevorzugten Ausführungsbeispiele
  • 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.
  • Datenbasisfragmente und Replikate
  • 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.
  • Datenlexikon
  • 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.
  • Mindest-Schnittmengen-Entclusterung
  • 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
  • Fragment-Zuordnungsverfahren mit rotierten Spalten (RC)
  • 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.
  • Fragment-Zuordnungsverfahren mit leerer Diagonalen (ED)
  • 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.
DE69614383T 1995-05-26 1996-05-21 Kontinuierlich verfügbarer datenbankserver mit mehreren knotengruppen mit sich minimal überschneidenden sätzen von datenbankteilkopien Expired - Lifetime DE69614383T2 (de)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103481859A (zh) * 2013-09-16 2014-01-01 四川航天天搏科技有限公司 一种车用防盗电路及防盗器

Families Citing this family (36)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (2)

* Cited by examiner, † Cited by third party
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