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