-
Die
Erfindung bezieht sich auf eine Informationsverarbeitungsvorrichtung
und ein Informationsverarbeitungsverfahren, insbesondere auf eine
Informationsverarbeitungsvorrichtung und ein Informationsverarbeitungsverfahren
mit einem parallelen Steuerverfahren, das beispielsweise für eine interaktive
kooperationsartige Anwendung geeignet ist.
-
Bei
einer Transaktionsverarbeitung wird eine parallele Steuerung gemäß einer
Zweiphasensperre ausgeführt.
Diese Steuerung wird weithin als Einrichtung zum Trennen einer Vielzahl
von Transaktionen und zum Sicherstellen einer kohärenten Planung
verwendet. Zum Sicherstellen von Kohärenz selbst bei Wiederherstellungsverarbeitungen
zum Fehlerzeitpunkt ist es außerdem
gebräuchlich,
dass bei einer Zweiphasensperre eine Sperrungsfreigabeverarbeitung
bei Vorhandensein einer der Transaktion folgenden Übergabeverarbeitung
auszuführen
ist.
-
Im
vorstehend beschriebenen Stand der Technik treten jedoch Probleme
auf.
-
Insbesondere
neuere Computersysteme stellen im Allgemeinen eine interaktive Betriebsumgebung
unter Verwendung eines Mehr-Fenster-Systems bereit. Eine wünschenswerte
Anwendung in einem Mehr-Fenster-System ist eine, die Daten interaktiv
aktualisiert, während
sie eine wandlungsfähige Anzeige
gemeinsamer Daten unter Verwendung einer Datenbank darstellt.
-
Im
vorstehend beschriebenen Stand der Technik ergibt sich jedoch ein
Problem, wenn eine bestimmte Anwendung eine Aktualisierungsverarbeitung
auf eine Vielzahl gemeinsamer Daten anwendet. Das Problem besteht
darin, dass während
eine Aktualisierung von Inhalten bezüglich bestimmter gemeinsamer
Daten durchgeführt
wird, eine Operation, durch die eine Aktualisierungsverarbeitung
weiterhin auf andere gemeinsame Daten angewendet wird oder durch
die Aktualisierungsinhalte gelöscht
werden, verboten ist. Das stellt eine große Behinderung für die Herstellung
einer interaktiven Betriebsumgebung im Hinblick auf gemeinsame Daten
mit einer komplexen Struktur dar.
-
Das
tatsächliche
Löschen
von Aktualisierungsinhalten hinsichtlich einiger gemeinsamer Daten,
während
die Aktualisierungsinhalte hinsichtlich einiger gemeinsamer Daten
durchgeführt
werden, ist unter Verwendung des vorstehend beschriebenen Standes
der Technik nicht unbedingt unmöglich.
-
Bei
einer Transaktion wird beispielsweise der Dateninhalt gespeichert,
bevor die Datenaktualisierungsverarbeitung beginnt, und die Verarbeitung
für das
Ungültigmachen
der Aktualisierungsinhalte wird auf der Grundlage der gespeicherten
Inhalte ausgeführt,
wodurch es möglich
wird, die Aktualisierungsinhalte tatsächlich zu löschen, wenn die Transaktion abgeschlossen
ist. Bei diesem Verfahren ist es jedoch erforderlich, die Inhalte
aller gemeinsamen Daten zu speichern, die der Gegenstand einer Datenaktualisierung
sind. Das heißt,
dass eine Abnahme an Effizienz unvermeidbar ist. Bei einem Datenbankverwaltungssystem
gibt es außerdem
Gelegenheiten, bei denen eine Aktualisierung eines sich auf eine Übergabe
oder Aktivierung eines Daemon-Vorgangs beziehenden Zeitstempels
ausgeführt
wird. Da diese ohne Bezug zu dem tatsächlichen Löschen von Aktualisierungsinhalten
sind, können
sie unter bestimmten Umständen
unerwünschte
Nebeneffekte darstellen.
-
Obwohl
ferner gesagt werden kann, dass die Fortsetzung der Aktualisierungsverarbeitung
einiger gemeinsamer Daten, während
einer Übergabe
von Aktualisierungsinhalten bezüglich
anderer gemeinsamer Daten eine starke Beschränkung darstellt, ist das jedoch
nicht unbedingt unmöglich.
-
In
einem Computersystem, bei dem Multitasking möglich ist, wird die vorstehend
beschriebene Beschränkung
beispielsweise nicht auf eine Reihe von unabhängig, Aufgabe für Aufgabe
aktivierten Transaktionen angewendet, und deshalb kann eine selektive Übergabeverarbeitung über einen
breiten Bereich ausgeführt
werden, der die Errichtung einer interaktiven Betriebsumgebung hinsichtlich
gemeinsamer Daten mit einer komplexen Struktur einschließt. Mit
diesem Verfahren steigt jedoch im Allgemeinen die Belastung für das Betriebssystem
oder das Datenbankverwaltungssystem mit dem Anstieg der Anzahl an
Aufgaben, und für
die Anwendungsentwicklung sind größere Anstrengungen erforderlich.
-
Da
ein Multitasking- bzw. Mehrprogrammbetriebs-Verarbeitung verwendendes Verfahren
eine ursprünglich
als ganzes ablaufende Anwendung in eine Vielzahl von Aufgaben teilt,
ist es außerdem
erforderlich, dass Aufgaben durch eine Kommunikation zwischen den
Aufgaben verbunden werden. Da eine Kommunikation zwischen Aufgaben
im Allgemeinen von einer Transaktion unabhängig ist, muss der Anwendungsentwickler
die Möglichkeit
ausschließen, dass
die Kohärenz
der Transaktion durch eine von dem Inhalt der gemeinsamen Daten
abhängige
Kommunikation verloren geht. Das ist jedoch überaus schwierig und führt zu Anwendungen,
die bezüglich Erweiterbarkeit
und Wartung starke Mängel
aufweisen.
-
Der
vorliegenden Erfindung liegt die Aufgabe zugrunde, eine Informationsverarbeitungsvorrichtung
und ein Informationsverarbeitungsverfahren bereitzustellen, bei
denen, wenn eine bestimmte Anwendung eine Aktualisierungsverarbeitung
auf eine Vielzahl gemeinsamer Daten anwendet, eine Operation durchgeführt werden
kann, bei der während
einer Übergabe
eines Aktualisierungsinhalts bezüglich
bestimmter gemeinsamer Daten eine Aktualisierungsverarbeitung weiterhin
auf andere gemeinsame Daten angewendet wird oder der Aktualisierungsinhalt gelöscht wird.
-
Die
Beschreibung des Europäischen
Patents Nummer EP-A-0 578 406 offenbart ein verteiltes Transaktionsverarbeitungssystem,
das die vorausgesetzte Übergabekonfiguration
mit der Ausnahme verwendet, dass die neue vorausgesetzte Übergabeprotokollkoordinierungseinrichtung
lediglich einen "Übergabe-" Protokollsatz für übergebene
Transaktionen zwangsmäßig schreiben
muss, anstatt dem früheren
zwangsmäßigen Schreiben
von zwei Protokollsätzen.
-
Gemäß einem
Gesichtspunkt der Erfindung ist eine Informationsverarbeitungsvorrichtung
gemäß Patentanspruch
1 bereitgestellt.
-
Gemäß einem
weiterem Gesichtspunkt der Erfindung ist ein Informationsverarbeitungsverfahren gemäß Patentanspruch
10 bereitgestellt.
-
Es
kann gemäß der vorstehend
beschriebenen Erfindung eine Informationsverarbeitungsvorrichtung
und ein Informationsverarbeitungsverfahren bereitgestellt werden,
bei denen, wenn eine bestimmte Anwendung eine Aktualisierungsverarbeitung
auf eine Vielzahl gemeinsamer Daten anwendet, eine Operation durchgeführt werden
kann, bei der, während
ein Aktualisierungsinhalt bezüglich
bestimmter gemeinsamer Daten übergeben
wird, eine Aktualisierungsverarbeitung weiterhin auf andere gemeinsame
Daten angewendet wird oder der Aktualisierungsinhalt verworfen wird.
-
Ausführungsbeispiele
der Erfindung werden nun unter Bezugnahme auf die beiliegende Zeichnung
beschrieben. Es zeigen:
-
1 eine
Darstellung einer Transaktionskontextverwaltungstabelle und eines
Transaktionskontextes in einem Datenbankverwaltungssystem,
-
2 ein
Ablaufdiagramm eines Beispiels eines Vorgangs zum Erzeugen eines
Transaktionskontexts,
-
3 ein
Ablaufdiagramm eines Beispiels eines Vorgangs zum Wechseln eines
Transaktionskontexts,
-
4 ein
Ablaufdiagramm eines Beispiels eines Vorgangs zum Löschen eines
bestimmten Transaktionskontexts,
-
5 ein
Ablaufdiagramm eines Beispiels eines Vorgangs zum Sperren des Schaltens
eines Transaktionskontexts,
-
6 ein
Ablaufdiagramm eines Beispiels eines Vorgangs zum Löschen des
Sperrens des Schaltens eines Transaktionskontexts,
-
7 ein
Ablaufdiagramm eines Beispiels eines Vorgangs zum Aktivieren eines
Handhabers bei einem externen Transaktionsabbruch,
-
8 eine
Darstellung zur Beschreibung eines Beispiels eines Computersystems
zum Ausführen
der Erfindung, und
-
9 ein
Beispiel des Speicherbilds eines Speicherträgers, der Programmcodes gemäß einem Ausführungsbeispiel
der Erfindung speichert.
-
Ein
System zum Ausführen
der Erfindung ist ein Computersystem der in 8 veranschaulichten Art,
bei der Computer wie Workstations oder Personalcomputer durch ein
Netz 101 miteinander verbunden sind. Ein Datenbankserver
läuft beispielsweise als
Software auf Servern 102, 104 des Computersystems
zum Bereitstellen eines auf einer Transaktion beruhenden Datenteilungsverfahrens.
Eine Anwendung, die bei einem Client 103 läuft und
das Datenteilungsverfahren verwendet, führt eine Verarbeitung aus,
während
sie mit einem Datenbankverwaltungsserver über eine vorbestimmte Bibliothek
kommuniziert.
-
Eine
Abfolge nachstehend beschriebener Vorgänge ist durch den Datenbankverwaltungsserver implementiert,
obwohl einige oder alle Vorgänge durch
die vorstehend beschriebene Bibliothek implementiert sind. Der Datenbankverwaltungsserver kann
außerdem
aus einer Vielzahl an Servern bestehen. Die Erfindung bezieht sich
nicht auf den Aufbau oder die Rollenverteilung des Datenbankverwaltungsservers
und der Bibliothek, und wird deshalb nachstehend einfach als Datenbankverwaltungssystem
bezeichnet.
-
Erstes Ausführungsbeispiel
-
Als
erstes wird ein Transaktionskontext als Verfahren zum Kennzeichnen
einer Vielzahl von Transaktionen innerhalb eines Anwendungsprozesses
eingeführt.
-
Ein
Transaktionskontext ist ein durch den Datensatztyp in einer bekannten
verfahrensorientierten Programmiersprache ausgedrückter Zustand. Der
ausgedrückte
Inhalt umfasst Informationen wie die Kennung einer unter dem Transaktionskontext aktivierten
Transaktion, ein das Sperren eines Transaktionskontextschaltens
bzw. -umschaltens bestimmendes Flag (Schaltsperrung-Flag) und einen
Handhaber bzw. Handler, der aktiviert wird, wenn eine Transaktion
aus externen Gründen
abgebrochen wird. Eine Transaktion gehört hier zu dem Transaktionskontext,
der zu der Zeit vorherrscht, bei der die Transaktion aktiviert wird,
und der Transaktionskontext wird erst gewechselt, wenn die Transaktion
beendet ist. Ein derartiger Zustand wird wie folgt ausgedrückt: "Die Transaktion wird
unter dem Transaktionskontext aktiviert."
-
Eine
unter dem Transaktionskontext aktivierte Transaktion ist höchstens
eine als oberste Transaktion auf der äußersten Seite einer verschachtelten Struktur
dienende Transaktion. Wenn die Transaktion nicht aktiviert ist,
ist der verwendete Ausdruck: "Die Transaktion
ist leer." In dem
Transaktionskontext sind auf Ziffern und Buchstabenfolgen beruhende
Kennungen gegeben und eine Transaktionskontextverwaltungstabelle
ist als durch eine bekannte Einrichtung erstellte Entsprechungstabelle
bereitgestellt, wobei Kennungen und Transaktionskontexte derart bereitgestellt
sind, dass sie einander eindeutig entsprechen. Die vorstehend beschriebenen
Kennungen sind als Parameter bei Transaktionskontextoperationen
bestimmt.
-
1 ist
eine eine Transaktionskontextverwaltungstabelle und einen Transaktionskontext
in einem Datenbankverwaltungssystem beschreibende Darstellung.
-
In 1 sind
eine Transaktionskontextverwaltungstabelle 201 und ein
Transaktionskontext 202 gezeigt. Zwei Transaktionskontexte 202 sind
mit entsprechenden Kennungen c1 und c2 der Verwaltungstabelle 201 bereitgestellt.
In dem der Kennung c1 entsprechenden Transaktionskontext ist eine "Transaktionskennung
= 12" entsprechende
Transaktion aktiviert. Der der Kennung c2 entsprechende Transaktionskontext
ist leer.
-
Erzeugen eines Transaktionskontextes
-
2 zeigt
ein Ablaufdiagramm eines Beispieles eines Vorgangs zum Erzeugen
eines Transaktionskontextes.
-
Die
Transaktionskontextverwaltungstabelle wird in Schritt S201 in 2 zum
Bestimmen, ob ein einer bestimmten Kennung entsprechender Transaktionskontext
existiert, durchsucht. Anschließend
werden in Schritt S202 die Ergebnisse der Suche beurteilt und die
Verarbeitung beendet, wenn ein der bestimmten Kennung entsprechender
Transaktionskontext gefunden wurde.
-
Wenn
kein der bestimmten Kennung entsprechender Transaktionskontext in
Schritt S202 gefunden wurde, geht das Programm weiter zu Schritt S203
zum erneuten Erzeugen und Eintragen eines Transaktionskontextes.
Genauer gesagt, es wird in Schritt S203 ein Transaktionskontext
erzeugt und danach das Schaltsperrung-Flag in Schritt S204 gelöscht. Darauf
folgt Schritt S205, bei dem die Kennung des neu erzeugten Transaktionskontextes
in die Transaktionsverwaltungstabelle eingetragen wird. Die Verarbeitung
wird dann beendet.
-
Vom
Gesichtspunkt der Bequemlichkeit der Anwendungsentwicklung aus ist
es wünschenswert, dass
ein verwendbarer Transaktionskontext ohne die Ausführung des
Vorgangs gemäß 2 existiert. Eine
auf dem Stand der Technik beruhende Anwendung ist beispielsweise
einem Beispiel äquivalent, bei
dem ein Transaktionskontext der Erfindung auf die Zahl eins beschränkt ist.
In anderen Worten, ein Transaktionskontext kann, wenn es eine Beschränkung gibt,
sofort, zumindest vor der Aktivierung der Transaktion, erzeugt werden
und nur während
der Ausführung
der Transaktion existieren.
-
Selbst
in einem Fall, bei dem eine Vielzahl nachstehend beschriebener Transaktionskontexte verwendet
wird, können
jedoch vorübergehend
Umstände
auftreten, bei denen kein Transaktionskontext existiert. Bei diesem
Ausführungsbeispiel
ist ein Standard-Transaktionskontext als allgemein in derartigen
Umständen
einsetzbare Einrichtung bereitgestellt. Noch genauer, das vorliegende
Ausführungsbeispiel
ist, in einem Fall, bei dem ein Transaktionskontext nicht ausdrücklich bestimmt
ist, derart ausgebildet, dass eine eine Anwendung hinsichtlich einer Datenbank
durchführende
Operation wie eine Operation hinsichtlich einer zu dem Standard- Transaktionskontext
gehörenden
Transaktion behandelt wird. Es sei angemerkt, dass dem Standard-Transaktionskontext
eine vorbestimmte Kennung wie die Ziffer "0" oder
eine leere Buchstabenfolge zugewiesen wird, und dass die Operation
eines Transaktionskontextes mittels dieser Kennung möglich ist.
-
Schalten eines Transaktionskontextes
-
3 zeigt
ein Ablaufdiagramm eines Beispiels eines Vorgangs zum Wechseln eines
Transaktionskontextes.
-
Ob
ein aktueller Transaktionskontext gewechselt werden kann oder nicht,
wird in Schritt S301 überprüft. Die
Tatsache, dass ein Schalten möglich ist,
bedeutet, dass das Schaltsperrung-Flag im aktuellen Transaktionskontext
gelöscht
wurde. Die Ergebnisse der Überprüfung werden
in Schritt S302 beurteilt. Wenn das Schaltsperrung-Flag nicht gelöscht wurde,
wird die Verarbeitung beendet.
-
Wenn
andererseits das Schaltsperrung-Flag gelöscht wurde und ein Schalten
möglich
ist, geht das Programm weiter zu Schritt S303, bei dem die Transaktionskontextverwaltungstabelle
zum Bestimmen, ob ein einer bestimmten Kennung entsprechender Transaktionskontext
existiert, durchsucht wird. Anschließend werden die Ergebnisse
der Suche in Schritt S304 beurteilt und die Verarbeitung beendet, wenn
kein der bestimmten Kennung entsprechender Transaktionskontext gefunden
wurde.
-
Wenn
andererseits ein der bestimmten Kennung entsprechender Transaktionskontext
in Schritt S304 gefunden wurde, werden der abgerufene Transaktionskontext
und der aktuelle Transaktionskontext in Schritt S305 verglichen.
Das Ergebnis des Vergleichs wird in Schritt S306 beurteilt. Wenn
der abgerufene Transaktionskontext und der aktuelle Transaktionskontext
in Schritt S306 als verschieden gefunden werden, wird der Transaktionskontext
in Schritt 307 in den bestimmten Transaktionskontext gewechselt.
-
Wenn
der Transaktionskontext gewechselt wurde, werden alle Operationen
bezüglich
der Transaktion oder gemeinsamer Daten hinsichtlich der zu dem bestimmten
Transaktionskontext gehörenden Transaktion
zu der Zeit ausgeführt,
bei der die nächste
Schaltoperation durchgeführt
wird.
-
Löschen eines Transaktionskontextes
-
4 zeigt
ein Ablaufdiagramm eines Beispiels eines Vorgangs zum Löschen eines
bestimmten Transaktionskontextes.
-
Die
Transaktionskontextverwaltungstabelle wird in Schritt S401 in 4 zum
Bestimmen, ob ein einer bestimmten Kennung entsprechender Transaktionskontext
existiert, durchsucht. Anschließend
werden die Ergebnisse der Suche in Schritt S202 beurteilt und die
Verarbeitung beendet, wenn kein der bestimmten Kennung entsprechender
Transaktionskontext gefunden wurde.
-
Wenn
ein der bestimmten Kennung entsprechender Transaktionskontext in
Schritt S402 gefunden wurde, wird der Zustand des gefundenen Transaktionskontextes
in Schritt S403 untersucht. Anschließend werden die Ergebnisse
der Suche in Schritt S404 beurteilt und die Verarbeitung beendet, wenn
der der bestimmten Kennung entsprechende Transaktionskontext nicht
leer ist.
-
Wenn
der der bestimmten Kennung entsprechende Transaktionskontext jedoch
leer ist, wird die bestimmte Kennung in Schritt S405 aus der Transaktionskontextverwaltungstabelle
gelöscht.
Bei Bedarf wird vor der Beendigung der Verarbeitung ein den Transaktionskontext
ausdrückender
Satz ausgegeben.
-
Wenn
der aktuelle Transaktionskontext gelöscht wird, wird, bei Bedarf,
eine Verarbeitung zum Durchführen
des Wechsels in den Standard-Transaktionskontext ausgeführt. Das
stellt jedoch keine Beschränkung
dar. Zu dem Vorgang gemäß 4 kann beispielsweise
ein die Löschung
des aktuellen Transaktionskontextes sperrender Vorgang hinzugefügt werden.
-
Selektive Übergabeverarbeitung
-
Eine
selektive unter Verwendung der vorstehenden Vorgänge implementierte Übergabeverarbeitung
wird näher
beschrieben.
-
Bei
einer gemeinsame Daten A, B und C verwendenden Anwendung werden
durch den Vorgang von 2 drei den drei Kennungen a,
b und c entsprechende Transaktionskontexte erzeugt und der Transaktionskontext
bezüglich
der Kennung a, der Transaktionskontext bezüglich der Kennung b und der
Transaktionskontext bezüglich
der Kennung c eingerichtet, den gemeinsamen Daten A, B bzw. C zu entsprechen.
Die Tatsache, dass die gemeinsamen Daten A und der Transaktionskontext
bezüglich
der Kennung einander entsprechen, bedeutet, dass die Kennung für den Transaktionskontext
gemäß dem Vorgang
von 3 zu der Kennung a gewechselt wird, wobei die
zu der Kennung a gehörende
Transaktion aktiviert wird und eine Aktualisierungsverarbeitung
bezüglich
der gemeinsamen Daten A in der Transaktion ausgeführt wird.
Eine exklusive Sperre bezüglich
der gemeinsamen Daten A, B und C ist in den zu den Kennungen a,
b and c gehörenden
Transaktionen sichergestellt.
-
Es
ist eine selektive Übergabeverarbeitung möglich, die
im Stand der Technik schwierig auszuführen ist, insbesondere die
Verarbeitung zum Übergeben
des Inhalts des Wechsels der gemeinsamen Daten A, des Abbruchs der
Aktualisierung des Inhalts der gemeinsamen Daten B und der Fortsetzung
der Aktualisierungsverarbeitung der gemeinsamen Daten C. Genauer
gesagt, es reicht aus, die Kennung bezüglich des Transaktionskontextes
zu der Kennung a zu wechseln, die Transaktion zu übergeben und
dann einen Wechsel zu Kennung b zu machen und dann abzubrechen.
Da individuelle Transaktionen nicht im Widerspruch zu dem vorstehend
beschriebenen Zweiphasensperrabkommen stehen, wird auch ein Kohärenzverlust
vermieden.
-
Sicherstellen von Kohärenz
-
Ein
Sicherstellen von Kohärenz
wird nun näher
beschrieben.
-
Ein
Transaktionskontext befindet sich in einem dem Prozess eigenen Zustand
und hat keinen Einfluss auf einen anderen Prozess. Das heißt, dass eine
Abfolge von durch einen anderen Prozess geführten Transaktionen ohne Bezug
zum Aufbau des Transaktionskontextes gleich ist. Aus diesem Grund sind
die Fälle,
in denen Probleme hinsichtlich der Kohärenz auftreten können, auf
die beschränkt,
bei denen eine Vielzahl an zu einem bestimmten Prozess gehörenden Transaktionen
einander überlappen. Eine
derartige Bedingung scheint offensichtlich im Widerspruch zu der
Transaktionsverarbeitungsvoraussetzung, insbesondere der Trennbarkeit
von Transaktionen von einander zu sein.
-
Tatsächlich wurde
das Zweiphasensperrsystem als Bedingung für die Ermöglichung der serienmäßigen Durchführung einer
Abfolge voneinander getrennter Transaktionen vorgeschlagen. Das
gilt jedoch nicht, wenn die Ausführung
einer Transaktion durch ein und denselben Prozess gesteuert ist.
Das Zweiphasensperrsystem beruht ursprünglich auf der Tatsache, dass
eine Willkür
bei der Transaktionsplanung, insbesondere der Reihenfolge parallel
operierender Transaktionen im Allgemeinen unvorhersehbar ist. Im
Gegensatz dazu kann die Verarbeitungsreihenfolge hinsichtlich einer
Vielzahl an in einer Verarbeitung aktivierter Transaktionen frei
bestimmt werden und es ist nicht erforderlich, die Möglichkeit
einer serienmäßigen Durchführung hinsichtlich
unbestimmter Planungen in Betracht zu ziehen. Anders gesagt, es
ist ausreichend, wenn die Möglichkeit
einer serienmäßigen Durchführung zwischen
Transaktionen sichergestellt ist, die in verschiedenen Prozessen
aktiviert wurden. Bei der vorliegenden Erfindung ist diese Bedingung
klar erfüllt.
-
Überarbeitung eines Sperrverwaltungsverfahrens
-
Es
ist erforderlich, dass die nachstehend dargestellte Überarbeitung
auf das Sperrverwaltungsverfahren in einem Datenbankverwaltungssystem angewendet
wird.
-
Bei
dem vorstehend beschriebenen Beispiel sind Transaktionskontexte
bereitgestellt, die jeweils drei Einheiten gemeinsamer Daten entsprechen.
Hinsichtlich des Erzeugens einer Anwendung ist es jedoch bequemer,
wenn es möglich
ist, sich auf unterschiedlichen Transaktionskontexten entsprechende gemeinsame
Daten zu beziehen, beispielsweise auf die gemeinsamen Daten B oder
C in dem zu der Kennung a gehörenden
Transaktionskontext. Das ist nichts anderes als ein Überlappen
einer Vielzahl an zu dem vorstehend beschriebenen Prozess gehörenden Transaktionen.
In diesem Fall wird es bei der Beziehung zu einer Transaktion außerhalb
der Verarbeitung ausreichen, wenn eine gemeinsame Sperre hinsichtlich
der gemeinsamen Daten B oder C in dem Transaktionskontext sichergestellt
ist, der zu der Kennung a gehört,
um die Möglichkeit
einer serienmäßigen Durchführung sicherzustellen.
Anders gesagt, eine exklusive Sperre und eine gemeinsame Sperre
koexistieren anscheinend bei einer Vielzahl an Transaktionen innerhalb
eines Prozesses.
-
Das
Sicherstellen, dass eine gemeinsame Sperre mit einer exklusiven
Sperre koexistiert, ist einem Fall ähnlich, bei dem ein normaler
gemeinsamer Zeitgeber sichergestellt ist, und es reicht aus, das auszuführen, bevor
auf die gemeinsamen Daten Bezug genommen wird. Das gleiche gilt
hinsichtlich des Sicherstellens einer exklusiven Sperre, die mit
einer gemeinsamen Sperre koexistiert. Bei einer Transaktion außerhalb
eines Prozesses ist ferner die Koexistenz einer exklusiven Sperre
und einer gemeinsamen Sperre bedeutungslos und es reicht aus, wenn
lediglich die exklusive Sperre bekannt ist. Es ist zufriedenstellend,
wenn die Existenz der gemeinsamen Sperre in dem Augenblick offensichtlich
wird, in dem die exklusive Sperre freigegeben ist. Das ist hinsichtlich
des Erreichens einer Übereinstimmung
mit herkömmlicher
Semantik ideal.
-
Andererseits
erlaubt die Erfindung, obwohl es möglich ist, eine Vielzahl an
Transaktionen in einer Verarbeitung zum gleichzeitigen Erwerben
einer exklusiven Sperre zu erlauben, dies im Grunde aus den nachstehend
angeführten
Gründen
nicht.
-
Zum
ersten ist von einer Transaktion außerhalb einer Verarbeitung
aus gesehen, die Existenz einer Vielzahl exklusiver Sperren eindeutig
unerwünscht.
Da jedoch eine Abfolge exklusiver Sperren äquivalent ist, ist es schwierig,
eine Übereinstimung mit
herkömmlicher
Semantik herzustellen. Die Überarbeitung
eines Datenbankverwaltungssystems ist außerdem im Vergleich mit einem
Fall bezüglich
einer gemeinsamen Sperre viel schwieriger. Darüber hinaus wird die Aufgabe,
selbst wenn diese Überarbeitung
nicht erlaubt ist, im Wesentlichen gelöst, wenn ein Schalten zu einem
anderen Transaktionskontext unter vorübergehender Verwendung des
in 3 gezeigten Vorgangs durchgeführt wird. Ein ausdrückliches
Feststellen des Schaltens in der Anwendung ist auch hinsichtlich
einer Verbesserung der Wartung von Vorteil.
-
Mit
Blick auf das Vorstehende wird eine innerhalb eines Prozesses erworbene
exklusive Sperre höchstens
zu einer hinsichtlich gemeinsamer Daten gemacht und ein Fall, bei
dem der Erwerb einer Vielzahl exklusiver Sperren angefordert ist,
führt zu einer
in Abnormalität
endenden Verarbeitung.
-
Zweites Ausführungsbeispiel
-
Eine
Informationsverarbeitungsvorrichtung gemäß einem zweiten Ausführungsbeispiel
der Erfindung wird nun beschrieben. Elemente in dem zweiten Ausführungsbeispiel, die
im Wesentlichen die gleichen wie die des ersten Ausführungsbeispiels
sind, werden mit gleichen Bezugszeichen bezeichnet und müssen nicht
noch einmal ausführlich
beschrieben werden.
-
Das
vorstehend beschriebene erste Ausführungsbeispiel ist auch auf
eine eine Mehr-Fenster-Umgebung verwendende Anwendung anwendbar.
-
Bei
dem vorstehend beschriebenen Beispiel sind beispielsweise drei Fenster
Wa, Wb und Wc bereitgestellt und ein zu Kennung a gehörender Transaktionskontext,
ein zu Kennung b gehörender
Transaktionskontext und ein zu Kennung c gehörender Transaktionskontext
werden eingerichtet, den Fenstern Wa, Wb bzw. Wc zu entsprechen.
Wenn jeder Transaktionskontext gewechselt wird, kann das Schalten
des Transaktionskontextes durch Auswählen des Fensters durchgeführt werden.
In dem Fall ergibt sich jedoch folgendes Problem:
-
Wenn
ein Erreichen eines Sperrens hinsichtlich gemeinsamer Daten in einer
Transaktion angefordert wird, tritt die Transaktion in einen Wartezustand
ein, wenn die Anforderung nicht sofort erfüllt wird. Bei einer interaktiven
Anwendung kann eine anwendungsspezifische Verarbeitung andererseits selbst
dann ausgeführt
werden, wenn die Transaktion in dem Wartezustand ist. Somit gibt
es, wenn ein Transaktionskontext verwendet wird, eine Möglichkeit,
dass der Transaktionskontext gewechselt wird, während die Transaktion in dem
Wartezustand ist.
-
Wenn
der Transaktionskontext gewechselt wurde, ist es erforderlich, zu
dem ursprünglichen Transaktionskontext
zurückzukehren,
um die Verarbeitung wiederaufzunehmen, sowie der Wartezustand gelöscht ist.
Das ist jedoch nicht immer einfach durchzuführen. Da das Löschen des
Wartezustands hinsichtlich der Anwendung asynchron auftritt, wird eine
Einrichtung (wie eine Software-Unterbrechung) zum
asynchronen Wiederaufnehmen der Verarbeitung in Betracht gezogen.
In vielen Programmiersprachen ist jedoch eine Beschreibung einer
asynchronen Verarbeitung viel schwieriger als eine Beschreibung
einer synchronen Verarbeitung und sie ist für Transaktionen nicht praktikabel,
bei denen Lesen/Schreiben hinsichtlich einer großen Anzahl an Elementen gemeinsamer
Daten durchgeführt
werden.
-
Sperren eines Schaltens
eines Transaktionskontextes
-
Das
Schalten eines Transaktionskontextes wird durch den in 5 gezeigten
Vorgang zum Lösen
des vorstehenden Problems gesperrt.
-
Die
Transaktionskontextverwaltungstabelle wird in Schritt S501 in 5 zum
Bestimmen, ob ein einer bestimmten Kennung entsprechender Transaktionskontext
existiert, durchsucht. Anschließend
werden die Ergebnisse der Suche in Schritt S502 beurteilt und die
Verarbeitung beendet, wenn kein der bestimmten Kennung entsprechender
Transaktionskontext gefunden wurde.
-
Wenn
ein dem bestimmten Kennung entsprechender Transaktionskontext in
Schritt S502 gefunden wurde, wird der Zustand des gefundenen Transaktionskontextes
in Schritt S503 untersucht, um zu bestimmen, ob der gefundene Transaktionskontext
gewechselt werden kann. Anschließend werden die Ergebnisse
der Suche in Schritt S504 beurteilt und die Verarbeitung beendet,
wenn das Schaltsperrung-Flag nicht gelöscht wurde.
-
Wenn
das Schaltsperrung-Flag gelöscht wurde,
wird jedoch das Schaltsperrung-Flag des einer bestimmten Kennung
entsprechenden Transaktionskontextes in Schritt S505 gesetzt und
die Verarbeitung beendet.
-
Der
vorstehend beschriebene Vorgang kann derart abgeändert werden, dass eine Bestimmung der
Kennung weggelassen werden darf und die vorstehende Verarbeitung
hinsichtlich des aktuellen Transaktionskontextes ausgeführt wird.
-
Löschen einer Sperrung eines
Transaktionskontextschaltens
-
6 zeigt
ein Ablaufdiagram eines Beispiels eines Vorgangs zum Löschen der
Sperrung eines Transaktionskontextschaltens.
-
Die
Transaktionskontextverwaltungstabelle wird in Schritt S601 in 6 zum
Bestimmen, ob ein einer bestimmten Kennung entsprechender Transaktionskontext
existiert, durchsucht. Anschließend
werden die Ergebnisse der Suche in Schritt S602 beurteilt und die
Verarbeitung beendet, wenn kein der bestimmten Kennung entsprechender
Transaktionskontext gefunden wurde.
-
Wenn
ein der bestimmten Kennung entsprechender Transaktionskontext in
Schritt S602 gefunden wurde, wird der Zustand des gefundenen Transaktionskontextes
in Schritt S603 untersucht, um zu bestimmen, ob der gefundene Transaktionskontext gewechselt
werden kann. Anschließend
werden die Ergebnisse der Suche in Schritt S604 beurteilt und die
Verarbeitung beendet, wenn das Schaltsperrung-Flag gelöscht wurde.
-
Wenn
das Schaltsperrung-Flag gesetzt wurde, wird das Schaltsperrung-Flag
des einer bestimmten Kennung entsprechenden Transaktionskontextes in
Schritt S605 gelöscht
und die Verarbeitung beendet.
-
Der
vorstehend beschriebene Vorgang kann derart abgeändert werden, dass eine Bestimmung der
Kennung weggelassen werden darf und die vorstehende Verarbeitung
hinsichtlich des aktuellen Transaktionskontextes ausgeführt wird.
-
Gemäß den vorstehend
beschriebenen Vorgängen
kann das Transaktionskontext-Schaltsperrung-Flag in den gesetzten
oder gelöschten
Zustand gewechselt werden. Andererseits wird gemäß der in 3 gezeigten
Transaktionskontext-Schaltsperrung-Einrichtung
der Zustand des Schaltsperrung-Flags in Schritt S301 untersucht.
Daher kann das Schalten eines Transaktionskontextes nach Belieben
gesperrt und die Sperrung gelöst
werden.
-
Drittes Ausführungsbeispiel
-
Eine
Informationsverarbeitungsvorrichtung gemäß einem dritten Ausführungsbeispiel
der Erfindung wird nun beschrieben. Elemente in dem dritten Ausführungsbeispiel,
die im Wesentlichen die gleichen wie im ersten Ausführungsbeispiel
sind, sind mit gleichen Bezugszeichen bezeichnet und müssen nicht
noch einmal ausführlich
beschrieben werden.
-
Es
gibt Gelegenheiten, bei denen eine Transaktion aufgrund eines Hardware-Fehlers
oder einer gegenseitigen Blockierung extern abgebrochen wird. Wenn
ein externer Abbruch asynchron auftritt und eine für eine Anwendung
spezifische Ausnahmeverarbeitung ausgeführt wird, ist die herkömmliche Vorgehensweise,
im Voraus einen Ausnahmen-Handhaber
zu einzustellen.
-
Andererseits
ist es, wenn ein Transaktionskontext in der Erfindung verwendet
wird, von größerem Vorteil
für diese
Ausnahmenverarbeitung, wenn sie in einem einer Transaktion entsprechenden Transaktionskontext
ausgeführt
wird. Der Grund dafür
ist, dass der Zweck einer Ausnahmenverarbeitung die Ausführung einer
anwendungsspezifische Nachbearbeitung als Reaktion auf ein unnormales Ende
einer Transaktion ist, und diese anwendungsspezifische Nachbearbeitung
ist klarerweise dem Transaktionskontext eigen.
-
Um
den vorstehend beschriebenen Anforderungen gerecht zu werden, wird
das Einstellen des Ausnahmen-Handhabers für jeden Transaktionskontext
dieses Ausführungsbeispiels
durchgeführt.
Das bedeutet, dass eine Einrichtung zum Einstellen "Handhabers aktiviert,
wenn eine Transaktion aus externen Gründen abgebrochen wird" im Inhalt bereitgestellt
wird, der durch den in dem ersten Ausführungsbeispiel beschriebenen
Transaktionskontext ausgedrückt
wird. Diese Einstelleinrichtung ist für die verwendete Programmiersprache
spezifisch.
-
7 zeigt
ein Ablaufdiagramm eines Beispiels eines Vorgangs zum Aktivieren
eines Handhabers bei einem externen Transaktionsabbruch.
-
Ein
der abgebrochenen Transaktion entsprechender Transaktionskontext
wird über
die Transaktionskontextverwaltungstabelle in Schritt S701 in 7 abgerufen.
Anschließend
werden der abgerufene Transaktionskontext und der aktuelle Transaktionskontext
in Schritt S702 verglichen. Das Ergebnis des Vergleichs wird in
Schritt S703 beurteilt und das Programm geht zu Schritt S706, wenn
die beiden identisch sind. Wenn die beiden verschieden sind, wird
der aktuelle Transaktionskontext in Schritt S704 durchsucht. Die
Ergebnisse der Suche werden in Schritt S705 beurteilt und das Programm
geht weiter zu Schritt S706, wenn ein Schalten möglich ist. Wenn kein Schalten
möglich
ist, wird eine Halten-Verarbeitung in Schritt S709 ausgeführt und
die Verarbeitung dann beendet.
-
Anschließend wird
in Schritt S706 überprüft, ob der
Handhaber gesetzt wurde oder nicht. Das Ergebnis wird in Schritt
S707 beurteilt und die Verarbeitung beendet, wenn der Handhaber
nicht gesetzt wurde. Wenn andererseits der Handhaber gesetzt wurde,
wird der gesetzte Handhaber in Schritt S708 aktiviert.
-
Die
Details von Schritt S708 werden nun beschrieben. Als erstes wird
der Transaktionskontext gemäß dem in 3 gezeigten
Vorgang gewechselt und ein Schalten des Transaktionskontextes gemäß dem in 5 gezeigten
Vorgang gesperrt. Der Handhaber wird dann aktiviert. Währenddessen
wird die in 6 gezeigte Einrichtung zum Löschen der
Sperrung des Transaktionskontextschaltens unwirksam gemacht. Schließlich wird
in dem Augenblick, in dem die Ausführung des Handhabers endet,
die Sperrung des Transaktionskontextschaltens durch den in 6 gezeigten
Vorgang gelöscht,
wobei der vor der Abbruchsverarbeitung vorherrschende Transaktionskontext
durch den in 2 gezeigten Vorgang wieder eingestellt
wird und die Verarbeitung wird dann beendet.
-
Die
Halten-Verarbeitung von Schritt S709 ist wie folgt: Wenn ein Schalten
eines Transaktionskontextes gesperrt wurde, wird statt der Aktivierung
eines Handhaber der gesetzte Handhaber in dem Augenblick aktiviert,
in dem die Sperrung des Schaltens des aktuellen Transaktionskontextes
gelöscht
wird, insbesondere in dem Augenblick, in dem das Datenbankverwaltungssystem
den Vorgang von 5 zum Löschen der Schaltsperrung ausführt. Das
ist eine Art Verzögerungsevaluationseinrichtung.
Wenn dementsprechend ein Abbruch einer Vielzahl an Transaktionen
aufgetreten ist, gibt es dementsprechend Beispiele, bei denen eine
Vielzahl an Handhabern aktiviert sind, wobei die Aktivierungsreihenfolge
der Handhaber mit der Reihenfolge der externen Abbrüche übereinstimmt.
-
Es
sei angemerkt, dass der in 7 dargestellte
Vorgang sich um den externen Abbruch einer Transaktion kümmert. Es
gibt jedoch auch Beispiele, bei denen eine Ausführung der Nachbearbeitung durch
ein und denselben Handhaber für
die Erzeugung einer Anwendung von größerem Vorteil ist. In einem
derartigen Fall, und als Beispiel wird ein einem internen Transaktionsabbruch
entsprechendes Handhaber-Aktivierungs-Flag zu einem Transaktionskontext
hinzugefügt
und eine Einrichtung zum Ändern
des Handhaber-Aktivierungs-Flag bereitgestellt, wobei eine Änderung
derart ausgeführt
werden kann, dass der Handhaber hinsichtlich eines internen Abbruchs
einer Transaktion aktiviert wird.
-
Weitere Ausführungsbeispiele
-
Die
vorliegende Erfindung kann bei einem aus einer Vielzahl von Einrichtungen
(beispielsweise einem Hostcomputer, einer Schnittstelle, einer Leseeinrichtung,
einem Drucker, usw.) bestehenden System oder bei einer eine einzige
Einrichtung (beispielsweise einen Kopierer oder ein Faxgerät, usw.) umfassenden
Vorrichtung angewendet werden.
-
Es
ist selbstverständlich,
dass die Aufgabe der Erfindung auch durch das Bereitstellen eines Speicherträgers zum
Speichern von Programmcodes zum Durchführen der vorstehenden Funktionen
der vorstehenden Ausführungsbeispiele
auf einem System oder einer Vorrichtung, zum Lesen der Programmcodes
von dem Speicherträger
mit einem Computer (beispielsweise einer CPU oder MPI) des Systems
oder der Vorrichtung und zum anschließende Ausführen des Programms erreicht
werden kann. In diesem Fall implementieren die von dem Speicherträger gelesenen
Programmcodes die Funktionen gemäß den Ausführungsbeispielen
und der die Programmcodes speichernde Speicherträger stellt die Erfindung dar.
Der Speicherträger
wie eine Floppy-Diskette, eine Festplatte, eine optische Platte, eine
magnetooptische Platte, eine CD-ROM, eine CD-R, ein Magnetband,
eine Speicherkarte der nichtflüchtigen
Art oder ein ROM kann ferner zum Bereitstellen der Programmcodes
verwendet werden.
-
Neben
dem Fall, dass die vorstehenden Funktionen gemäß den Ausführungsbeispielen durch das
Ausführen
der durch einen Computer gelesenen Programmcodes implementiert sind,
ist es selbstverständlich,
dass die Erfindung auch einen Fall abdeckt, bei dem ein auf dem
Computer laufendes Betriebssystem (OS) oder dergleichen einen Teil
des oder den gesamten Prozess gemäß den Bestimmungen von Programmcodes
durchführt
und die Funktionen gemäß dem Ausführungsbeispiel
ausführt.
-
Es
ist selbstverständlich,
dass die vorliegende Erfindung ferner einen Fall abdeckt, bei dem, nachdem
die von dem Speicherträger
gelesenen Programmcodes auf ein in den Computer gestecktes Funktionserweiterungsboard
oder einen in einer mit dem Computer verbundene Funktionserweiterungseinheit
bereitgestellten Speicher geschrieben wurden, eine in dem Funktionserweiterungsboard
oder der Funktionserweiterungseinheit enthaltene CPU oder dergleichen
einen Teil des oder den gesamten Prozess gemäß den Bestimmungen der Programmcodes
durchführt
und die Funktionen der vorstehenden Ausführungsbeispiele implementiert.
-
In
einem Fall, bei dem die vorliegende Erfindung bei demvorstehend
genannten Speicherträger angewendet
ist, werden dem vorstehend beschriebenen Ablaufdiagramm entsprechende
Programmcodes auf diesem Speicherträger gespeichert. Genauer gesagt,
es werden in dem Beispiel des Speicherabbilds von 9 dargestellte
Module auf dem Speicherträger
gespeichert.
-
Es
reicht insbesondere aus, Programmcodes zumindest der Module "Identifikationsinformationenverwaltung" und "Identifikationsinformationenbearbeitung" auf dem Speicherträger zu speichern. Es
ist außerdem
bevorzugt, dass Programmcodes der Module "Identifikationsinformationenschaltsteuerung", "Handhaberaktivierung" und "gemeinsame exklusive
Steuerung" auf dem
Speicherträger
gespeichert werden.
-
Da
viele, scheinbar sehr unterschiedliche Ausführungsbeispiele der vorliegenden
Erfindung ausgeführt
werden können,
ohne deren Schutzbereich zu verlassen, ist klar, dass die Erfindung
nicht auf diese spezifischen Ausführungsbeispiele beschränkt ist,
sondern nur auf das in den beliegenden Patentansprüchen definierte.