PSQL Programmer's Guide (v11)

Btrieve クライアント (トランザクショナル インターフェイス)

Btrieve クライアントとは、Btrieve 呼び出しを行うアプリケーション定義のエンティティです。各クライアントは Btrieve 呼び出しを実行でき、MicroKernel に登録されているファイルなどのリソースを個々に持ちます。また、MicroKernel はクライアントごとに排他トランザクションと並行トランザクションの両方の状態を保持します。

複数のクライアントを同時にサポートしなければならない場合は、パラメーターとしてクライアント ID を含む BTRVID 関数または BTRCALLID 関数を使用します。クライアント ID パラメーターは、MicroKernel がコンピューター上のクライアントを区別できるようにする 16 バイト構造体のアドレスです。以下に、クライアント ID を使用することが有効である場合の例を示します。

MicroKernel はいくつかの並行制御方法を提供し、いくつかの実装ツールを使用して、複数のクライアントが同じファイル内のレコードを並行してアクセスまたは変更しようとする場合に発生する可能性のある競合を解決します。

並行制御方法は以下のとおりです。

実装ツールは以下のとおりです。

以降では、MicroKernel の並行制御方法について詳しく説明します。各セクションを読むとき、表 35 を参照してください。この表では、2 つのクライアントが同じファイルのアクセスまたは変更を行おうとする場合に発生する可能性のある競合のタイプをまとめています。この表 35 では、ローカル クライアントのアクションを説明しています。


メモ

アプリケーションが BTRVID 関数を使用して同じアプリケーション内で複数のクライアントの定義と管理を行う場合、そのようなクライアントはローカル クライアントと見なされます。


この表では、クライアント 1 は表の左端の列の略語によって識別されるアクションを実行し、次にクライアント 2 が表の上端の行の略語によって識別されるアクションのうちの 1 つを実行しようとします。

これらの略語によって表されるアクションについては、アクション コードで説明しています。

前提条件

35 は以下のことを前提としています。

アクション コード

RNL
トランザクションでない処理または並行トランザクションにおける、ロック要求を伴わない読み取り。
RWL
トランザクションでない処理または並行トランザクションにおける、ロック要求を伴う読み取り。
INT
トランザクションでない処理における挿入。
ICT
並行トランザクションにおける挿入。
ITDP
並行トランザクションにおける挿入。同様に並行トランザクション内にいるクライアント 1 が挿入、更新、または削除によって変更したページとは異なるページを変更する。
MNT
トランザクションでない処理における変更(更新または削除)。
MDR
トランザクションでない処理における変更。クライアント 1 によって変更されたレコードとは異なるレコードを変更する。
MCT
並行トランザクションにおける変更。
MTDR
並行トランザクションにおける変更。クライアント 1 によって変更されたレコードとは異なるレコードを変更する。
EXT
排他トランザクションにおける読み取り、挿入または変更。

競合コード

適用外
適用されません(該当なし)。
NC
クライアント 1 とクライアント 2 のアクション間に競合またはブロックはありません。
RB
レコード レベルのブロック。クライアント 2 は、クライアント 1 でかけられたレコード ロックのためにブロックされます。
PB
ページ レベルのブロック。クライアント 2 は、クライアント 1 でかけられたページ ロックのためにブロックされます。
FB
ファイル レベルのブロック。クライアント 2 は、クライアント 1 でかけられたファイル ロックのためにブロックされます。
RC
レコードの競合。初めクライアント 2 が読み取っていたレコードを後からクライアント 1 が変更したため、クライアント 2 は操作を実行できません。MicroKernel は、ステータス コード 80 を返します。

競合コード RB、PB、および FB の場合、クライアント 2 がノーウェイト タイプの操作(たとえば、ノーウェイト ロックを指定した読み取りや、500 バイアスを指定して開始された並行トランザクションでの挿入または変更など)を指定していない限り、MicroKernel はクライアント 2 のアクションを再試行します。ノーウェイトの操作の場合は、MicroKernel はエラー ステータス コードを返します。

表 35 ローカル クライアントに関して発生する可能性のあるファイル操作の競合
クライアント 2 のアクション
 
RNL
RWL
INT
ICT
ITDP
MNT
MDR
MCT
MTDR
EXT
クライアント 1
のアクション
 
 
 
 
 
 
 
 
 
 
RNL
NC
NC
NC
NC
適用外
NC
適用外
NC
適用外
NC
RWL
NC
RB
NC
NC
適用外
RB
適用外
RB
適用外
RB
INT
NC
NC
NC
NC
適用外
NC
適用外
NC
適用外
NC
ICT
NC
NC
PB
PB
NC
PB
適用外
PB
適用外
PB
MNT
NC
NC
NC
NC
適用外
RC
NC
RC
NC
NC
MCT
NC
RB
PB
PB
NC
RB
PB
RB
PB
PB
EXT
NC
FB
FB
FB
適用外
FB
FB
FB
FB
FB

以下に、表 35 でアクション コードの組み合わせを解釈するための例を示します。


複数のクライアントのサポート

受動的並行性(パッシブ コンカレンシー) (トランザクショナル インターフェイス)