インメモリデータベース

インメモリデータベースIMDBあるいはメインメモリデータベースMMDB)はデータストレージを主にメインメモリ上で行うデータベース管理システムである。ディスクストレージ機構によるデータベースシステムと対比される。メインメモリデータベースは内部最適化アルゴリズムが簡素であり、相対的に少ないCPU命令を実行するので、ディスク最適化されたデータベースと比較して高速である。メモリ上でデータアクセスを行うことで、ディスクと比較し、より高速かつ安定したパフォーマンスを提供できる。通信ネットワーク機器など、応答時間が肝要であるアプリケーションにおいて、インメモリデータベースは多用されている。[1]

ACID準拠 編集

基本的な構成として、インメモリデータベースはデータを揮発性メモリ装置に格納する。このようなデバイスはデバイスの電源が断たれたり、リセットされた場合にすべての格納情報を失う。この場合、インメモリデータベースはACID(原子性、一貫性、独立性、永続性)特性のうち、永続性をサポートしないと言える。揮発性メインメモリベースのインメモリデータベースはACID特性の他の3特性である原子性、一貫性および独立性をサポートすることが多い。

多くのインメモリデータベースは次の機構により、永続性を追加している。

  • スナップショットファイル、あるいはチェックポイントイメージにより特定の時点でのデータベースの状態を記録する。これは定期的に生成され、最低でもインメモリデータベースのシャットダウンが実行されたときに生成される。

これによりデータの永続性を一部提供しているが(システム障害の際にすべてのデータが失われるわけではない)、永続性の一部である(「直近の」変更は失われる)。完全な永続性のためには、以下のいずれかによって補完される必要がある。

  • トランザクションログにより、データベースへの変更をジャーナルファイルに記録し、インメモリデータベースの自動リカバリを可能にする。
  • 不揮発性メモリ (NVRAM) では通常、バッテリ電源によりバックアップされた静的RAM(バッテリRAM)か、書き込み・消去可能なROM (EEPROM) が用いられる。このストレージを用いることにより、インメモリデータベースは再起動の際に、直近の整合性が取れている状態へデータストアを回復することができる。
  • 高可用性による実装ではデータベースレプリケーションにより、現用データベースでの障害の際、同一のスタンバイデータベースに自動フェイルオーバーがなされる。完全なシステムクラッシュにおけるデータ損失を防ぐため、インメモリデータベースのレプリケーションは通常上記の一つ、あるいは複数の機構と併用される。

いくつかのインメモリデータベースではデータベーススキーマにおいてデータベースの特定の領域について異なる永続性要件を指定することができる。これにより、システムシャットダウンの後で容易に再生成できるか、意味を持たないデータについては永続性のための保持を不要にできる(ただし、高可用性のためのレプリケーションは必要である)。そして設定情報は保存が必要なものとして指定することができる。

「ハイブリッド」インメモリ/オンディスクデータベース 編集

インメモリおよびオンディスクの両テーブルを単一データベースでサポートした最初のデータベースエンジンが2003年にリリースされた。[2]この手法の利点は柔軟性にある。つまり、開発者はパフォーマンス、コスト、永続性そしてフォームファクタの間でバランスをとることができる。パフォーマンスに関して、ディスクを経由せず、メモリのみで指定のデータをソート、格納および読み出しを行うことで向上させることができる。コストに関して、廉価なハードディスクを追加メモリに代替できる。フォームファクタに関して、RAMチップは小型ハードドライブのメモリ記憶密度に劣ることがあげられる。

インメモリ/オンディスクデータベースが選ばれる別の理由として、製造時の効率が挙げられる。電子製品など、特定の製品の製造ラインにおいて、永続的ストレージが必要な製品とストレージにメモリを使用するものの混合となっている場合がある。このような例としてセットトップボックスがある。そのようなデバイスにおいてデータベースシステムを用いるとき、製造者はハイブリッドデータベースを用いることにより、製品におけるディスクの有無に応じてそれぞれインメモリデータベースとオンディスクデータベースを用いる場合より、コストを低くし、かつコードのカスタマイズ量も減らすことができる。

