JPH0296849A - Tpキューイングシステムにおける正確に1回のセマンティクス - Google Patents

Tpキューイングシステムにおける正確に1回のセマンティクス

Info

Publication number
JPH0296849A
JPH0296849A JP1184396A JP18439689A JPH0296849A JP H0296849 A JPH0296849 A JP H0296849A JP 1184396 A JP1184396 A JP 1184396A JP 18439689 A JP18439689 A JP 18439689A JP H0296849 A JPH0296849 A JP H0296849A
Authority
JP
Japan
Prior art keywords
task
database
application
transaction
queue
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP1184396A
Other languages
English (en)
Inventor
Robert W Griffin
ロバート ダブリュー グリフィン
James P Emmond
ジェイムズ ピー エモンド
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.)
Digital Equipment Corp
Original Assignee
Digital Equipment Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Equipment Corp filed Critical Digital Equipment Corp
Publication of JPH0296849A publication Critical patent/JPH0296849A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1474Saving, restoring, recovering or retrying in transactions

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 (産業上の利用分野) 本発明は一般に高信鯨の分散演算に関し、さらに詳しく
はトランザクション処理(TP)に関する。特に本発明
は、トランザクションの処理中に部分的なシステム故障
が起きた場合でも、所望のトランザクションが全体とし
て正確に1回生じるかあるいは全く生じないことを保証
する方法に関する。
(従来の技術) 計算システムの望ましい特徴は、部分的なシステム故障
からできる能力にある。部分的なシステム故障は、例え
ば、オペレーティングシステムにおけるまれなソフトウ
ェアのエラーによってシステムが“クラッシュ”しする
と発生し、オペレーティングシステムはその後再スター
ト可能である。
アプリケーションプログラムがシステム故障時にメモリ
書込動作を進行中であると、メモリレコードが誤ったも
のになる恐れが強い。部分的なシステム故障後にメモリ
レコードの回復を可能とするには、アプリケーションプ
ログラムがレコードのバックアップコピーを非揮発性メ
モリ内に保持する必要がある。オペレーティングシステ
ムが再スタートされるとき、回復すべきメモリレコード
はバックアップコピーと交換される。そしてアプリケー
ションプログラムが再スタートされ、バックアップコピ
ーが取られた後に行われた生じた動作を繰り返さねばな
らない。
バックアップコピーの作成とメモリレコードの回復を容
易とするため、オペレーティングシステムは一般に、ア
プリケーションプログラムから呼出つまりコール可能な
確立された一組のメモリ管理手段を用意している。代表
的な例は、VAX/VMSオペレーティングシステムと
組み合わせて使われる。米国マサチューセッツ州017
54、メイナード所在のデジタル・エクイソブメント社
から市販されているレコード管理サービス(RMS)ソ
フトウェアの“回復ユニットジャーナル(動作記憶)”
機能である。メモリレコードの回復のために、アプリケ
ーションプログラムの最初の部分は、プログラムステー
トメント“$SET FILE [FILENAME]
 / RljJO[IRNAL” ニよ、)7コールさ
