Caché テクノロジガイド

第2章:
Caché 多次元データ・サーバ

Cachéの高速データベースは、多次元データ・モデル・エンジンを採用しています。これにより、表現力豊かなデータ構造のデータを効率的かつコンパクトに格納できます。オブジェクトとSQLは、クラスとテーブルを定義し、多次元構造へのマッピング(自動的に生成)を提供する統一データ辞書を指定することで実装されます。

統合データベース・アクセス

Caché は、データを格納、アクセスする方法として、プログラマが多次元構造へのオブジェクト・アクセス、SQLアクセス、ダイレクト・アクセスを自由に選択できます。アクセス方法に関係なく、 Caché は、多次元データ配列にデータを格納します。

Multidimensional Access

データが格納されると、いずれのアクセス方法を使用しても、全く同時に同じデータを使用することが可能です。

統一データ・アーキテクチャはCaché のユニークな特徴です。データベースにオブジェクト・クラスを定義すると、Caché はSQLでアクセスできるデータのリレーショナル記述を自動的に生成します。同様に、リレーショナル・データベースのDDL記述をデータ・ディクショナリにインポートすると、Caché は自動的にオブジェクトのデータとリレーショナル・データベースの記述を生成し、オブジェクトとしてすぐにアクセスができます。Caché は、このような定義情報の組み合わせを管理するため、編集のためのデータ定義は1つだけです。プログラマは、オブジェクトとリレーショナル・テーブルの両方から、ディクショナリを編集、表示することができます。

Caché は、オブジェクトとテーブルをどのように多次元構造に格納するかのマッピングを自動的に生成します。あるいはプログラマが、マッピングを明示的に制御可能です。

Caché の利点

柔軟性
Cachéのデータ・アクセスの方法には、オブジェクト、SQL、ダイレクトがあり、同じデータを同時に使用可能です。この柔軟性により、プログラマは、最も理にかなった方法でデータを考えることができ、ニーズに最適なアクセス・メソッドを使用できます。

作業の軽減
Caché 統一データ・アーキテクチャは、データを、1つの定義で、自動的にオブジェクトとテーブルの両方を記述します。コードを互いに変換する必要がないため、アプリケーションの開発、管理が簡単です。

既存のスキルとアプリケーションの活用
プログラマは、既存のリレーショナル技術を利用しながら、オブジェクトの機能を既存のアプリケーションが改定の度に徐々に導入することができます。

 

多次元データ・モデル

根本的に、Caché データベースは、極めて効率的な多次元データ・エンジンによって強化されています。Caché のもつスクリプト言語には、多次元構造へのダイレクト・アクセスが備わっており、最高速のパフォーマンスと広範囲なストレージ能力を提供します。また、このデータ・エンジンを直接使用して、多くのアプリケーションが実装されています。ダイレクト“グローバルアクセス”は、一般的ではない、あるいは非常に特殊な構造で、オブジェクトやSQLアクセスが必要でない場合、あるいはできる限り最高速なレスポンスが必要な場合に共通してよく使用されています。

多次元データ・エンジンには、データ・ディクショナリやデータ定義もありません。

表現力豊かな多次元データ構造

Caché の多次元配列は“グローバル”と呼ばれます。データは、任意の数の添え字とともに、グローバルに保存することができます。さらに、添え字には型がなく、あらゆる種類のデータでももつことができます。同じ添え字レベルで、一方には34などの整数、もう一方に“LineItems”のような意味のある名前を付けることも可能です。

例えば在庫管理アプリケーションでは、商品名、サイズ、色、柄といった情報をもっていますが、それらは以下のような構造をもつことができます。

^Stock(item,size,color,pattern)=quantity

以下はデータの例

^Stock(“slip dress”,4,”blue”,”floral”)=3

このようなデータ構造の場合、データ・ノードにアクセスして、「サイズが4の花柄の青いスリップ・ドレス」を限定するのは非常に簡単です。顧客が「サイズが4のスリップ・ドレス(色と柄は未定)」を探している場合には、以下のデータ配下の全データ・ ノードを検索し、それら全てを簡単にリスト表示できます。

^Stock(“slip dress”,4)

この例では、全てのデータ・ノードは同様の性質(在庫数を格納)で、同様の添え字(3番目の添え字が、常に商品の色を表すテキストである)をもつ同じ添え字レベル(4つの添え字)で保存されています。しかし、データ・ノードは、同じ数や同じタイプの添え字をもつ必要はなく、異なるタイプのデータを保存することも可能です。

