caché テクノロジガイド¨multivalue 46 cach éへのアプリケーションの移行 47...

56
Caché テクノロジガイド

Upload: phungminh

Post on 01-Jun-2019

224 views

Category:

Documents


0 download

TRANSCRIPT

Caché テクノロジガイド

目 次 はじめに 1

第1章 データモデリング リレーショナルとオブジェクトアクセス 4 リレーショナルテクノロジ 5

オブジェクトテクノロジとオブジェクト・データベース 6

オブジェクトアクセスとリレーショナルアクセス 6

Cachéオブジェクト・データモデルとオブジェクト・プログラミングの概要 6

オブジェクトの基本概念 8

データモデルとしてオブジェクトを選択する理由 8

オブジェクトデータストレージとリレーショナルアクセス 9

NoSQL 9

第2章 Caché多次元データサーバ 10 統合データベースアクセス 10

多次元データモデル 11

SQLアクセス 14

Cachéオブジェクト 16

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

用語認識によるテキスト検索 19

InterSystemsiKnowテクノロジ 20

分散システム向けECP(EnterpriseCacheProtocol) 22

障害回復と高可用性 25

セキュリティモデル 27

第3章 Cachéアプリケーション・サーバ 30 Caché仮想マシンとスクリプト言語 30

CachéObjectScript 32

Basic 38

MVBasic 40

C++ 40

Java 40

JavaのためのCachéeXTreme 41

Cachéと.NET 42

CachéとXML 43

CachéとWebサービス 44

CacheとMultiValue 46

Cachéへのアプリケーションの移行 47

第4章 InterSystems Zenテクノロジによる 高機能なWebアプリケーションの迅速な構築 48 CSPテクノロジ 48

Webページのクラス・アーキテクチャ 49

ZenとコンポーネントベースのWebページ 50

1

はじめに

コンピュータの世界は「ポストリレーショナル」時代へ30年前、リレーショナル・データベースは偉大なる革新として賞賛されました。旧来の融通のきかないデータベースに代わり、それぞれが一義のデータ・スキーマをもち、データを表形式に格納し、SQLを知る誰もがアクセス可能なリレーショナル・データベースは非常に普及し、SQLはデータベースにアクセスするための標準となりました。しかし、旧来のテクノロジと同様、リレーショナル・データベースには制限があり、主にパフォーマンス/スケーラビリティ、使いやすさ、現在の開発テクノロジとの親和性の点で、現実世界での適用範囲が制限されています。

コンピュータアプリケーションの使用と複雑さは益々増大し、また、システムに対し、リレーショナルテクノロジの機能を超える処理要求が次第に増えてきています。高性能でスケーラビリティを要求される多くの基幹アプリケーションは、リレーショナル・データベースに移行されず、現在、簡単なアプリケーションでさえ、従来のリレーショナルテクノロジの限界に近付き始めています。

リレーショナル・データベースと現在の開発テクノロジ間での“インピーダンス・ミスマッチ”は、深刻な問題です。開発が複雑になり、失敗する可能性が高くなっています。テーブル構造という単純さは、洗練されたクエリ言語(SQL)を支えていますが、現実社会のデータ構造を単純な列と行に分解することは困難です。その結果、莫大なテーブルの数、そしてそれらの関係を記憶し使用するのは困難となっています。列や行は単純ですが、プログラムでは、外部結合、ストアド・プロシ−ジャやトリガが広範囲に渡り必要となり、それは単純なことではありません。

現代のアプリケーションは、通常、オブジェクトテクノロジを使用して記述します。これにより、より素早く直感的に記述でき、情報を活用できます。開発は迅速になり、信頼性も高まります。残念なことに、オブジェクトは、もともとリレーショナル・データベースとの相性はよくありません。結果として生じるデータベース・オブジェクトが、2次元リレーショナル・モデルに無理に変換された場合、オブジェクトテクノロジの利点は損なわれます。

現在のトランザクション処理アプリケーションに対する要求は、リレーショナルテクノロジの能力をはるかに超えていますー大規模ネットワークを構築し、数千ものクライアントを接続し、しかも高パフォーマンス、Webテクノロジとの接続性や低コストでの簡単な運用などを提供しなければなりません。そして迅速な開発も求められています。

2

ブレークスルーアプリケーションを実現する高度なデータベーステクノロジCachéは、高性能なデータベーステクノロジの新世代です。Cachéはオブジェクト・データベース、高速なSQL、強力な多次元データアクセスを組み合わせ、同じデータに同時にアクセス可能となっています。データは、統合されたシングル・データディクショナリに一度記述されると、即座に全てのアクセス・メソッドが使用できます。Cachéは、リレーショナルテクノロジでは達成できない、パフォーマンスレベル、スケーラビリティ、迅速なプログラミングと使いやすさを提供します。

しかしCachéは、単なるデータベーステクノロジ以上のものを提供します。Cachéは先進のオブジェクトプログラム機能をもち、広範囲の多様なテクノロジと簡単に統合でき、そして独自のキャッシュテクノロジをもった極めて高性能なランタイム環境を提供するアプリケーション・サーバを備えています。

Cachéは、自身のスクリプト言語を持っています。Caché ObjectScriptは、非常にパワフルであり、また、オブジェクト指向プログラミング言語を簡単に学ぶことができます。Caché Basicは、広く使われているBasicプログラミング言語を拡張したもので、パワフルなデータアクセスとオブジェクト機能を含んでいます。また、Caché MV BasicはMultiValueアプリケーション(Pickアプリケーション、と呼ばれることもあります)で使われる、Basicプログラミング言語の一種でもあります。Java、C#やC++といったその他の言語は、直接呼出しや、ODBC、JDBC、.NETなどの他のインタフェースを通じてサポートされます。また、Cachéが提供するオブジェクトインタフェースによって、Cachéデータベースや、Cachéの他の機能に、プロパティやメソッドとしてアクセスすることが可能です。

また、Cachéは高度なWebアプリケーション開発用の優れた環境を提供するという点で、従来のデータベースをはるかに超えています。InterSystems Zenテクノロジにより、迅速な開発と機能豊富で極めてインタラクティブなWebページの実行が可能です。低価格なハードウェア上でさえ、何千もの同時Webユーザが、データベース・アプリケーションにアクセスできます。

ブラウザ・ベース以外のアプリケーションの場合、ユーザインタフェースは通常、Java、.NET、C#やC++など一般的なクライアント・ユーザインタフェーステクノロジのいずれかを使用してプログラムします。それ以外の開発をCachéで行うことで、最良の結果(最速のプログラミング、最高のパフォーマンス、最小限のメンテナンス)を得られます。しかし、Cachéは他のテクノロジとの相互運用性にも非常に優れており、一般的に使用されるほとんど全ての開発ツールもサポートしています。したがって、広範囲に渡る開発手法を使用することができます。

3

4

Chapter One

システム開発の初期工程において、開発者はデータモデルの基本的な方針を決める必要があります。大抵の場合、それは、リレーショナル・テーブルという従来型のデータモデルか、オブジェクトという新しいモデルのアプローチの選択となります。複雑なデータを扱う場合、多くの開発者は、オブジェクト・モデルの方が効果的だと考えます。

レガシーアプリケーションをCachéに置き換える場合、通常最初のステップは既存データモデルを移行することです。様々なリレーショナル、オブジェクト・データモデルを簡単にインポートし、Cachéの標準データ定義に置き換える方法も用意しています。一度Cachéに移行すると、データはオブジェクト、リレーショナル・テーブル、多次元配列としてアクセスすることが可能です。

Cachéは、それぞれが適している場面において、SQLとオブジェクト・データアクセスの両方が使用可能です。それぞれの使用形態と今日の開発者にオブジェクトのデータモデルが一般的に好まれる理由を理解するには、どのように、そしてなぜ各テクノロジが開発されたのかを理解することが有用です。

第1章 データモデリング リレーショナルとオブ ジェクトアクセス

5

リレーショナルテクノロジコンピュータが出始めた頃、情報処理は大型のメインフレームシステムを利用して行われ、データアクセスは、そのほとんどが情報システム部の専門家に限られていました。したがって、データベースは手作りの傾向があり、効率的なデータの検索は、データベースの完全な知識が必要でした。ユーザがあるレポートを必要とした場合、常にオーバーワークの中央のスタッフに作成を依頼しなければならず、通常、意思決定には間に合いませんでした。

リレーショナルテクノロジは、もともと1970年代にメインフレームで開発され、1980年代のミニコンピュータが誕生するまでは、大部分は研究課題のままでした。パーソナルコンピュータの出現により、SQLをベースにしたより使いやすいレポートライタによる“ユーザ中心の”時代へと突入しました——そのクエリ言語は、リレーショナルテクノロジから生まれました。現在ユーザは、自分自身でレポートやデータベースに対してその場でクエリを生成できるため、リレーショナルの使用は急増しました。

SQLは、さまざまな種類のデータに対する質問に使われる首尾一貫した言語です。非常に単純で標準化されたフォーマット —— 行や列で構成された2次元フォーマット —— の全データを参照すること

で動作します。このシンプルなデータモデルにより、質問のために使用する洗練されたクエリ言語の構成が可能ですが、その代償も大きくなってきています。生来的に、現実世界のデータ関係は複雑で、単純な行や列では収まらないという事実があり、よってデータは、複数のテーブルに分割して格納され、シンプルなタスクを完了するのに、“結合操作”をしなければなりません。これによって2つの問題が生じます。a)多くのテーブル“結合”が必要なため、クエリを書くのが難しくなっている(しばしば複雑な外部結合である)。b)リレーショナル・データベースが複雑な処理を行わなければならない場合、処理の負荷が非常に大きくなる。

SQLは、データベースの相互運用やレポート作成ツールの標準となりましたが、SQLはリレーショナル・データベースから生まれたことを理解し、それに縛られる必要はないということを理解することは重要です。Cachéは、より強力な多次元データベーステクノロジを使用して、クエリや更新言語として標準SQLをサポートし、さらにオブジェクト機能を組み込む拡張がなされています。

第1章 データモデリング リレーショナルとオブ ジェクトアクセス

6

Chapter One