れるRMS手順を呼び出すことによって非揮発性メモリ
をバックアップコピーに割り振る。但し、FILENA
MEは回復すべきメモリレコードを含むファイルの名前
である。実際にバックアップコピーを取り、“回復ユニ
ット”を開始させるには、アプリケーションではダラム
がステートメント“$5TART RU”によってコー
ルされるRMS手順を呼び出す。
“回復ユニット′の実行中に部分的システム故障が発生
したら、メモリレコードはバンクアップコピーから回復
される。
“回復ユニット”は、” $5TART R11’ ス
テー ) メント“$CO?l旧T RU”ステートメ
ント間の一組のプログラムステートメントからなる。“
回復ユニット“内のステートメントは全て、回復ユニッ
トのステートメントによって変更されたメモリレコード
が続く処理で利用可能となる前に完了されねばならない
。言い換えれば、“回復ユニット”内のステートメント
は1つの1トランザクシヨン”における動作を指定する
。“トランザクション”における動作は全て同時に完了
されるか、あるいはそのいずれもが完了されない。
トランザクションにおける動作は、分散計算システム内
の複数のプロセッサまたはノードによってアクセス可能
な、異なるデータベース中の複数のファイルを変更する
ことがある。この場合、1つのプロセッサまたはノード
が各−組のファイルを変更するトランザクションを行っ
ていると、他のいずれのプロセッサもその一組のファイ
ルを変更し得ない。このため、アプリケーションプログ
ラムは、ファイル内に記憶されたデータの内部一貫性を
保証できる。例えば第1勘定の借方記入と第2勘定の貸
方記入を含む資金の移し換えなど、−群の関連した動作
を回復ユニットとして定義することによって、プログラ
マ−は、更新レコードがその後利用可能となる前に、ト
ランザクションにおける全ての動作が完了することを保
証できる。
部分的なシステム故障またはその他アプリケーションプ
ログラムの異常な終了(システムの゛すセット”など)
が発止すると、回復可能として定義されたファイルは最
新の完了回復ユニ7トにだけ回復つまり更新され、ファ
イル内のデータは一貫される。例えば、資金アプリケー
ションの移し換えでは、システムの故障が第2勘定を貸
方記入しないで、第1勘定を借方記入するような事態を
生じない。
−C的な“トランザクション処理1システムにおいて、
トランザクションによって操作される“オブジェクト”
の状態はいずれも、永久メモリ内に記憶されるものと見
なされる。例えば、多重プロセッサシステムにおける交
信の一般的な方法は、オブジェクトの状態を保持する共
通の永久メモリへの共用アクセスによっている。いずれ
か1つのプロセッサの1クラツシヱ”後にシステムの状
態を復元させるために、回復ユニットジャーナル用のメ
モリ管理手順は、周知の“状態復元方法”を実施する。
状態復元方法では、  5TART (スタート)″動
作によって、それぞれのトランザクションで操作される
全てのオブジェクトに関する永久メモリレコードに、“
書込ロック”がかけられる。次いで’ 5TART”動
作は、オブジェクトの状態を保持すべき永久メモリレコ
ードにオブジェクトの状態を退避させ、回復ユニットの
実行中コピーが変更されないようにレコードがコピーさ
れる。その後、回復ユニットによって定義されたトラン
ザクションが、変更されないように保たれたコピーに対
して行われる。トランザクションが終了すると、CO?
1MIT (コミット)″が、回復ユニットによって操
作された全てのオブジェクト永久メモリ内の状態を、ト
ランザクション中になされた変更に従って1回の“アト
ミック”動作で更新させる。最後に、更新された永久メ
モリレコードに対する書込ロックが解かれる。
状態復元方法の実施は、唯一困難なステップ、つまり回
復ユニットによって操作された全てのオブジェクトの永
久メモリ状態を更新する“アトミックステップを含んで
いることが明かであろう。
ここで“アトミック”ステップとは、部分的なシステム
故障またはアプリケーションプログラムの異常な終了に
関わりなく、全体として行われるかあるいは全く行われ
ないかというステップとして定義される。このような“
アトミック”は特別に設計されたメモリ装置によって直
接実施可能だが、トランザクション中に操作された各オ
ブジェクト毎に2つの永久メモリレコードを割り振ると
共に、どの永久メモリレコードがオブジェクトの永久状
態を保持しているのかを示すフラグまたはスイッチとし
て追加の永久メモリロケーションを割り振ることによっ
ても、間接的に実施できる:他方の永久メモリレコード
は、オブジェクトの揮発状態が永久メモリへ書き込まれ
る都度使われる。従って、回復ユニットによって操作さ
れた全てのオブジェクトの永久メモリ状態の更新は、ト
ランザクションによって変更されたオブジェクトの永久
メモリレコードに関するフラグまたはスイッチを変える
1つのマシン命令の実行による111i211のアトミ
ックステップで行うことができる。
上記の実施において、“部分的システム故障″は、1つ
のマシン命令が全体として完了されるかあるいは全く完
了されないことを保証する任意の故障である。“5TA
RT”動作が各プロセッサについて定義されたそれぞれ
の永久メモリファイルを他のプロセッサによるアクセス
に対して書込ロックすると共に、永久メモリへの書込毎
に使われるフラグ付き永久メモリへのコピーに対してい
ずれの書込動作も行われるようにすることによって、そ
れぞれのファイルを退避させる。“COMMIT”動作
が各ファイル用フラグを切り換え、最終の書込ロックを
取り除く。
(発明が解決しようとする課題) 前記したように、状態復元方法は、クラッシュが全ての
更新をあるいずれかのノードで行えなくするような場合
でも、あるいずれかのプロセッサによってなされる更新
が一貫することを保証する。
もっと困難な問題は、クラッシュ後に、システムの状態
が自動的に復元可能とし、クラッシュによって中断され
たトランザクションが正確に1回完了されることが保証
された完了まで、処理をN1続できるようにすることで
ある。一部のトランザクションでは、少なくとも1回の
セマンティクス(意味:  semantics)が許
容可能である。例えば、新聞購入者の郵送住所に更新す
るトランザクションは、1回より多〈実施されても何等
の悪影響も伴わない。しかし他のトランザクションでは
、正確に1回のセマンティクスが重要である。例えば財
務会計システムにおいて、一方の勘定を借方記入し他方
の勘定を貸方記入するトランザクションは、実世界での
各合計トランザクション(取引)毎に、正確に1回行わ
れねばならない。
正確に1回のセマンティクスは、“2相コミフトプロト
コル”及びその派生体等の手順を用いて保証されてきた
。これらの手順は、J、 Eliotと8、 ?1os
s著、ネスト式トランザクションー信頼できる分散計算
への手法、The MIT Press、米国マサチュ
ーセッツ州ケンブリッジ、1985に記載されている。
“2相コミツトプロトコル”は、ファイルの更新がシス
テム内の異なる多数のプロセッサによって行われる場合
でも、正確に1回のセマンティクスでの回復を可能とす
る。一般にこのようなシステムでは、任意のあるプロセ
ッサによるトランザクションのために実施またはアクル
ジ(確認応答)されるべき各動作がトランザクション識
別番号の送受によって信号発生でき、またオブジェクト
の状態に対する変更がオブジェクト識別番号と共に交信
できるように、各トランザクションに固有の“トランザ
クシコン識別番号(ID)”が割り当てられ、また各オ
ブジェクトに固有の“オブジェクト識別番号”が割り当
てられる。
システム内の1つのプロセッサに、トランザクションを
開始するコープイネ−夕の役割が割り当てられる。トラ
ンザクションを開始するには、コーデイネータがそのト
ランザクションに参加している全てのプロセッサに準備
コマンドを送る。
トランザクションに参加している各プロセッサは“準備
”コマンドを受は取ると、前記の5TART”動作を行
い、トランザクションIDを永久メモリに書き込んで、
トランザクションの用意が整っていることを知られた後
、アクルジをコーデイネータプロセッサに送り戻すが、
そのトランザクション部分はまだ実施していない。コー
デイネータは、全ての参加者からのアクルジを待つ。全
ての参加者からのアクルジを受は取ると、コーデイネー
タは参加者のリストとトランザクションが今完了されつ
つある旨のメモを永久メモリに記録する。
その後コーデイネータは、C0MMH”コマンドを全て
の参加者に送る。” COM旧T″コマンドを受は取っ
た各参加者は、その永久メモリでトランザクションlD
をチエツクしてトランザクションのための用意が整って
いるかどうかを判定し、整っていればそのトランザクシ
ョン部分を実施した後、前述の“COM旧T゛動作を行
い(この処理で、永久メモリが更新されたときトランザ
クションrDを永久メモリからクリアする)、最後にア
クルジをコーデイネータに送り戻す:永久メモリでトラ
ンザクションIDが見つからなかったら、参加者はアク
ルジだけをコーデイネータに送り戻す。
コーデイネータは全ての参加者からアクルジを受は取る
と、参加者のリスト永久メモリから消去し、トランザク
ションが終了する。
トランザクション中にクラッシュが発生したら、コーデ
イネータはその参加者リストを使い、トランザクション
の完了について、完了していたかまたは終っていなかっ
たかを確かめられる。“COMMIT″コマンドが、リ
ストに含まれている各参加者に再送信される。クラッシ
ュのためトランザクションの一部を完了していなかった
いずれの参加者(トランザクションIDの準備レコード
を有する永久メモリによって指示される)も、その一部
を最初からやり直して完了する。上記トランザクション
の一部をすでに完了し終っている参加者(トランザクシ
ョンrDの準備レコードを持たない永久メモリによって
指示される)は、いずれもそのトランザクションの一部
を繰り返さない。従って2相コミントプロトコルは、回
復の終了時点で、中断されたトランザクションの全ての
部分が正確に1回実施されることを保証する。
(課題を解決するための手段) トランザクション処理システムにおける正確に1回のセ
マンティクスは、データベーストランザクジョンに対す
る要求を“タスクキュー内にキュー入れし、タスクキュ
ー内に入れられた各要求つまり“タスク”に固をの識別
番号(TASKjD)を割り当てることによって当えら
れる。識別番号は、要求されたデータベーストランザク
ジョンの実行中使われる。特に、識別番号は、要求され
たトランザクションの実行の結果更新がなされると、そ
れと同時に(すなわち同じ“回復ユニット”中に)デー
タベースに書き込まれる。
部分的なシステム故障つまり“クラッシュ”の発生時、
更新が正確に1回行われることを保証するため、データ
ベースが読み取られて、更新がなされた前に存在してい
た全ての識別番号を得る。
データベースのうち識別番号に割り当てられた部分が最
初にフォーマント化つまりクリアされるものとすれば、
データベースから読み取られた番号は、タスクがすでに
完了された場合にのみタスクの識別番号と合致する。そ
のため、要求されたトランザクションの現実行は、2回
目の更新を行うことなく終了される。
正確に1回のセマンティクスを保証するこの方法は、タ
スクキューと組み合わされて、簡潔な回復機構を提供す
る。タスクキューに入れられた各タスクの完了後、タス
クはキューから取り出される。タスクキューの処理中に
部分的なシステム故障が生じた場合、その処理はキュー
の先頭のタスクを処理することによって、通常の方法で
再スタートし得る。タスクの完了直後であるが、タスク
がタスクキューから取り出される前に部分的なシステム
故障が生じた場合には、そのタスクの番号が部分的なシ
ステムの故障直前にデータベースに書き込まれた識別番
号と合致することを見いだされると、同一タスクの再処
理は放棄される。
発明のその他の目的及び利点は、以下の詳細な説明と添
付の図面を参照することによって明らかとなろう。
(実施例) 発明は各種の変形及び代替の態様を取り得るが、その特
定の実施例を例示として図面に示し、以下詳しく説明す
る。しかしもちろん、発明はここに開示する特定の態様
に限られず、逆に発明は特許請求の範囲に限定される発
明の精神及び範囲内に入る全ての変更、同等及び代替物
を包含するものである。
第1図を参照すると、全体が10で表わされ、本発明の
各種特徴を具備したトランザクション処理システムのブ
ロック図が示しである。前記したようにトランザクショ
ンは、単位として実行されるかあるいは全く実行されな
い一連のオペレーションである。データ処理のオペレー
ションを個々のトランザクションへ細分することで、シ
ステムによって管理されるオペレーション及びデータが
一貫した状態に保たれる。また、データ処理のオペレー
ションが個々の単位に細分されるため、トランザクショ
ンを定義するプログラミングを変えずに、システムの構
成を拡張または変更可能である。
一般にトランザクション処理は、システムが中から多数
のユーザを同時にサポートしなければならなかったり、
データ処理のオペレーションが同−組のデータファイル
またはデータベースを用いるトランザクションに細分さ
れていたり、さらにデータ処理のオペレーションが予め
定義された構造化作業を含む場合に、時分割またはバッ
チ処理などの択一方式よりも好ましい。トランザクショ
ン処理は、例えばインベントリ (在庫)システム、予
約システム、及びその他のデータベース管理システムに
おいて有用である。
ユーザは一般に、端末に表示された書式に情報を入力す
ることによって、トランザクション処理システムでのト
ランザクションを開始する。この目的のため、第1図の
システム10は5つの画像表示端末11〜15を含んで
いる。システム10が情報を処理して、アプリケーショ
ンデータベース16内の1つ以上のファイルと対話する
トランザクション処理システムの性能は、データベース
及び演算機能と別個に、端末及びメニュー機能を実行す
ることによって向上可能である。
例えば第1図に示すように、システム10はアプリケー
ションデータベース及び演算プロセス18と別個に、端
末及びメニュープロセス17を有する。端末及びメニュ
ー機能を制御するプロセス17がトランザクション処理
システムの1フロントエンド”と称され、データベース
及び演算プロセス18が同じシステムの“バンクエンド
”と称される。
端末及びメニュープロセス17とアプリケーションデー
タベース及び演算プロセス18は、別個のデータプロセ
ッサによって実施することもできるし、あるいは多重処
理環境をサポートするオペレーティングシステムを備え
た単一のデータプロセッサによって実施することもでき
る。単一プロセッサを用いたシステム10は°単一ノー
ド”システムと称され、1つより多いデータプロセッサ
を有するシステムは“多重ノード1システムまたはネッ
トワークと称される。多重ノードシステムでは、端末及
びメニュープロセス17を1つのコンピュータまたは一
組のコンピュータにインストールし、アプリケーション
データベース及び演算プロセス18を別の1つのコンピ
ュータまたは別の一組のコンピュータにインストールす
ることによって、システムの性能及び資源共用が改善さ
れる。
システム10の性能をさらに向上させるため、端末及び
メニュープロセス17によって与えられるデータは、“
タスクキュー°19を介してアプリケーションデータベ
ース及び演算プロセス18に伝送される。システム性能
は特に、データの検索とデータの据置処置、高いアプリ
ケーションの利用性及びトランザクションの持続性を必
要とするトランザクシジン処理のアプリケーションにお
いて改善される。このようなアプリケーションの例は、
勤務交替時間だけの非常に短い時間中にシステムに入力
されるタイムカードデータの処理である。このようなア
プリケーションでは、各データ項目の処理がシステムの
全体性能に即座に悪影響を及ぼすことがあるので、以後
の処理のためデータを検索してからそれをタスクキュー
19内に記憶できることが有用である。この種の処理は
、データの検索とデータの処理が同期されていないため
、5弁開期処理”としても知られている。
タスクキュー19は、端末及びメニュープロセス17が
アプリケーションデータベース及び演算プロセス16を
実施する1つ以上のプロセッサと別個な少なくとも1つ
のプロセッサによって実施される場合に、システムの利
用性を高める。つまりこのような分散環境では、1つ以
上のバックエンドプロセッサが故障しても、1つ以上の
フロントエンドプロセッサはタスクキュー19にタスク
を提出することによって処理を続けられる。
以下詳しく説明するように、タスクキュー19は、部分
的なシステム故障またはその他の異常な終了がトランザ
クションの処理を中断した後トランザクションの完了を
可能とするキューイング機構と組み合わせて使用可能で
ある。例えば、第1図に示したシステム10は、タスク
の完了まで、中断されたタスクを再び開始させる待機タ
スク開始プログラム20を有する。タスクが完了すると
、そのタスクはタスクキュー19から取り出される。
タスクの完了は、そのタスクに関連したアプリケーショ
ンが首尾よ〈実施されたことが必ずしも意味しない。ア
プリケーションデータベース及び演算プロセス18が処
理すべきデータ中におけるエラーの存在や、アプリケー
ションの実施を妨げるシステム10内の故障を検出する
かもしれないからである。いずれの場合にも、待機タス
ク開始プログラム20はタスクキュー19からタスクを
取り出す前に、そのタスクのエラーコードをエラーキュ
ー21内に入れる。またアプリケーションによっては、
それぞれのアプリケーションが正常に完了しなかった場
合、エラーデータの補正かあるいはシステム10の補修
後にタスクが完了されるのを可能とするため、待機タス
ク開始プログラム20がタスクデータの一部または全て
をタスクキュー19からエラーキュー21へ移すのが望
ましいこともある。エラーキュー21内に入れられたエ
ラーコードは、例えばシステムオペレータ(図示せず)
によって定期的に調べられ、適切な補正措置が取られる
本発明の重要な特徴によれば、アプリケーションデータ
ベース及び演算プロセス18が正確に1回のセマンティ
クスインタフェース22を介してアプリケーションデー
タベース16を更新し、該インタフェース22によって
システム10は、中断された1つ以上のタスクが正確に
1回行われる方法で部分的なシステム故障またはその他
アプリケーションの異常な終了から自動的に回復可能で
ある。正確に1回のセマンティクスインタフェース22
が存在しないと、システム10は中断されたタスクによ
って、アプリケーションデータベースI6を2回更新し
てしまう可能性がある。例えば、待機タスク開始プログ
ラム20がアプリケーションデータベース及び演算プロ
セス18にタスクを送ることになっていて、要求された
トランザクションの完了後だが、待機タスク開始プログ
ラム20がタスクキュー19からタスクを取り出す前に
、部分的なシステム故障またはアプリケーションの異常
な終了が生じたとすると、自動回復中に待機タスク開始
プログラム20が中断されたタスクを再び開始したとき
、アプリケーションデータベースが2回更新される可能
性がある。
正確に1回のセマンティクスインタフェース22は、部
分的なシステム故障またはその他アプリケーションプロ
セスの異常な終了後に動作して、中断されたアプリケー
ションの再開始がアプリケーションデータベース16の
二重更新を試みようとしていることを検出する手段を含
んでいる。そのようなアプリケーションプロセスの再開
始を検出すると、正確に1回のセマンティクスインタフ
ェース22はアプリケーションデータベース16のいか
なる二重更新も防ぎ、完了メツセージを待機タスク開始
プログラム20に戻す。完了信号を受は取ると、待機タ
スク開始プログラム20はそのタスクをタスクキューか
ら取り出す。
以下詳しく説明するように、正確に1回のセマンティク
スインタフェース22は、待機タスク開始プログラム2
0によって開始された各タスクに対応する固有のタスク
識別番号を、その前にアプリケーションデータベース1
6内に記憶された1つ以上のタスク識別番号のレコード
と比較することによって、アプリケーションデータベー
ス16の二重更新が試みられているのを検出するのが好
ましい。但し、最初の状態で認識可能なタスク識別番号
がアプリケーションデータベース内に記録されていない
ように、アプリケーションデータベースは最初にフォー
マント化されるものとする。
インタフェース22は、実施されるタスクのタスク識別
番号とその前に記録されたタスク識別番号との合致を見
い出す毎に、アプリケーションデータベース16の二重
更新が試みられようとしていると判定し、二重更新の発
生を防止する。
次に第2図を参照すると、タスクキュー(第1図の19
)内に記憶されるタスクデータベースのレコード用の好
ましいフォーマットが示しである。
端末及びメニュープロセス17がアプリケーションデー
タベース及び演算プロセス(第1図の18)によって実
施されるべきトランザクションのためのデータを収集す
るとその都度、端末及びメニュープロセス17は、タス
クキュー19内に入れられるべき要求トランザクション
つまりタスクについてTASK 10 “ (タスク識
別番号(rD)を生成する。正確に1回のセマンティク
スインタフェース(第1図の22)が二重更新の試みを
検出可能とするため、TASK−10は時間と空間にわ
たって固有である。すなわち、端末及びメニュープロセ
ス17によって異なる時点に発生される2つのタスクは
いずれも必然的にそれぞれ異なるタスク識別番号を有し
、また(例えば多重プロセッサシステムの異なるプロセ
ッサで生成される結果)異なるプロセスが全く同一時点
にそれぞれのタスクを生成したとしても、タスク識別番
号は異なるものとされる。第2図に示したように、タス
ク識別番号の時間と空間にわたる一意性は、システム内
のクロックから信号発生されたタスク生成の時刻31と
、タスクを生成したプロセッサつまりノードの識別番号
32との連結からタスク識別番号を形成することによっ
て保証される。
各タスク毎にタスクキュー内に記憶されるタスクデータ
は、タスクによって要求されている各アプリケーション
プロセスの名前33をさらに含む。
かかる名前がアプリケーションデータベース及び演算プ
ロセス18によって認識されると、予め記憶されたルー
チンまたはアプリケーションプログラムが実行され、タ
スクによって要求されているトランザクションを行う。
各タスク毎にタスクキュー19内に記憶されるタスクデ
ータはさらに、タスクによって要求されているトランザ
クションの実施のため、端末及びメニュープロセス17
によって収集されたタスクデータ34を含むこともでき
る。アプリケーションデータベース及び演算プロセス1
8がタスクによって要求されているトランザクションを
実施するとき、場合によって端末及びメニュープロセス
17によって収集された各タスクデータが、アプリケー
ションデータベース16から読み取られたその他の入力
データと組み合わせられ入力データとして使われる。
端末及びメニュープロセス17に影響を及ぼす部分的な
システム故障にもかかわらず、タスクキュー19は第2
図のフォーマントのタスクデータを受は取ると見なされ
る。すなわち、タスクキュー19は永久メモリ内にファ
イルとして編成され、任意の与えられたタスクに関する
全てのタスクデータを1回の“アトミック”動作でタス
クキュー内へと書込可能としていると見なされる。この
点は例えば、米国マサチューセッツ州01754、マナ
ード所在のデジタル・エクイフブメント社から市販され
ているRMS (レコード管理サービス)システムなど
、任意の数の通常のデータベース管理プログラムからな
る“回復ユニットジャーナル”機能を用いることによっ
て行える。この場合、タスクデータをデータキュー19
内に書き込むためのプログラム命令は、1つの“回復ユ
ニット“内に含まれている。但し、通常のプログラミン
グ技術を有するものであれば第5〜9図に関する以下の
説明から、タスクキュー19をどのように編成すれば、
第2図のタスクデータを1回の“アトミック”動作でタ
スクキュー内に入れられるか理解できるであろう。
ユーザが端末11〜15のいずれか1つでデータを入力
している間に部分的なシステム故障が生じると、その故
障は、タスクに関するデータを再人力することをユーザ
に要求することが多い。あるいは、各端末で現在入力さ
れているタスクに関するデータをそれぞれのキューに記
憶しておき、部分的なシステム故障が生じたらキュー内
のデータをキュー出しし、ユーザが中断地点からデータ
の入力を続けるようにするごともできる。一般に、シス
テム10との対話的なデータ入力が可能である限り、揮
発性メモリ内に入れられたが、非揮発性つまり永久メモ
リ内にはまだ入れられていないいずれかのデータまたは
ユーザコマンドが部分的なシステム故障によって破壊さ
れているかもしれないため、部分的なシステム故障がシ
ステムに人力されていた一部のデータを破壊したかある
いは破壊しなかったかという問題が必ず生じる。しかし
以下さらに説明するように、処理すべきデータがタスク
キュー19などの永久メモリ内に入れられている限り、
システムは部分的なシステム故障またはその他アプリケ
ーションプログラムの異常な終了から自動的に回復する
ように設計可能である。
タスクキュー(第1図の19)は、シングルキー式索引
ファイルとして構成されるのが好ましい。
ファイルのキーは、タスクが生成されたときのシステム
のクロック時刻に予め割り当てられた優先順位番号を連
結して形成され、キーの数値順序が、タスクがキュー内
に入れられ且つ開始されるべき順序と対応するようにな
すのが好ましい。その後、タスクのキュー入れ、タスク
のキュー出し、及び次タスク用データの読取の各動作は
、前記RMSソフトウェアによって与えられる機構など
、キー索引ファイルを管理するための通常の機構によっ
て実施できる。
次に第3図を参照すると、待機タスク開始プログラム(
第1図の20)によって実施される手順のフローチャー
トが、全体を40で示しである。
最初のステップ41では、待機タスク開始プログラムが
タスクキュー19を読み、キュー内の次タスクに関する
データを得る。(単一のアプリケーションプロセッサを
有するシステムでは、データがキューの先頭に現れる)
。ステップ42では、タスクキューが空かどうかテスト
される。空の場合はステップ43で、待機タスク開始プ
ログラムがある一定の時間遅延され、待機タスク開始プ
ログラムが再びタスクキューを読む前に、端末及びメニ
ュープロセス(第1図の17)によってタスクキューが
満たされるのを可能とする。
タスクデータがキューから得られたら、待機タスク開始
プログラムがステップ44を実施し、タスクデータ内の
名前(第2図の33)のアプリケーションプロセスを呼
び出し、タスク識別番号とその他のタスクデータ(第2
図の34)をアプリケーションプロセスに渡す。ステッ
プ45で待機タスク開始プログラムは、アプリケーショ
ンプロセスが完了しているかどうかをチエツクする。完
了していないと、待機タスク開始プログラムはステップ
46で、アプリケーションプロセッサが利用可能かどう
かをチエツクする。アプリケーションプロセッサが利用
可能でないと、ステップ45が再び行われる。利用可能
なら、タスクキュー内の次タスクのデータをステップ4
Iで読み取ることができる。 (単一プロセソサシステ
ムでは、現プロセスが終るまで唯一のアプリケーション
プロセッサが利用可能とならないので、ステップ46は
単一プロセッサシステムで行う必要がない)。
呼び出されたアプリケーションプロセスが完了したら、
待機タスク開始プログラム20はステップ47で、プロ
セスが首尾よ(完了したかどうかを判定する。してない
と、首尾よく完了しなかったことを示すエラー状態コー
ドとタスク識別番号が、ステップ48でエラーキュー2
1内に入れられる。
最後にステップ49で、完了したタスクがキューから取
り出され、タスク開始サイクルがステップ46から再び
繰り返される。
単一のコンピュータまたばプロセッサがアプリケーショ
ンデータベース及び演算プロセス(第1図の18)の全
てを行うようなシステム1.0では、ステップ44にお
いて、呼び出されたアプリケージクンプロセスが完了す
るまでその呼び出されたアプリケーションプロセスに実
行権を渡すサブルーチンコールを行うだけでよい。多数
のコンピュータまたはプロセッサが異なるアプリケーシ
ョンプロセスを同時に実施するような多重プロセッサシ
ステムでは、同時に発生するアプリケーションプロセス
間で衝突が生じないことを、システムが保証する必要が
ある。
“デッドロック′として知られる潜在的な衝突は、例え
ば、一対のプロセッサの各プロセッサが現在他方のプロ
セッサによって使われている資源を必要とするときに生
じ得る。この場合、デッドロックが解消されてから、ど
ちらのプロセッサもそれぞれの割当アプリケージタンを
完了できなければならない。潜在的な衝突の他の原因は
、2つの同時に実施されているアプリケージタンの正味
の結果が、一方のアプリケーションの特定ステップが他
方のアプリケーションの特定ステップの前または後に行
われることに依存している場合に生じる。ごのような場
合、システムは、タスクキュー19にタスクが現れる順
序にだけ応じた一貫した結果を与えることが望ましい。
これらの衝突を処理する方法は数多く存在するが、特に
簡単な方法は待機タスク開始プログラム20がキュー内
の次タスクを読み取ってそれを次の利用可能なアプリケ
ーションプロセッサへ送出するのを、前に呼び出された
タスクが制御権を掌握するまで、つまり必要になるかも
しれない全てのファイルを“オーブン8にするまで禁止
することである。言い換えれば、呼び出されたプロセス
が必要になるかもしれない全てのファイルを“オーブン
′にするまで、ステップ44は完了されるべきでない。
前述したように、正確に1回のセマンティクスインタフ
ェース(第1図の22)は、2つの機能を行う。第1の
機能は、タスクによって要求されたトランザクションで
なされた更新が、1回の“アトミック”動作で行われる
ことを保証する通常の機能である。すなわち、部分的な
システム故障またはその他アプリケーションデータベー
ス及び演算プロセスの異常な終了の直後、アプリケーシ
ョンデータベース(第1図の16)は最後まで完了され
たトランザクションの全ての更新を含み、部分的に完了
されたトランザクションはいずれも含まない。正確に1
回のセマンティクスインタフェース22は、システムの
回復時に、アプリケーションデータベースがその前に完
了したトランザクションによって1回より多く更新され
ないことを保証する第2の機能も行う。このため、待機
タスク開始プログラム(第1図の20)は正確に1回の
セマンティクスインタフェース22と組み合わされて、
要求されたトランザクションの処理が部分的なシステム
故障またはアプリケーションの異常な終了によって中断
された場合でも、タスクキュー(第1図の19)内のタ
スクによって要求された全てのトランザクションがトラ
ンザクション処理システム(第1図の10)で1回且つ
その1回だけ実施されることを保証する。
正確に1回のセマンティクスインタフェース22の第1
機能、すなわちアプリケーションデータベースに対する
アトミック更新を保証する機能は、前述したRMSジャ
ーナル機構など、既存のメモリまたはデータベース管理
機構を用いて実施できる。このような機構を用いれば、
アプリケーションデータベースへのアクセスは、トラン
ザクションに関する全ての更新が同時に生じるように制
御される。
正確に1回のセマンティクスインタフェース22の第2
機能は、アプリケーションデータベースにアクセスする
トランザクションのトランザクション識別番号を、その
前にアプリケーションデータベース内に記憶された1つ
以上のトランザクション識別番号と比較することによっ
て与えられる。合致すれば、アプリケーションデータベ
ースの二重更新が試みられていたことが検出され、二重
更新の発生が防止される。トランザクションについてア
プリケーションデータベースの更新がなされると、その
トランザクションを要求しているタスクの識別番号がア
プリケーションデータベースに書き込まれ、その後のト
ランザクションの実施時における比較で使えるようにす
る。
正確に1回のセマンティクスインタフェース22は、各
アプリケーション毎の高水準言語コードに組み込まれた
高水準言語コードによって与えることができる。すなわ
ち、“APPMflMB”という名前のアプリケーショ
ンの場合、高水準言語コードは次のようになる: 上記のプログラムリスト中、プログラムステートメント
“5TART TRANSACTION  ”と′″E
ND TRANSACTION ”は“回復ユニット”
の範囲を区切るもので、メモリまたはデータベース管理
機構の回復機能によって認識される。この機構が例えば
RMSジャーナル機構であれば、ステートメント“5T
ART TRANSACTION  ”は”  $5T
ART RU″という特有の形となり、またステー )
 メ7 ) ” END TRANSACTrON”は
