はじめに
データは電源を切っても保存されるハード・ディスクやフラッシュ・メモリーに格納されています。しかしこれらのデバイスは低速なので高速なDRAMにデータを格納して処理します。DBMSのメモリー管理アーキテクチャはキャッシュをベースにするものとインメモリーをベースにするものに大別できます。これらにはやはり長所と短所があります。今回はメモリー管理アーキテクチャの違いによるトレード・オフとその用途、そして短所に折り合いをつける実装について見ていきましょう。
なお、本連載で例として挙げるデータベースはオラクルが提供しているものが多いですが、オラクル製品を使っていない方にも参考にしていただけるように解説していきます。
対象読者
この連載では以下の読者を想定しています。
- データ資産を活用する、新しいアプリケーションの構想や設計を担われる方
- データ基盤の運用を担われている方や、今後検討される方
- 新たに開発するアプリケーションの、最適なデータベースをお探しの方
- 目的別データベースから、価値ある情報を素早く引き出す検討をされている方
記憶デバイスのアクセス時間と容量
一般的に、コンピュータの記憶デバイスは階層構造を持っています。CPUの演算ユニットに近いところにある記憶デバイスほど短時間でのアクセスが求められます。しかしCPUの演算ユニットに近いところほど使用できる面積が狭いため、アクセス時間が増加することを許容すればより大容量の記憶デバイスが使用できます。
この図は2022年時点の記憶デバイスの典型的なアクセス時間と容量の関係を示しています。横軸はデバイスごとの容量で対数表示です。縦軸はデバイスへ1回アクセスするのにかかる時間でこちらも対数表示です。デバイスのモデルごとのアクセス時間と容量は製品によって数倍の幅がありますが、両対数グラフ上での位置の相対的な変動は小さなものです。
縦軸のアクセス時間の単位はナノ秒(ns)で記述していますが、1nsは1GHzの1クロック分の時間です。サーバー用途のCPUはだいたい2GHz(0.5ns/クロック)から4GHz(0.25ns/クロック)程度の周波数で動作していますので、この図は各デバイスのアクセスに要する時間がだいたいCPUの何クロック分なのかということを表しています。
電源を切ってもデータが保存される不揮発性デバイスは大容量ですがアクセスに時間がかかる傾向があります。2022年時点の3.5インチ・ハード・ディスク・ドライブ1台の容量は10TBを超えていますが、アクセス時間はCPUの数100万クロック分かかります。半導体記憶デバイスであるフラッシュ・メモリーでもまだ数万クロック分かかります。
データベースのデータは消失してはいけないため、ハード・ディスクやフラッシュ・メモリーなどの不揮発性デバイスに格納されています。しかし、これらの不揮発性デバイスはCPUの動作からするとはるかに低速であるため、ハード・ディスクやフラッシュ・メモリーよりも高速なDRAMにデータを移動させてそこを探索します。