(2000.09.01)
 「自分では“常識”だと思っていたことが,最近通用しないんだよね」。---おじさんが若者に対して苦言を呈しているのではない。少し前から,企業システムの構築や運用に携わっているSE(システム・エンジニア)の方々と話をしていて,耳についていた言葉だ。

 今のIT業界はドッグイヤー,すなわち一般社会の7倍くらいの速度で時間が進んでいると言われる。もうドッグイヤーという言葉自体,かなり古くさい。道具(技術や製品)や環境(世の中の状況やシステムの目的)が変われば,道具を使いこなすノウハウも変わるのは当たり前である。ただ,自分が培ってきたノウハウや専門書から得た知識が陳腐化してしまうのがあまりにも早いことに,戸惑いが隠せないという。

 例えば,日経オープンシステム8月号の特集(注1)で取り上げたユーザー事例10社,12システムのデータベース・サーバーのスペックを見ると,メモリー容量は20G(ギガ)バイトを筆頭に,ほとんどが数G~十数Gバイト。ハード・ディスク装置はRAID(注2)を使うのが当たり前で,100Gバイト超はざらだ。2.2T(テラ)バイトという例さえある。

 これらのシステムは,UNIXサーバーを用いた,不特定多数を対象としているコンシューマ向けWWWシステムだけではない。Windows NTをサーバーとしたものも多いし,数百人の社員だけを対象とした社内システムもある。一方,2年くらい前のバックナンバーをめくってみると,メモリーが256M(メガ)~512Mバイト,ハード・ディスク装置が数G~十数Gバイト程度のシステムが目立つ。

 メモリーやディスク容量がまさに桁違いに増えた背景には,それぞれの急激な低価格化などがある。機能も向上しており,最近のハード・ディスク装置はGバイト単位のキャッシュを積むなどでI/O速度を高め,ストライピングと呼ばれるRAIDの機能で複数のディスクにデータを自動的に分散配置してくれる。

 このようにハードウエアの状況が変わってくると,データベースの設計法も変わってくる。従来は性能や信頼性向上のためにディスクI/Oなどを考慮しながら,データベース・ファイルをどう分散配置するかという物理設計をきちんとしていた。それが今は,ある程度ハードウエアに任せてしまうという選択肢が出てきた。メモリーを効率よく使うべきという点は同じでも,これだけ容量が異なれば,メモリー上に各種キャッシュをどのように配分するかのノウハウが従来とは大きく違う。

 ハードの進化は,目的の面でもこれまでは考えられなかったようなシステムを可能にした。先に挙げた2.2Tバイトのシステムは,過去の膨大なデータを分析するためのデータ・ウエアハウス向けだ。データ量は多いが,ユーザーによって集計したい項目が異なり,しかも,ほとんどのユーザーのニーズは全件総なめだという。使い方が違うために,索引データであるインデックスの付け方や,各テーブルに主キーは付けるべきか,データベースの正規化はどうするかといった点で,これまでのノウハウは通用しない。

 もちろん,変わらないノウハウも多い。ディスクI/Oが高速になったといっても,いまだにディスクI/Oは最大のボトルネック要因である。ファイルの分散配置をRAIDに任せても,更新系ならログだけは独立させると良い。SQL文の書き方がデータベース全体のレスポンスに大きく影響する点も変わらない。最適なインデックスを付けること,それを最大に利用できるようにSQL文をチューニングするノウハウは,従来と変わらない。

 ただ,データベース管理システム(DBMS)も進化している。利用状況に応じて最適なインデックスを自動生成し,SQLも最適化してくれるようになってくるだろう。実際,DBMSの進化の一つの方向は自動最適化。現状の機能は十分ではなく,逆にオーバーヘッドになることもあるが,近い将来,インデックスは開発者が考えるものではなくなるかもしれない。

 気を付けるべきは,状況が変化したことで,“常識”と思ってやったことが“今は非常識”だったというケースも出てくることだ。特に,他人や雑誌などから表面的な部分だけを吸収したような知識は,落とし穴になりやすい。

 結局,今自分が持っているノウハウ,知識はどこから来たものなのかをきちんと理解しておく。さらにその根本となる部分の現状を知り,常にノウハウをリフレッシュしていなければ良いシステムは作れない---という“常識”だけが不変なのだろうか。

 もしかしたら,どんな作り方をしても最終的なレスポンスへの影響は誤差の範囲になってしまうほど,ハードやソフトが進化してしまうのかもしれない。その時,システム構築の情報を提供するメディアは存在するのだろうか。もう,システムのアイデア(目的)だけがテーマになっているのだろうか。

(小原 忍=日経オープンシステム編集長)

注1 タイトルは,「2000年版・データベース構築の新常識」
注2 RAIDは,Redundant Arrays of Inexpensive Disksの略。複数の磁気ディスク装置に対してデータを分割して並列に読み書きを行うことで,アクセスの高速化や信頼性の向上を図る方式