“$COf旧T RU ″という特有の形になる。
上記のプログラムリストにおいて、アプリケーションの
名前に対応したアプリケーションデータベース及び演算
プロセス用のコードは、正確に1回のセマンティクスイ
ンタフェース用のコード間に挾まれて現れているのが分
かる。しかし、システムのもっと深いレベルでは、正確
に1回のセマンティクスインタフェースがアプリケーシ
ョンデータベースの編成と、アプリケーションデータベ
ース及び演算プロセスとアプリケーションデータベース
間での読取及び書込に影響を及ぼす。このため、正確に
1回のセマンティクスインタフエース22は、アプリケ
ーションデータベース及び演算プロセス用のコードと同
じレベルのコードとして実施される必要はない。その代
わりに、正確に1回のセマンティクスインタフェースは
、アプリケーションファイルをオーブンし、アプリケー
ションレコードを読取及び書込して、アプリケーション
ファイルをクローズするもっと深いレベルのサブルーチ
ンとして実施できる。このような編成が、第4図のフロ
ーチャート50に示しである。
例示の目的上、各アプリケーションは、そのアプリケー
ションで実施されるトランザクシジンによって変更され
るオブジェクトの永久状態を定義するレコードを含む付
属のアプリケーションファイルを有するものと仮定する
。この場合、アプリケーションは第4図のフローチャー
ト50に示した編成を持ち得る。最初のステップ51で
、アプリケーションファイルがオーブンされる。アプリ
ケーションファイルがオーブンできなければ、アプリケ
ーションは成功せずに終了されねばならない。オーブン
されれば、ステップ52で、アプリケーションはアプリ
ケーションファイル内のアプリケーションレコードを読
取及び書込できる。最後にステップ53で、アプリケー
ションファイルはクローズされ、実行は成功してリター
ンする。
アプリケーションが第4図に示すように構成されている
場合、正確に1回のセマンティクスインタフェースは、
アプリケーションファイルをオーブンし、アプリケーシ
ョンレコードを読取及び書込して、アプリケーションフ
ァイルをクローズするルーチンとして実施可能である。
例えば、アプリケーションファイルをオーブンするステ
ップ51は、そのアプリケーション用の回復ユニットの
開始を定めることができ、またアプリケーションファイ
ルをクローズするステップ53は回復ユニットの終わり
を定めることができる。タスク識別番号の合致判定はア
プリケーションファイルをオーブンするステップ51で
行われ、合致したら、実1テは直ちにアプリケーション
ファイルをクローズしてリターンし得る。合致しなけれ
ば、タスク識別番号がアプリケーションファイルをクロ
ーズするステップ53中にアプリケーションファイルに
書き込まれる。
尚、タスク識別番号は、数多い任意の方法でアプリケー
ションデータベース内に記憶可能である。
待機タスク開始プログラム20(第1図)とアプリケー
ションデータベース及び演算プロセス(第1図の19)
が同一のコンピュータまたはプロセッサで実行されてい
れば、部分的なシステム故障または異常な終了後にアプ
リケーションデータベースを二重更新しようとする試み
は、すぐ前にアプリケーションデータベース内に記憶さ
れたのと同じタスク識別番号でアプリケーションデータ
ベースの2回目の更新を行おうとする。従って、アプリ
ケーションデータベース内に1つのタスク識別番号を記
憶するだけでよい。
待機タスク開始プログラム20とアプリケーションデー
タベース及び演算プロセスが複数のコンピュータまたは
プロセッサで実施され、複数のアプリケーションが異な
るアプリケージ9ンデータベースフアイルへ同時にアク
セスできるような多重プロセッサシステムでは、各アプ
リケーションファイル内に1つのタスク識別番号を記憶
する必要が少なくともある。同時発生アプリケーション
間での衝突がいかに解消されるかに応じて、各アプリケ
ーションファイル内に多数のタスク識別番号を記憶する
必要もある。最悪の場合、データベースは、呼び出され
たキュー上の各タスクのタスク識別番号を残らず記憶し
なければならない。このような各タスクは、完了してい
ても、異常な終了の時点でキューからまだ取り出されて
いないことがあり得るからである。記憶されねばならな
いタスク識別番号は、タスクキューが同じアプリケーシ
ョンを用いた先行するタスクを有するとき、待機タスク
開始プログラムがアプリケーションを呼び出さないこと
を保証することによって、アプリケーションファイル毎
に1つに減らせる;言い換えれば、第3図のステップ4
1で、キューから読み取られた次のタスクデータがキュ
ーの先頭に近い位置にあるアプリケーション名と合致す
るアプリケーション名を有する場合に、両ステップ42
と43がスキップされ(“次タスク”ポインタが進めら
れない)。
第5図を参照すると、使用可能なアプリケーションファ
イルのための特定の編成が示しである。
この場合、各アプリケーション毎に、そのアプリケーシ
ョンで実施されるトランザクションによって変更される
全てのオブジェクトの状態を保持する一定数のレコード
を持つ対応したアプリケーションファイルが用意されて
いるものと仮定する。
すなわち、アプリケーションデータベース内の各アプリ
ケーションファイルは、唯一の各アプリケーションによ
ってのみ書込可能である。但し、各アプリケーションは
任意の数のアプリケーションファイルを読み取れる。
アプリケーションがアプリケーションファイル内の任意
の数のレコードを同時に更新可能とするため、アプリケ
ーションファイル60は、マスタースイッチ62を記憶
するヘッダレコード61と二組のアプリケーションデー
タレコード63とを含む。例えばアプリケーションファ
イル60内の全てのアプリケーションデータを更新する
のが望ましい場合、この更新はマスタースイッチ62を
1回のアトミック動作で変更することによって行える。
またアプリケーションファイル60は、アプリケーショ
ンデータレコード63のうち選ばれたものだけを同時に
更新可能とするようにも編成されている。この目的のた
め、アプリケーションファイル60は、各データレコー
ド毎のそれぞれのスイッチの各コピーを含むスイッチレ
コードの2つのコピー64と65を含んでいる。
任意のある時点で、アプリケーションによって更新され
たオブジェクトの現状態を定義している所定レコードの
コピーは、ヘッダレコード61を読んでマスタースイッ
チ62の状態を得、マスタースイッチ62の状態によっ
て指示されたスイッチレコードの2つのコピーのうち一
方を読み取った後、この読み取られたスイッチレコード
のコピー内の各スイッチによって指示されている所望な
アプリケーションデータレコードの特定コピーを読み取
ることによって見い出すことができる。逆に、データレ
コードのうち選ばれたものだけを同時に更新するために
は、まずアプリケーションによって更新されたオブジェ
クトの現状態を現在含んでいない各レコードのコピーを
更新し、次にマスタースイッチ62によって現在指示さ
れていないスイッチレコード内の各スイッチを変更した
後、マスタースイッチ62を入れるだけでよい。こうず
れば、マスタースイッチを入れるという1回のアトミッ
ク動作で、同時更新が得られる。
アプリケーションファイル60内のいずれのデータレコ
ードを読取または更新するにもヘッダレコードと少なく
とも1つのスイッチレコードを必ず読み取る必要がある
ので、これら3つのレコードの少なくとも1つに最後の
更新のタスク識別番号を記憶するのが望ましい、しかし
さらに、データし・コードが同時に更新されるときはタ
スク識別番号も同時に更新する必要があるので、更新に
対応したタスク識別番号の各コピー68.69がスイッ
チレコードの各コピー64.65内に記憶されるべきで
ある。
ここで例えば、アプリケーションファイルが第5図に示
したようなフォーマントを有するものとすれば、アプリ
ケーションファイルをオーブンする第4図のステップ5
1は、第6図のフローチャート70に対応した正確に1
回のセマンティクスインタフェース(第1図の22)に
よって実施可能である。最初のステップ71で、アプリ
ケーションデータベース内のアプリケーションファイル
がオーブンされる。すなわち、アプリケーションファイ
ルがクローズされるまで、それ以外のプロセスはそのア
プリケーションファイルへのアクセスから除外される。
次にステップ72でアプリケーションファイルのヘッダ
レコードが読まれ、マスタースイッチの状態を得る。そ
の状態がステップ73でテストされ、マスタースイッチ
が0の値であると、スイッチレコードのコピーOがステ
ップ74で読み取られ、そうでないとスイッチレコード
のコピー1がステップ75で読み取られる。
アプリケーションファイルに対して二重更新を行おうと
する試みを検出するため、ステップ76で現タスクのタ
スク識別番号(TASK 10)がスイッチレコードか
ら読み取ったタスク識別番号と比較される。合致すると
、ステップ77でアプリケーションデータベース内のア
プリケーションファイルがクローズされ、ステップ78
で待機キュータスクの二重呼び出しを指示するようにリ
ターンコードがセットされる。このため、実行はリター
ンコードでリターンし、アプリケーション自体がリター
ンコードを認識して終了するようになす。
現タスクのタスク識別番号がスイッチレコードから読み
取ったタスク識別番号と合致しないと、ステップ79で
READ−ONLY  (読取専用)″フラグが1にセ
ットされ、“ALREADY WRITTEN  (書
込済み)″アレイがクリアされる。“READ 0NL
Y  ”フラグは、現トランザクション中にアプリケー
ションファイルが読み取られるだけの場合に、ヘッダレ
コードとスイッチレコードを更新する必要を取り除くの
に使われる。”ALI?EADY WI?ITTEN 
”アレイは、変更の書込後回−レコードを読み取る場合
に、アプリケーションがアプリケーションファイルの編
成に対して透明になるようにし、また各データレコード
が書込動作のためアプリケーションによってまずアクセ
スされる場合に、各レコード用のスイッチがトランザク
ションの実施中に1回だけ入れられるようにするために
使われる。ステップ79後、実行は平常通リリターンす
る。
次に第7図を参照すると、アプリケーションファイル中
の所定のレコードnを読み取るためアプリケーションに
よってコールされるフローチャートが全体を90で示し
である。選択されたレコードの2つのコピーの各1つが
、スイッチレコードから読み取られた所定レコード用ス
イッチの状態に応じて読み取られる。各スイッチがステ
ップ91でテストされる。スイッチがゼロのとき所定レ
コードのコピー0がステップ92で読み取られるが、あ
るいはスイッチが1のとき所定レコードのコピー1がス
テップ93で読み取られる。
次に第8図を参照すると、アプリケーションが所定のレ
コードnをそのアプリケーションファイルに書込可能と
するための、正確に1回のセブンティクスインタフェー
ス22内のフローチャートが全体を100で示しである
。最初のステップ101で、“ALREADY智RIT
TEN ”アレイの各エントリがテストされる。最初こ
のエントリはゼロで、この場合には指定レコードのスイ
ッチがステップ102でテストされ、指定レコードがそ
のアプリケーションファイル内の指定レコードのコピー
1またはコピー0のどちらかに書き込まれるべきかを判
定する。指定スイッチがOであれば、ステップ103で
レコードがコピーlに書き込まれ;そうでなければステ
ップ104で、レコードがコピー0に古き込まれる。し
かし、次に同じタスク及び同じレコードに対して書込が
試みられると、各スイッチが変更されており、この場合
にはスイッチがステ・ンブ105でテストされ、同じレ
コードの同じコピーへの書込を行う。次いで、ステップ
106で“ALREADY−WRITTEN  ”アレ
イの各エントリがテストされ、現タスクで指定レコード
が初めて書き込まれるのかどうかを判定する。レコード
が初めて書き込まれるのであれば、ステップ107で各
スイッチが変更され、’ALI?EADY WR(TT
ENアレイの各エレメントがセントされ、’t?EA口
0NLY’フラグがクリアされる。
次に第9図を参照すると、アプリケーションファイルを
クローズするためのフローチャートが全体を110で示
しである。最初のステップ111で、“READ 0N
LY  ”フラグがテストされ、現トランザクション中
にアプリケーションプログラムがそのアプリケーション
ファイルを読み取っただけかどうかを判定する。そうで
あれば、アプリケーションファイルはスイッチレコード
またはヘッダを可算更新することなく、ステップ112
で単に閉じられる。そうでなければ、ステップ114で
マスタースイッチがテストされ、現スイッチレコードが
ステップ115でスイッチレコードのコピー1に書き込
まれるべきか、ステップ116でコピー0に書き込まれ
るべきかを判定する。ステップ117でマスタースイッ
チが変更され、ステップ118でマスタースイッチの変
更された状態がアプリケーションファイルのヘッダに書
き込まれる。最後に、ステップ112でアプリケーショ
ンファイルがクローズされる。
(発明の効果) 以上において、正確に1回のセマンティクスインタフェ
ースと組み合わされて、部分的なシステムエラーまたは
めの他異常な終了からの自動的な回復を与えるように動
作するタスクキュー開始プログラムを有するトランザク
ション処理が記述された。アプリケーションプログラム
は、はとんどまたは全く修正なしでシステムに組み込め
る。正確に1回のセマンティクスインタフェースは、通
常のメモリまたはデータベース管理機構の“管理ユニッ
ト”を呼び出す高水準コードか、あるいはアプリケーシ
ョンファイルをオーブンし、読み取り、書き込み及びク
ローズする低水準サブルーチンとして実施可能である。
このシステムは、マルチプロセッサの構成に容易に適合
できる。
【図面の簡単な説明】
第1図は本発明によるタスクキューと正確に1回のセマ
ンティクスインタフェースを具備したトランザクション
処理システムのブロック図;第2図は第1図のシステム
で使われるタスクキュー内に記憶されるタスクデータ用
の好ましいフォーマントの図;第3図は第1図のタスク
キューを処理する待機タスク開始プログラムの動作を示
すフローチャート;第4図は第1図のタスクキューにキ
ュー入れされたタスクを実施するアプリケーションの一
般化フローチャート;第5図は各レコードを1回の“ア
トミック”ステップで同時に更新可能とする、アプリケ
ーションファイルにおけるレコードの1つの可能な構成
を示す図;第6図はアプリケーションファイルに関して
正確に1回のセマンティクスを可能とするアプリケーシ
ョンファイルをオーブンするサブルーチンのフローチャ
ート;第7図は正確に1回のセマンティクスを有するフ
ァイル内の選)尺されたレコードを読み取るサブルーチ
ンのフローチャート;第8図は正確に1回のセマンティ
クスを有するファイルに選択されたレコードを書き込む
サブルーチンのフローチャート;及び第9図は正確に1
回のセマンティクスをクローズするサブルーチンのフロ
ーチャートである。 IO−・・トランザクション処理システム、16アプリ
ケーシヨンデータベース、18−アプリケーションプロ
セッサ手段、19−メモリキュー20・−待機タスク開
始手段(プログラム)、22正確に1回のセマンティク
スインタフェース手段。

Claims (1)

  1. 【特許請求の範囲】 1、アプリケーションデータベースを記憶する非揮発性
    メモリ、 部分的なシステム故障の発生時に、各トランザクション
    が各データベースの更新を全体として行うかまたは全く
    行わないように、前記データベースを更新するトランザ
    クション処理用のアプリケーションプロセッサ手段、 各トランザクションを識別するタスクデータ、レコード
    を記憶する非揮発性メモリキュー、前記キュー内の特定
    タスクデータレコードを選択して前記アプリケーション
    プロセッサ手段を呼び出し、該選択されたタスクデータ
    レコードによって識別されたトランザクションを処理し
    、要求されたトランザクションの処理が完了したら、選
    択されたタスクデータレコードを前記キューから取り除
    く待機タスク開始手段、及び 前記部分的なシステム故障後に動作し、前記選択された
    タスクデータレコードによって識別されたトランザクシ
    ョンの処理が、要求されたトランザクションによって前
    記データベースに対しその前になされていた二重の更新
    を行うものであるかどうかを検出し、そうであれば二重
    の更新を防いで、前記選択されたタスクデータレコード
    を前記キューから取り除く正確に1回のセマンティクス
    インタフェース手段、 の組合せからなるトランザクション処理システム。 2、前記検出する手段が、選択されたタスクデータレコ
    ードに対応するタスク識別子をアプリケーションデータ
    ベースから読み取られたタスク識別子番号と比較し、両
    タスク識別子が同一タスクを識別しているかどうかを検
    出する手段を含む請求項1記載のトランザクション処理
    システム。 3、前記選択されたタスクデータレコードに対応したタ
    スク識別子が、前記キューに前記タスクデータレコード
    の一部として記憶されている請求項2記載のトランザク
    ション処理システム。 4、前記タスク識別子が前記キューに記憶される各タス
    クデータレコード毎に固有である請求項3記載のトラン
    ザクション処理システム。 5、前記正確に1回のセマンティクスインタフェース手
    段が、選択されたタスクデータレコードに対応するタス
    ク識別子によって前記データベースを更新し、該タスク
    識別子による前記データベースの更新が、前記選択され
    たタスクデータレコードによって識別されたトランザク
    ションの処理による前記データベースの更新と同時なさ
    れる請求項2記載のトランザクション処理システム。 6、前記アプリケーションプロセッサ手段が、複数のト
    ランザクションを同時に処理して異なるアプリケーショ
    ンファイルを更新する手段を含み、前記正確に1回のセ
    マンティクスインタフェース手段が、各アプリケーショ
    ンファイル内にそれぞれ異なるタスク識別子を記憶する
    手段を含む請求項5記載のトランザクション処理システ
    ム。 7、前記正確に1回のセマンティクスインタフェース手
    段が、前記データベース内の複数のデータレコードを同
    時に更新する手段を含む請求項1記載のトランザクショ
    ン処理システム。 8、データベース、タスクキュー、及び該タスクキュー
    内にキュー入れされている選択タスクによって要求され
    たデータベースの更新を行うアプリケーションプロセッ
    サを有するデータ処理システムを作動する方法で、タス
    クによって要求されたデータベースの各更新が行われた
    後前記タスクが前記タスクキューから取り出され、デー
    タベース更新の実施後に発生した前記システムの部分的
    な故障が、各タスクの前記タスクキューからの通常の取
    り出しを防止可能であり、その後前記各タスクが前記デ
    ータベースの二重更新を行わないように防止する方法に
    おいて、前記タスクキュー内の各タスクにそれぞれのタ
    スク識別子を割り当てるステップ、及び選択タスクによ
    って要求されたデータベースの更新を行う前に: 前記データベースを読んで、予め記憶されたタスクを得
    るステップ: 予め記憶されたタスクの識別子を各タスクに割り当てら
    れたそれぞれのタスク識別子と比較し、両タスク識別子
    が同一タスクを識別しているかどうかを判定するステッ
    プ:及び 前記両タスク識別子が同一タスクを識別していることを
    前記比較テップが判定した場合、選択タスクによって要
    求されたデータベースの更新を禁止するが、要求された
    タスクのタスクキューからの取り出しは禁止せず、また
    そうでないと判定した場合には、選択タスクの各識別子
    をデータベース内に書き込むステップ: を含むデータ処理システムの作動方法。 9、各タスク識別子のデータベース内への書込及び要求
    タスクによって要求されたとおりのデータベースの更新
    全てが同時に生じる請求項8記載のデータ処理システム
    の作動方法。 10、多数のタスクが前記タスクキュー内に記憶され、
    キュー内の各タスクに割り当てられる前記タスク識別子
    が困難である請求項8記載のデータ処理システムの作動
    方法。
