インメモリデータベース
インメモリデータベース(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最大手のSAPがSAP 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 |
参照
[編集]- ^ “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日)
- ^ "Solid Announces General Availability of BoostEngine 4.0, the First On-Disk/In-Memory Hybrid Database Manager" (Press release). PR Newswire. 28 April 2003.
- ^ http://www.intelligententerprise.com/channels/business_intelligence/showArticle.jhtml?articleID=210700171
- ^ http://www.sybase.com/products/databasemanagement/adaptiveserverenterprise