はじめに
1960年代末頃に研究が開始されたオブジェクト指向のデータベースマネージメントシステム(Database management system、DBMS)は、1990年前後より、実用的なデータベースとして、研究機関や大規模システムを必要とする分野で性能を発揮し始めました。しかし、一般的な企業がそのパフォーマンスに注目し始めてからは、まだ日が浅いと言えます。本連載では、オブジェクトデータベースとして注目のCaché(キャシエ)を解説し、一般的な企業のシステム開発・運用におけるメリットを浮き彫りにしていきます。
連載の第1回では、Cachéの紹介を兼ねて、オブジェクトデータベースとしての特長にスポットをあてます。Cachéの2大特徴である「多次元データエンジン」と「統一データアーキテクチャ」の解説から、統合開発環境である「スタジオ」、Cachéを管理する「システム管理ポータル」まで、Cachéの全体像に迫ります。
対象読者
- アプリケーション・システム開発をしている人
- データベース関連の開発およびメンテナンスをしている人
- JavaやC#でプログラミングしている人
CACHÉのコンセプトと特徴
まず、Cachéのコンセプトと、2大特徴である「多次元データエンジン」と「統一データアーキテクチャ」を説明しましょう。
CACHÉの製品コンセプト
オブジェクトデータベースは、オブジェクト指向プログラミング言語との親和性の高さが特長ですが、データベースの参照などにもプログラミングが必要で、使い勝手に優れているとは決して言えませんでした。それが、今まであまり一般企業のシステムに利用されなかった一番の原因だと考えられます。Cachéは、"Innovative Database. Guaranteed Performance." というキャッチフレーズにあるように、そのコンセプトは「パフォーマンスを約束する先進的なデータベース」です。オブジェクトデータベースの弱点を補い、使い慣れたSQL文が利用可能で、リレーショナルデータベースの利便性を兼ね備えた新世代のオブジェクトデータベースです。
発売元のインターシステムズジャパンでは、最新のCachéのシングルユーザーライセンスを無償で提供しています。このライセンスは、製品版と同じ機能を持ち、使用期限はありませんが、商用アプリケーションの開発には使えません。またシングルユーザーライセンスであるため、スタンドアロンでのみ使用可能です。
CACHÉのエンジンである多次元データエンジンとは
オブジェクトデータベースは、プログラムで使われる変数を保持する「永続性」という概念から始まりました。一般的に、変数はプログラムが終了すると消失しますが、この永続性のある変数により、プログラム終了後にも変数構造を保持し、後からそのデータの参照、更新、あるいは削除が行えるようになりました。また、変数には配列変数という多次元の要素を扱う概念があり、これがデータベースとして発展したのです。
このように、オブジェクトデータベースの利点は、プログラミング言語との親和性と、開発の容易さです。特にオブジェクト指向プログラミング言語による開発では、他の多くの利点を持つリレーショナルデータベースであっても、その構造上の違いから、いわゆるインピーダンスミスマッチを解決する必要があり、開発面での容易さではオブジェクトデータベースに軍配が上がると考えてよいでしょう。
Cachéの多次元データエンジンとは、そうしたオブジェクトデータベースの多次元データ構造にアクセスするためのデータ管理機構の総称です。そのアクセスの実現には、Caché ObjectScript言語が用意されています。これは、一連の連続する処理を一度に実行することを主眼に設計された、リレーショナルデータベースシステムのスクリプト言語とは異なり、ビジネスロジックの記述を前提として設計された言語で、本格的なプログラミング言語に比べても遜色ないものです。
CACHÉを特徴づけるユニークな機能「統一データアーキテクチャ」
Cachéの統一データアーキテクチャをひとことで言うと、格納されたデータに対して、オブジェクトアクセスとSQLアクセスを同時に実現するものです。
Cachéでは、オブジェクトをクラスとして体系付け、そのクラスにオブジェクトのプロパティとメソッドを定義します。さらにCachéは、インデックスやストレージ構造が定義可能で、それらを利用してSQLによるアクセスが可能となるのです。オブジェクトとSQLのデータビューが使うストレージ構造はまったく同じものです。また、オブジェクトとSQLは、データの挿入、更新、削除処理の実行時にも、自動的にインデックス内の正しい値を維持します。
下の図は、この統一データアーキテクチャに基づいて、どのように実行コードが生成されるかを図にしたものです。後述する開発環境である「スタジオ」でクラス定義しコンパイルを実行すると、そのクラスにオブジェクトアクセスするための実行コードと、SQLアクセスするための実行コードが自動生成されます。
また、プログラマが作成するプログラムの中でSQLアクセスを行う場合でも、そのクラス定義を参照して、ストレージ構造へのアクセスコードを自動生成します。JDBCやODBC経由のSQLクエリコードも自動生成しますので、Javaによる開発や、Microsoft AccessやMicrosoft Excelを利用したデータ管理も可能です。