JP1184396A 1988-07-18 1989-07-17 Tpキューイングシステムにおける正確に1回のセマンティクス Pending JPH0296849A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/220,502 US4949251A (en) 1988-07-18 1988-07-18 Exactly-once semantics in a TP queuing system
US220502 1988-07-18

Publications (1)

Publication Number Publication Date
JPH0296849A true JPH0296849A (ja) 1990-04-09

Family

ID=22823797

Family Applications (1)

Application Number Title Priority Date Filing Date
JP1184396A Pending JPH0296849A (ja) 1988-07-18 1989-07-17 Tpキューイングシステムにおける正確に1回のセマンティクス

Country Status (4)

Country Link
US (1) US4949251A (ja)
EP (1) EP0351969A3 (ja)
JP (1) JPH0296849A (ja)
CA (1) CA1315400C (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018049635A (ja) * 2013-10-29 2018-03-29 華為技術有限公司Huawei Technologies Co.,Ltd. トランザクション処理方法および装置

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5613106A (en) * 1989-09-15 1997-03-18 Motorola, Inc. Method for processing and storing a transaction in a distributed database system
US5170480A (en) * 1989-09-25 1992-12-08 International Business Machines Corporation Concurrently applying redo records to backup database in a log sequence using single queue server per queue at a time
US5161225A (en) * 1989-10-23 1992-11-03 International Business Machines Corporation Persistent stream for processing time consuming and reusable queries in an object oriented database management system
US5317733A (en) * 1990-01-26 1994-05-31 Cisgem Technologies, Inc. Office automation system for data base management and forms generation
EP0496927B1 (de) * 1991-02-01 1997-01-08 Siemens Aktiengesellschaft Verfahren für den fehlerbedingten Neustart eines Multiprozessorrechners eines Fernmeldevermittlungssystems
US5369757A (en) 1991-06-18 1994-11-29 Digital Equipment Corporation Recovery logging in the presence of snapshot files by ordering of buffer pool flushing
US5450592A (en) * 1992-09-02 1995-09-12 Data General Corporation Shared resource control using a deferred operations list
JPH07319747A (ja) * 1994-05-24 1995-12-08 Nec Telecom Syst Ltd データ更新システム
US5778168A (en) * 1995-09-11 1998-07-07 Sun Microsystems, Inc. Transaction device driver technique for a journaling file system to ensure atomicity of write operations to a computer mass storage device
US5799305A (en) * 1995-11-02 1998-08-25 Informix Software, Inc. Method of commitment in a distributed database transaction
US5878428A (en) * 1995-11-20 1999-03-02 International Business Machines Corporation System, method, and article of manufacture for adding transactional recovery to a binary class in an object oriented system
US5963960A (en) * 1996-10-29 1999-10-05 Oracle Corporation Method and apparatus for queuing updates in a computer system
US5918248A (en) * 1996-12-30 1999-06-29 Northern Telecom Limited Shared memory control algorithm for mutual exclusion and rollback
US6035379A (en) * 1997-01-09 2000-03-07 Microsoft Corporation Transaction processing for user data employing both logging and shadow copying
JP3113841B2 (ja) * 1997-07-30 2000-12-04 インターナショナル・ビジネス・マシーンズ・コーポレ−ション 並列トランザクション処理システム
US6081906A (en) * 1997-11-21 2000-06-27 Fuji Xerox Co., Ltd. Multi-thread processing with queuing and recovery
US7953788B2 (en) * 2001-09-29 2011-05-31 Siebel Systems, Inc. System and method for queuing data for an application server
US6457105B1 (en) * 1999-01-15 2002-09-24 Hewlett-Packard Company System and method for managing data in an asynchronous I/O cache memory
US20040034686A1 (en) * 2000-02-22 2004-02-19 David Guthrie System and method for delivering targeted data to a subscriber base via a computer network
US6549929B1 (en) * 1999-06-02 2003-04-15 Gateway, Inc. Intelligent scheduled recording and program reminders for recurring events
US6799166B2 (en) 1999-09-02 2004-09-28 International Business Machines Corporation Method and apparatus for preventing duplicate transactions on batch mode failure recovery in a data processing system
US7877492B2 (en) * 1999-10-12 2011-01-25 Webmd Corporation System and method for delegating a user authentication process for a networked application to an authentication agent
US7519905B2 (en) * 1999-10-12 2009-04-14 Webmd Corp. Automatic formatting and validating of text for a markup language graphical user interface
US7305475B2 (en) * 1999-10-12 2007-12-04 Webmd Health System and method for enabling a client application to operate offline from a server
US6970945B1 (en) * 1999-11-01 2005-11-29 Seebeyond Technology Corporation Systems and methods of message queuing
US20040034833A1 (en) * 1999-11-12 2004-02-19 Panagiotis Kougiouris Dynamic interaction manager for markup language graphical user interface
US20050028171A1 (en) * 1999-11-12 2005-02-03 Panagiotis Kougiouris System and method enabling multiple processes to efficiently log events
US20020007284A1 (en) * 1999-12-01 2002-01-17 Schurenberg Kurt B. System and method for implementing a global master patient index
DE10059006B4 (de) * 1999-12-30 2004-04-15 International Business Machines Corp. Verfahren und System zur sicheren Verwaltung von Dateien in nichtflüchtigen Speichern
US8775197B2 (en) * 2000-02-24 2014-07-08 Webmd, Llc Personalized health history system with accommodation for consumer health terminology
US8712792B2 (en) * 2000-02-24 2014-04-29 Webmd, Llc Personalized health communication system
US8612245B2 (en) * 2000-02-24 2013-12-17 Webmd Llc Personalized health history system with accommodation for consumer health terminology
US7310803B2 (en) * 2001-10-19 2007-12-18 419638 Canada Inc. Method and system for executing multiple tasks in a task set
US7707181B2 (en) * 2003-02-19 2010-04-27 Microsoft Corporation System and method of distributing replication commands
US7103603B2 (en) * 2003-03-28 2006-09-05 International Business Machines Corporation Method, apparatus, and system for improved duplicate record processing in a sort utility
US8326767B1 (en) 2005-01-31 2012-12-04 Sprint Communications Company L.P. Customer data privacy implementation
US8296162B1 (en) 2005-02-01 2012-10-23 Webmd Llc. Systems, devices, and methods for providing healthcare information
US7757242B2 (en) * 2006-05-26 2010-07-13 International Business Corporation Apparatus, system, and method for asynchronous outbound transaction event processing into an SAP application using service oriented architecture
US8380530B2 (en) 2007-02-02 2013-02-19 Webmd Llc. Personalized health records with associative relationships
US20100174817A1 (en) * 2009-01-06 2010-07-08 Chetuparambil Madhu K Splicing proxied web requests with callback for subsequent requests
US8689231B2 (en) * 2009-06-30 2014-04-01 Sap Ag System and method for ordering tasks with complex interrelationships
CN102004702B (zh) * 2009-08-31 2015-09-09 国际商业机器公司 请求控制设备、请求控制方法及相关的处理器
US9063932B2 (en) 2009-12-18 2015-06-23 Vertafore, Inc. Apparatus, method and article to manage electronic or digital documents in a networked environment
US8700682B2 (en) 2009-12-24 2014-04-15 Vertafore, Inc. Systems, methods and articles for template based generation of markup documents to access back office systems
CN102385558B (zh) * 2010-08-31 2015-08-19 国际商业机器公司 请求控制装置、请求控制方法及相关的处理器
US9384198B2 (en) 2010-12-10 2016-07-05 Vertafore, Inc. Agency management system and content management system integration
US8731973B2 (en) 2011-04-19 2014-05-20 Vertafore, Inc. Overlaying images in automated insurance policy form generation
US20150121306A1 (en) * 2013-10-30 2015-04-30 United Video Properties, Inc. Methods and systems for customizing functions of media guidance applications
US9507814B2 (en) 2013-12-10 2016-11-29 Vertafore, Inc. Bit level comparator systems and methods
US9367435B2 (en) 2013-12-12 2016-06-14 Vertafore, Inc. Integration testing method and system for web services
US9747556B2 (en) 2014-08-20 2017-08-29 Vertafore, Inc. Automated customized web portal template generation systems and methods
US9600400B1 (en) 2015-10-29 2017-03-21 Vertafore, Inc. Performance testing of web application components using image differentiation

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5714961A (en) * 1980-06-30 1982-01-26 Nec Corp File control system
JPS5852740A (ja) * 1981-09-24 1983-03-29 Fujitsu Ltd 区分編成フアイルの復元処理制御方式
JPS6257041A (ja) * 1985-09-05 1987-03-12 Nec Corp デ−タの復旧方式
JPS62105246A (ja) * 1985-10-31 1987-05-15 Nec Corp デ−タ復旧方式

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4627019A (en) * 1982-07-08 1986-12-02 At&T Bell Laboratories Database management system for controlling concurrent access to a database
AU576774B2 (en) * 1983-06-30 1988-09-08 Commonwealth Scientific And Industrial Research Organisation Optically based measurement of fluid parameters
US4615001A (en) * 1984-03-29 1986-09-30 At&T Bell Laboratories Queuing arrangement for initiating execution of multistage transactions

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5714961A (en) * 1980-06-30 1982-01-26 Nec Corp File control system
JPS5852740A (ja) * 1981-09-24 1983-03-29 Fujitsu Ltd 区分編成フアイルの復元処理制御方式
JPS6257041A (ja) * 1985-09-05 1987-03-12 Nec Corp デ−タの復旧方式
JPS62105246A (ja) * 1985-10-31 1987-05-15 Nec Corp デ−タ復旧方式

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018049635A (ja) * 2013-10-29 2018-03-29 華為技術有限公司Huawei Technologies Co.,Ltd. トランザクション処理方法および装置

Also Published As

Publication number Publication date
EP0351969A2 (en) 1990-01-24
US4949251A (en) 1990-08-14
EP0351969A3 (en) 1992-09-02
CA1315400C (en) 1993-03-30

Similar Documents

Publication Publication Date Title
JPH0296849A (ja) Tpキューイングシステムにおける正確に1回のセマンティクス
CN102282548B (zh) 事务性的存储器中的事务处理
US5923833A (en) Restart and recovery of OMG-compliant transaction systems
US6766471B2 (en) User-level checkpoint and restart for groups of processes
US7720891B2 (en) Synchronized objects for software transactional memory
CA1322422C (en) Single-keyed indexed file for tp queue repository
Mueller et al. A nested transaction mechanism for LOCUS
US6256637B1 (en) Transactional virtual machine architecture
US8037476B1 (en) Address level log-based synchronization of shared data
US6799236B1 (en) Methods and apparatus for executing code while avoiding interference
US5504900A (en) Commitment ordering for guaranteeing serializability across distributed transactions
EP0097234B1 (en) Method and apparatus for restarting a computing system
EP0735473B1 (en) Method and apparatus for managing a database in a distributed object operating environment
EP2150900B1 (en) Transactional memory using buffered writes and enforced serialization order
US9798595B2 (en) Transparent user mode scheduling on traditional threading systems
US7747996B1 (en) Method of mixed lock-free and locking synchronization
US20070028056A1 (en) Direct-update software transactional memory
US6061708A (en) System and method for supporting mixed-phase transactions in an object-oriented environment
EP0365728B1 (en) Resource access for a multiprocessing computer system
JPH06301581A (ja) 過ち許容トランザクション指向データ処理
US5450590A (en) Authorization method for conditional command execution
JPH0728679A (ja) チェックイン・チェックアウトモデルにおける施錠方式
US7134050B2 (en) Method and system for containing software faults
Son et al. Real-Time Replication Control for Distributed Database Systems: Algorithms and Their Performance.
EP0817019B1 (en) Method of stratified transaction processing