オブジェクトテクノロジとオブジェクト・データベースオブジェクト・プログラミングとオブジェクト・データベースは、複雑な脳の活動をシミュレートする主要な研究結果です。脳は、複雑で多様なデータを保存でき、一見すると関連のない情報でも同じ様に処理します。この処理を行うためには複雑な構造を内部に隠しながら、複雑な振る舞いを実装する必要があります。より人間の思考に近い自然なやり方で開発者が作業できる、という特性は、明らかに最先端のアプリケーション構築手法およびテクノロジであり、大きな利点となります。

オブジェクトアクセスとリレーショナルアクセスオブジェクトテクノロジでは、複雑なデータをオブジェクト内に格納し、統一された簡単なインタフェースを使用してデータにアクセスできます。一方、リレーショナルテクノロジも一貫したインタフェースを備えていますが、現実世界がもつ複雑なデータを扱えないため、ユーザやプログラマが、その複雑さを一貫して処理することを余儀なくされています。

オブジェクトは複雑なデータを単純にモデル化できるため、オブジェクト・プログラミングは、複雑なアプリケーションのプログラムに最適な選択です。同様に、データベースのオブジェクトアクセスは、トランザクション処理などのデータベースの挿入、更新処理に最適な選択です。

Cachéは、オブジェクトアクセスをオブジェクト拡張SQLクエリ言語で補っています。SQLは、データの検索やレポート作成ツールとして、非常に強力な言語です。SQLは、トランザクション処理(この用途では扱いにくく、非効率)ではなく、クエリやレポート作成に最も適していると考えます。Caché SQLのオブジェクト拡張は、厄介なJOIN構文の大半をなくし、SQLをより使いやすくしています。

Cachéオブジェクト・データモデルとオブジェクト・プログラミングの概要Cachéオブジェクト・モデルは、ODMG(Object Database Management Group)の規格に準拠しており、多重継承機能などの多くの拡張機能をサポートしています。

オブジェクトテクノロジは、実際の人間の思考や情報の使用を反映しようとするものです。リレーショナル・データベースのテーブルとは異なり、オブジェクトはデータとコードを一括して扱います。例えば、Invoiceオブジェクトは、請求書番号や合計金額などのデータとPrint( )などのプログラム・コードをもちます。

7

Name:データは、Nameデータ型を

使用して格納

SSN:データは、整数のような

単純なデータ型、またはプログラマが

定義する複雑なデータ型(NNN-NN-NNNNなどの

9桁の文字列)

Address:オブジェクトを他の

オブジェクトに埋め込む方法を示します。

Addressは、StreetプロパティとCity

プロパティを持つ埋め込みオブジェクト

AccountRep:AccountRepは、多対一(複数のCustomersと1つのSalesPerson)でCustomerをSalesPersonオブジェクトに関係づけるプロパティです。埋め込みオブジェクトと異なり、関連するオブジェクトは独自のデータベースIDを持ち、別々に格納されます。IDを使用すると、Customerにアクセスせず、直接SalesPersonにアクセスできます。埋め込みオブジェクトと関連オブジェクトにアクセスする構文は同じです。(例えば、Customer. Address.CityとCustomer.AccountRep.Nameは同じ“ドット”構文を使用)。

Invoices:Customerには、Invoicesのコレクション(集合)があり、それぞれが独自のデータベースIDで別々に保存されている複雑なオブジェクトです。この例では、親子リレーションシップを使用し、CustomersとInvoices間に一対多(1つのCustomerと複数のInvoices)のリレーションシップをもっています(CustomerをもたないInvoiceは存在しませんが、InvoiceなしでもCustomerは存在します)。埋め込みオブジェクトのコレクションも可能。

概念的には、オブジェクトは、オブジェクトのデータ値である“プロパティ”とコードの“メソッド”の全コピーを含むパッケージです。オブジェクトのメソッドはメッセージを送信し、他のメソッドとやり取りします。記憶領域を効率的に利用するため、同じクラスのオブジェクトは同じコードをコピーして共有するのが一般的です(例えば、各Invoiceオブジェクトが、自分専用にコピーしたコードを所有することは現実的ではありません)。またCachéでは、メソッドは、メッセージ送信の負荷に耐えるのではなく、効率的な関数呼び出しの結果を呼びます。しかし、これらの実装テクノロジは、プログラマが意識することなく、 オブジェクトのメッセージ送信に関しては常に正確です。

オブジェクトとクラスの違いは何でしょう。クラスは、プログラマが提供する定義構造とコードです。全コード同様、データの本質(“型”)やデータの格納方法の記述を含みますが、 実際のデータはありません。オブジェクトは、クラスの特定の“インスタンス”です。例えば、請求書番号123456は、Invoiceクラスのオブジェクトです。

8

Chapter One

オブジェクトの基本概念継承は、 あるオブジェクト・クラスから新しいクラスを派生させる機能です。新しいクラス(サブクラス)は、スーパークラスのプロパティとメソッドを全て継承します。また独自に付加的なプロパティやメソッドをもちます。サブクラスのオブジェクトは、スーパークラスの関係をそのままもつと考えられます。例えば、 犬は哺乳類(mammal)であるため、DogクラスはMammalクラスの全てのプロパティとメソッドを継承し、かつ、DogTagNumberのような付加プロパティやメソッドをもちます。サブクラスは、継承した定義を書き換えることが可能です(例えば、InvoiceクラスのサブクラスのPrint( )メソッドは、InvoiceクラスのPrint( )メソッドと内容が異なる)。継承は、コードの再利用を促進し、主な改善箇所を反映しやすくします。

多重継承とは、 サブクラスが1つ以上のスーパークラスを引き継ぐことです。例えば、犬は哺乳類であり、 ペットでもあります。したがって、Dogのオブジェクト・クラスは、MammalクラスとPetクラスの両方の属性を継承可能です。

カプセル化は、オブジェクトを“ブラックボックス”のようなものとして表示することを意味します。パブリック・プロパティやメソッドは、他のメソッドから利用できますが、一方、プライベート・プロパティやメソッドは、同じクラスのメソッドでしかアクセスできません。したがって、アプリケーションは、オブジェクトの内部機能を認識する必要はなく、パブリック・プロパティとメソッドのみ扱います。カプセル化の機能により、プログラマはアプリケーションの他の部分に影響を与えることなく、クラスの内部機能を改善できます。

ポリモフィズムは、基本となるメソッドの実装が異なる場合も、複数のクラスで使用するメソッドが同じインタフェースを共有することを示します。例えば、クラスLetter、Mailing Label、ID BadgeがPrintというメソッドをもつと仮定します。印刷する場合、アプリケーションは、アクセスするオブジェクト・タイプを認識する必要はなく、オブジェクトのPrintメソッドを呼び出すだけです。

データモデルとしてオブジェクトを選択する理由新規にデータベース・アプリケーションを開発する場合、大半はオブジェクトテクノロジを選択します。これは、複雑なアプリケーションを迅速に開発でき、修正も容易にできるためです。オブジェクトテクノロジには、以下のような多くの利点があります。

■ オブジェクトは、現実世界のデータをより自然に表現する高度なデータ構造をサポート

■ プログラミングがより単純で、実行している処理や操作を簡単に追跡可能

Cachéの利点

Cachéは、完全なオブジェクト指向データベースであるため、高性能なトランザクション処理アプリケーションの開発者は、強力なオブジェクトテクノロジの全てを利用できます。

直観的なデータモデリングオブジェクトテクノロジにより、開発者は、非常に複雑な情報を単純で現実的な方法で処理することができます。その結果、アプリケーション開発プロセスが速くなります。

迅速アプリケーション開発カプセル化、継承、ポリモフィズムのオブジェクト概念により、クラスを再利用、再設定し、アプリケーション間で共有できます。したがって、開発者は多くのプロジェクトで、それらの成果を効率的に利用できます。

9

■ カスタマイズされたクラスのバージョンを、標準のものに簡単に置き換えることができ、アプリケーションを簡単にカスタマイズ可能

■ ブラックボックスと呼ばれるカプセル化技法は、 他のアプリケーションに影響を与えることなくオブジェクトの内部処理の改良・変更が可能

■ オブジェクトは、異なるアプリケーションやテクノロジに容易に接続できる方法を提供

■ オブジェクトテクノロジは、GUI(グラフィック・ユーザインタフェース)と生来的に適合

■ 新しいツールの多くが、オブジェクトテクノロジを採用

■ オブジェクトテクノロジは、ユーザインタフェースとアプリケーションの他の部分との独立性を確保。したがって、必要に応じて新規のユーザインタフェース(将来的に開発されるテクノロジなども含め)を採用する場合も、ほとんどコードを変更することなく再利用可能

オブジェクトデータストレージについて多くのアプリケーションが、オブジェクト・プログラミング言語で記述されているにもかかわらず、残念なことに、オブジェクト・モデルのデータをリレーショナル・データベースの2次元構造テーブルに押し込んでいる場合がよくあります。これは、オブジェクトテクノロジの長所を台無しにしています。

Cachéは、表現力豊かなオブジェクト・データを適切に格納する多次元データ構造を備えています。これにより、高速なデータアクセスや迅速なプログラミングが可能です。

さらに、リレーショナルアクセスが可能——もちろん、多くのツール(例えばレポートライタなど)は、データにアクセスするために、オブジェクトテクノロジではないSQLを使用しています。

Cachéの特徴として、データベース・オブジェクトのクラスを定義すると、そのデータに自動的に完全なSQLアクセスが提供されます。したがって、特別な設定をせずに、Cachéのデータで即座にSQLベースのツールが使用できます。さらに、Cachéの多次元データベースサーバが高性能であるという利点も体験できます。

また、その逆も可能です。リレーショナル・データベースのDDL定義をインポートすると、Cachéは自動的にデータのオブジェクト記述を生成し、SQLからのアクセスと同様に、オブジェクトとしてすぐにアクセスが可能です。

Caché統一データアーキテクチャは、データアクセスパスを同期化します。編集用のデータ記述は1つです。

No SQLCachéは、多次元データ構造へのダイレクトアクセスも可能です。そのため、必要な状況に応じて、No SQL、または“Not Only SQL”データベースとしても使用できます。

10

Chapter Two

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

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

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

統一データアーキテクチャはCachéのユニークな特徴です。データベースにオブジェクト・クラスを定義すると、CachéはSQLでアクセスできるデータのリレーショナル記述を自動的に生成します。同様に、リレーショナル・データベースのDDL記述をデータディクショナリにインポートすると、Cachéは自動的にオブジェクトのデータとリレーショナル・データベースの記述を生成し、オブジェクトとしてすぐにアクセスができます。Cachéは、このような定

