主記憶DBの意外なメリット
近年のデバイス技術の発展により、半導体メモリ、特に計算機の主記憶に使われるDRAMは、急速にそのビット単価が下がってきています。そのため、個人向けのPCでさえ数GBのメモリを搭載できます。600MB程度のCD-ROM1枚でも新聞1年分の情報を格納できるので、数GBというのはちょっとしたデータベースの全体を格納できる容量と言えます。
主記憶中にすべてのデータベースを格納する主記憶データベース(インメモリデータベース)は、従来のディスク格納型データベースよりも高速なデータアクセスが可能なのは当然ですが、ディスクを使用しないことから、過酷な環境下での信頼性や、低消費電力といった利点もあります。主記憶データベースはその処理速度ばかりがクローズアップされますが、ユビキタス社会の到来を考えると、あちこちに埋め込まれた組み込み計算機などでセンサーデータを効率良く処理するためには、低消費電力でかつ、さまざまな環境で動作可能なことが不可欠となります。
全データが主記憶にあれば速い?
主記憶にデータベース全体が格納されていれば、本当に処理は速いのでしょうか。答えは「いいえ」です。主記憶に使用されるDRAMは、その記憶容量を上げるためにアクセス速度が犠牲となっています。また、プロセッサ(CPU)と主記憶をつなぐバスも動作が遅く、特にPCのような小型計算機では帯域幅(スループット)もそれほど大きくありません。近年のプロセッサの動作速度から見ればDRAMの速度は非常に遅く、プロセッサがDRAM、すなわち主記憶にデータをアクセスすること自体がコストの高い処理となっています。
このプロセッサとメモリのアクセスギャップは「メモリの壁」と呼ばれ、大きな問題となっています。つまり、ただ単に主記憶にすべてのデータが存在しているだけでは、データベースは速くならないのです。
この問題を解決するには、通常、プロセッサ内部のキャッシュを利用し、同じデータを一時期に繰り返して利用することにより、主記憶へのアクセスをできる限り削減するのが常套手段です。しかし、データベース処理では同じデータを一時期に繰り返して利用するという場面が少ないのです。しかも、キャッシュはアドレス空間上に連続して置かれているデータを一括して扱うことを前提としているため、ランダムアクセスが多いデータベース処理では、計算に不要なデータも低速な主記憶やバスを経由して転送することになります(図1上)。例えて言えば、酸欠の脳へ、細い血管を通して酸素以外に余計なものまで送っているようなものです。