インメモリデータベースでサーバが落ちたらデータはどうなる? インメモリとカラム型データベースの可能性を調べる(その3)

2013年5月21日

サーバのメインメモリ上にあるデータは、サーバの電源が落ちれば消えてしまいます。だからこそ、現在のデータベースではデータを失わないように永続化の手段としてデータベースやログをハードディスクに保存しています。

データベースをメインメモリ上に保持するインメモリデータベースでは、万が一サーバの電源が落ちるなどの物理的障害が発生したらどうなるのでしょう。メモリの内容が消えるのと同時にデータベースを失ってしまったり、整合性が失われるなどの問題が発生してしまう心配はないのでしょうか。

結論としては、インメモリデータベースでもつねにログをハードディスクやフラッシュドライブなどのストレージへ書き込んで、サーバの物理的障害に備えています。インメモリデータベースであっても、メインメモリだけに依存しているわけではないのです。

パーシスタンスレイヤでデータの永続化

例として、SAP HANAが備えている「パーシスタンスレイヤ」について見ていきましょう。パーシスタンスレイヤは、永続化装置としてのストレージと、そこに保存されているログ、データベースのスナップショットで構成されます。

SAP HANAが備えている「パーシスタンスレイヤ」

HANAのデータベースエンジンは、メモリ上のデータベースに対するデータの追加や削除、更新などを行うたびに、その内容をログに書き込んでいます。

このログがあれば、万が一サーバの電源が落ちてメモリ上のデータベースが失われても、ログの中身を最初から再実行することで最後に実行されたトランザクションの時点までデータベースを復旧できます。

ただしずっとログをとり続けているとログが大きくなりすぎて復旧にかかる時間がどんどん長くなっていきます。そこで定期的に「セーブポイント」を設定し、その時点でのデータベースのスナップショットを保存。ログをいったんクリアします。

データベースをまるごと保存するのは時間がかかりますが、データごとにタイムスタンプが付加されているので、セーブポイント以前のタイムスタンプが付いているデータだけをバックグラウンド処理で保存することにより、データベースを止めることなくスナップショットをとることができます。

つまりインメモリデータベースであっても、永続性の命綱としてストレージへ書き込むことは不可欠なのです。そしてログの書き込みに時間がかかってしまうようでは、せっかくのインメモリデータベースの性能の足をひっぱることになります。インメモリデータベースの性能を十分発揮させるにも、結局は高性能なストレージが必要なのです。

TimesTenではデータのレプリカも可能

オラクルのインメモリデータベースであるTimesTenでも、ログやスナップショットをストレージに書き込むことでデータを永続化する方法が採用されています。

さらにTimesTenではクラスタ機能を備えるソフトウェアと組み合わせることでノードのレプリカを二重三重に作ることができます。万が一特定のノードの電源が落ちたり故障した場合にはレプリカ先のノードへ自動的にフェイルオーバーするため、より信頼性の高いインメモリデータベースの運用を可能にしているのです。

次はカラム型データベースについて

ここまで、従来のデータベースをメモリ上に載せた状態とインメモリデータベースの違いとして、インメモリデータベースはCPUやメモリアドレスのレベルで最適化されていること、そしてインメモリデータベースであってもデータの永続化にはストレージを利用していることなどを見てきました。

次の記事では、カラム型データベースについて見ていきましょう。SAPのHANAは、カラム型データベースでありながら、集計や分析だけでなくトランザクションも高速に処理すると説明されています。それはどのような仕組みで実現されているのでしょうか。

≫次の記事「カラム型データベースはなぜ集計処理が高速で、トランザクションが苦手なのか。インメモリとカラム型データベースの可能性を調べる(その4)」に続く。

インメモリとカラム型データベースの可能性を調べる

Tags: RDB データベース HANA SAP インメモリデータベース カラム型データベース

このエントリーをはてなブックマークに追加
ツイート
follow us in feedly





タグクラウド

クラウド / AWS / Azure / Google Cloud
コンテナ / Docker / Kubernetes
クラウドネイティブ / サーバレス
クラウド障害 / 運用・監視

プログラミング言語 / 開発ツール
JavaScript / Java / .NET / WebAssembly
HTML/CSS / Web標準

アジャイル開発 / スクラム / DevOps / CI/CD
ソフトウェアテスト・品質
ローコード/ノーコード開発

データベース / RDB / NoSQL / 機械学習・AI
Oracle Database / MySQL / PostgreSQL
Office / 業務アプリケーション

ネットワーク / HTTP / QUIC / セキュリティ
OS / Windows / Linux / VMware
ハードウェア / サーバ / ストレージ

業界動向 / 働き方 / 給与・年収
編集後記 / 殿堂入り / おもしろ

全てのタグを見る

Blogger in Chief

photo of jniino

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

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

最新記事10本