- Cachéテクノロジガイド
- JavaのためのCaché eXTreme
- 高可用性
- 機能と特徴
- デモンストレーション
- 導入事例
- ホワイトペーパー・アナリスト
レポート・カタログダウンロード - 製品仕様・ドキュメント
- Caché開発者向け情報
- InterSystems FAQ
- Caché eラーニング
(USページ) - 無償ダウンロード
Caché テクノロジガイド
第2章:
Caché 多次元データ・サーバ
Cachéの高速データベースは、多次元データ・モデル・エンジンを採用しています。これにより、表現力豊かなデータ構造のデータを効率的かつコンパクトに格納できます。オブジェクトとSQLは、クラスとテーブルを定義し、多次元構造へのマッピング(自動的に生成)を提供する統一データ辞書を指定することで実装されます。
統合データベース・アクセス
Caché は、データを格納、アクセスする方法として、プログラマが多次元構造へのオブジェクト・アクセス、SQLアクセス、ダイレクト・アクセスを自由に選択できます。アクセス方法に関係なく、 Caché は、多次元データ配列にデータを格納します。

データが格納されると、いずれのアクセス方法を使用しても、全く同時に同じデータを使用することが可能です。
統一データ・アーキテクチャはCaché のユニークな特徴です。データベースにオブジェクト・クラスを定義すると、Caché はSQLでアクセスできるデータのリレーショナル記述を自動的に生成します。同様に、リレーショナル・データベースのDDL記述をデータ・ディクショナリにインポートすると、Caché は自動的にオブジェクトのデータとリレーショナル・データベースの記述を生成し、オブジェクトとしてすぐにアクセスができます。Caché は、このような定義情報の組み合わせを管理するため、編集のためのデータ定義は1つだけです。プログラマは、オブジェクトとリレーショナル・テーブルの両方から、ディクショナリを編集、表示することができます。
Caché は、オブジェクトとテーブルをどのように多次元構造に格納するかのマッピングを自動的に生成します。あるいはプログラマが、マッピングを明示的に制御可能です。
Caché の利点柔軟性 作業の軽減 既存のスキルとアプリケーションの活用 |
多次元データ・モデル
根本的に、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.
各ノードに対する複数のデータ要素
日付や数量などの項目値は、単一のデータ要素としてデータ・ノードに格納することはよくあります。しかし、複数のデータ要素をまとめて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é は、物理的なページをロックする代わりに、更新に対し論理的なロックを使用しており、これが、ネットワーク間の高度なデータ・キャッシュと同様、多くの同時使用を可能にしている理由の1つです。 迅速なアプリケーション開発 費用対効果 |
SQLアクセス
SQLは、Cachéで使用するクエリ言語で、DDL、トランザクション、参照整合性、トリガ、ストアド・プロシジャなどリレーショナル・データベースの機能全般をサポートしています。Caché は、ODBCと(純粋なJavaのドライバを使用した)JDBCからのアクセスも可能です。SQLコマンドとクエリは、Caché ObjectScriptとオブジェクト・メソッドにも埋め込むことができます。
SQLは、列と行によるテーブルとして表現したデータをアクセスします。Caché は、データを効率的な多次元データ・モデルに格納するため、SQLアプリケーションは、従来のリレーショナル・データベースよりもCaché の方が高速です。
Caché は、標準的なSQL構文に加え、他のデータベースで一般的な拡張機能の多くをサポートします。したがって、多くのSQLアプリケーション(特に、データベースに依存しないツール)を変更せずにCaché で実行することが可能です。しかし、ベンダ特定のストアド・プロシジャに対しては作業も必要で、インターシステムズでは、それを支援する変換プログラムがあります。
Caché SQLには、SQLコードを簡単にし、さらに読み書きを直感的にできるオブジェクト拡張機能を含みます。
従来のSQL
|
オブジェクト拡張SQL
|
Relational Gateway |
Caché リレーショナル・ゲートウェイを 利用してのリレーショナル・データベース・アクセス
Caché リレーショナル・ゲートウェイは、他の(リレーショナル)データベースにCaché が発行したSQL要求を送信、実行することができます。ゲートウェイの使用により、Caché アプリケーションは、ほとんどのリレーショナル・データベースで検索やデータ更新処理を行うことが可能です。
また、Caché データベース・クラスをCaché SQLStorageオプションを使ってコンパイルすると、ゲートウェイは、Cachéアプリケーションが透過的にリレーショナル・データベースを利用できるようにします。しかし、Caché のポストリレーショナル・データベースにアクセスすると、アプリケーションはより高速で、拡張性が高くなります。
リレーショナルゲートウェイを使ってCachéで構築したアプリケーションでリレーショナルデータにアクセスが可能
Caché の利点高速SQL 迅速な開発 既存アプリケーションとリポート・ライタとの互換性 |
Cachéオブジェクト
Caché のオブジェクト・モデルはODMGの規格に準拠しています。Cachéは、カプセル化、埋め込みオブジェクト、多重継承、多態性、コレクションなど、オブジェクト指向プログラミングの全ての設計思想に則っています。
Caché が提供するCaché スクリプト言語は、これらのオブジェクトを直接操作します。また、Caché クラスをJava、EJB、COM、.NET、C++クラスなどに公開します。Caché クラスは、スタジオIDEのボタンをクリックするだけで、自動的にXMLとSOAPのサポートが可能です。その結果、Cachéオブジェクトは、一般的に使用されるオブジェクト技術から容易に使用することができます。
Cachéアプリケーション・サーバ外のプログラムからCachéクラスへアクセスするには、次のような方法があります。
- Cachéクラスはネイティブ言語において、1つのクラスに投影されます。Java、C++、C#や他のプログラムがCachéオブジェクトにアクセスする際、ネイティブ言語のテンプレートクラスを呼び出します。テンプレートクラス(Cachéによって自動的に生成される)はCaché アプリケーション・サーバと通信し、Cachéサーバ上のメソッドを呼び出し、プロパティへのアクセスや変更を行います。実行を高速にし、メッセージを減らすために、Cachéはオブジェクト・データのコピーをクライアント上にキャッシュし、可能な場合には他のメッセージとともに、更新を上書きします。
- 「軽量」プロジェクションは、ネイティブ言語のテンプレートクラスが、アプリケーション・サーバを飛び越えて、直接データベースにアクセスするデータベース・クラスに使用します。オブジェクトの状態はアプリケーション・サーバ上には維持されず、インメモリのプロパティだけがクライアント上に維持されます。このアプローチを取ると非常に高いスループットが得られますが、サーバーサイドでのクラスのインスタンス・メソッド(例:インメモリのプロパティへアクセスが必要なメソッド)を呼び出すことが出来ないため、機能は落ちます。
- インターシステムズ社の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é では、対象の用語を含むテキストをクエリで検索できる全文検索機能をサポートしています。テキスト内の実際の用語が、語形変化している場合でも検索可能です。
用語認識検索を使用するには、テキスト・フィールドに認識する用語のインデックスを作成する必要があります。このためには、次の手順を実行します。
- 最初に、テキスト・フィールドを主要単語に分解します。
- ほとんど検索対象にならない、一般的な単語を削除します (例えば、"は" や "その" などの単語を削除します)。
- 残りの単語の語幹でない部分を削除します (例えば、"検索しながら"は "検索"、"例として" は "例" とします)。
- 処理された単語がインデックス化されます。
通常、用語認識検索では、最初にこのような方法で検索テキストを処理し、そのインデックスを使って、一致する用語を検索します。
用語認識によるインデックス化は、オブジェクトの更新とSQL の更新で保持されます。ほとんどの場合、検索は SQL クエリを使用して行われますが、手続き型コードでインデックスを直接使用することもできます。このようなクエリでは、より精度の高い検索を行うためにAND/OR 論理を扱うことができます。
用語認識アルゴリズムは、使用する自然言語ごとに異なります。用語認識検索は、英語、フランス語、ドイツ語、イタリア語、日本語、ポルトガル語、スペイン語などのさまざまな自然言語で使用できます。その他の言語もサポート対象に追加される予定です。
用語認識検索
|
Cachéの利点体系化されていないテキストの高性能検索 超高速検索 |
トランザクショナル・ビットマップ・インデックス
Caché は、トランザクショナル・ビットマップ・インデックスという特有の機能を備えています。これは、複雑なクエリのパフォーマンスを劇的に向上させ、生データのデータウェアハウス・クエリを高速にします。
データベース性能は、データベース検索に頻繁に使用するプロパティのインデックスに非常に依存します。大半のデータベースは、列やプロパティなどの可能な値に対し、値をもつ列/オブジェクトに行IDのリストをもったインデックスを使用しています。
ビットマップ・インデックスは、別の種類のインデックスです。列/プロパティの各値に、それぞれ格納される行/オブジェクトは1ビットの異なるビットマップをもちます。1ビットとは、行/オブジェクトがその列/プロパティにその値をもつということです。
ビットマップ・インデックスの利点は、複雑なクエリもインデックス上で論理演算(ANDやOR)を使用して処理できるため、データベース全体を検索せずに、クエリ条件に合ったインスタンス(行)を効率的に見つけることができる点です。ビットマップ・インデックスは、多くの場合、100係以上の大規模なデータ検索をするようなクエリの応答時間を短くします。
これまでビットマップには問題が2つありました。それらは、a)リレーショナル・データベース内での更新時間が非常に遅いことと、b)ストレージ領域を多く使用しすぎることでした。したがって、リレーショナル・データベースでは、トランザクション処理アプリケーションで使用することはほとんどありません。
多次元データ構造を利用してこれらの2つの問題を解決する、“トランザクショナル・ビットマップ・インデックス”という新しい技術をCaché が導入しました。これらのビットマップの更新は、これまでのインデックスよりも高速で、格納領域を大幅に削減するよう高度な圧縮技術も使用しています。Cachéは、また複雑な「ビット・スライシング」テクノロジをサポートしています。その結果、オンライン・トランザクション処理データベース上で、何百万というレコードを瞬時に検索できる超高速ビットマップになりました。ビジネス・インテリジェンスとデータウェアハウス・アプリケーションは、“ライブ”データと連動できます。
Cachéは、従来のインデックスとトランザクショナル・ビットマップ・インデックスの両方を提供しています。また、複数列のインデックスもサポートしています。例えば、StateとCarModelのインデックスでは、指定の地区に登録した指定の車種の所有者を素早く特定できます。
Cachéの利点革新的に高速なクエリ リアルタイム・データ分析 低コスト スケーラビリティ |
分散システム向けECP(Enterprise Caché Protocol)
分散システムでのスケーラブルなパフォーマンス
インターシステムズのECP(Enterprise Caché Protocol)は、非常に高性能でスケーラブルな技術で、分散システムのコンピュータ上のそれぞれのデータベースを使用することができます。ECPを使用するためにアプリケーションを変更する必要はなく、まるでローカル上にあるかのように、アプリケーションはデータベースを簡単に扱うことができます。
ここでは、ECPの機能を説明します。各アプリケーション・サーバはそれぞれのデータ・サーバをもっています。それらは、ECPを使用して、自身のディスクシステムのデータ、あるいは他のデータ・サーバから転送されたブロック上で処理することができます。クライアントから、リモート・データ・サーバ上に格納されている情報の要求があると、Cachéアプリケーション・サーバは、ローカルキャッシュからその要求に応答しようとします。応答できない場合、リモートのCachéデータ・サーバから必要なデータを要求します。応答には、データが格納されているデータベース・ブロックも含まれます。それらのブロックはアプリケーション・サーバにキャッシュされます。そしてそれらのブロックは、サーバで実行中の全てのアプリケーションで使用できます。ECPは、自動的にネットワークにまたがるキャッシュ整合性を管理し、データ・サーバに変更を返送します。
ECPのパフォーマンスとスケーラビリティの利点は非常に画期的なものです。ローカルでキャッシュ・データを頻繁に使用することで、クライアントは高速なレスポンスの恩恵を受けます。キャッシュ機能により、データベースとアプリケーション・サーバ間のネットワーク・トラフィックは大幅に減少するため、いかなるネットワークでも、より多くのサーバやクライアントをサポートできるようになります。しかしながら、殆どのアプリケーションはECPの利点を利用できますが、すぐにはその拡張性の利用が難しいアーキテクチャもあります。少しの単純な変更点がパフォーマンスを高めることもしばしばありますので、まずはベンチマークを行うことを推奨します。