商用製品 編集

近年、インメモリデータベースは大手データベースベンダの注目を浴びるようになってきた。ヒューレット・パッカードからのスピンオフとして1996年にMarie-Anne Neimatにより起業されたTimesTenは2005年にオラクルに買収された。オラクルはこの製品を独立したデータベースとして、またオラクルデータベースのインメモリデータベースキャッシュの両方として発売している。IBMは2008年にSolidDBを買収し、マイクロソフトは2009年にインメモリデータベースを発売するとの予想がある。[3] 大手データベースベンダ以外では、シアンス・アールの販売するALTIBASEの導入が金融機関などで進んでいる。2010年にはヨーロッパ最大級のソフトウェア企業でありERP最大手のSAPSAP HANAをリリースしたことで、企業のインメモリデータベースの導入が本格化し、インメモリデータベース市場が急速に拡大した。

製品 編集

製品名 ライセンス 備考
Adaptive Server Enterprise (ASE) 15.5 Proprietary enterprise database from Sybase)[4]
Apache Derby Apache License 2.0
Altibase Proprietary has in-memory and disk table; HYBRID DBMS
BlackRay GNU General Public Licence (GPLv2) and BSD License
CSQL GNU General Public Licence or proprietary
Datablitz Proprietary DBMS
eXtremeDB commercial product DBMS, also check out its open source PERST dbms.
H2 Mozilla Public License or Eclipse Public License has a memory-only mode
HSQLDB BSD license has a memory-only mode
IBM TM1 Proprietary in-memory BI and data analysis
InfiniFlux Time Series Database
InfoZoom Proprietary in-memory BI and data analysis
KDB Proprietary DBMS, also supports disk based data
membase Apache License NoSQL, hybrid
MicroStrategy in-memory BI for MicroStrategy 9
MonetDB MonetDB License
MySQL GNU General Public License or proprietary has a cluster server which uses a main-memory storage engine
Oracle Berkeley DB Sleepycat License can be configured to run in memory only
Panorama for Windows and Macintosh, both single user and server versions
Polyhedra IMDB Proprietary relational, supports High-Availability; acquired in 2001 by ENEA
QlikView BI-tool developed by QlikTech
RDM Embedded Proprietary including hybrid
RDM Server Proprietary including hybrid
Redis BSD NoSQL
solidDB by IBM including hybrid, HSB-based HA, Shared memory, embedded, XA, etc.
SAP HANA Proprietary Database engine of the SAP In-Memory Appliance (SAP HANA) produced by SAP
SQLite Public domain hybrid, RAM and disk dbs can be used together
Starcounter in-memory object relational dbms
TimesTen by Oracle in memory only or as a cache for Oracle Database
Vertipaq Proprietary Microsoft PowerPivot and Microsoft Analysis Services in-memory BI engine
VoltDB GNU General Public License v3 in-memory
TREX search engine in the SAP NetWeaver integrated technology platform produced by SAP AG
Xcelerix by Frontex commercial product

参照 編集

  1. ^ “TeleCommunication Systems Signs up as a Reseller of TimesTen; Mobile Operators and Carriers Gain Real-Time Platform for Location-Based Services”. Business Wire. (2002年6月24日). http://findarticles.com/p/articles/mi_m0EIN/is_2002_June_24/ai_87694370 
  2. ^ "Solid Announces General Availability of BoostEngine 4.0, the First On-Disk/In-Memory Hybrid Database Manager" (Press release). PR Newswire. 28 April 2003.
  3. ^ http://www.intelligententerprise.com/channels/business_intelligence/showArticle.jhtml?articleID=210700171
  4. ^ http://www.sybase.com/products/databasemanagement/adaptiveserverenterprise