性能検証!インメモリDB

インメモリDBを知る 「第2回:検証!RACの耐障害性と拡張性(http://www.thinkit.co.jp/article/96/2/)」では、Oracle Real Application Clusters(以下RAC)の耐障害性と拡張性を有効に活用する手法について触れ、最後にパフォーマンス

佐藤 雅彦

2008年7月28日 20:00

インメモリDBを知る

 「第2回:検証!RACの耐障害性と拡張性(http://www.thinkit.co.jp/article/96/2/)」では、Oracle Real Application Clusters(以下RAC)の耐障害性と拡張性を有効に活用する手法について触れ、最後にパフォーマンス向上のために考慮すべき点をご紹介しました。

 しかしそれらを考慮したとしても、オンライン証券など高トランザクションを求められるシステムでは、ディスク型RDBMSで対応することには限界があります。そこで今回は最近注目を集めているインメモリDBを取り上げ、どのように高トランザクションシステムを処理していけるのかを紹介します。

 最近インメモリDBという言葉を聞く機会が徐々に増えてきました。大手ベンダだけでもTimesTenを買収したOracle社、solidDBを買収したIBM社、自社製品を開発している日立製作所や富士通、そのほかインメモリDBを国策として取り組んでいる韓国ベンダの製品などがあります。

 こうした背景にはCPUやメモリの価格下落や64bitOSの普及により大容量のメモリを扱えるようになったという技術的要因と、インターネットや携帯電話の普及によりリアルタイム性を求められる高トランザクションシステムが増えたという顧客要因の2つがあります。

 しかしインメモリDBには、「すべてのデータをメモリ上に展開しているため速いが、障害時にはデータがすべて消えてしまうので怖くて使えない」「ディスク型RDBMSでもメモリ領域を大きく取れば性能差はなく、わざわざインメモリDBを導入するメリットはない」という意見も聞かれます。

 しかしこれは大きな誤解です。今回は同じOracle製品としてRACとの連携が容易なTimesTenを取り上げ、インメモリ製品を導入するメリットについて説明していきます。

TimesTenのアーキテクチャ

 まずTimesTenの主な特徴について順に説明していきましょう。

 1つ目がインメモリDBという名の通り、すべてのデータをメモリ上に格納することです。さらにデータだけでなく、一時領域や索引もすべてメモリ上で処理します。そのためディスクアクセスを発生させずにアプリケーションを処理することが可能です。

 TimesTenはすべてのデータがメモリにあることが前提のため、アプリケーションは共有ライブラリをリンクしてダイレクトに共有メモリへアクセスします。つまり無駄なインストラクションがないため、少ないCPUリソースしか使いません。

 一方、ディスク型RDBMSはすべてのデータがメモリ上にある保証がないため、たとえメモリ上に格納されていても、TimesTenに比べて少しずつオーバヘッドが発生してCPUリソースを消費してしまいます。

 2つ目がレスポンスタイムが非常に速いことです。1行の検索であれば数マイクロ秒、1行の更新であっても数十マイクロ秒もかかりません。ディスク型RDBMSではどんなにチューニングしたとしてもミリ秒が限界と言われていますので、TimesTenのレスポンスタイムがけた違いに速いことがわかります。

 3つ目がTimesTenはアプリケーション層に配置(=アプリケーションと同居)することです(図1)。これにより、最高のパフォーマンスを発揮します。

 4つ目が標準のAPI(SQL92,ODBC,JDBC)によるアクセスが可能なことです。ほかのインメモリ製品の場合、性能を重視して製品固有のAPIを使用している場合があります。しかしTimesTenは標準APIに準拠しているため、ODBCやJDBCで接続してSQLで処理を行うことが可能です。そのため既存アプリケーションの改修が少なくて済みます。

 5つ目がディスクへのログ出力による永続性の保証です。TimesTenは、チェックポイント処理のタイミングでメモリ上に保存された全データのスナップショットをディスクに書き出します。また、トランザクションログも随時ディスクに書き出しているため、障害が発生しても最新のログファイルを取得した時点までデータの復旧が可能です。

 6つ目がほかのRDBMS同様に行レベルロックと読み取り一貫性が保障されることです。これによりコミットやロールバックが可能です。

 7つ目がTimesTenの冗長構成を実現するレプリケーション機能です。TimesTen同士のデータの同期をはかるため、非同期、亜同期、同期の3種類のレプリケーションモードが用意されています。

 8つ目がOracle DatabaseとTimesTenのデータの同期をはかるCache Connect to Oracle機能です。Oracle Databaseで更新されたデータをTimesTenへ、またはTimesTenで更新されたデータをOracle Databaseへ伝播することが可能です。

 いかがでしょうか。TimesTenのアーキテクチャを理解することで、インメモリDBと言ってもほかのディスク型RDBMSと同じように考えられることがわかったのではないでしょうか。

 次ページでは、実際のところTimesTenがどのくらい速いのか、性能検証の結果から見ていきましょう。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30