義情報の組み合わせを管理するため、編集のためのデータ定義は1つだけです。プログラマは、オブジェクトとリレーショナル・テーブルの両方から、ディクショナリを編集、表示することができます。

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

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

Cachéの利点

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

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

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

多次元アクセス

Cachéサーバーページ、Zen

Webアクセス

オブジェクトアクセス

アプリケーション・サーバ多次元データサーバ

ダイレクトアクセス

多次元MultiValue

CachéeXTreme

リレーショナルアクセス

リレーショナルゲートウェイ

、 、

11

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

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

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

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

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

^Stock(item,size,color,pattern) = 数量

以下はデータの例です。^Stock("slip dress",4,"blue","floral") = 3

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

^Stock("slip dress",4).

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

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

^Invoice(invoice #,"Customer") = 顧客情報^Invoice(invoice #,"Date") = 請求日^Invoice(invoice #,"Items") = 請求書の商品^Invoice(invoice #,"Items",1,"Part") = 1番目の商品の品番^Invoice(invoice #,"Items",1,"Quantity") = 1番目の商品の数^Invoice(invoice #,"Items",1,"Price") = 1番目の商品の値段^Invoice(invoice #,"Items",2,"Part") = 2番目の商品の品番など

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

12

Chapter Two

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

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

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

^Invoice(invoice #,"LineItems",item #).

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

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

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

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

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

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

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

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

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

ネームスペース

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

13

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

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

Cachéの利点

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

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

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

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

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

14

Chapter Two

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

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

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

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

オブジェクト拡張SQL

SELECT

Customer->FullName,

Customer->SalesMarket->Descr, Value,

SalesItem->InvDate, SalesItem-

>InvNumber

FROM MainSales

WHERE Product->Descr = 'Hammer'

従来のSQL

SC.FullName, SM.Descr, MS.Value,

SI.InvDate, SI.InvNumber

FROM

MainSales MS, SalesItem SI,

SalesProduct SP, SalesCustomer SC,

SalesMarket SM

WHERE

SI.SalesItemID *= MS.SalesItem

AND SP.SalesProductID *= MS.Product

AND SC.SalesCustomerID *= MS.Customer

AND SM.SalesMarketID *= MS.SalesMarket

AND SP.Descr = 'Hammer'

15

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

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

また、選択的に、ゲートウェイは、Cachéデータベースが透過的にリレーショナル・データベースを利用することが可能です。しかし、Cachéのポストリレーショナル・データベースにアクセスすると、アプリケーションはより高速で、拡張性が高くなります。

リレーショナル・ゲートウェイ

Cachéの利点

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

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

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

Caché

ビジネスロジック

Cachéデータ

16

Chapter Two

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

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

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

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

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

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

これら3つのアプローチでは、ユーザプログラムに対しオブジェクトはローカルにあるように見えますが、インプロセスやTCPのどちらかを使って、Cachéは全ての通信を透過的に処理します。

17

メソッドジェネレータ

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

Cachéの利点

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

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

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

18

Chapter Two

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

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

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

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

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

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

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

Cachéの利点

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

“トランザクションスピード”での更新Cachéのビットマップは、従来のインデックスと同じ速さで更新を行うため、トランザクション処理を行うアプリケーションに適しています。

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

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

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

19

用語認識によるテキスト検索用語認識によるインデックスにより、Cachéは対象の用語を含むテキストをクエリで検索できる全文検索機能をサポートしています。テキスト内の実際の用語が、語形変化している場合でも検索可能です。用語認識アルゴリズムは、使用する自然言語ごとに異なります。用語認識検索は、英語、フランス語、ドイツ語、イタリア語、ポルトガル語、スペイン語などのさまざまな自然言語で使用できます。その他の言語もサポート対象に追加される予定です。

用語認識検索

WHERE Description

%Contains ('serch')

Caché finds "search",

"searched", "searching", -

WHERE Description

%Contains ('close')

Caché finds "close", "closed", -

But not "closet" or "disclose".

Cachéの利点

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

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

20

Chapter Two

InterSystems iKnowテクノロジInterSystems iKnowテクノロジによって、テキストや体系化されていないデータ・タイプの分析やインデックス作成を行い、重要な知識や概念、関係を識別できます。他の大多数のセマンティック検索テクノロジと異なり、iKnowはデータで最も興味深く意味のある要素を自動的に示します。ユーザは検索語さえ入力する必要がありません。

■ スマート・インデックス機能スマート・インデックス機能は、体系化されていないテキストを分析して、分かりやすい関係と概念のネットワークに変換します。事前に定義された辞書や分類、またオントロジは必要ありません。スマート・インデックス機能は、検索語を入力する必要なしに、膨大な量の体系化されていないテキストの中から適切なもの、関連するもの、代表的なものを的確に捉える機能を提供します。

スマート・インデックス機能では、数多くの異なる言語を使用できます。また、従来のテキストではない、非構造化データの中で、概念(繰り返し発生するパターン)を識別することもできます。

■ スマート・マッチングスマート・マッチングは、スマート・インデックスの結果を、特定のドメイン、組織または産業分野に固有の既存の知識に結び付けます。マッチングは、単語(完全一致、部分一致および“分散”一致)に限らず、意味のある概念と概念の組み合わせに基づきます。

■ スマート解釈スマート解釈は、スマート・インデックスとスマート・マッチングから導き出された結果に、分析やビジネス・ルールを適用します(これには、InterSystems Ensembleまたは InterSystems DeepSeeが必要になることがあります)。

21

Cachéの利点

非構造化データの分析およびインデックス作成のための組み込み機能Cachéには、InterSystems iKnowテクノロジが組み込まれています。サードパーティ製のソリューションやツールに頼ることなく、すべての構造化データと非構造化データにアクセスできます。

最小限の事前作業InterSystems iKnowテクノロジは、他のセマンティック検索ツールとは異なり、事前定義を行うことなく、概念とリレーションシップを検索できます。ユーザは、自分が検索する内容を知らなくても、その内容を検索できます。

多言語InterSystems iKnowテクノロジは複数の言語に対して機能します。これは、1つのドキュメント内に複数の言語が混在していても同じです。

多用途InterSystems iKnowテクノロジは、多種多様な問題の解決に使用できます。例えば、膨大なドキュメントで最も重要な要素を特定する場合、情報の類似性に基づいて自動的に情報をルーティングする場合、大量のテキストを包括的な要約にまとめる場合などに使用できます。

スマート・インデックスの仕組みテキストを文に分割する

関連性を見つける(動詞および前置詞である場合が多い)

関連性は、意味のある概念に分割される

パターンを見つける(「概念—関連—概念」のようなグループ)

22

Chapter Two

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

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

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

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

ECPのパフォーマンスとスケーラビリティの利点は非常に画期的なものです。ローカルでキャッシュ・データを頻繁に使用することで、クライアントは高速なレスポンスの恩恵を受けます。キャッシュ機能により、データベースとアプリケーション・サーバ間のネットワーク・トラフィックは大幅に減少します。

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

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

柔軟な構成

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

データサーバ

Cachéデータベース

アプリケーション・サーバアプリケーション・サーバ

共有キャッシュ

共有キャッシュ

シンクライアントまたはブラウザ

シンクライアントまたはブラウザ

ECP

23

Cachéの利点

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

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

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

透過的な使用アプリケーションは、ECPに特殊なコードを記述する必要はなく、Cachéアプリケーションは何の変更もなく自動的にECPを利用できます。

24

Chapter Two

25

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

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

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

■ データベースミラーリング■ 分散ECP■ フェイルオーバ・クラスタ

データベースミラーリング

ミラーリングとは、自動フェイルオーバによって、データをリアルタイムに別個のディスクに複製する高可用構成のことです。

データベースミラーでは、2つのCachéシステムを論理的にグループ化します。起動時に、このミラーは、これら2つの物理的に独立したシステムの一方を自動的にプライマリ・システムとして指定します。もう一方は、自動的にバックアップ・システムになります。ミラー化されたデータベースは、プライマリからバックアップのフェイルオーバ・メンバに向けて、TCPチャネルを通じてリアルタイムで同期されます。バックアップ・システムは、専用チャネルを介してミラー化したデータの受信で確認応答を返します。この確認応答により、特に、バックアップのフェイルオーバ・メンバの更新方法が示されます。

プライマリ

ミラー

データ

バックアップ

ミラー仮想IPEC

P接続 バインディング

ODBC、JDBC、SQL

Webクライアント

直接接続

データベースミラー

26

Chapter Two

外部クライアント(言語バインディング、ODBC/JDBC/SQLクライアント、直接接続ユーザなど)は、ミラー仮想IP(VIP)を通じてミラーに接続します。この仮想IPは、ミラーリングの構成時に指定します。ミラー VIPは、ミラーのプライマリ・システムのインタフェースに自動的にバインドされます。ミラー VIPの構成はオプションです。このVIPを指定しない場合、すべての外部クライアントは、実行中のプライマリに直接接続する必要があります。また、外部クライアントがフェイルオーバ・メンバと、それらのメンバのミラー内での現在の役割を把握する必要があります。

プライマリ・システムに障害が発生すると、処理はバックアップ・システムに自動的に引き継がれます。クライアントがVIPを通じてログオンするようにミラーが構成されていると、クライアントでは、どちらのミラー・メンバがサービスを行っているのかが認識されません。このフェイルオーバは、ユーザに対して完全に透過的になります。

Cachéでは、複数の(通常は、地理的に分離されている)ASYNCミラー・メンバを更新することもできるため、システムに冗長性を組み込んで、災害復旧時に利用できます。ASYNCメンバへのフェイルオーバは自動的には行われません。

さらに、中央データ・ストアを作成すると、複数のミラーが1つのASYNCメンバを更新することもできるため、全社規模のデータを使用してリアルタイムのビジネス・インテリジェンスが実現します。

ECPでのデータベースミラーの使用

データベースミラーで使用する場合、ECP(Enterprise Cache Protocol)アプリケーション・サーバには、ミラーのメンバ(現在のプライマリを含めて)について組み込みの認識機能を提供します。そのため、このアプリケーション・サーバはミラー VIPに依存せずに、選択されたプライマリ・システムに直接接続します。

ミラーのプライマリ・メンバに障害が発生すると、ECPアプリケーション・サーバは、これをサーバの再起動状態と見なします。このサーバは、新しいプライマリ・フェイルオーバ・メンバへの接続を再確立するだけで、プロセス内ワークロードの処理を継続します。ユーザは、最悪の場合でも、短時間の中断を経験するのみです。

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

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

Cachéの利点

高い防御力を持つデータベースCaché Write-Image Journaling

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

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

低コストで高可用性を実現Cachéのデータベースミラー機能は、ハードウェア、サポート、OSのライセンス、ストレージについて、多額の投資は不要です。さらに、Cachéのデータベースミラー機能は設定と管理が簡単なため、管理にかかるコストも最小限に抑えられます。

27

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

Cachéのセキュリティは、認証、権限付与、監査、データベース暗号化を基本にしています。Cachéは、アプリケーションのパフォーマンスにかかる負荷を最小限にしながら、これらのセキュリティ機能を提供します。

認証

認証とは、ユーザが自分が誰であるかをCachéに証明する方法です。(“ユーザ”は人である必要はありません。例えば、データを生成する計測用機器、もしくはCachéに接続しているシステム上で稼働するアプリケーションなどです)Cachéは、数多くの認証方法を提供しています。

■ ケルベロス:最も安全な認証法です。ケルベロス認証システムは、ネットワーク上で数学的に証明された強力な認証を提供します。

■ LDAP:Cachéは、LDAP(Lightweight Directory Access Protocol)による認証をサポートします。この場合、CachéはLDAPサーバにアクセスし、LDAPサーバのユーザのデータベースや、関連情報によって認証を行います。また、LDAPサーバはパスワード管理やポリシーなど、全ての面を管理します。

■ パスワード:Cachéはユーザにパスワードの入力を要求し、保存されたハッシュ値と、入力されたパスワードのハッシュ値を比較します。

■ 代理認証:代理認証はカスタマイズされた認証方法を作成するための手段として用意されています。アプリケーションの開発者が、代理認証コードを完全に制御します。Cachéは、カスタム認証コードを作成するためのテンプレートを持っています。

■ OSベース:OSベースの認証は、OSがそれぞれのユーザを識別することに基づいて認証します。Cachéを使用する時も、同じ識別情報を使用します。

アプリケーション

環境

セキュリティ運用

Cachéのセキュリティ環境によって保護

開発者がセキュリティ機能をアプリケーションに

簡単に組み込める

Cachéが稼動環境のセキュリティテクノロジと妥協せずに効率的に

動作することを保証する

28

Chapter Two

また、全てのユーザは、認証を行わずにCachéに接続することも可能です。

Cachéは、2要素認証のサポートを提供します。この方法では、「ユーザが知っている何か」と、「ユーザが持っている何か」によって、本人であることを確認するものです。例えば、ユーザがパスワード

(知っている何か)を入力すると、アプリケーションは携帯電話(持っている何か)にテキストメッセージを送付するという場合があります。テキストメッセージは、もう一つのセキュリティコードを含む場合があり、このセキュリティコードは、アプリケーションへのアクセスが許可される前に入力する必要があります。

Cachéは、OpenAM構成の参加を可能にすることで、シングルサインオンをサポートします。

権限

ユーザが認証されると、次のセキュリティ関連の運用は、そのユーザに使用、閲覧、変更を許可するかを決定することです。この決定とアクセス管理は、権限と呼ばれています。権限の割り当てと管理は、Caché管理ポータルによって行えます。

リソース、許可、特権について

セキュリティの第一の目標は、情報や1つまたは他の機能などのリソースを保護することです。Cachéにおいて、データベース、サービス、アプリケーション、ツール、また管理者としての行為もリソースとして扱えます。システム管理者は、READ、WRITE、 USEなど許可を割り当てることで、リソースへのアクセスを保証します。リソースや関連リソースに許可を割り当てることを含め、これらを特権と呼びます。システム定義されたリソースに加え、セキュリティ管理者は特定アプリケーションのリソースを生成し、同じ方法で許可を割り当て、チェックすることが可能です。

ロール

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

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

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

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

29

この機能は、Webベースのアプリケーションにおいて有効です。ユーザへアプリケーションの使用許可を付与し、確定すると、ページリクエストの間、アプリケーションに割り当てられたロールを、ユーザは一時的に得ることができます。

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

監査

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

暗号化:Data-at-Rest(保存データ)

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

■ セキュリティ管理者は、ディスク上に1つかそれ以上のCACHE.DATファイル(データベース)を暗号化用に割り当てています。これらのファイルの中のデータは、全て暗号化されています。

■ 開発者は、データの暗号化・解凍にシステムファンクションを使用します。システムファンクションはデータベースに格納するか、もしくは送信されます。この機能は、特にデータベースにアクセスするユーザからデータを保護する必要のある機密データの暗号化に使います。

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

また、ジャーナルも暗号化することができます。

暗号化:Data-in-Motion(実行データ)

Cachéは、SSL(Secure Sockets Layer)と、その後継のTLS(Transport Layer Security)をサポートし、数種類の接続を保護します。

■ サーバとして機能する時、CachéはSSLを使用した接続と通信が可能です。これには、Cachéのシャドウの宛先からシャドウ・ソースまでの接続を含みます。

■ クライアントとして機能する時、CachéはSSL通信を要求するサーバに接続します。

全ての場合、CachéはSSL/TLS構成を使用します。これにより、SSL/TLS接続の一部分として、Cachéインスタンスがもつ様々な性質を特定します。

data-in-motion の保護について、より詳細な情報は「CachéとWebサービス」をお読みください。

30

Chapter Three

Cachéアプリケーション・サーバは、先進のオブジェクト・プログラミング機能を提供します。高度なデータ・キャッシング機能を備え、さまざまなテクノロジへの簡単なアクセスを統合します。また、洗練されたデータベース・アプリケーションの迅速な開発が可能で、そのアプリケーションは高性能でサポートも簡単です。

具体的には、Cachéアプリケーション・サーバは、以下の機能を備えています。

■ 3つの組込みのスクリプト言語—Caché ObjectScript、Caché Basic、 Caché MV Basic—が稼働するCachéの仮想マシン

■ 透過的なルーティングを行い、同一または別コンピュータ上のCaché多次元データサーバへのアクセス機能

■ クライアント側キャッシュ機能をもつ接続ソフトウェア。これにより、一般的に使用されているテクノロジ(Java、.NET、C++、C#、COM、Delphiなど)からCaché Objectsに高速にアクセスできます。Cachéは、自動的にクライアントとアプリケーション・サーバ間のネットワーク機能を提供します。

■ SOAPとXMLとの互換性

■ ODBCとJDBCを使用したSQLアクセス(高速性を提供するためのクライアントとアプリケーション・サーバの洗練されたキャッシュ機能を含む)

■ リレーショナル・データベースへのアクセス

■ 高性能で開発が容易なWebアプリケーション向けCaché Server PagesとZen

■ Cachéスタジオ—迅速な開発のためのIDE(統合開発環境)とCachéアプリケーションのデバッグ

■ スクリプト言語用のコード。データベースに格納され、オンラインで変更可能。変更を全てのアプリケーション・サーバに自動的に伝搬させます。

Caché仮想マシンとスクリプト言語Cachéアプリケーション・サーバの中心は非常に高速なCaché仮想マシンで、Cachéのスクリプト言語をサポートしています。

■ Caché ObjectScriptは、極めて柔軟なデータ構造をもつ強力で習得しやすいオブジェクト指向言語です。

■ Caché Basicは、Visual BasicプログラマがCachéを簡単に使用し始めることができる言語です。VBScriptと同様ですが、Caché Basicは、Caché多次元配列にダイレクトアクセスするよう拡張されています。

■ Caché MVBasicは、MultiValue(Pick)アプリケーションにおいて使われるBasicプログラミング言語の一種です。MVBasicはオブジェクトをサポートし、Caché多次元配列にダイレクトアクセスするよう拡張されています。

第3章 Cachéアプリケーション・サーバ

31

Caché仮想マシンのデータベースアクセスは、高度に最適化されています。Caché仮想マシンの全てのユーザプロセスは、共有データベース・キャッシュにアクセスする共有メモリを呼び出し、多次元データ構造にダイレクトアクセスできます。他の全てのテクノロジ(Java、C++、ODBC、JDBC)は、Caché仮想マシンから接続し、データベースにアクセスします。

完全な相互運用性

Caché ObjectScript、BasicとMVBasicは同じCaché仮想マシンに実装されるため、完全な互換性があります。

■ 全てのオブジェクト・メソッドは、いずれかの言語で記述できます。また、同じクラスはどちらの言語でも使用できます。

■ それぞれの言語は、一方の言語で記述されたコードを呼び出すことができます。

■ 変数、配列、オブジェクトを共有します。

迅速な開発/柔軟な稼働

これらのスクリプト言語でできるだけ多くのコードを記述することで、ほとんどの場合、プログラマはアプリケーションを素早く開発でき、そのプログラムは、より高いスケーラビリティをもちながら、非常に高速に稼動します。さらにCaché Object Script、Basic、 またはMVBasicで記述されたコードは、ハードウェアやオペレーティング・システムを変更しても、変更は不要です。Cachéは、オペレーティング・システムやハードウェア上の全ての違いを自動的に処理します。

第3章 Cachéアプリケーション・サーバ

Cachéの利点

迅速なアプリケーション開発Caché ObjectScriptでの複雑なデータベース・アプリケーション開発は、他の主要言語に比べ画期的に速くなります——10%から100%以上速く行える場合がよくあります。迅速とは、プロジェクトの成功率が高くなることを意味します——少人数の開発者で、アプリケーションの変更が必要なときに、迅速に対応できます。

短期間での習得Basicは、世界で最も一般的に知られているコンピュータ言語です。Visual Basicになじみのある開発者は、Basicでのコードの記述やCachéオブジェクト・モデルを簡単に学習できます。

高速でスケーラブルデータベースにダイレクトアクセスできるCaché仮想マシンは、低価格ハードウェアで数万ものユーザまで使用可能な、高速アプリケーションを提供します。

柔軟性Caché仮想マシンで実行するコードは、変更なしに他のハードウェアやオペレーティング・システムで実行できます。コードは、データベースに格納され、自動的にアプリケーション・サーバに送信されます。

スクリプト言語

Cachéアプリケーション・サーバ

Caché仮想マシン

Cachéデータサーバ

32

Chapter Three

Caché ObjectScriptCaché ObjectScriptは強力なオブジェクト指向プログラミング言語で、データベース・アプリケーションを迅速に開発するように設計されています。この言語の重要な特徴は以下の通りです。

構造の概要

Caché ObjectScript はコマンド指向であるため、例えば、以下のような構文をもちます。

set x=a+b

do rotate(a,3)

if (x>3)

テキスト処理のために特に有用な、組み込みのシステム関数一式をもっています。それらの名前は全て記号“$”で始まり、変数と配列名を区別します。例えば以下のようになります。

$extract(string,from,to) // 文字列から文字セットを取得$length(string) // 文字列の長さを決定

演算式の処理は電卓のように左から右に順次実行されますが、括弧により、実行順序を制御できます。

柔軟なデータ格納構造

Caché ObjectScriptの一番の特徴は、高い柔軟性とダイナミックなデータ格納機能です。データは、以下に格納できます。

■ オブジェクト・プロパティ

■ 変数

■ スパース多次元配列(添え字にはあらゆるデータ型を使用できます)

■ スパース多次元配列型データベース・ファイル(“グローバル”)

まれな例外を除いては、Caché ObjectScriptのいずれの場所でも変数、配列、オブジェクトのプロパティ、グローバル参照を使用できます。

多くのコンピュータ言語では、データ型はハードウェアのストレージ概念の拡張です(例えば、整数、変動数、文字など)。しかし、Caché ObjectScriptでは、ユーザはそうしたデータ型を考慮する必要はありません。こうしたコンピュータ中心のデータ型は、単に迅速な開発の障害となるだけです。宣言と次元の記述が必要な場合、抑制どころかさらにエラーを生じさせます(2バイト整数のオーバーフローや、文字列オーバーフロー時のメモリ割り当てや、他のストレージの破壊などのエラー)。しかし、Person、Invoice、Animalなどのオブジェクトのタイプは、価値が高く、人間の思考方法と一致していると見られています。

33

したがって、Caché ObjectScriptのオブジェクト・プロパティタイプは強制されていますが、他の3種類のストレージ(変数・配列・グローバル)は、完全にポリモフィック(多態性)で、エンティティのタイプがなく、宣言や定義も不要です。使用されると、existenceに現れ、何を保存するのか、表現中のどこに使用されるかというデータの要求により型を変えます。配列でさえ、特定のサイズや次元、添え字データ型やデータの指定が不要です。例えば、開発者は、以下のシンプルな設定によりPersonと呼ばれる配列を生成することもできます。

set Person("Smith","John")= "I'm a good person"

この例では、データは、添え字用に文字列データを使用する2次元配列に格納されます。この配列の他のノードでは、2次元以外の構造の場合や、数値や文字列が混同している、あるいは添え字に他のデータ型を使用している場合もあります。例えば、以下のようなデータを格納している場合があります。

abc(3)

abc(3,-45.6,"Yes")

abc("Count")

これらは全て同じ配列に格納されています。

データベースのダイレクトアクセス

データベースへの直接参照(“グローバル参照”)は、本質的には、山形記号“^”で始まる多次元配列の参照です。この記号は、一時的なプライベートデータ処理ではなく、データベース内のデータ参照を示します。各データベース配列を、“グローバル”と呼びます。

多次元配列や変数は、宣言、定義、ストレージの事前確保を行うことなく、データベースのデータのアクセスや保存ができます。グローバルデータは、単純に現われ、データの存在する場所に格納されます。例えば、データベースにデータを格納するのに、以下のように記述することができます。

set ^Person("Smith","John")= "I'm a very good person"

また、後にデータを取り出すときには、以下のコードを使用することができます。

set x=^Person("Smith","John")

プログラマは、グローバルデータ配列のデータ構造を全く自由に作ることができます(「多次元データモデル」を参照)。

34

Chapter Three

オブジェクト参照

Caché ObjectsはODMGのデータモデルに準拠していますが、強力な機能拡張もあります。

Caché ObjectScriptでは、オブジェクトにアクセスするときに“oref”(参照するメモリ上のオブジェクトを指定する変数値)を使用します。“oref”の後に、ドット記号がきて、次にプロパティ名かメソッドがきます。オブジェクト参照は、表現式が使われるところならどこでも使用できます。

set name=person.Name // “person”は変数で、その値は1つのoref // “person”の名前は、変数“name”に割り当てられるif (person.Age>x) // その“person”の年齢が“x”より大きい場合set money=invoice.Total() // “Total( )”はメソッドで、請求書に記載された全ての項目の // 合計を計算する

戻り値が不要の場合、DOコマンドでメソッドを実行できます。例えば以下のようになります。do part.Increment() // “Increment( )”はメソッドで、値を返す

orefは、データベース・オブジェクトIDとは異なります。オブジェクトIDは、データベース・オブジェクトに永続的に結びつける値で、データベース・オブジェクトの検索と保存に使用します。オブジェクトをメモリ上にロードすると、再利用可能なoref 値を割り当て、そのオブジェクト・データにアクセスするために使われます。その後、同じデータベース・オブジェクトがメモリ上に読み込まれた場合、異なるoref 値を割り当てます。

HTMLとSQLアクセス

Webアプリケーションを構成するHTMLとSQLは、Caché ObjectScriptコードに埋め込むことができます。

コードの呼び出し

オブジェクト指向言語の中には、 コードを全て、メソッドの一部として組み込まなければならないものもあります。Caché ObjectScriptにそのような制限はなく、コードは直接あるいはオブジェクト構文から、しばしば呼び出すことができます。

コードは、DOコマンドを使用して実行される場合もあります。do rotate(a,3)

値を返すコードは、関数としても呼び出されます。以下はその例です。set x=a+$$insert(3,y)

これは、プログラマが書いたプロシージャあるいはサブルーチン“insert”を呼び出しています。コードは、オブジェクト・メソッドを実行することもできます。

set money=invoice.Total() // Total( )は、請求書の合計金額を返すpart.Increment() // “Increment( )”はメソッドであれば、 その返す値は利子ではない

パラメータは、値渡しと参照渡しのいずれの場合もサポートしています。

35

36

Chapter Three

ルーチン

Caché ObjectScriptコードは、 基本的に“ルーチン”というまとまりで構成されます。各ルーチン(通常32KBまで)は、 独立して編集、 格納、 コンパイルを行うという意味において最小単位です。ルーチンは、実行時に動的にリンクされており、プログラマにとって別のリンクステップはありません。ルーチンのコードはデータベースに保存されています。したがって、ルーチンはあらかじめ各コンピュータにインストールするのではなく、 必要に応じてネットワーク経由で動的に呼び出すことができます。

ルーチン内では、コードは、プロシージャとサブルーチン、あるいはその一方の一式として構成されます(オブジェクト・メソッドはプロシージャですが、さまざまな構文からアクセスできます)。

同じルーチン内のコードを呼び出す場合、プロシージャやサブルーチン名のみが必要です。それ以外の場合、ルーチン名を追加する必要があります。

do transfer() // 同じルーチンから“transfer”を呼び出すdo total^invoice() // ルーチン“invoice”から“total”を呼び出す

値を返すプロシージャやサブルーチンは、“$$”関数構文を使用して呼び出す必要があります。

set x=$$total^invoice() // 戻り値以外を使って“total”プロシージャを呼び出す

Cachéスタジオからルーチンの編集やコンパイルを行います。

37

オブジェクト・メソッド

クラス定義とそのメソッド・コードは、グローバルデータ・ファイルに格納され、クラスコンパイラがそれぞれのクラスをルーチンにコンパイルします。メソッドは、オブジェクト構文でのみ呼び出されますが、各メソッドはルーチン内のプロシージャです。例えば、PatientクラスがAdmitメソッドを定義し、Pat変数が特定のPatientオブジェクトを識別する場合、以下の構文を使用して、そのオブジェクトのAdmidメソッドを呼び出します。

do Pat.Admit() // PatientのAdmitメソッドを呼び出すset x = Pat.Admit() // 戻り値以外を使って同じメソッドを呼び出す

プロシ−ジャとパブリック/プライベート変数

プロシ−ジャとはルーチン内のコードブロックのことで、他の言語の関数と類似しています。プロシ−ジャには、名前、形式パラメータリスト、パブリック変数リスト、“{ }”で区切られたコードブロックなどです。例えば以下のようになります。

Admit(x,y)[name,recnum] { ...code goes here }

Caché ObjectScript では、共通の変数とプロシ−ジャ特有の変数があります。プロシ−ジャで使用する変数はプライベート変数で、パブリックリストにリストされない限り、プライベートとして扱われます。上記の例で、“name”と“recnum”はそれぞれの名前でパブリック変数にアクセスしますが、他の全ての変数は、このプロシ−ジャの起動中のみ存在します。“%”記号で始まる変数名は、常に暗黙的にパブリックです。

プロシ−ジャは、サブルーチンを組み込むことができますが、入れ子にはできません。

サブルーチン

ルーチンは、プロシ−ジャより軽いサブルーチンも組み込むことができます。サブルーチンは、パラメータリストを組み込んで値を返すことができます。パブリックリストあるいは正式なブロック構造はもちません。サブルーチンは、プロシ−ジャ内に埋め込むことができる、あるいはルーチンのプロシ−ジャと同じレベルに置くことができます。

サブルーチンは、呼び出し側と同じ一連のパブリック/プライベート変数を使って呼び出すことができ、より速く呼び出すことができます。プロシ−ジャに埋め込まれたサブルーチンは、プロシ−ジャと同じ変数を使用し、プロシ−ジャ内からのみ呼び出すことができます。プロシ−ジャに含まれないサブルーチンにおける変数参照は、全てパブリック変数の参照となります。

38

Chapter Three

BasicBasicは、世界で最も一般的なアプリケーション・プログラミング言語です。CachéのBasicは、他のCachéアプリケーション・サーバ機能と同様に、データサーバの中心となるデータ構造(多次元配列)へのダイレクトアクセスをサポートするように拡張されています。Visual Basic構文を使用して、Cachéオブジェクト・モデルを直接サポートし、Caché仮想マシンで実行します。

Basicは、クラス、メソッドあるいはCachéルーチンのどちらにも使用できます(「Caché ObjectScript」の『ルーチン』を参照)。BasicとCaché Object Scriptは、相互に呼び出すことができ、どちらの言語でもプロセスメモリ内の同じ変数、配列、オブジェクトにアクセスできます。

配列は以下のように拡張され、さらに強力になっています。

■ 配列名の前の“ ^ ”記号は、データベースの多次元配列(他のプロセスに共有される永続配列)への参照を意味します。

■ 添え字は、文字列、整数、10進数など全てのデータ型が使用可能です。

■ データは、同じ配列の複数の添え字レベルに格納できます。(例:A(“colors”)やA(“colors”,3)など)

■ 配列の宣言は不要で、常にスパース配列になっています。ノードが挿入された分だけ Cachéは領域を確保します。

■ トラバース(横断)機能は、指定された添え字レベルで、次の(前の)添え字を識別できます。

他の拡張機能は以下の通りです。

■ Start、Commit、Rollbackのトランザクション処理コマンド

■ データベースで使用するアトミック・インクリメント関数

■ Cachéアプリケーション・サーバとの

より良い統合を可能とする拡張

39

Basicのオブジェクトアクセス

Cachéでは、クラスはパッケージに組み込まれ、クラス名は後にピリオドがついてパッケージ名に含まれています。例えば、Payroll.PersonはSampleパッケージのPersonクラスです。オブジェクトを作成するためにBasicの新しいコマンドが使われます。

person = New Payroll.Person() // 新規Personオブジェクトの作成

Basicは、既存オブジェクトにアクセスできるようOpenIDコマンドが追加されました。

person = OpenID Payroll.Person(54) // OID 54でPersonオブジェクトを開く

以下は、Personのプロパティにアクセスするコード例です。

person.Name = "Smith, John" // personの名前を設定person.Home.City // personの出身地を参照person.Employer.Name // personの会社オブジェクトを // メモリ上に呼び出し、会社名にアクセスする

データベース・クラスは、Saveメソッドを使用してデータをディスクに保存します。例えば以下のようになります。

person.Save()

初めてオブジェクトが格納される場合には、オブジェクトIDを生成して、Personのデータを保存します。オブジェクトが変更されると(Employerなど)、それらは自動的に保存されます。

40

Chapter Three

MVBasicMVBasicは、Basicの一種でCachéに提供されたスクリプト言語のひとつですが、MultiValue

(Pick)システム用に書かれたアプリケーションを実行するためのものであり、MultiValueファイルへのアクセスや操作が可能になるなど、他にも様々な機能をサポートしています。

MVBasicはクラスメソッドとしても、またCachéルーチン(「Caché Object Script」の『ルーチン』を参照)としても使用することができます。MVBasicは、Cachéオブジェクトスクリプト、またはBasicを呼び出すことが可能です(その反対も可)。それら3つの言語は、プロセスメモリ内の同じ変数、配列、そしてオブジェクトへアクセスすることが可能です。

Caché MVBasicは、オブジェクトアクセスを含め、Caché Basicと同じ拡張性をもっています。しかしながら曖昧さが起きることが考えられるため、オブジェクト参照のピリオドセパレータ“.”ではなく、2つの文字列“- >”が使われます。

C++全てのCachéクラスは、Cachéクラスのそれぞれのプロパティに対応するメソッドとクラスのメソッドを、C++のクラスに投影することができます。C++のプログラムからは、それらのクラスを他のローカルのC++クラスと同様に認識します。Cachéは自動的にクライアントとサーバ間の通信を行います。クラスのプロパティはクライアントにキャッシュされ、C++メソッドの呼び出しにより、対応するサーバ側のメソッドを呼び出します。データベースにオブジェクトを格納し、後で取得するメソッドなどを含みます。

また、Cachéは、C++にCaché eXTremeテクノロジを提供します。これは、“軽いバインディング”で、C++のオブジェクトが直接Cachéの多次元データベースに挿入でき、非常に高いパフォーマンスを実現します。

JavaJavaは、一般的なオブジェクト指向のプログラミングテクノロジですが、「一回記述すれば、どこでも展開可能」な柔軟性をもつため、データベースに、データがどのように記述され、もしくはどこから読み込まれたかを特定しません。データに永続性が必要な時は、Javaの開発者はデータへのアクセス方法を選択し、実装する必要があります。

Cachéは、JavaアプリケーションがCachéデータベースにアクセスするためのいくつかの手段を提供します。

■ JDBCは、完全なJavaベース・ドライバ(タイプ4)を使用して、高性能なSQLアクセスを提供します。

■ Cachéクラスは、Javaクラスとして投影されるため、プロパティとメソッドはJavaオブジェクトとしてアクセスされます。

■ インターシステムズ社のJalapeño(ハラペーニョ)テクノロジにより、JavaクラスからCachéのクラスが生成できます。Cachéは、開発者が作成したクラスに触れることなく、自動的にデータベースにオブジェクトを保存し、抽出するためのメソッドを提供します。

■ JavaのためのCaché eXTreme 機能により、JNI(Java Native Interface)経由で、Cachéのデータを利用可能にします。

■ JPA(Java Persistent API)により、HibernateとEclipseLink 経由での実装が可能になり、標準のJava EEの永続性をサポートします。

41

Cachéの利点

高性能な永続性JavaのためのCaché eXTremeにより、Javaアプリケーションのデータベース I/O が高速化されます。これは、特に、ストリーミング・データ、膨大なデータ、短時間で 変 化するデータなどを扱うJavaアプリケーションの作成や機能強化に役立ちます。

複数モードのデータアクセスJavaのためのCaché eXTremeにより、JDBCを経由したJavaとCaché間の高速な“プロセス内”通信、オブジェクトアクセス、または直接的な多次元アクセスが実現されます。

習得期間の短縮JavaのためのCaché eXTremeは、Java標準を使用してデータベースアクセスを実現するため、Java開発者はJava環境内でほとんどの作業を実行できます。通常、1年間の経験を積んだJava開発者がCaché eXTremeを使用すると、数日間でCachéの開発が可能になります。

JavaのためのCaché eXTremeJavaのためのCaché eXTremeでは、Cachéのエンタープライズ機能と高性能機能を JNI(Java Native Interface)経由でJavaに公開します。これにより、JavaとCachéの“プロセス内”通信ができるため、データの格納と取得における遅延時間が短縮されます。

JavaのためのCaché eXTremeにより、開発者は以下のプロセス内通信ができる Java API(アプリケーション・プログラム・インタフェース)を使用できます。

■ JDBC経由でのリレーショナル・データの格納と取得(JNI 経由の JDBC)

■ Javaオブジェクトの格納と取得

■ 多次元データの格納と取得

グローバル API オプションにより、Java 開発者はCachéの効率的な多次元データ構造に直接アクセスできます。

Java ベースの CEP アプリケーションの永続性を実現

ディスクにおける情報の格納や取得では遅延時間が長いため、多くのCEP(複合イベント処理)アプリケーションでは永続データベースを使用できません。その代わりに、通常、これらのアプリケーションはメモリ内データベースを使用しますが、これにはデータやトランザクションを失うリスクがあります。JavaのためのCaché eXTremeを使用すると、JavaベースのCEPアプリケーションは、パフォーマンスを維持しながらデータを永続化できるようになります。

JavaのCaché eXTremeの構成

多次元

オブジェクト

42

Chapter Three

CACHÉと.NETオープンで柔軟なデータアクセスにより、Cachéは.NETをスムースに利用することができます。オブジェクト、SQL、XML、SOAPなど、その2つを接続する多くの方法があります。開発者は、好みのテクノロジを使用してアプリケーションの開発が可能です —— その全てにCachéの優れたパフォーマンスやスケーラビリティという利点がもたらされます。

ADO.NET

ADO.NETはADOの新しい形式で、.NETフレームワークでの使用に最適化されています。.NETアプリケーションの“データベースに非依存”を意図しています。一般的にデータベースとやり取りをするにはSQLを使用します。リレーショナルデータアクセスを介して、Cachéは、ADO.NETをネイティブでサポートしています。また、マイクロソフトODBC.NETおよびADO.NETに構築するリードオンリSOAP接続もサポートしています。

Webサービス

.NETには、2種類のWebサービスの方法があります。1つは、HTTPからXMLドキュメントを送信する方法と、もう1つは、SOAPプロトコルを使用して、XMLドキュメント交換を簡素化する方法です。両方のサービスで、CachéはXMLあるいはSOAPドキュメントとしてデータを公開することができるため、.NET Webサービスとシームレスに連動します。

Caché Managed Objects

Cachéは、Cachéオブジェクト・クラスから、.NETアッセンブリ(あるいは、C#ソースコード)を自動生成します。Visualスタジオの開発環境を使用したい開発者に対しては、Visualスタジオのプラグインを提供しています。

Cachéの利点

高速データデータサーバとしてCachéを使用するWebアプリケーションは、Cachéの多次元データエンジンが提供する高性能で優れたスケーラビリティという利点を得ます。

迅速な.NETでの開発開発者は、慣れ親しんだ環境で好みのツールを使用するとき、より生産性が向上します。SQLとオブジェクト・データアクセスの両方を提供することで、Cachéは一般的な開発テクノロジとツールを広範囲にサポートします。

43

CACHÉとXMLHTMLが、データを表示するためのインターネット互換のマークアップ言語であるように、XMLは、アプリケーション間のデータを交換するためのマークアップ言語です。XMLデータは階層的な多次元構造になっており、Caché多次元データエンジンとの親和性が高くなっています。

XMLのエクスポート

CachéクラスとXMLとの互換性を維持するために必要なことは、Cachéにある%XMLAdaptorクラスからXMLを継承するだけです。これにより、以下のことを行うのに必要なメソッドの全てを提供します。

■ クラスにDTD(文書型定義)かXMLスキーマのいずれかを生成する。Cachéは、自動的にDTDとXMLスキーマを生成しますが、クラスのXML形式をカスタマイズしたい場合は開発者自身が行うことも可能。

■ 定義済みのDTDあるいはスキーマに沿って、XMLとして(クラスのインスタンス)データを、自動的にフォーマットする。

XMLのインポート

Cachéは、開発者が以下を実行できるメソッドを提供する、他のクラスを搭載しています。

■ XMLスキーマのインポートと、対応するCachéクラスの自動生成

■ 単純なAPIで、Cachéクラスのインスタンス(オブジェクト)としてXMLドキュメント内のデータをインポート

■ 組み込みのXML(SAX)パーサによるXMLドキュメントの解析と検証

44

Chapter Three

CachéとWebサービスWebサービスにより、アプリケーションの機能をネットワーク経由で共有できます。これは、インターネットを通じて世界中で共有することも、組織内やシステム内で共有することもできます。Webサービスの本体はXMLドキュメントです。通常、このドキュメントは、SOAP(Simple Object Access Protocol)標準に従ってフォーマット処理された“エンベロープ”に格納されます。Webサービスには、WSDL(Webサービス記述言語)で記述されたインタフェースがあります。

既存のCachéクラスは、Cachéに用意されている適切なシステム・レベルのクラスから継承するだけで、Webサービスにすることができます。また、Webサービス・ウィザードを使用すると、数回クリックするだけで新しい Webサービスを生成できます。どちらの場合も、Webサービスのコンパイル時に、そのサービスのWSDL記述子がCachéによって生成されます。また、必要な“エンベロープ”の作成とフォーマット処理も実行されます。さらに、Cachéにより、このサービスをテストするためのWebページが自動的に生成されるため、迅速な開発が容易になります。このとき、クライアント・アプリケーションを作成する必要はありません。

Cachéの利点

XMLへの簡単な接続Cachéの多重継承という機能の利点により、CachéクラスはXMLと双方向のインタフェースを備えることができます。その結果、Cachéクラスは、XMLドキュメントとスキーマに素早く簡単に変換できます。同様に、XMLスキーマとドキュメントは、Cachéクラス定義とオブジェクトに変換できます。

インスタントWebサービスCachéクラスは、わずか数回のマウスの操作でWebサービスとして公開できます。Cachéは自動的にWSDL記述子と、フォーマットされたSOAPエンベロープを自動生成します。

セキュアなWebサービスCachéは、Webサービスの一貫性や機密性を簡単に実現するための機能を提供します。WSポリシーのフレームワークを使用し、Webサービスの安全性を確保するタスクを単純化します。

高速XMLアプリケーションの迅速な開発Cachéに生来的に備わる多次元データ構造は、XMLドキュメントとの適合性に優れ、開発者はXMLとCachéドキュメントのデータ交換のための“マップ”を、手動でコーディングする必要はありません。また、処理のオーバーヘッドも少なく、アプリケーションも高速です。

45

Webサービスのセキュリティ保護

Webサービスは、“データの移動”を意味します。また、このサービス元が“不明な”場合もあります。そのため、特別なセキュリティ基準が必要になります。

Cachéでは、接続をセキュリティ保護するSSLとTLSの使用をサポートしています。Webサービス自体については、そのサービスの“エンベロープ”から得られる情報によって、 途中で改ざんされていないことや Web サービス元を受信者が確認したり、コンテンツを暗号化できます。

Cachéは、OASISオープン標準化機構が発行するWS-Securityの仕様書で概説されている多くの機能を実装しています。

■ WS-Security ヘッダ◦メッセージの整合性を実現  セキュリティ・ヘッダがSOAPメッセージのヘッダに追加されます。メッセージのセキュ

リティ関連情報は、このヘッダにすべて格納されます。この情報には、トークン(ユーザ名、バイナリ・セキュリティ、タイムスタンプ)や署名要素、暗号化キー要素などがあります。

■ XML 署名リスト◦メッセージの整合性を実現  Webサービス元を検証できます。

■ WS-Security トークンのサポート◦ユーザ名トークン 認証が必要な Webサービスに対するIDを検証できます。◦バイナリ・セキュリティ・トークン 署名要素および暗号化キー要素の参照に使われます。

■ XML 暗号化◦メッセージの機密性を実現

Webサービスのセキュリティ構成

Webサービスのセキュリティ構成と管理を容易にするために、CachéではW3C(World Wide Web Consortium)で概説されたWS-Policyフレームワークを使用します。ウィザードにより、アプリケーション開発者はWS-Policyを効率的に生成できます。このウィザードには、このポリシーの詳細項目を選択するための各種オプションがあります。

SOAPログ

SOAPメッセージのログやトレースは多くの場合に役立ちます。これによって、回線を通じて送信された内容を確認できます。CachéのSOAPログには、セキュリティ情報だけでなく、着信メッセージと発信メッセージを必要に応じて記録できます。

46

Chapter Three

CachéとMultiValueCachéは、MultiValueアプリケーション(Pickベース・アプリケーションとも呼ばれる)の開発と実行に必要な機能をすべて備えています。MultiValueの機能は以下の通りです。

■ MVBasic言語

■ ファイルアクセス     MultiValueファイルには、通常のOPEN/READ/WRITEなどのMVBasic記述、

およびMultiValueクエリを使用して、MultiValueプログラムからアクセスできます。また、オブジェクトアクセス、多次元配列への直接アクセス、SQLなど、Cachéのあらゆる通常のメカニズムを使用して、MVBasicなどの言語によってアクセスすることもできます。

■ クエリ言語     CachéのMultiValueクエリ言語(CMQL)は、MultiValueファイルのデータ

選択とレポート形式機能を提供します。これらのクエリではCachéのきわめて高性能なSQLエンジンが使用されるため、信頼性の強化や実行の最適化が実現し、精度の高い一連のインデックス機能を使用できます。

■ データディクショナリ(7から10行の構成について)     MultiValueファイルには、MultiValueデータディクショナリ内に対応するファ

イルの記述があります。これは、MVBasicコードや従来のMultiValue "ED" エディタで直接編集できます。

     MultiValueファイルには、対応するCachéクラス定義もあります。クラス定義は、オブジェクトアクセスまたはSQLアクセスでデータを使用可能にする場合に不可欠です。

■ Procs、パラグラフとフレーズ

■ コマンドシェル     MultiValueコマンドシェルは、ターミナル環境から実行されます。通常の

MultiValueコマンドシェルの機能に加え、CachéではMVBasicのコマンドを直接コマンドシェル内で実行することができます。

このMultiValueの機能は、分離したMultiValue実装機能ではなく、Cachéの一部分として提供されます。また、Cachéの多次元データベースエンジン、ランタイム機能、開発テクノロジを使用します。これにより、MultiValueのユーザは、Cachéの全ての機能を利用することが可能です。

Cachéの利点

古いアプリケーションを活性化Cachéは古いMultiValueのアプリケーションをブラウザインタフェース、オブジェクトアクセス、堅牢なSQLとWebサ ー ビ ス で 活 性 化 さ せ ま す。MultiValueアプリケーションは、要求の多い環境下でその力を発揮し、常に進化し続ける先進的なデータベースとして存在し続けています。

新しいアプリケーションを迅速に構築MultiValueはCaché上で言語やファイル ア ク セ ス と し て 実 装 さ れ る の で、Cachéが本来持っている全ての機能を使用して、新機能を迅速に構築することができます。MultiValueのプログラマは、MVBasic言語を使いながらでも、オブジェクト・プログラミングの利点を活用し、他のアプリケーションとやり取りすることができます。

MultiValueユーザへ、優れた信頼性、高パフォーマンス、拡張性を提供CachéはMultiValueユーザへ、劇的に高いパフォーマンスと拡張性を提供します。加えて、Cachéは病院のように、24時間稼動で、ダウンタイムが許されない状況で使われています。Cachéは高度なジャーナリングとトランザクションプロセスを提供する“強靭なデータベース”であり、且つフォルト・トレランスの構成をとることができます。

47

Cachéへのアプリケーションの移行Cachéは、数多くのテクノロジに基づく既存アプリケーションをCachéに移行する際に役立つ機能とユーティリティを提供します。これにより、Cachéのパフォーマンスやスケーラビリティ、先進機能を使用しながら、既存のデータの維持や既存のコードの活用ができます。

リレーショナル・テクノロジからの移行

Cachéには、SQLの実装に特化した、アプリケーションを移行する際に役立つ機能が用意されています。

■ Microsoft SQLサーバおよびSybase Adaptive Server  Caché TSQLは、Transact-SQLの実装です。MicrosoftおよびSybaseの両

方に実装するための多くの機能をサポートしています。

■ Informix  Caché ISQLはInformix ISQLの実装であり、多くのInformix ISQL機能をサ

ポートしています。

Cachéには、DDL、DML、およびストアド・プロシージャのインポートとコンパイル用に、システム・レベルのクラスが用意されています。また、既存のデータをCachéにインポートするためのデータ移行ウィザードがあります。

MultiValueテクノロジからの移行

Cachéでは、すべての一般的なMultiValue環境(Universe、Unidata、JBASE、D3、Realityなど)からの移行をサポートしています。

■ Cachéの多次元配列(グローバル)はMultiValueファイルの上位セットであるため、MultiValueテクノロジに基づく既存のデータやスキーマを簡単にCachéに移行できます。

■ Caché MVBasicは、MultiValueアプリケーションで使用されているBASICプログラミング言語の実装であり、高度に最適化されています。言語固有の差異はエミュレーション・スイッチによって調整されるため、移行時に必要なコードの変更が最小限になります。

■ Cachéでは、MultiValueクエリ言語であるCMQLを利用できます。CMQLは高度に最適化されたSQLクエリ・エンジンに実装されています。

Cachéの利点

簡単な移行各種のユーティリティとウィザードによって、できる限り簡単にリレーショナル・テクノロジやMultiValueテクノロジから移行できます。

パフォーマンスの向上Cachéベースのアプリケーションでは、リレーショナル・テクノロジに基づくアプリケーションよりも実行速度が最大で5倍も高速になることが明らかにされています。

将来の開発に対応する多数のオプション移 行 の 完 了 後 に も、Cachéの 全 機 能

(InterSystems Zenテクノロジ、オブジェクト指向開発、iKnowテクノロジなど)を使用して、アプリケーションの機能強化を継続できます。

スケーラビリティ、セキュリティ、および回復力の向上Cachéベースのアプリケーションでは、ECP(Enterprise Cache Protocol)やCachéセキュリティモデル、ミラーリングなどの機能を利用できます。

48

Chapter Four

現在、多くのアプリケーションではWebブラウザ内で実行するユーザインタフェースを提供しています。さらに、それらのインタフェースの多くは、デスクトップ・コンピュータに導入されたアプリケーションと同様に、多機能で洗練されています。CachéにはInterSystems ZenTMテクノロジが組み込まれており、多機能なWebアプリケーションを迅速に作成できます。

CSPテクノロジCaché Server Pages(CSP)テクノロジは、Zenの基盤であり、Webアプリケーションを稼働させるための機能を提供します。CSPの特性は以下の通りです。

■ ダイナミック・サーバページ —— 単に静的HTMLを返すWebサーバではなく、ページは、アプリケーション・コードによって、アプリケーション・サーバ上で動的に生成されるため、アプリケーションは、さまざまな要求に迅速に応答でき、ブラウザに返送された結果のページを作成します。

■ セッションモデル —— 単一のブラウザからのページに関係する全ての処理(最初のブラウザ・リクエストからアプリケーションが終了するか、プログラムしたタイムアウトが発生するまで)は、セッションの一部と見なされます。

■ サーバの状態の保存 —— セッション中、サーバ上のアプリケーションデータ(またアプリケーション文脈全体さえも)は、自動的にブラウザ・リクエストを通して保持され、複雑なアプリケーションの開発、実行を格段に容易にします。

■ ユーザ認証 —— 全てのCaché認証機能が使用可能です。

■ 暗号化 —— Cachéは、リクエストの認証や、改ざん防止のため、自動的にURLのデータを暗号化します。暗号キーは、サーバ上にのみ保管され、1つのセッション中にのみ有効です。

第4章 InterSystems Zenテクノロジによる 高機能なWebアプリケーションの迅速な構築

49

Webページのクラス・アーキテクチャCachéでは、全てのWebページはオブジェクトであり、ページクラスには、ページ・コンテンツを生成するメソッド(コード)を含んでいます。通常、ページクラスは、全てのページにヘッダの生成や暗号化など、さまざまなビルトイン機能を提供する標準Webページクラス“%CSP.Page”から取得できます。このクラス・アーキテクチャによって、アプリケーション全体の動作の変更や、共通のスタイルの強制が容易になります。また、オブジェクト・プログラミングがもつあらゆるプログラミング上の利点を、Web開発にもたらします。

一般的には、ページクラスにはユーザインタフェース・ロジックのみを含むことをお勧めします。ビジネスロジックとデータベース・ロジックは別々のクラスに置く必要があります。これにより、ユーザインタフェース・コードとビジネス・データベース・ロジックが明白に区別され、後でユーザインタフェースの追加が容易です。

第4章 InterSystems Zenテクノロジによる 高機能なWebアプリケーションの迅速な構築

50

Chapter Four

ZENとコンポーネントベースのWebページZENは、高度な表現性と対話性に優れたユーザインタフェースを備えた、複雑でデータ量の多いWebアプリケーションを迅速に構築するための簡単な方法を提供します。ZENは4GLではありません。ZENには、インターシステムズのCSPとオブジェクトテクノロジを基に、予め作成されたオブジェクトコンポーネントと開発ツールの豊富なライブラリが備わっています。ZENは、Visual BasicやPowerBuilderといったツールで構築されたクライアント/サーバアプリケーションのWeb版を開発するのに特に適しています。

ZENコンポーネントは、より動的なやり取りを可能にします。サーバに値を送るのに使用する“submit”の手段を制限されることもありません。例えば、ZENのフォーム用コンポーネントを使うと、ページリクエストとそれ以降の再読み込み無しで、サーバへの即時の呼び出しを含めて、カスタム手順を定義することができます。これにより、ユーザはより自然にデータを入力することができます。

ZENはCSPのセッション管理手順を使うことによって、ユーザ認証、データ暗号化、複数のページリクエストに渡る永続セッションデータの保持を提供します。より高度なテクノロジを使い、ブラウザとサーバ間でオブジェクトをやり取りすることによって生じる全てのコミュニケーションは、よくAJAX(Asynchronous JavaScript and XML)と呼ばれます。

ZENを使って作成されたページは、CSPベースのアプローチで開発されたページと簡単に融合してWeb開発することができます。

Zenコンポーネントとは?

ZENコンポーネントは、ページ上のコンポーネントの外観と振る舞いを特定するクラス定義です。ZENのクラス定義は、単一のドキュメント上に、スタイルシート、サーバコード、クライアントコード等を含むコンポーネントの全ての定義を含んでいます。

ランタイムでは、ZENはページ内で使われている各々のコンポーネントに対し、2つのオブジェクトを作成します。それは、ZENが自動的にブラウザ上でJavaScriptオブジェクトとして生成するクライアントサイド・オブジェクトと、サーバサイド・オブジェクトです。ZENは自動的に2つのオブジェクトの状態や情報フローを管理します。

Zenコンポーネントのタイプ

ZENのライブラリには、入力ボックス、テキスト・ボックス、ボタン、チェック・ボックスなど、標準的なHTML制御タイプをすべて実装したコンポーネントが含まれています。これらのコンポーネントには、Zen制御クラスから継承した振る舞いも備わっています。

また、ZENには、より複雑でデータ量の多い一連のコンポーネントも含まれており、それらのコンポーネントは自動的にデータベースのデータを表示し、ユーザ・イベントに対応してこのデータを動的に更新する方法を理解しています。たとえば、ZENの強力なテーブル・コンポーネントは、データベース・クエリを使用して、HTMLテーブル内にデータを自動表示します。テーブル・コンポーネントは、ページング、スクロール、列順の並べ替え、フィルタなど、多様なスタイルをサポートしています。テーブルの内容は、ページ全体を再表示せずに、サーバの内容を反映して更新できます。

51

他のZENコンポーネントには、以下のようなものが含まれています。

■ メニュー ── 多様なメニュータイプがサポートされています。

■ グリッド ── Webページにスプレッドシート・スタイルの動作を追加します。

■ ツリー ── ツリー制御を使用して階層型データを表示します。

■ タブ ── タブ・コンポーネントには一連のタブが含まれていて、それぞれのタブには、他の一連のコンポーネントが含まれています。

■ グラフ ── SVGを使用した豊富なグラフコンポーネントが実装されています。具体的には、折れ線グラフ、面グラフ、棒グラフ、円グラフ、hi-low、XYグラフがあります。

■ グラフィカル・メータ ── スピードメータ、ゲージなど、データを動的な画像コンポーネントとして表示します。

ZENのライブラリコンポーネントの外観の変更

全てのZENコンポーネントは、見た目や使用感を自由に変更できるプロパティのセットをサポートしています。アプリケーションは、ランタイム上でプロパティを設定し、コンポーネントの値、外観や振る舞いを変更することができます。

また、Webページの外観は、標準CSS(カスケーディング・スタイルシート)のスタイル定義によって制御可能です。これらのスタイルを、フォント、色、サイズ変更のためにアプリケーション単位、ページ単位、もしくは個別のコンポーネントベースで無効にすることができます。

ZENのライブラリコンポーネントのサブクラスを作成し、さらに外観や振る舞いを無効にすることも可能です。

ZENコンポーネントの新規作成

ZENの利点の一つは、簡単に新しいコンポーネントが作成できる点です。

全てのコンポーネントはクラスとして実装されています。コンポーネントを新規作成するには、以下の4つの方法があります。(1)既存のコンポーネントのサブクラスになり得る新しいコンポーネントクラスを作る、(2)コンポーネントのHTMLの部分を取り出すメソッドを組み込む、(3)コンポーネントのランタイムでの振る舞いを実行するための、サーバサイドとクライアントサイドでのメソッドを定義する、または(4)クラスがコンポーネントの外観を特定するのに必要なCSSスタイル定義を含んでいるか確認する。

ZENアプリケーションを異なる言語へ変更する方法

ZENでは、アプリケーションに組み込まれたコンポーネントが表示する全てのテキスト値(タイトル、見出し等)のセットを特別に用意されたローカライゼーションテーブルへ自動的に保存することも可能です。アプリケーションのローカライゼーションテーブルは、XMLドキュメントとしてエクスポートでき、他の言語へ値を翻訳し、新規テーブルをインポートすることもできます。

ランタイム上では、ZENはユーザの使用するブラウザが選択した言語に基づいたテキスト値を使用します。

52

Chapter Four

SVGサポート

SVG(Scalable Vector Graphics)は、豊富な画像データをWebページに表示するための、強力で標準的な方法です。ZENには画像用コンポーネントを生成する機能が備わっており、SVGを使ってレンダリングし、予め構築されたSVGベースのコンポーネントセットを多数含んでいます。

ZENがサポートするブラウザ

ZENはFirefox、Chrome、 Safari、Internet Explorer(v6.0以上)をサポートしています。Internet ExplorerでZENのSVGコンポーネントを使用する場合にはAdobe社のSVGプラグインが必要です。

Zenレポート

Zenには、カスタマイズされたレポートを定義するための拡張フレームワークが搭載されています。ZenレポートはZenの特殊なクラスで、データベースのレポートをXHTMLまたはPDF形式に指定することができます。グラフィカル・レイアウトエディタにより、レポートのレイアウトと形式を完全に制御でき、Zenの静的な図表やグラフを含めることができます。レポートはブラウザやプリンタで出力することができます。サーバサイド上でもローカルプリンタでも可能です。Zenレポート機能により、リッチなインターネット・アプリケーションで、ユーザが見慣れているレポートを正確に複製したり、役に立つレポートを簡単に新規生成することができます。

Cachéの利点

豊富なWebユーザインタフェース従来のSUBMITボタンを使用した単純なブラウザフォームよりも、視覚的にGUIクライアント/サーバアプリケーションにより近づいた、高度な表現性と対話性を備えたページが生成可能です。ユーザは動的なフォーマットを、より自然に簡単に使うことができます。

オブジェクトベースの開発環境予め備わっているコンポーネントを利用することにより、迅速な開発が可能で、後の変更も簡単になります。

一貫したユーザインタフェースコンポーネントベースのアーキテクチャでより簡単に定義が可能になり、またアプリケーション単位での形式や振る舞いのガイドラインを強化します。

レポートの自動生成自動的にレポートが生成、出力されます。ユーザのブラウザに送信することも可能です。

InterSystems Cachéは、米国インターシステムズ社、およびその子会社の登録商標です。その他の製品は、当該各社の商標、または登録商標です。Copyright © 2015 InterSystems Corporation. All rights reserved.

2015-03

インターシステムズジャパン株式会社

〒160-0023東京都新宿区西新宿6-10-1

日土地西新宿ビル15FTEL:03-5321-6200(代)

InterSystems.co.jp