「インメモリデータベース」、すべてのデータをメモリに入れる超高速データベース

2012年7月2日

この記事は、日経SYSTEMS 6月号に掲載された連載「新野淳一の技術インパクト」第3回のオリジナル原稿をPublickey掲載用に編集したものです。Publickeyでは日経SYSTEMS編集部との合意を得て、雑誌発行から一定期間後に記事をPublickeyに掲載しています。

インメモリデータベース

現在、ほとんどあらゆる業務アプリケーションのバックエンドには、リレーショナルデータベースが存在する。そのリレーショナルデータベースは、1980年代に商用製品が登場した当初から大きな課題を抱えてきた。遅い、という課題だ。

この課題を解決するために、最近ではハードディスクの代わりにフラッシュドライブを用いたり、NoSQLデータベースなどが登場しつつあるが、大きく注目され実用化も進んでいるのが「インメモリデータベース」である。

文字通りすべてのデータをメモリ上で保持することにより圧倒的な速度を実現するインメモリデータベースは、リレーショナルデータベースの「遅い」という課題の大部分を解決してしまう、データベース技術者にとって夢のような技術だ。

しかもハードウェアのトレンドを見れば、メモリはますます安価かつ大容量化することは確実であり、サーバの搭載メモリは大容量化の一途をたどる。この豊富なメモリをいかに活用するかがソフトウェアの進化の方向性と考えると、インメモリデータベースはこれからのリレーショナルデータベースの方向性を明確に示すものだと言える。

大規模データ処理やリアルタイム処理などへ広がり

従来のリレーショナルデータベースの高速化は、いかにハードディスクへのアクセスを少なくするか、アクセスパターンを単純化するかが非常に重要だった。データベースのチューニング作業では、キャッシュメモリを目的に応じて最適化することで性能が数倍以上改善されることも少なくない。だったらすべてのデータをメモリに乗せてしまえ、というのがインメモリデーベースの基本的な考え方だ。

単に大量のメモリを搭載したサーバ上でリレーショナルデータベースを実行すれば高い性能が得られるのであれば、従来のデータベースにメモリを載せるだけで済むはずだ。専用のインメモリデータベースを使う意味はどこにあるのだろう?

従来のデータベースでは、あくまでもデータはハードディスクにあることが前提であり、メモリ上のデータは「キャッシュ」としての扱いである。そのため、キャッシュ内のデータが最新であるかなどのチェックを裏で行っているし、データの保持方式もハードディスク向けに最適化され、メモリ上のデータには最適化されていない。つまり、メモリを大量に積めば高速になることは間違いないが、まだまだ最適化の余地は大きいということだ。

従来のデータベースとインメモリデータベースの両方を製品として提供しているオラクルのドキュメントによると、従来のデータベースではキャッシュメモリを最大化した状態での反応速度はミリ秒(1000分の1秒)単位であるのに対し、インメモリデータベースの反応速度はマイクロ秒(100万分の1秒)単位とのこと。つまりインメモリデータベースは少なくとも1000倍以上速い。大規模なデータ分析やリアルタイム処理など、データベースの活躍の場を広げることになる。

データベースを理解した技術者は必要

インメモリデータベースが普及すれば、プログラマはよほど高度な処理でない限り、性能を気にしたり、チューニング作業に手間をとられることをほとんど気にせず、データベースを「高速なデータのための箱」として扱えることになりそうだ。

一方でインメモリデータベースでもメモリ上のデータが障害時にも失われないように、ディスクに書き出すチェックポイントをどのタイミングで設定するかといった最適化は引き続き必要になるし、非効率なデータアクセスを繰り返すSQL文の実行やロックの競合などが発生すれば、インメモリデータベースといえども性能の劣化は発生するだろう。引き続きデータベース内部のことを理解した技術者は求められるはずだ。

あわせて読みたい

RDB サーバ データベース インメモリデータベース




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本