Pervasive コンポーネントのアーキテクチャについて
アーキテクチャ機能の説明
この章では、インストールや重要なアプリケーションの実行で問題が起こらない環境を提供するために設計された機能について説明します。 以下の項目について説明します。
Pervasive PSQL データベース エンジン
Pervasive PSQL のエンジンは、以下の 2 つのデータベース サブエンジンから構成されています。
•MicroKernel Database エンジン(MKDE)。これは Pervasive PSQL アプリケーションをサポートする Btrieve/MicroKernel API を提供します。
•SQL Relational Database エンジン(SRDE)。これは Pervasive PSQL アプリケーションをサポートする ODBC/SQL API を提供します。
共通アドレス空間
Pervasive PSQL は最適化されたメモリ アーキテクチャを使用し、トランザクショナル アクセスとリレーショナル アクセスの両方に高いパフォーマンスを提供します。MKDE および SRDE は、共に同一プロセス アドレス空間で動作し、それらの間の通信にかかる CPU 時間を最小限にします。
行レベルのロック
同時にたくさんの更新や書き込みが行われたり、長時間に渡ってトランザクションが開かれたままになる複数ユーザー環境では、行レベルのロックによってデータベース エンジンのパフォーマンスが向上します。
トランザクションはページ全体ではなく直接影響する行のみをロックします。クライアントはあるページのレコードの変更を、他のクライアントが同一ページの別のレコードを変更するのと同時に行うことができます。2 番目のアプリケーションは、最初のアプリケーションが現在ロックしているのとまったく同じレコードを変更しようとしたときにのみ、待つことが必要になります。したがって、行レベルのロックは複数ユーザー環境で総体的な待ち時間を減少させ、パフォーマンスを向上させます。
この機能は MicroKernel Database エンジン内で完全に透過です。この機能は常に動作していて、サポートされるすべてのオペレーティング システム プラットフォームと同様、サーバー、ワークグループでサポートされます。この機能は、データ ファイル形式 v6.x 以降でサポートされます。
行レベルのロックはデータ ページに実装され、部分的にはキー ページにも実装されます。可変ページには行レベルのロックは適用されません。キー ページの一部分の変更によって、キー エントリが別のページに移動することがあります。その例として、キー ページが分割または結合されるときがあります。これらの変更では、トランザクションが完了するまで完全なページ ロックが継続します。
MicroKernel Database エンジン
MicroKernel Database エンジン(MKDE)は、Pervasive PSQL アプリケーションの Btrieve および MicroKernel API をサポートしています。Pervasive PSQL Sever および Pervasive PSQL Workgroup は共に、エンジンと同じコンピューター上で実行されるローカル アプリケーションをサポートします。サーバーの MKDE は、ローカル アプリケーションとリモート(クライアント/サーバー)アプリケーションの両方をサポートします。ワークグループの MKDE は、リモート マシンで実行されるアプリケーションにも対応し、リモート マシン上の別のピア ワークグループ エンジンによるリクエストを処理します。
MicroKernel エンジンには、2 つのバージョンがあります。サーバー エンジンは、Linux および Windows サーバー上で実行可能です。ワークグループ エンジンは Windows 上でのみ実行できます。また、このエンジンはシングル ユーザーや小規模のワークグループ構成向けに設計されています。
デフォルトでは、ワークグループ エンジンは Windows のログイン時に起動されるよう設定されています。ファイルが既にエンジンによって開かれている場合、ワークグループ エンジンは、別のピア エンジンによるリクエストを処理できます。特定のマシンを設定してデータベース エンジンをゲートウェイとして使用することもでき、ほかのワークグループ エンジンがファイルを開くことを回避します。
Windows のサーバー エンジンは、インストールされると Windows のサービスとして実行されます。ワークグループ エンジンは、インストールされるとアプリケーションまたはサービスとして実行されます。アプリケーションとしてインストールされた場合は、ワークグループ MKDE の実行中は、それを表すトレイ アイコンが表示されます。ワークグループ MKDE を実行していない場合、トレイ アイコンは表示されません。サーバー エンジンの場合、またはワークグループ エンジンがサービスとしてインストールされた場合、トレイ アイコンは表示されません。
サーバーとワークグループの技術的な相違も参照してください。
Pervasive PSQL の Btrieve および ODBC API を使用することにより、アプリケーションからのローカルまたはリモートのデータベース エンジンへの接続情報が表示されない、分散型データベース アプリケーションを作成できます。このアーキテクチャを使用すると、アプリケーションは共存するデータ、つまりアプリケーションと同じコンピューターで実行されているデータにアクセスすると同時に、リモート コンピューターのデータにもアクセスできます。さらに、SQL データベースは、ローカルの MicroKernel Database エンジンによって処理される DDF(データ辞書ファイル)、およびリモートの MicroKernel Database エンジンによって処理されるデータ ファイル(テーブル)を作成することにより、分散化が可能です。ローカルの MicroKernel Database エンジン以外のエンジンにも処理されるこのような SQL データベースは、「混合アクセス データベース」と呼ばれます。
混合アクセス データベースには、以下の制約があります。
• 以下の機能はサポートされません。参照整合性(RI)、バウンド データベース、トリガー、分散されたトランザクション アトミシティ(2 段階のコミットが必要)。
• DDF にアクセスするには、SRDE および MicroKernel Database エンジンを同じコンピューター上で実行する必要があります。
• RI の関係に関連するテーブルのデータ ファイル、トリガーが定義されているテーブル、またはバインドされた名前付きデータベースにあるテーブルは、リモートの MicroKernel Database エンジンによって開くことができません。
• ファイルを開く際、SRDE は、リクエストを処理する MicroKernel Database エンジンのバージョンを確認しません。バージョン 6.30 以降の MicroKernel Database エンジンの API サポート(たとえば、共有ロックなど)を必要とするオペレーションが、バージョン 6.30 より前の MicroKernel Database エンジンに対して発行された場合は、エラー コードが返されます。DDF を開く際、または DDF ファイルやデータ ファイルをバインドしようとする際に、SRDE では、ローカルの MicroKernel Database エンジンがリクエストを処理していることを確認します。
非同期 I/O
サーバー版の Windows 用 MicroKernel エンジンは、ページをディスクに書き込む際に非同期 I/O を使用します。この機能はパフォーマンスを向上させます。MicroKernel は直ちに Windows システム キャッシュまたは MicroKernel のキャッシュにページを書き込みます。次に、Windows はページがディスク上にあると信号を送って、MicroKernel が効率的に書き込み操作を行えるようにします。
MicroKernel でたくさんの並行オペレーションが同時に行われる場合、特にデータセットがストライプ セットのディスク ドライバー上にある場合には、読み込みパフォーマンスも向上しています。各読み込みは、ページが利用可能になるまでワーカ スレッドを待機させます。非同期 I/O では、オペレーティング システムは複数の読み込み要求の作業をプールして、読み込み操作をより効率的に行います。
SQL Relational Database エンジン
Pervasive PSQL Relational Database エンジン(SRDE)には、Pervasive PSQL アプリケーション用の ODBC サポートが用意されています。
ODBC クライアントのプラットフォームには、Windows プラットフォームがあります。SRDE へのリモート ODBC アプリケーション アクセスには、ODBC クライアントがインストールされている必要があります。これは、ネットワーク上でクライアント側の ODBC 呼び出しを ODBC 通信サーバーに転送する専用 ODBC ドライバーです。
SRDE には以下のような機能が含まれています。
•アトミック ステートメント
•双方向カーソル(ODBC カーソル ライブラリを使用)
•外部結合への対応
•更新可能なビュー
•ODBC のデータ型への対応
•テーブル内の複数の可変長列
ODBC 通信サーバーは、以下の機能を実行します。
•ODBC クライアント用ネットワーク通信のサポート
•サーバー側 ODBC ドライバー マネージャーへの ODBC 呼び出しの転送(ODBC 呼び出しは SRDE に転送)
SQL および ODBC の詳細については、『
SQL Engine Reference』の
SQL の概要および
DSN と ODBC アドミニストレーター を参照してください。
リレーショナル アーキテクチャの概要
下図は、サーバ版 Pervasive PSQL のリレーショナル ODBC インターフェイスのアーキテクチャ コンポーネントを示したものです。SQL 接続マネージャーは、MKDE および SRDE と同じプロセス アドレス空間で起動し実行します。
Pervasive PSQL リレーショナル アーキテクチャ:サーバー
SQL 接続マネージャーは、最大 2000 までの同時接続をサポートしており、ODBC ドライバー マネージャーを使用して SQL Relational Database エンジン(SRDE)を呼び出します。エンジンは MicroKernel の上に置かれます。
図
2 は、Pervasive PSQL のクライアント/サーバー リレーショナル アーキテクチャを示します。クライアントは、TCP/IP を介してサーバーの SQL 接続マネージャーに接続します。このアーキテクチャは、サーバー エンジンおよびワークグループ エンジン(ローカル ワークグループ エンジンからリモート ワークグループ エンジンへの接続にクライアント DSN を使用する場合)に適用されます。
図 2 クライアント/サーバー リレーショナル アーキテクチャ
図
3 は、ローカル ワークグループ エンジンからリモート データベースへの接続に DSN を使用する場合のワークグループ リレーショナル アーキテクチャを示します。リモート ワークグループ エンジンはリモート データへのゲートウェイとなっていることを想定しています。
図 3 ワークグループ リレーショナル アーキテクチャ
エラー コード
Pervasive PSQL の多くの最上位コンポーネントは、その下の階層のコンポーネントからのエラー コードがそのまま渡されるため、呼び出し元アプリケーションまたはログ ファイルでエラーの実際の原因を明確に特定できるようになりました。エラー コードがさまざまな状況に該当する可能性がある場合は、Pervasive PSQL イベント ログ内の具体的な情報により、そのエラーの根本的な原因が特定されます。『
Pervasive PSQL User's Guide』の
Pervasive PSQL メッセージ ログを参照してください。
Pervasive Auto-Reconnect
自動再接続機能の Pervasive Auto-Reconnect(PARC)を使用すると、クライアント/サーバーまたはワークグループ アプリケーションは、一時的なネットワークの中断時にも現在のデータベース オペレーションを中止しません。Pervasive PSQL がネットワークの中断を検出すると、設定可能な指定時間ごとに自動的に再接続を試行します。この機能はクライアントのコンテキストも維持するので、通信が再確立されたとき、ネットワークの中断が起こったときとまったく同じようにデータベース アクセスが継続されます。
この機能は、アプリケーションのコンテキストを維持し、ネットワーク通信が中断されたときにクライアントまたはサーバーがその時点でデータを送信しようとしていたかどうかにかかわらず、再接続を試行します。
ネットワークが中断したとき、一定の待ち時間の経過ごとに再接続が試行されます。すべての接続で、0.5、1、2、4、8 秒ごとに継続的に再接続が試行され、その後、自動再接続タイムアウトの値に達するまで 8 秒ごとに試行されます。最大待ち時間に達しても接続に成功しない場合、現在のオペレーションは失敗し、クライアントの接続はリセットされます。最大の待ち時間は 45 秒から 65,635 秒の間に設定できます。
この機能はデフォルトで使用不可になっています。この機能を動作させるには、クライアントとサーバーの両方の設定で、
自動再接続の有効化(Windows のみ)を選択する必要があります。待ち時間の値は、サーバー設定の
自動再接続タイムアウトを使って行うことができます。
備考
この機能は、Btrieve、ODBC、および DTI 接続でサポートされています。
Btrieve 通信サーバーは、トランザクション ログ ディレクトリに *.PAR または *.SAR ファイルを書き込むことがあります。これらは、サーバーがクライアントに送信しようとした最新のアイテムのコンテキストを含むテンポラリ ファイルです。再接続が行われると、クライアントはデータの再送信を要求します。サーバーはこれらのファイルを読んで適切なデータを取得します。これらのファイルは、データが読み取られたあと、接続が最終的に終了するときにサーバーが削除します。