リンク
インターシステムズ(日) └日本語ドキュメント インターシステムズ(US) (有)エムブイビイ ダイナシステム(株) Googleグループ(英語) Googleグループ(日本語) George James Software cache'infoアーカイブ 【広告】
|
Q. Cache'ってなに? A. ツリー型データベースを中心に、Webやオブジェクトなどに対応したものです。 ・・・と、これだけではあんまりなんで、 Cache'ってなに?What's
Cache'?
■MUMPS?MUMPSは1969年(!)、Massachusetts
General Hospitalで開発され、FORTRAN, COBOLに続いて3番目にANSIに制定された言語です。その後1992年ISOに制定され、これを受けて1995年JISにも制定されたそうです。
医療の現場で実際に使えるよう開発されたこともあってか、MUMPSはその当時の言語にはないいくつかの特徴をもっています。 配列のキーに文字列が使える配列のキーに数字だけでなく文字列を使用することができます。
Set Array(1)="Hello"
今では別に珍しくもなんとも無いことですが、1969年からコレです。Set Array(2)="World" Set Array("abc")=123 もちろん多次元配列も扱えます。 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'とは?」というページにある下の絵のうち、 中心と下の青い部分がMUMPS由来のコアとなる部分で、多次元データ・エンジンと呼ばれています。 この多次元データエンジンにWebからのアクセスを実現するCSP(Cache Server Pages)。更にそれを拡張してWebService
オブジェクトのデータは、JSONのように文字列をキーとした配列に格納することで表現されたりしますが、それはまさにMUMPSの配列とドンピシャなわけです。 言語とのインターフェイスだけでなく、内部で動作するスクリプトもオブジェクト化されており、継承やカプセル化などオブジェクトモデリング技術は大抵サポートされています。 そしてSQLが使いたいという要望に答えるため、SQLでのアクセスもできるようになっています。ODBCやJDBCを経由してアクセスすることが可能です。 ■Cache'は何て発音するの?
キャシェー (シにイントネーション)のようです。そういえば昔はカタカナ語って最後の『ー』(長音)は省略するなんてルールがありましたが、最近はそうでもないようですね。
■Cache'ってどこで入手できるの?体験版(シングルユーザーライセンス版)はIntersystems社のサイトから無料でダウンロードできます。 ダウンロード手順のページ 製品版は国内代理店各社から購入できます。 Intersystemsのブレスリリースに価格について触れられていました。(2006年時点) Windows、Linux、Mac、 UNIX 、OpenVMSで稼動。 ■Cache'と似たものは
Cache'の開発元のインターシステムズが、Globalsという製品を無償で公開しています。
サーバー上でObjectScriptが使えないとのことなので、データストアとしての用途に使えるようです。 また、オープンソースでのMUMPS実装としてGT.Mというものもあるようです。 広く見るとNoSQLのKVS(キーバリューストア)もツリー型データベースの一例なので 似たものといえます。KVSをいくつか触ってみた感触としては、あくまでデータストアに徹しており、キーの探索(あるキーの前後のキーを取得するなど)はできないようです。そういった処理はアプリケーション側で必要に応じて記述するということなのでしょう。 GlobalsはそういったKVSからすると少しCache'寄りで、キーの探索はできるようです。NextSubscriptといったメソッドが用意されています。 |