インメモリデータベース
From Wikipedia, the free encyclopedia
インメモリデータベース(IMDBあるいはメインメモリデータベース、MMDB)はデータストレージを主にメインメモリ上で行うデータベース管理システムである。ディスクストレージ機構によるデータベースシステムと対比される。メインメモリデータベースは内部最適化アルゴリズムが簡素であり、相対的に少ないCPU命令を実行するので、ディスク最適化されたデータベースと比較して高速である。メモリ上でデータアクセスを行うことで、ディスクと比較し、より高速かつ安定したパフォーマンスを提供できる。通信ネットワーク機器など、応答時間が肝要であるアプリケーションにおいて、インメモリデータベースは多用されている。[1]
基本的な構成として、インメモリデータベースはデータを揮発性メモリ装置に格納する。このようなデバイスはデバイスの電源が断たれたり、リセットされた場合にすべての格納情報を失う。この場合、インメモリデータベースはACID(原子性、一貫性、独立性、永続性)特性のうち、永続性をサポートしないと言える。揮発性メインメモリベースのインメモリデータベースはACID特性の他の3特性である原子性、一貫性および独立性をサポートすることが多い。
多くのインメモリデータベースは次の機構により、永続性を追加している。
- スナップショットファイル、あるいはチェックポイントイメージにより特定の時点でのデータベースの状態を記録する。これは定期的に生成され、最低でもインメモリデータベースのシャットダウンが実行されたときに生成される。
これによりデータの永続性を一部提供しているが(システム障害の際にすべてのデータが失われるわけではない)、永続性の一部である(「直近の」変更は失われる)。完全な永続性のためには、以下のいずれかによって補完される必要がある。
- トランザクションログにより、データベースへの変更をジャーナルファイルに記録し、インメモリデータベースの自動リカバリを可能にする。
- 不揮発性メモリ (NVRAM) では通常、バッテリ電源によりバックアップされた静的RAM(バッテリRAM)か、書き込み・消去可能なROM (EEPROM) が用いられる。このストレージを用いることにより、インメモリデータベースは再起動の際に、直近の整合性が取れている状態へデータストアを回復することができる。
- 高可用性による実装ではデータベースレプリケーションにより、現用データベースでの障害の際、同一のスタンバイデータベースに自動フェイルオーバーがなされる。完全なシステムクラッシュにおけるデータ損失を防ぐため、インメモリデータベースのレプリケーションは通常上記の一つ、あるいは複数の機構と併用される。
いくつかのインメモリデータベースではデータベーススキーマにおいてデータベースの特定の領域について異なる永続性要件を指定することができる。これにより、システムシャットダウンの後で容易に再生成できるか、意味を持たないデータについては永続性のための保持を不要にできる(ただし、高可用性のためのレプリケーションは必要である)。そして設定情報は保存が必要なものとして指定することができる。
「ハイブリッド」インメモリ/オンディスクデータベース
インメモリおよびオンディスクの両テーブルを単一データベースでサポートした最初のデータベースエンジンが2003年にリリースされた。[2]この手法の利点は柔軟性にある。つまり、開発者はパフォーマンス、コスト、永続性そしてフォームファクタの間でバランスをとることができる。パフォーマンスに関して、ディスクを経由せず、メモリのみで指定のデータをソート、格納および読み出しを行うことで向上させることができる。コストに関して、廉価なハードディスクを追加メモリに代替できる。フォームファクタに関して、RAMチップは小型ハードドライブのメモリ記憶密度に劣ることがあげられる。
インメモリ/オンディスクデータベースが選ばれる別の理由として、製造時の効率が挙げられる。電子製品など、特定の製品の製造ラインにおいて、永続的ストレージが必要な製品とストレージにメモリを使用するものの混合となっている場合がある。このような例としてセットトップボックスがある。そのようなデバイスにおいてデータベースシステムを用いるとき、製造者はハイブリッドデータベースを用いることにより、製品におけるディスクの有無に応じてそれぞれインメモリデータベースとオンディスクデータベースを用いる場合より、コストを低くし、かつコードのカスタマイズ量も減らすことができる。