簡単な使用-アプリケーションの変更不要
ECPの使用は、アプリケーションに透過的です。シングル・サーバで実行するよう記述されたアプリケーションは、変更を加えずに、マルチサーバ環境でも実行できます。ECPを使用するには、システム管理者は、1つ以上のデータ・サーバをアプリケーション・サーバに認識させ、ネームスペース・マッピングを使用して、一定のあるいは全てのグローバル構造のリファレンスが、リモートのデータ・サーバを参照するよう設定するだけです。
柔軟な構成
全てのCaché システムは、アプリケーション・サーバ、および他のシステムのデータ・サーバとしての両方の機能をもつことができます。ECPは、アプリケーション・サーバとデータ・サーバのいかなる組み合わせが可能で、上限255システムまでの2地点間トポロジをサポートします。
Cachéの利点超スケーラビリティ 高可用性 低コスト 透過的な使用 |
耐障害性
厳格な管理化にある環境であっても、想定外の事象が発生する可能性があります。例えば、ハードウェア障害、停電、浸水などの自然災害のような深刻な事象が考えられます。このような事態が発生しても、医療や通信などの重要な業務では "停止"することが許されません。このような厳しい基準を満たすために、Cachéは障害からの正常なリカバリができるよう設計され、ユーザに与える影響を軽減または排除するよう、フェイルオーバーなどのさまざまなオプションを備えています。
Caché Write-Image Journaling (Caché ライト・イメージ・ジャーナリング) などの整合性機能によって、停電など、ほとんどのタイプのハードウェア障害に対してデータベースの整合性が保証され、ユーザに与える影響を最小限に抑えながら迅速なリカバリを可能にします。
また、ユーザに与える影響をさらに軽減または排除するために、高可用性を実現する以下の高度な構成オプションも用意されています。
- フェイルオーバー・クラスタ
- シャドウ・サーバ
- 分散 ECP
フェイルオーバー・クラスタ
フェイルオーバー・クラスタ化されたハードウェアを使用した場合、複数のデータ・サーバが、同じディスクへのアクセスを共有しますが、一度にCaché を実行するアクティブなサーバは 1 台のみです。アクティブなサーバに障害が発生すると、その処理を引き継ぐ別のサーバでCaché が自動的に起動します。ユーザは、すぐに新しいサーバにサイン・インして元の処理に戻ることができます。
シャドウ・サーバ
Caché シャドウ・サーバは、TCP によって "緩く接続"されたバックアップ・サーバです。プライマリ・サーバは、シャドウ・サーバがデータベースの "ほぼ最新の"コピーを常に保持できるように、データベースの更新内容の論理レコードをシャドウ・サーバに常時送信しています。シャドウ・サーバへの切り替えは、フェイルオーバー・クラスタほど自動化されていませんが、ハードウェアが物理的に接続されていないため、シャドウ・サーバが別の場所にあったとしても、障害発生時にデータを保護できる可能性が高くなります。
シャドウ・サーバとフェイルオーバー・クラスタを組み合わせることで、さらに高い耐障害性を実現できます。
分散 ECP
ECP (Enterprise Caché Protocol)を使用した分散システムでは、一時的にネットワーク障害が発生したときやクラッシュしたデータ・サーバが再起動したときに、アプリケーション・サーバは再接続を試みます。指定した時間内に再接続が成功すれば、アプリケーション・サーバは未完了の要求を再送信して、わずかに中断する程度の影響が発生するのみで処理が続けられます。
ECP アプリケーション・サーバに障害が発生した場合、そのアプリケーション・サーバを使用しているユーザのみが影響を受けます。そのユーザは、別のアプリケーション・サーバにサインオンすれば作業を続けることができます。
ECP データ・サーバは、多くの場合、フェイルオーバー・クラスタとして構成されます。プライマリ・データ・サーバがクラッシュすると、そのデータ・サーバの作業をバックアップ・データ・サーバが引き継ぎ、わずかな中断が発生するだけで処理が停止することはありません。
ECPフェイルオーバー・クラスタ

Cachéの利点高い防御力を持つデータベース 高可用性と耐障害性を備えた構成 |
セキュリティモデル
Caché は、3つのアプリケーション開発方法をサポートするために設計された最新のセキュリティモデルを提供します。

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を使ったクエリやレポートツールで呼び出すことが可能です。

第2章: |

