オルタナティブ・ブログ > 隠れた財産 >

Make Applications More Valuable

スケールアウト手法を生かすDBアプリケーションアーキテクチャ設計

»

ITアーキテクトという雑誌のVol22に面白い記事が載っていました。

野村総合研究所の石田 裕三さんという方が、寄稿している'スケーラブルなO/Rマッピング・アーキテクチャを求めて'という題の文章です。

詳細は、読んでいただくとして、私が興味深いと思ったのが、彼がたどり着いた考え方が、インターシステムズが考えるスケールアウトのアプローチに非常に似ているという点です。

スケールアウト手法を取る場合、クライアント層、中間のアプリケーション層とデータベース層の3層構造にして、処理量に応じてその中間層のサーバーを増やしていくというのが一般的です。

彼の手法もこれを逸脱するものではありません。

大きな特徴は、データベース層の処理を極限まで単純化して、負荷を減らす点です。

そのため、データベースサーバーへのリクエストは、主キーによる単一のテーブルアクセスに限り、処理が重くなりがちな結合処理や並べ替えはやらないという方針を貫きます。

ビジネスロジックに必要なドメインモデルの構築は、すべてアプリケーションサーバー層の役割とすることにより、データベース層のCPU使用率は、極小化されます。 あるいは、無秩序に行われるディスクアクセスも軽減されるかもしれません。 その分、アプリケーションサーバーは重くなりますが、アプリケーションサーバーを増設することにより、それをカーバーします。

インターシステムズのCaché(キャシエ)に備わるECP(エンタープライズキャッシュプロトコル)を使った場合のデータベースサーバーの役割もこれに非常に近く、極端に言ってしまうと、データベースサーバーは、アプリケーションサーバーから要求されたデータベースブロックの内容をデータベースから読んで、それをアプリケーションサーバーにネットワーク経由で転送する(書き込みの場合、もう少し複雑ですが)ことだけを飽きることなく繰り返しているだけです。

このアーキテクチャーのおかげで、CachéのデータベースサーバーのCPU性能は、そんなに高くなくてもよく(ディスク性能は高いに越したことはありませんが)、ここが、Oracle RACをよくご存知のDBエンジニアの方々などには奇異に感じられる部分のようです。

ここにも設計の大原則であるシンプルイズベストが貫かれている点、面白いところだと思います。

Comment(0)