Caché データベース・エンジン
Caché データベース・エンジンは、Caché の心臓部分です。データベース・エンジンは、パフォーマンス、同時実行、スケーラビリティ、信頼性を最適化します。サポートされるプラットフォームによって最大限のパフォーマンスを獲得するために、プラットフォーム特有の高度な最適化が行われています。
Caché は、フル機能のデータベース・システムです。基幹アプリケーション (ジャーナリング、バックアップ、リカバリ、管理ツールなど) を実行するために必要なすべての機能が含まれています。処理負荷を軽減するために、Caché は、他のデータベース製品よりデータベース管理が簡単になるように設計されています。したがって、導入された大半の Caché システムでは、データベース管理者は必要ありません。
データベース・エンジンの主機能は、以下のセクションで説明しています。
トランザクション多次元ストレージ
Caché のすべてのデータは、多次元のスパース配列に格納されます。標準の OLAP (オンライン解析処理) 製品で使用される多次元配列と異なり、Caché は、多次元構造で、トランザクション処理操作 (挿入、更新、ロック、トランザクション) をサポートします。また、大半の OLAP エンジンと異なり、多次元構造は、使用可能なメモリ・サイズに制限されません。代わりに、Caché には、高度で効率的なデータ・キャッシュがあります。
Caché は完全可変長データをスパース配列の形で格納するので、必要な格納領域は一般的なリレーショナル・データベースの場合の半分程度にすぎません。ディスク容量が少なくて済むばかりでなく、コンパクトなデータ保存によって、一度の I/O 処理でより多くのデータの読み書きが可能となり、データがより効率良くキャッシュされるため、パフォーマンスが向上します。
多次元配列により、データを格納する際のアプリケーションの柔軟性が大幅に向上しました。例えば、Invoice オブジェクトとそれに対応する LineItem オブジェクトは互いに密接に関連するオブジェクトのセットですが、LineItem オブジェクトが Invoice オブジェクトに物理的にクラスタ化されるように簡単に構成できるので、高い効率のアクセスが実現します。
トランザクション多次元ストレージの柔軟性により、Caché は従来のリレーショナル・データベースを使用した 2 次元構造以上の利点があります。この柔軟性のために、例えば、Caché は高性能の SQL、オブジェクト、XML データベースとして機能します。つまり、Caché アプリケーションは、将来のテクノロジの進歩に効果的に対応できます。
マッピング
マッピングという独自の機能を使用すると、1 つ以上の配列 (または部分的配列) 内にあるデータを、どのようにして物理的なデータベース・ファイルにマップするかを指定できます。このようなマッピングは、データベース管理タスクです。クラスやテーブル定義、あるいはアプリケーション・ロジックを変更する必要はありません。また、マッピングは特定のスパース配列内で行うこともできます。ある値の範囲を別の物理ロケーションにマップしたり、他のファイル、ディスク・ドライブ、あるいは他のデータベース・サーバにもマップしたりできます。これにより、(スケーリングなど) Caché アプリケーションの再構成が簡単に実行できます。
プロセス管理
プロセスとは、Caché サーバで稼動する Caché 仮想マシンのインスタンスです。通常の Caché サーバは、ハードウェアとオペレーティング・システムの性能によって、何千もの同時プロセスを実行できます。各プロセスは、多次元ストレージ・システムに直接アクセスします。
Caché 仮想マシンは、P-code と呼ばれる命令を実行します。これらの命令は、トランザクション処理とデータウェア・ハウジング・アプリケーションに通常必要なデータベース、I/O およびロジックの処理用に高度に最適化されたものです。
ロック管理
同時データベース・アクセスをサポートするために、Caché には、強力なロック管理システムがあります。
数千のユーザをサポートするシステムでは、競合するプロセス間の衝突の削減は、パフォーマンスの向上に不可欠です。大きな競合として、同じデータにアクセスしようとするトランザクション間で発生するものがあります。Caché には、このような衝突を削減する以下の機能があります。
-
アトミック処理 — 典型的なパフォーマンス・ホット・スポットを排除するために、Caché は、アプリケーション・レベルのロックが不要な複数のアトミック処理をサポートします。例えば、オブジェクトと行を特定する一意の値を最小単位で割り当てる機能です。この特定処理は、リレーショナル・アプリケーションにありがちなボトルネックです。
-
論理ロック — Caché は、更新中にデータのページ全体をロックしません。大半のトランザクションは、少量のデータへの頻繁なアクセスや変更であるため、Caché は、各オブジェクト (行) 単位で実行する、きめ細かい論理ロックをサポートします。
-
分散ロック — 分散データベース構成 (次のトピックを参照) では、システムは、自動的に分散ロックをサポートします。
分散データ管理
Caché で最も強力な機能の 1 つは、分散データ・ネットワークを構築するためにサーバを 1 つにリンクする機能です。このようなネットワークでは、主にデータを提供するマシンをデータ・サーバといいます。一方、処理がメインで、データをほとんど持たないマシンをアプリケーション・サーバといいます。
サーバは、Caché の ECP (エンタープライズ・キャッシュ・プロトコル ) を使用して、データ (とロック) を共有できます。ECP は、データをパッケージ化して転送することで転送効率を向上させています。ネットワーク経由でデータを要求された場合、必要なデータならびにその他の関連データをパッケージ化して返送します。オブジェクトと多次元データ・モデルを継承する特有のデータ・リレーションシップにより、要求された元のデータに関連する情報を識別し、取り込むことができます。“関連する” 情報は、クライアントあるいはアプリケーション・サーバのどちらかのローカル上にキャッシュされます。通常、データのアクセスは近くのキャッシング情報から先に検索を行い、ネットワーク上で不必要なデータ要求を行わないようにしています。クライアントがデータを更新した場合、変更されたデータのみをデータベース・サーバに転送します。
ECP により、アプリケーションは、多階層とピアツーピア通信を含む広範囲のランタイム構成をサポートできます。
ジャーナル管理
整合性と信頼性を備えたデータベースにするため、Caché には、データベースの更新状況を物理的あるいは論理的に追跡するジャーナリング・サブシステムがあります。ジャーナル管理テクノロジは、トランザクションのサポート (ジャーナルは、トランザクションのロールバック処理を実行) と、データベースのシャドウイング (ジャーナルは、シャドウ・サーバとプライマリ・データ・サーバの同期をとります) にも使用します。他のサブシステムと同様に、Caché は、ジャーナリング・システムをニーズに合うように構成します。
データベースの移植性
Caché は、さまざまなハードウェア・プラットフォームとオペレーティング・システムで稼働し、それらに向けて最適化されています。詳細は、このリリース用のオンライン・ドキュメント "インターシステムズでサポートされるプラットフォームOpens in a new tab" を参照してください。
Caché で開発したアプリケーションやデータをあるプラットフォームから別のプラットフォームへ簡単に移植できます。これは、Caché を新規のプラットフォームにインストールし、データベース・ファイルを新規システムに移植するのと同様に簡単です。別のシステムに移行する場合、あるエンディアン表現を別の表現に変換するために、組み込みのデータ変換ユーティリティの実行が必要になることがあります。
アプリケーション稼動オプション
Caché は、アプリケーションを実稼動する際に、最大限の柔軟性を提供するさまざまなランタイム構成をサポートします。Caché のシステム設定を変更することで、さまざまな稼動オプションを切り替えて使用できます。この場合でも通常は、アプリケーション・ロジックを変更する必要はありません。
基本的な稼動オプションは以下のとおりです。
基本的なクライアント/サーバ構成
単純なクライアント/サーバ構成では、単一の Caché データ・サーバは、多くのクライアント (アプリケーションとプラットフォームによって 1 から数千まで) を持ちます。
クライアント・システムは、以下のいずれかです。
-
スタンドアロンのデスクトップ・システム。クライアント/サーバ・プロトコル (ODBC、ActiveX、JDBC、Java など) 経由で接続するクライアント・アプリケーションを実行します。
-
Zen、CSP (Caché Server Pages)、SOAP、他の接続オプション (ODBC、JDBC など) を経由して Caché と会話する Web サーバ・プロセス。各 Web サーバ・プロセスは、多数のブラウザ・ベースあるいはマシン・ツー・マシンのセッションを提供します。
-
ODBC、JDBC などを経由して Caché に接続するミドルウェアのプロセス (Enterprise Java Bean アプリケーション・サーバなど)。
-
サポートされるプロトコル (TELNET、TCP/IP など) の 1 つを使用して Caché に接続するターミナルやハードウェアなどのデバイス。
-
上記の方法の中からの、いくつかの方法の組み合わせ。
シャドウ・サーバ構成
シャドウ・サーバ構成とは、基本的なクライアント/サーバの設定に、1 つ以上のシャドウ・サーバを追加して構築されます。各シャドウ・サーバはジャーナルへの接続と監視により、サーバ自身とメイン・データ・サーバ内にあるデータとの同期をとります。
シャドウ・サーバは一般的には、アドホック・クエリ、大量のレポート、バッチを処理するために使用され、メイン・トランザクション・システムへの影響を抑制します。また、フェイルオーバー・システムとしても使用できます。
多層構成
多層構成は、Caché の分散データベース・テクノロジ (ECP) を使用して、大量のクライアントをシステムに接続できます。
最も簡単な多層設定は、アプリケーション・サーバとして動作する 1 つ以上の Caché システムを、中央データ・サーバとさまざまなクライアント・システム間に配置します。この場合、アプリケーション・サーバの役目はデータの格納ではなく、クライアントの要求に沿った作業を実行するプロセスのホストです。これにより、データ・サーバの CPU にかかる負荷を低減します。この構成は、“参照の局所性” を示すアプリケーションに最適です。つまり、大半のトランザクションは関連するデータをある程度含んでいるため、アプリケーション・サーバ間のロックを小さくすることができます。このようなアプリケーションや、大半の Web アプリケーションのように相当量の読み取りアクセスが発生するアプリケーションでは、上記モデルが最適です。
また、複数のデータ・サーバを持つ構成や、データをアプリケーション・サーバ・マシンに格納する構成のような複雑な構成も可能です。
通常、アプリケーションは、高い拡張性や、ホット・スタンバイ・システムとして動作するアプリケーション・サーバによる高可用性を実現するために多層構造を使用します。