スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

CachéとSQLの扱い

今日、MCEAのDB研究会で、Cachéについて、インターシステムズ社の人に来て説明をしていただいた。
最近、DB研でCachéについて取り上げ、その有用性について議論していたものの、事例が乏しいため、いくつか質問したいことが出てきた。今回は、Cachéの説明というより、我々の質問に答えていただく形となった。

私の一番の関心事は、Cachéでどのようにアプリケーションを作成するかというところだ。
オブジェクト指向プログラミング、ORマッピングツールの流行で、SQLというのが、オブジェクト指向のコミュニティでは極端に嫌われる傾向がある。最近では、SQLを理解できないJavaプログラマも多いようだ。
Cachéはオブジェクト指向DBなので、データへのアクセスはオブジェクト指向的なアクセスとなる。では、複雑な条件を指定しての検索、SQLで言えば、WHERE句に多くの条件や副問い合わせなどをつけたようなSQLで実現していたロジックはCachéではどのように実現されているのか。何かオブジェクト指向的なやり方があるのか。

答えは、SQLを使うということ。まあ、予想していたとおりだ。オブジェクトが特定された場合のオブジェクトへのアクセスや参照先のオブジェクトへのアクセスは、オブジェクト指向的に行われるが、多量のインスタンスの中からそのオブジェクトを特定するためには、SQLを使って特定するのだということ。
SQLを使わずにダイレクトアクセスのAPIもあるが、それを使うと、SQL1行で済むようなものも、50行ほどのロジックになるだろうとのことだ。

Cachéは、RDBでもあり、オブジェクトDBでもある多次元データモデルだ。なので、OLTP系で有利なオブジェクトアクセスもできるし、DWH系で有利なSQLアクセスにもどちらにでも対応できるということだ。DWH系における検索や分析はオブジェクトには不向きである。

この部分は非常に重要なポイントだと思うのだが、オブジェクト指向派が曖昧にしている点だと思う。私自身、SQLというものは、方言の違いや多少冗長に思えるところもあるものの、基本的にはデータ検索のためには最もシンプルな言語だと思う。

プロセス指向からデータ指向への移行を考えると、まずプロセス指向では、データはプロセスの中にあった。そうすると、データが散在しするため、まずデータを外出しにして一元管理する。さらに正規化の手順を踏んで、冗長性をなくし、データの不整合をなくすようにする。データへのアクセスは標準化されたSQLを用いる。
さらに、DB側で排他制御やトランザクション管理機能、制約を持たせることで、それまでプロセス側で行っていたことの多くをDBMS側に委譲できるようになった。例えば一意制約をDB側で保証してくれるため、プログラム側ではそれほど神経質にならなくて済むようになる。そして絞込みや結合、ソート、集計などをSQLだけで実現するようにすることで、さらにプロセス側の負担を減らした。

このようにして、プロセス指向からデータ指向への移行において、データの重要性を高め、データに関係するロジックの多くを、DBMSとSQLで実現できるようになった。

これと同様のことは、プロセス指向からオブジェクト指向への移行においても起きた。それは、同じようにデータを重視し、データとそれに関係するロジックを一まとめにして扱うオブジェクトという形で実現された。この部分の発想は、データ中心指向もオブジェクト指向も共通しているものがある。なので、設計段階でどちらもドメイン分析をして、データ中心指向ではデータモデル、オブジェクト指向ではクラス図を作成する。

これでいい方向に向かったはずだったが、問題は、データ中心指向で設計された業務アプリケーションに対して、オブジェクト指向言語を適用することで起きた。インビーダンスミスマッチだの、ORマッピングだの、特にO側の人間が騒ぎ出した。

そしてSQLをまともに理解できない糞プログラマが偉そうな口を叩くようになった、というのが現状だろう。

検索や集計では、結局のところSQLが必要なのだ。オブジェクト指向に適合させるため、EJB QLとかHQLとか出たが、SQL以上の利点は特にない。Criteriaオブジェクトを作ったりして、どんなに工夫したってSQLよりシンプルで柔軟にはできない。MSがやっているLINQも、別に画期的なものは何もない。

関連記事
スポンサーサイト

コメント

非公開コメント

プロフィール

dayan

Author:dayan
小職は、SE(システムエンジニア)を専門としておりますが、技術的な情報を中心に、それ以外に経済関連の日記、たわいもない日記も載せていきます。
[公式HPもよろしく!]

天気予報

-天気予報コム- -FC2-
リンク
ブロとも申請フォーム

この人とブロともになる

カテゴリー
最近の記事
ブログ内検索
最近のコメント
最近のトラックバック
RSSフィード
月別アーカイブ


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。