以下は、請求書データをもつ複雑なグローバルの例で、異なる添え字レベルに格納された異なるデータ型をもちます。

^Invoice(invoice #,”Customer”) = Customer information
^Invoice(invoice #,”Date”) = Invoice date
^Invoice(invoice #,”Items”) = # of Items in the invoice
^Invoice(invoice #,”Items”,1,”Part”) = part number of 1st Item
^Invoice(invoice #,”Items”,1,”Quantity”) = quantity of 1st Item
^Invoice(invoice #,”Items”,1,”Price”) = price of 1st Item
^Invoice(invoice #,”Items”,2,”Part”) = part number of 2nd Item
etc.

各ノードに対する複数のデータ要素

Multiple Data Elements per Node日付や数量などの項目値は、単一のデータ要素としてデータ・ノードに格納することはよくあります。しかし、複数のデータ要素をまとめて1つのデータ・ノードに格納すると便利な場合があります。特に、関連する一連のデータにまとめて、一緒にアクセスする場合に有用です。また、データベースへアクセス要求が少なくなる分、パフォーマンスは向上します。

例えば、上記の請求書データの例では、それぞれのデータ ・ノードに部品番号、数量、価格を別々に格納していますが、下記のように1つのデータ・ノードに要素リストとして保存することも可能です。

^Invoice(invoice #,”LineItems”,item #)

これを簡単にするため、Caché は、$list( ) 関数をサポートしています。これを使うと、複数のデータ要素をバイト文字列によって区切られた1つのデータとしてアクセスが可能で、後で分解も可能です。副要素も、逆に、副-副要素 等々を含むことができます。

論理ロックによる同時使用の強化

数千のユーザをサポートするシステムでは、競合するプロセス間の競合の削減は、高い処理能力に不可欠です。もっとも大きな競合は、同じデータをアクセスするトランザクション間にあります。

Caché プロセスは、更新中に衝突データのページ全体をロックしません。代わりに、トランザクションは頻繁なアクセスやデータのわずかな変更が必要であるため、Caché のデータベース・ロックは論理的なレベルで行います。最小単位の加算および減算する処理を行うことで、データベースの衝突をさらに削減できます。そして、それらはロックを必要としません(これらの処理は、ID番号の割り当てに使用したカウンタの増加や、統計カウンタの変更に特に役立ちます)。

Caché では、各トランザクション処理は高速に処理され、同時により多くのトランザクション処理を実行できます。

スパース配列の可変長データ

Caché は、本質的に完全可変長データでスパース配列にて格納されているため、大抵の場合、リレーショナル・データベースの半分より少ない格納領域しか必要としません。ディスク容量が少なくて済むばかりでなく、コンパクトなデータ保存によって、一度のI/O処理でより多くのデータの読み書きが可能となり、データがより効率良くキャッシュされるため、パフォーマンスが向上します。

データベースの宣言や定義は不要

Caché 多次元配列では、データや添え字によって生来的にタイプ(データ型)を指定しません。宣言、定義、ストレージの割り当ても不要です。グローバル・データは、単にデータが挿入された場所に生成されます。

ネームスペース

Caché では、データとコードは、Cache.DATというディスク・ファイルに保存されます(各ディレクトリにつき1つのみ)。その各ファイルには、多数のグローバル(多次元配列)が含まれます。ファイル内では、各グローバル名は特有である必要がありますが、異なるファイルでは同じグローバル名が使用可能です。これらのファイルは、広い意味でデータベースと考えることができます。

どのデータベースのファイルを使用するかを指定するのではなく、Caché の各プロセスがネームスペースを使用してデータにアクセスします。ネームスペースとは論理マップのことで、多次元グローバル配列名とコードをデータベースにマップします。データベースを、異なるドライブあるいはコンピュータに移動した場合、ネームスペース・マップのみ更新する必要があります。アプリケーション自身は変わりません。

通常、システム情報以外のネームスペースの全てのデータが、1つのデータベースに格納されます。しかし、ネームスペースには、自由裁量によるマッピングが可能な柔軟な構造が備わっています。そしてネームスペースが、他のコンピュータを含む複数のデータベースの内容をマップすることは、よくあります。

Caché の利点

パフォーマンス
煩雑な二次元テーブルの代わりに、効率的な多次元データ・モデルとスパース配列のストレージ技術を使用することで、データ・アクセスと更新時に必要なディスク入出力回数が減少し、アプリケーションはより速く動作します。

スケーラビリティ
トランザクショナル多次元データ・モデルによって、Caché アプリケーションは、そのパフォーマンスを損なわずに数千ものクライアントにまで拡張が可能です。これは多次元データ・モデルのデータ・アクセスが、リレーショナル・モデルと比較すると、データベースのサイズや複雑さにあまり影響されないためです。トランザクションは、複雑なJOINの実行や、テーブル間の移動なしで、必要なデータにアクセスできます。

Caché は、物理的なページをロックする代わりに、更新に対し論理的なロックを使用しており、これが、ネットワーク間の高度なデータ・キャッシュと同様、多くの同時使用を可能にしている理由の1つです。

迅速なアプリケーション開発
データ構造が複雑なデータに対して、自然で理解しやすい格納形式を提供しており、追加の複雑な宣言や定義が必要ないので、開発がより迅速にできます。グローバルへのダイレクト・アクセスは非常に単純で、ローカル配列のアクセスと同じ言語構文を使用できます。

費用対効果
同じような規模のリレーショナル・アプリケーションと比較して、Caché ベースのアプリケーションのハードウェアはずっと少なくて済み、データベース管理も不要です。システムの管理や操作も簡単です。

 

SQLアクセス

SQLは、Cachéで使用するクエリ言語で、DDL、トランザクション、参照整合性、トリガ、ストアド・プロシジャなどリレーショナル・データベースの機能全般をサポートしています。Caché は、ODBCと(純粋なJavaのドライバを使用した)JDBCからのアクセスも可能です。SQLコマンドとクエリは、Caché ObjectScriptとオブジェクト・メソッドにも埋め込むことができます。

SQLは、列と行によるテーブルとして表現したデータをアクセスします。Caché は、データを効率的な多次元データ・モデルに格納するため、SQLアプリケーションは、従来のリレーショナル・データベースよりもCaché の方が高速です。

Caché は、標準的なSQL構文に加え、他のデータベースで一般的な拡張機能の多くをサポートします。したがって、多くのSQLアプリケーション(特に、データベースに依存しないツール)を変更せずにCaché で実行することが可能です。しかし、ベンダ特定のストアド・プロシジャに対しては作業も必要で、インターシステムズでは、それを支援する変換プログラムがあります。

Caché SQLには、SQLコードを簡単にし、さらに読み書きを直感的にできるオブジェクト拡張機能を含みます。

従来のSQL

SELECT

SC.FullName, SM.Descr, MS.Value, SI.InvDate, SI.InvNumber

FROM

MainSales MS, SalesItemSI, SalesProduct SP, Sales Customer SC, SalesMarket SM

WHERE

SI.SalesItemID *=MS.SalesItem

AND SP.SalesProductID *=MS.Product

AND SC.SalesCustomerID *=MS.Customer

AND SM.SalesMarketID *= SC.SalesMarket

AND SP.DESCR = "Hammer"

オブジェクト拡張SQL

SELECT

Customer->FullName,

Customer->SalesMarket->Descr, Valus,

SalesItem->InvData, SalesItem->InvNumber

FROM MainSales

WHERE Product->Descr = 'Hammer'

 

Relational Gateway
Relational Gateway

 

Caché リレーショナル・ゲートウェイを 利用してのリレーショナル・データベース・アクセス

Caché リレーショナル・ゲートウェイは、他の(リレーショナル)データベースにCaché が発行したSQL要求を送信、実行することができます。ゲートウェイの使用により、Caché アプリケーションは、ほとんどのリレーショナル・データベースで検索やデータ更新処理を行うことが可能です。

また、Caché データベース・クラスをCaché SQLStorageオプションを使ってコンパイルすると、ゲートウェイは、Cachéアプリケーションが透過的にリレーショナル・データベースを利用できるようにします。しかし、Caché のポストリレーショナル・データベースにアクセスすると、アプリケーションはより高速で、拡張性が高くなります。

リレーショナルゲートウェイを使ってCachéで構築したアプリケーションでリレーショナルデータにアクセスが可能

 

Caché の利点

高速SQL
リレーショナル・アプリケーションは、Caché SQLを使用してCachéのポストリレーショナル・データベースにアップインすると、パフォーマンスを向上することができます。

迅速な開発
Caché では、SQLクエリを少ないコードで直感的に記述できます。

既存アプリケーションとリポート・ライタとの互換性
Caché のネイティブなODBCとJDBCドライバを使って、Cachéデータベースへの高速アクセスと、リレーショナルアプリケーションやリポート・ツールを利用することができます。Cachéリレーショナル・ゲートウェイにより、Cachéアプリケーションが他の(リレーショナル)データベースへのアクセスが可能です。

 

Cachéオブジェクト

Caché のオブジェクト・モデルはODMGの規格に準拠しています。Cachéは、カプセル化、埋め込みオブジェクト、多重継承、多態性、コレクションなど、オブジェクト指向プログラミングの全ての設計思想に則っています。

Caché が提供するCaché スクリプト言語は、これらのオブジェクトを直接操作します。また、Caché クラスをJava、EJB、COM、.NET、C++クラスなどに公開します。Caché クラスは、スタジオIDEのボタンをクリックするだけで、自動的にXMLとSOAPのサポートが可能です。その結果、Cachéオブジェクトは、一般的に使用されるオブジェクト技術から容易に使用することができます。

Cachéアプリケーション・サーバ外のプログラムからCachéクラスへアクセスするには、次のような方法があります。

  1. Cachéクラスはネイティブ言語において、1つのクラスに投影されます。Java、C++、C#や他のプログラムがCachéオブジェクトにアクセスする際、ネイティブ言語のテンプレートクラスを呼び出します。テンプレートクラス(Cachéによって自動的に生成される)はCaché アプリケーション・サーバと通信し、Cachéサーバ上のメソッドを呼び出し、プロパティへのアクセスや変更を行います。実行を高速にし、メッセージを減らすために、Cachéはオブジェクト・データのコピーをクライアント上にキャッシュし、可能な場合には他のメッセージとともに、更新を上書きします。

  2. 「軽量」プロジェクションは、ネイティブ言語のテンプレートクラスが、アプリケーション・サーバを飛び越えて、直接データベースにアクセスするデータベース・クラスに使用します。オブジェクトの状態はアプリケーション・サーバ上には維持されず、インメモリのプロパティだけがクライアント上に維持されます。このアプローチを取ると非常に高いスループットが得られますが、サーバーサイドでのクラスのインスタンス・メソッド(例:インメモリのプロパティへアクセスが必要なメソッド)を呼び出すことが出来ないため、機能は落ちます。

  3. インターシステムズ社のJalapeño(ハラペーニョ)テクノロジでは、使用しているIDEで開発者がPOJO (plain old java object)クラスを定義するように、まず、Javaのデータベース・クラスを作成し、その後、Cachéでデータベース・スキーマを自動生成し、Cachéクラスに対応させることができます。このアプローチではJavaクラスは変更されず、アプリケーションは、引き続きプロパティやメソッドにアクセスすることができます。Cachéは、データベース・オブジェクトを格納、検索、クエリを実行するためのAPIを備えたライブラリクラス(「オブジェクト・マネージャ」と呼ぶ)を提供しています。

これら3つのアプローチでは、ユーザプログラムに対しオブジェクトはローカルにありますが、Call-in (呼び出し)やTCPのどちらかを使って、Cachéは全ての通信を透過的に処理します。

Javaテンプレートとサポート・ライブラリは完全にJavaベースであるため、WebやJavaに特化したデバイス上で使用できます。

メソッド・ジェネレータ

Caché には、多くの独自の高度なオブジェクト技術があり、メソッド・ジェネレータもその一つです。メソッド・ジェネレータは、コンパイル時に実行するメソッドで、プログラムの実行時に実行するコードを生成します。また、プロパティ、メソッド定義、パラメータなどのクラス定義にもアクセスし、クラスにカスタマイズされたメソッドを生成できます。メソッド・ジェネレータは、多重継承と組み合わせて使用すると特に強力です。機能は、サブクラスにカスタマイズした多重継承クラスに機能定義できます。

Caché の利点

Caché は、完全なオブジェクト指向で、開発者にオブジェクト技術のあらゆる能力と高性能なトランザクション処理アプリケーションを提供します。

迅速なアプリケーション開発
オブジェクト技術は、プログラマの生産性を向上する強力なツールです。開発者は、非常に複雑なオブジェクトであっても単純に現実的な方法で考え、使うことができます。その結果、アプリケーション開発プロセスが速くなります。また、オブジェクト本来のモジュール性と相互運用性により、アプリケーションの保守が簡単になり、プログラマはその成果を、多くのプロジェクトに利用できるようになります。

自然な開発
 データベース・オブジェクトは開発者が使用する言語のネイティブなオブジェクトのように見えています。オブジェクトをレコードとカラムに分解する為の手間のかかるコードや、再アッセンブルなどは必要がありません。

 

用語認識による全文検索

Caché では、対象の用語を含むテキストをクエリで検索できる全文検索機能をサポートしています。テキスト内の実際の用語が、語形変化している場合でも検索可能です。

用語認識検索を使用するには、テキスト・フィールドに認識する用語のインデックスを作成する必要があります。このためには、次の手順を実行します。

  1. 最初に、テキスト・フィールドを主要単語に分解します。

  2. ほとんど検索対象にならない、一般的な単語を削除します (例えば、"は" や "その" などの単語を削除します)。

  3. 残りの単語の語幹でない部分を削除します (例えば、"検索しながら"は "検索"、"例として" は "例" とします)。

  4. 処理された単語がインデックス化されます。

通常、用語認識検索では、最初にこのような方法で検索テキストを処理し、そのインデックスを使って、一致する用語を検索します。

Word-Aware Indexing

用語認識によるインデックス化は、オブジェクトの更新とSQL の更新で保持されます。ほとんどの場合、検索は SQL クエリを使用して行われますが、手続き型コードでインデックスを直接使用することもできます。このようなクエリでは、より精度の高い検索を行うためにAND/OR 論理を扱うことができます。

用語認識アルゴリズムは、使用する自然言語ごとに異なります。用語認識検索は、英語、フランス語、ドイツ語、イタリア語、日本語、ポルトガル語、スペイン語などのさまざまな自然言語で使用できます。その他の言語もサポート対象に追加される予定です。

用語認識検索

WHERE Description
%Contains ('検索')
Caché は、以下の語などを検索する "検索", "検索する", "検索した", … 

 

WHERE Description
%Contains ('閉じる')
Caché は以下の語などを検索する "閉じる", "閉じた", …
しかしそれらは、 "閉店" や"閉口する" ではない。

 

Cachéの利点

体系化されていないテキストの高性能検索
 医師のメモや書類などの体系化されていないテキストを、キーワードや関連用語で簡単に検索できます。

超高速検索
用語認識とCachéビットマップ・テクノロジの連携により、大量テキストをきわめて短時間で検索できます。

 

 

トランザクショナル・ビットマップ・インデックス

Caché は、トランザクショナル・ビットマップ・インデックスという特有の機能を備えています。これは、複雑なクエリのパフォーマンスを劇的に向上させ、生データのデータウェアハウス・クエリを高速にします。

Traditional and Bit-Map Indexingデータベース性能は、データベース検索に頻繁に使用するプロパティのインデックスに非常に依存します。大半のデータベースは、列やプロパティなどの可能な値に対し、値をもつ列/オブジェクトに行IDのリストをもったインデックスを使用しています。

ビットマップ・インデックスは、別の種類のインデックスです。列/プロパティの各値に、それぞれ格納される行/オブジェクトは1ビットの異なるビットマップをもちます。1ビットとは、行/オブジェクトがその列/プロパティにその値をもつということです。

ビットマップ・インデックスの利点は、複雑なクエリもインデックス上で論理演算(ANDやOR)を使用して処理できるため、データベース全体を検索せずに、クエリ条件に合ったインスタンス(行)を効率的に見つけることができる点です。ビットマップ・インデックスは、多くの場合、100係以上の大規模なデータ検索をするようなクエリの応答時間を短くします。

これまでビットマップには問題が2つありました。それらは、a)リレーショナル・データベース内での更新時間が非常に遅いことと、b)ストレージ領域を多く使用しすぎることでした。したがって、リレーショナル・データベースでは、トランザクション処理アプリケーションで使用することはほとんどありません。

多次元データ構造を利用してこれらの2つの問題を解決する、“トランザクショナル・ビットマップ・インデックス”という新しい技術をCaché が導入しました。これらのビットマップの更新は、これまでのインデックスよりも高速で、格納領域を大幅に削減するよう高度な圧縮技術も使用しています。Cachéは、また複雑な「ビット・スライシング」テクノロジをサポートしています。その結果、オンライン・トランザクション処理データベース上で、何百万というレコードを瞬時に検索できる超高速ビットマップになりました。ビジネス・インテリジェンスとデータウェアハウス・アプリケーションは、“ライブ”データと連動できます。

Cachéは、従来のインデックスとトランザクショナル・ビットマップ・インデックスの両方を提供しています。また、複数列のインデックスもサポートしています。例えば、StateとCarModelのインデックスでは、指定の地区に登録した指定の車種の所有者を素早く特定できます。


Cachéの利点

革新的に高速なクエリ
トランザクショナル・ビットマップ技術を使用し、ユーザは主としてトランザクション処理に使用しているシステム上で、大規模なデータベースの超高速検索を実行できます。数百万ものレコードを瞬時に検索できます。

リアルタイム・データ分析
Caché のトランザクショナル・ビットマップ・インデックスにより、最新データのリアルタイム・データ分析が可能です。

低コスト
データウェアハウスや意思決定支援用に、別のコンピュータを準備する必要はありません。別のシステムへのデータの転送処理という日々のオペレーションや、その処理をサポートするデータベース管理者は不要です。

スケーラビリティ
 トランザクショナル・ビットマップのスピードにより、維持管理が必要で、かつ定期的な検索が必要な莫大な量のデータを抱えるシステムの構築が容易となります。

 

分散システム向けECP(Enterprise Caché Protocol)

分散システムでのスケーラブルなパフォーマンス

インターシステムズのECP(Enterprise Caché Protocol)は、非常に高性能でスケーラブルな技術で、分散システムのコンピュータ上のそれぞれのデータベースを使用することができます。ECPを使用するためにアプリケーションを変更する必要はなく、まるでローカル上にあるかのように、アプリケーションはデータベースを簡単に扱うことができます。

ここでは、ECPの機能を説明します。各アプリケーション・サーバはそれぞれのデータ・サーバをもっています。それらは、ECPを使用して、自身のディスクシステムのデータ、あるいは他のデータ・サーバから転送されたブロック上で処理することができます。クライアントから、リモート・データ・サーバ上に格納されている情報の要求があると、Cachéアプリケーション・サーバは、ローカルキャッシュからその要求に応答しようとします。応答できない場合、リモートのCachéデータ・サーバから必要なデータを要求します。応答には、データが格納されているデータベース・ブロックも含まれます。それらのブロックはアプリケーション・サーバにキャッシュされます。そしてそれらのブロックは、サーバで実行中の全てのアプリケーションで使用できます。ECPは、自動的にネットワークにまたがるキャッシュ整合性を管理し、データ・サーバに変更を返送します。

ECPのパフォーマンスとスケーラビリティの利点は非常に画期的なものです。ローカルでキャッシュ・データを頻繁に使用することで、クライアントは高速なレスポンスの恩恵を受けます。キャッシュ機能により、データベースとアプリケーション・サーバ間のネットワーク・トラフィックは大幅に減少するため、いかなるネットワークでも、より多くのサーバやクライアントをサポートできるようになります。しかしながら、殆どのアプリケーションはECPの利点を利用できますが、すぐにはその拡張性の利用が難しいアーキテクチャもあります。少しの単純な変更点がパフォーマンスを高めることもしばしばありますので、まずはベンチマークを行うことを推奨します。

DataServer

簡単な使用-アプリケーションの変更不要

ECPの使用は、アプリケーションに透過的です。シングル・サーバで実行するよう記述されたアプリケーションは、変更を加えずに、マルチサーバ環境でも実行できます。ECPを使用するには、システム管理者は、1つ以上のデータ・サーバをアプリケーション・サーバに認識させ、ネームスペース・マッピングを使用して、一定のあるいは全てのグローバル構造のリファレンスが、リモートのデータ・サーバを参照するよう設定するだけです。

柔軟な構成

全てのCaché システムは、アプリケーション・サーバ、および他のシステムのデータ・サーバとしての両方の機能をもつことができます。ECPは、アプリケーション・サーバとデータ・サーバのいかなる組み合わせが可能で、上限255システムまでの2地点間トポロジをサポートします。

Cachéの利点

超スケーラビリティ
ECPにより、使用が増えると、アプリケーション・サーバを増やすことができ、それぞれをローカル・データベースのように使用できます。ディスクのスループットが問題になる場合、データ・サーバをさらに追加し、データベースを論理的に分割できます。

高可用性
ユーザは複数のコンピュータに分散できるので、アプリケーション・サーバの障害は、あまり多くのユーザに影響を与えません。データ・サーバのクラッシュやリブート、一時的なネットワーク障害がある場合、アプリケーション・サーバは、わずかな停止時間があるだけで、明示的影響なく処理を継続できます。データ・サーバを、バックアップ・データサーバを持つフェイルオーバ・ハードウェア・クラスタ構成をとることで、可用性を著しく向上させることができます。

低コスト
大量の低コストのコンピュータは、"グリッド・コンピューティング"という大規模処理をサポートする強力なシステムと結合できます。

透過的な使用
ECPの使用には、アプリケーションにそための記述は必要はなく、Cachéアプリケーションは変更なく、ECP機能を利用できます。

 

耐障害性

厳格な管理化にある環境であっても、想定外の事象が発生する可能性があります。例えば、ハードウェア障害、停電、浸水などの自然災害のような深刻な事象が考えられます。このような事態が発生しても、医療や通信などの重要な業務では "停止"することが許されません。このような厳しい基準を満たすために、Cachéは障害からの正常なリカバリができるよう設計され、ユーザに与える影響を軽減または排除するよう、フェイルオーバーなどのさまざまなオプションを備えています。

Caché Write-Image Journaling (Caché ライト・イメージ・ジャーナリング) などの整合性機能によって、停電など、ほとんどのタイプのハードウェア障害に対してデータベースの整合性が保証され、ユーザに与える影響を最小限に抑えながら迅速なリカバリを可能にします。

また、ユーザに与える影響をさらに軽減または排除するために、高可用性を実現する以下の高度な構成オプションも用意されています。

  • フェイルオーバー・クラスタ
  • シャドウ・サーバ
  • 分散 ECP

フェイルオーバー・クラスタ

フェイルオーバー・クラスタ化されたハードウェアを使用した場合、複数のデータ・サーバが、同じディスクへのアクセスを共有しますが、一度にCaché を実行するアクティブなサーバは 1 台のみです。アクティブなサーバに障害が発生すると、その処理を引き継ぐ別のサーバでCaché が自動的に起動します。ユーザは、すぐに新しいサーバにサイン・インして元の処理に戻ることができます。

シャドウ・サーバ

Caché シャドウ・サーバは、TCP によって "緩く接続"されたバックアップ・サーバです。プライマリ・サーバは、シャドウ・サーバがデータベースの "ほぼ最新の"コピーを常に保持できるように、データベースの更新内容の論理レコードをシャドウ・サーバに常時送信しています。シャドウ・サーバへの切り替えは、フェイルオーバー・クラスタほど自動化されていませんが、ハードウェアが物理的に接続されていないため、シャドウ・サーバが別の場所にあったとしても、障害発生時にデータを保護できる可能性が高くなります。

シャドウ・サーバとフェイルオーバー・クラスタを組み合わせることで、さらに高い耐障害性を実現できます。

分散 ECP

ECP (Enterprise Caché Protocol)を使用した分散システムでは、一時的にネットワーク障害が発生したときやクラッシュしたデータ・サーバが再起動したときに、アプリケーション・サーバは再接続を試みます。指定した時間内に再接続が成功すれば、アプリケーション・サーバは未完了の要求を再送信して、わずかに中断する程度の影響が発生するのみで処理が続けられます。

ECP アプリケーション・サーバに障害が発生した場合、そのアプリケーション・サーバを使用しているユーザのみが影響を受けます。そのユーザは、別のアプリケーション・サーバにサインオンすれば作業を続けることができます。

ECP データ・サーバは、多くの場合、フェイルオーバー・クラスタとして構成されます。プライマリ・データ・サーバがクラッシュすると、そのデータ・サーバの作業をバックアップ・データ・サーバが引き継ぎ、わずかな中断が発生するだけで処理が停止することはありません。

ECPフェイルオーバー・クラスタ
An ECP Fail-over Cluster

Cachéの利点

高い防御力を持つデータベース
Caché Write-Image Journaling (Caché ライト・イメージ・ジャーナリング) などの整合性機能によって、停電など、ほとんどのタイプのハードウェア障害に対してデータベースの整合性が保証されます。

高可用性と耐障害性を備えた構成
Caché シャドウ・サーバ、ECP、またはフェイルオーバー・クラスタ、あるいはこれらすべてを使用することにより、短時間で障害からリカバリできるようになると同時に、ユーザに与える影響を最小限に抑え、場合によっては影響を排除することも可能です。

 

セキュリティモデル

Caché は、3つのアプリケーション開発方法をサポートするために設計された最新のセキュリティモデルを提供します。

Caché Security Model

Caché は、アプリケーションのパフォーマンスにかかる負荷を最小限にしながら、セキュリティ機能を提供します。

ユーザ、ロール、リソース、特権について

数多くのリソース(データベース、アプリケーションやシステムサービス)が存在し、セキュリティ管理者によって、リソースを使用する許可(READ、WRITE、USEなど)がユーザに割り当てられます。システム定義されたリソースに加え、セキュリティ管理者は特定アプリケーションのリソースを生成し、同じ方法で許可を割り当て、チェックすることが可能です。

単純化するために、ユーザには大抵1つかそれ以上の"ロール"(例:"LabTech"や"Payroll"など)が割り当てられ、セキュリティ管理者は特定リソースの個別ユーザではなくロールに特権を与えます。ユーザは割り当てられたロールの持つ特権を、全て継承します。

全てのプロセスは(例え、単に"Unknown User"という場合でも)ユーザ・ネームと関連付けられます。ユーザ・ネームは「認証」の間に認識されます。認証の簡単な例は、ユーザがユーザ・ネームとパスワードを入力し、正しいパスワードが入力されたことを、システム側が認証する時です。次回の認証では、ユーザ・ネームはプロセスに割り当てられ、ユーザ・ネームに関連して、許可が与えられます。("ユーザ"は人間である必要はありません。例えば、データを収集する管理デバイスや、Cachéに接続された他のシステム上で稼動するアプリケーションでもユーザとなります。) ユーザが認証されない場合、"Unknown User"としてユーザ・ネームが付けられ、一般的に与えられるプロセスや許可が付与されます。

Cachéへの接続は、一連のサービスによって管理されます。各々のサービスはパブリックかどうか(誰でも使うことができるか)、認証が必要かどうか(必要な場合は次に認証テストを実施します)、ユーザにはアクセス権限が必要かどうかを指定します。また、全てのユーザに対してアクセスが拒否されるように、サービスは個別では無効になるように設定されています。

特権の割り当てと管理は、Caché管理ポータルによって行うことができます。

アプリケーションに割り当てられたロール

ユーザへ追加特権を与える時、恒常的ではなく、一時的に付与する方が良い場合があります。例えば、セキュリティ管理者が、全ての権利(給与データベースへのアクセスと変更権限のような)をユーザへ与えるのではなく、給与管理アプリケーションへのアクセス権をユーザへ与え、アプリケーションが使用されている間に、そのアプリケーションがユーザの権限を上げることができます。

アプリケーションによってユーザの権限を上げられるようにする為には、アプリケーションへロールが割り当てられる必要があります。アプリケーションへアクセスした時、ユーザは一時的に追加ロールが与えられます。追加ロールは、単に全員に許可されている、アプリケーションが持っているリストの使用である可能性もあり、またユーザが既に取得しているロールに基づいて、カスタマイズされたものである可能性もあります。

この機能は、特にCSP(Caché Server Pages)を使ったブラウザベースのアプリケーションにおいて有効です。CSPを使うと、全URLの一部でアプリケーションネームを特定することができます。ユーザへCSPアプリケーションの使用許可を付与し、確定すると、一時ページリクエストの間、アプリケーションに割り当てられたロールを、ユーザは一時的に得ることができます。

また、セキュリティ管理者は特定のルーチンを指定することができます。そのルーチンでは、ユーザが特定のセキュリティテストに通った後で、特定のアプリケーションの追加ロールを付与する為にロールを上げることができます。この機能は厳密に管理され、CSPを使用しないアプリケーションがロール権限を上げるための手段です。

認証

パスワード使用、ユーザID特定に使用するKerberosプロトコルまで、Cachéは、様々なレベルでの認証機能をサポートしています。Kerberosは、非常に強力な認証機能で、速度、拡張性、使い易さの点で優れています。Kerberosを使うと、パスワードは、ネットワーク上には決して出ず、特別なセキュリティ機能を提供します。 Cachéは、シングルサインオンの実装をサポートしています。.

データベースの暗号化

Cachéは2種類のデータベースの暗号化をサポートしています。

  • セキュリティ管理者は、ディスク上に1つかそれ以上のCACHE.DATファイル(データベース) を暗号化用に割り当てています。これらのファイル中のデータは全て暗号化されます。
  • 開発者は、データの暗号・解凍にシステムファンクションを使用し、データベースに格納するか、もしくは送信されます。この機能は、特にデータベースにアクセスするユーザからデータを保護する必要のある機密データの暗号化に使います。

デフォルトでは、Cachéは、AES (Advanced Encryption Standard (AES) - 128、192、または256 bitのキーをサポートする相対的アルゴリズム-の実装によってデータを暗号化します。暗号化のキーは、保護されたメモリロケーションに保存されます。Caché は、キー管理のフル機能を提供しています。 また、ジャーナルも暗号化することができます。

監査

多くのアプリケーション、特にHIPAAやサーベンス・オックスリー法といった法令や規則の遵守を求められるアプリケーションは、一定のセキュリティ監査の機能を求められます。Cachéでは、全てのシステムとアプリケーションイベントが追記用ログに記録され、SQLを使ったクエリやレポートツールで呼び出すことが可能です。

Tech Guide

 



Previous Page

前ページ
第1章

第2章:
Caché多次元データ・サーバ

次ページ
第3章

Next Page