近年DRAMの大容量化/低価格化が進み、主記憶データベースシステムの開発が盛んになっている。しかし、DRAMは大容量化するとアクセス速度が低下する一方、プロセッサ(CPU)の動作速度はどんどん向上している。つまり、本格的な主記憶データベースシステムを構築するには、このメモリとCPU間のアクセスギャップを克服することが必要となる。特にリレーショナルデータベースでは、属性値を飛び飛びにアクセスする演算が主体となるから、CPUに無駄なデータを送り込まないように新しい仕掛けを講じることが重要である。今回は、それをビットマップを用いてメモリコントローラを高機能化することで解決しようという取り組みを紹介してもらう。 (DB Magazine 2007年5月号より転載)
主記憶DBの意外なメリット
近年のデバイス技術の発展により、半導体メモリ、特に計算機の主記憶に使われるDRAMは、急速にそのビット単価が下がってきています。そのため、個人向けのPCでさえ数GBのメモリを搭載できます。600MB程度のCD-ROM1枚でも新聞1年分の情報を格納できるので、数GBというのはちょっとしたデータベースの全体を格納できる容量と言えます。
主記憶中にすべてのデータベースを格納する主記憶データベース(インメモリデータベース)は、従来のディスク格納型データベースよりも高速なデータアクセスが可能なのは当然ですが、ディスクを使用しないことから、過酷な環境下での信頼性や、低消費電力といった利点もあります。主記憶データベースはその処理速度ばかりがクローズアップされますが、ユビキタス社会の到来を考えると、あちこちに埋め込まれた組み込み計算機などでセンサーデータを効率良く処理するためには、低消費電力でかつ、さまざまな環境で動作可能なことが不可欠となります。
全データが主記憶にあれば速い?
主記憶にデータベース全体が格納されていれば、本当に処理は速いのでしょうか。答えは「いいえ」です。主記憶に使用されるDRAMは、その記憶容量を上げるためにアクセス速度が犠牲となっています。また、プロセッサ(CPU)と主記憶をつなぐバスも動作が遅く、特にPCのような小型計算機では帯域幅(スループット)もそれほど大きくありません。近年のプロセッサの動作速度から見ればDRAMの速度は非常に遅く、プロセッサがDRAM、すなわち主記憶にデータをアクセスすること自体がコストの高い処理となっています。
このプロセッサとメモリのアクセスギャップは「メモリの壁」と呼ばれ、大きな問題となっています。つまり、ただ単に主記憶にすべてのデータが存在しているだけでは、データベースは速くならないのです。
この問題を解決するには、通常、プロセッサ内部のキャッシュを利用し、同じデータを一時期に繰り返して利用することにより、主記憶へのアクセスをできる限り削減するのが常套手段です。しかし、データベース処理では同じデータを一時期に繰り返して利用するという場面が少ないのです。しかも、キャッシュはアドレス空間上に連続して置かれているデータを一括して扱うことを前提としているため、ランダムアクセスが多いデータベース処理では、計算に不要なデータも低速な主記憶やバスを経由して転送することになります(図1上)。例えて言えば、酸欠の脳へ、細い血管を通して酸素以外に余計なものまで送っているようなものです。
この記事は参考になりましたか?
- 日本のデータベース研究最前線連載記事一覧
- この記事の著者
-
宮崎 純(ミヤザキ ジュン)
奈良先端科学技術大学院大学情報科学研究科助教授。1992年東京工業大学工学部情報工学科卒、1997年北陸先端科学技術大学院大学情報科学研究科博士後期課程修了。博士(情報科学)。2003 年より現職と科学技術振興機構さきがけ個人研究者を兼務し本研究を行なう。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア