インメモリデータベース(IMDB:in-memory database)も列方向データベース(CODB:column-oriented database)も関係データベース(RDB:Relational Database)のアクセスを高速化する目的で開発された。特に検索処理に効果的であり、OLAP(online analytical processing)に向いている。
RDBをCODBやIMDBに変更してインストールしても、従来のRDBを対象にしてSQLで記述したプログラムをほとんどそのまま使うことができる製品が多い。
インメモリデータベース(IMDB)
IMDB(in-memory database:インメモリデータベース)とは、すべてのデータをメモリ内に格納するデータベースである。データだけでなく、インデクスや一時領域もメモリ内に置くことにより、ディスアクセスせずに処理できる。処理時間が極度に短くすることができる。特に、OLAPに適している。
大容量メモリが安価になったため実用化されたが、メモリ内に格納できる規模には限度がある。そのため、目的に応じて2つのタイプがある。
- 小規模データベースを対象にしたもの:この場合は、機能が単純になるので処理速度が向上するし、ソフトウェアのサイズも小さくできる。
- 大規模データベースの一部をIMDBにするもの:通常のデータベースとの連携機能が必要になる。
最近の製品では、これらを組み合わせたものが多い。
主要年表
1987年 IMDBの概念
1996年 TimesTen設立
1998年 ターボデータラボラトリー、LFM技術
2001年 Prevayler / Object Prevalence(ウエストフィールド)
2005年 Oh-Pa 1/3(富士通BSC)
2005年 Oracle TimesTen In-Memory Database
2005年 Oracle、TimesTen買収
2005年 Oracle TimesTen In-Memory Database
2007年 IBM、Solid社を買収
2008年 IBM solidDB
2008年 Sybase ASE-IMDB
2008年 SAP、Sybase買収
2010年 SAP HANA(IMDB)
初期のIMDB
- 1987年 IMDBの概念
1987年にアンドリュー(Andrew D. Birrell)、ジョーンズ(Michael B. Jones,)、ウッバー(Edward P. Wobber)は、インメモリでのデータ構造に関する論文「A Simple and Ecient Implementation for Small Databases」を発表した。
しかし当時はメモリ容量が小さかったため、対象は小規模データベースに限定された。そのため、本格的な実装が行われるのはかなり後になる。
- TimesTen
TimesTen社は1996年にHPの技術者たちが設立。IMDBを明記した製品の発表時期はかなり早かったと思われる(私には調べられなかった)。2005年にOlacleに買収されるときは、この分野でのトップベンダだった。
- 2001年 Prevayler / Object Prevalence
ウエストフィールド(Klaus Wuestefeld)は、その概念をObject Prevalenceに実装した。その主要部分をJavaで記述し、オープンソースのPrevaylerを公開した。
さらにSven Van Caekenbergheは、PrevaylerをXMLを用いたCommon Lispで移植しCL-PREVALENCEを開発した。
日本での初期IMDB
- 1998年 LFM技術
1998年に古庄晋二はインメモリデータ処理技術LFM(Linear Filter Method:線形フィルタ法)を発明し、2000年にターボデータラボラトリーを設立。同技術を用いたデータベースエンジンDayDa.Labooを開発した。この技術特許やエンジンは、富士通(Oh-pa 1/3)、NEC(InfoFrame Data Booster)、日立( EXA Size Server)など国産メーカーで活用された。
- 2005年 富士通BSC Oh-Pa 1/3 Data Server
LFM特許を用いた実装。On memory High Performance Architectureの略だという。データウェアハウスや更新系バッチ処理を主用途にした。
IMDBの最近動向
2000年代中頃になると、大容量メモリが安価で得られるようになった。また、大量データの検索が一般的になり、一層の効率向上が求めれてきた。そのため、2000年代後半にはIMDBが注目されるようになった。
- 2005年 Oracle TimesTen In-Memory Database
2005年、OracleはTimesTenを買収、Oracle TimesTen In-Memory Databaseを開発した。Oracle Databaseとの親和性が高い。
- 2008年 Sybase ASE-IMDB
- 2008年 SAP,Sybase買収
- 2010年 SAP HANA
Sybase ASE-IMDBは、データベースの大手Sybaseの開発したので話題になったIMDB。HANA(High Performance Analytic Appliance)は、IMDBのソフトウェア。
大きな反響を呼び、IBM、HP、富士通などハードウェア各社がSAP HANAを搭載するアライアンス製品を発表した。
- 2007年 IBM、Solid社を買収
- 2008年 IBM solidDB
Solid Information Tecnology社は、1992年にフィンランドで設立。1999年に米国へ移転。通信ソフトウェア開発が主要。そのミドルウェアとしてIMDBのsolidDBを用いたSolid FlowEngineを開発。
IBM solidDBは、その技術をDB2やIMSなどIBMのデータベースとの親和性を高めたもの
列指向データベース(CODB)
Columnar Storage:カラムナデータベースともいう。通常のRDBは、テーブルの行をレコードとして格納する。それに対してCODBでは、列の値をまとめてファイルシステム上の近い場所に格納する。
格納配置の違いであるが、このほうがデータの圧縮効果が高く、大量データでの少数データを検索更新する処理効率がよいとされている。すなわち、OLAPに向いている。
この方式が優れていることは以前から知られていたが、注目されるようになったのは2000年代中頃からである。
主要年表
2005年 Vertica(ストーンブレイカー、)
2007年 Sybase IQ(最初に普及し現在でも有名なCODB)
2008年? Netezza
2008年 Cassandra(Facebook、オープンソースCODB)
2009年 Oracle Exadata
2009年 SAP BusinessObjects Explorer
2009年 Apache、CassandraをFacebookから引き継ぐ
2010年 IBM、Netezza買収
2010年 IBM Netezza High Capacity Appliance(CODB)
2010年 SAP HANA
- 2005年 Vertica
IngresやPostgresで有名なストーンブレイカー(Michael Stonebraker)がVertica Systems社を設立。Vertica Analytic Databaseを製品化。
2011年、HP(Hewlett Packard)社はVerticaを買収し、HP Vertica Analytic Systemを発表。
- 2007年 Sybase IQ
最初に普及し現在でも有名なCODB
- 2008年? Netezza
Netezzaは2000年に設立されたデータウェアハウスの構築・コンサルタント会社。CODBを搭載したプロットフォームを開発。
2010年、IBMはNetezzaを買収、「IBM Netezza High Capacity Appliance」を発表
- 2009年 Oracle Exadata
OracleとHPが協力して開発。
- 2009 SAP BusinessObjects Explorer
Sybaseとの連携によるスマートフォンなどを対象にした製品
- 2008年 Cassandra
Facebookの大量のデータを処理するために作られ、2008年にオープンソースになった。2009年にApacheに引き継がれている。
参考URL