[an error occurred while processing this directive] [an error occurred while processing this directive]


プログラミング
逆引き
クライアントとの通信
VisMでの通信
Factoryでの通信
WebServiceでの通信
CSP (Cache' Server Pages)
Cache'SQL
設定・性能


【広告】









 

Q. Cache'ってなに?

A. ツリー型データベースを中心に、Webやオブジェクトなどに対応したものです。
詳しくは、開発元である インターシステムズ社のページを参照して下さい。その中でも Cache'とは?Cache'テクノロジガイドと見ていただくと良いとおもいます。

・・・と、これだけではあんまりなんで、

Cache'ってなに?

What's Cache'?

バージョン4の頃の起動画面
Cache'はインターシステムズ社が1997年に発表した多次元データベースエンジンを中心とした製品のことです。Cache'はMUMPSという言語をベースにしています。

■MUMPS?

MUMPSは1969年(!)、Massachusetts General Hospitalで開発され、FORTRAN, COBOLに続いて3番目にANSIに制定された言語です。その後1992年ISOに制定され、これを受けて1995年JISにも制定されたそうです。

医療の現場で実際に使えるよう開発されたこともあってか、MUMPSはその当時の言語にはないいくつかの特徴をもっています。

配列のキーに文字列が使える
配列のキーに数字だけでなく文字列を使用することができます。
Set Array(1)="Hello"
Set Array(2)="World"
Set Array("abc")=123
今では別に珍しくもなんとも無いことですが、1969年からコレです。

もちろん多次元配列も扱えます。
Set Array(1,"Japanese")="こんにちは"
Set Array(2,"Japanese")="世界"

配列をメモリ上だけでなくディスク上にも配置できる
これがMUMPSの鍵だと思います。
Set Array(1)="aaa", Array(2)="bbb"
とするとメモリ上に格納されますが、プログラムを立ち上げ直すとこの配列は消えてしまいます。当然ですよね。

ところが、Arrayの前に ^ 記号を付けて
Set ^Array(1)="aaa", ^Array(2)="bbb"
とするとディスク上に書かれ、そのプロセスのいかなるスコープから見えるのはもちろん、プログラムを立ち上げ直そうが、コンピューターを再起動しようが残っています。
このディスク上に保存された配列のことを「グローバル」と呼びます。他の言語でも変数のスコープうち広いものをグローバルと呼ぶものがありますが、ここまでスコープが広いものは他に見たことがありません

データベースとして使える
データベースと言ってもSQLとかRDBとかではありません。それらが世に出てくるのはもう少し後になってからです。
ここでいうデータベースとは、wikipediaにもある次の定義のことです。
データベースは、特定のテーマに沿ったデータを集めて管理し、容易に検索・抽出などの再利用をできるようにしたもの。 狭義には、コンピュータによって実現されたものを言う。
配列をディスク上に記録でき、キーに文字列が使えるということから、例えば次のようにデータを記録していくことでデータベースとして使えると考えられました。
Set ^患者("山本太郎","性別") = "男"
Set ^患者("山本太郎","生年月日") = "1987/06/05"
Set ^患者("山本太郎","初診") = "2004/08/12"
Set ^患者("山本太郎","履歴","2004/08/12") = "外科 右肩脱臼 不完全外傷性 "
Set ^患者("山本太郎","履歴","2004/08/19") = "外科 右肩脱臼 経過観察"
Set ^患者("鈴木花子","性別") = "女"
Set ^患者("鈴木花子","生年月日") = "1986/04/02"

こういった構造のデータベースを階層型データベースと呼び、MUMPSも階層型データベースの1つです。



■で、Cache'とは?

そのMUMPSを受け継ぎつつ、必要とされる機能を追加した製品がCache'です。強化された点としてオブジェクト機能・SQL機能・Web機能などが挙げられます。

インターシステムズ社の「Cache'とは?」というページにある下の絵のうち、

Multidimensional Engine

中心と下の青い部分がMUMPS由来のコアとなる部分で、多次元データ・エンジンと呼ばれています。

この多次元データエンジンにWebからのアクセスを実現するCSP(Cache Server Pages)。更にそれを拡張してWebService

オブジェクトのデータは、JSONのように文字列をキーとした配列に格納することで表現されたりしますが、それはまさにMUMPSの配列とドンピシャなわけです。
ということでオブジェクトのデータストアとしてJava, C++, COM, .NET, Pythonといった言語とのインターフェイスが用意されています。

言語とのインターフェイスだけでなく、内部で動作するスクリプトもオブジェクト化されており、継承やカプセル化などオブジェクトモデリング技術は大抵サポートされています。

そしてSQLが使いたいという要望に答えるため、SQLでのアクセスもできるようになっています。ODBCやJDBCを経由してアクセスすることが可能です。



■Cache'は何て発音するの?

キャェー (シにイントネーション)のようです。そういえば昔はカタカナ語って最後の『ー』(長音)は省略するなんてルールがありましたが、最近はそうでもないようですね。


■Cache'ってどこで入手できるの?

体験版(シングルユーザーライセンス版)はIntersystems社のサイトから無料でダウンロードできます。 ダウンロード手順のページ

製品版は国内代理店各社から購入できます。
 昔はコンパックのサイトに価格表がありましたが、今はヒューレット・パッカードのサイトも載せてないですね。
  価格表 http://www.compaq.co.jp/solution/package/cache/downloads/cache_price.pdf
  カタログ http://www.compaq.co.jp/solution/package/downloads/cache.pdf

Intersystemsのブレスリリースに価格について触れられていました。(2006年時点)

Windows、Linux、Mac、 UNIX 、OpenVMSで稼動。
1ユーザ2万8千円より(税抜き価格)。
http://www.intersystems.co.jp/press/2006/061116-2.html


■Cache'と似たものは

Cache'の開発元のインターシステムズが、Globalsという製品を無償で公開しています。
サーバー上でObjectScriptが使えないとのことなので、データストアとしての用途に使えるようです。

また、オープンソースでのMUMPS実装としてGT.Mというものもあるようです。

広く見るとNoSQLのKVS(キーバリューストア)もツリー型データベースの一例なので 似たものといえます。KVSをいくつか触ってみた感触としては、あくまでデータストアに徹しており、キーの探索(あるキーの前後のキーを取得するなど)はできないようです。そういった処理はアプリケーション側で必要に応じて記述するということなのでしょう。

GlobalsはそういったKVSからすると少しCache'寄りで、キーの探索はできるようです。NextSubscriptといったメソッドが用意されています。


[an error occurred while processing this directive] [an error occurred while processing this directive]