長年のボトルネック「HDD」を解消するインメモリ
【技術解説】Oracle TimesTenのインメモリデータベーステクノロジーをひも解く
「Oracle TimesTen」は全てのデータをメモリに格納してアプリケーション層で動作するよう設計されたRDBMSだ。その高速化を実現するテクノロジーやメモリ構造、適した利用分野を解説する。
インメモリデータベース(IMDB)は、米Oracleの「Oracle TimesTen」などのスタンドアロン型データベース管理システム(DBMS)の場合もあれば、米Sybaseの「Sybase Adaptive Server Enterprise(ASE)」のようにDBMSの一部を構成する個別データベースの場合もある。
IMDBの狙いは、スループットを最大化し、遅延を最小化するためにコンピュータのメモリをデータストレージとして利用することにある。ここが、ディスクストレージを利用する従来型DBMSと異なるところだ。ディスクを最適化したデータベースよりもIMDBの方が高速なのは、内部の最適化アルゴリズムが単純で、実行すべきCPU命令も少ないからだ。メモリ内のデータにアクセスするため、高速な応答が可能となる。取引システム、電気通信、防衛システムのように応答時間が極めて重要な意味を持つ用途でIMDBが使われることが多い。IMDBの性質上、これらのデータベースは通常、ディスク常駐型データベースシステムよりも多くのメモリを使用する。
Oracle TimesTenとSybase ASE-IMDBは、アウトオブプロセス型IMDBの例だ。これらのデータベースは、本格的なSQL(多少の方言を伴う場合もある)に加え、セキュリティおよび管理機能を実装している。両データベースともSQL経由でデータにアクセスできる。いずれもディスク常駐型データベースと同様の機能を提供する。このため、これらの製品を使えば、永続的データベースを保持するSQLバックエンドにSQLリクエストをキャッシングするのが容易になる。
TimesTen、Sybase ASE-IMDBをはじめとする最近の商用IMDBのほとんどは、筆者の表現で言えば「リレーショナルモデルの行ベースのストレージインプリメンテーション」をベースとしている。これらの製品はOLTP(オンライントランザクション処理)アプリケーションで威力を発揮する。
Oracle TimesTenとは何か
Oracle TimesTenは、インメモリデータベースとして一からデザインされた製品だ。行ベースのリレーショナルモデル(テーブル、列、データ型、インデックスなど)を用いてデータを保存し、SQLをアクセス言語として使用する。多数のAPIを備え、Oracle PL/SQLを基本的にサポートする。アプリケーションは、他のリレーショナルデータベースと同じようにTimesTenと連係できる。最大の違いは、従来型データベースと比べてTimesTenの方がはるかに優れたパフォーマンスを提供するということだ。TimesTenは全てメモリ上で動作するが、再起動と復元の目的のためだけにデータベースのコピーをディスク上に保持する。このコピーは、チェックポイント設定機能とトランザクションロギングによって最新の状態に保たれるため、障害が発生してもデータを復元できる。TimesTenは、高可用性機能を実現するために一般に用いられるレプリケーションメカニズムも備えている。Cache Connect機能は、バックエンドのOracle Database内のデータのサブセット用の高性能キャッシュとしてTimesTenが機能することを可能にする。こういった使用形態は、Oracle Databaseの「In-Memory Database Cache」オプションと呼ばれる。
クライアント/サーバモードでは、実際のデータベースアクセスを実行するTimesTenサーバプロセスとの間でリクエストおよび応答をやりとりするために、Client APIライブラリは通常、TCP/IPを使用する(UNIXドメインソケットやローカル共有メモリ接続を使うことも可能)。これは、TimesTenデータベースとは異なるホスト上でアプリケーションが動作する場合に使用する通常モードだ。ネットワークラウンドトリップによって発生する遅延に加え、個々のデータベースアクセスに伴うエクストラコードやコンテキストスイッチなどもパフォーマンスに影響を与える。
ダイレクトモードは、アプリケーションとTimesTenが同一ホスト上で動作する場合にのみ使用できる。このモードでは、Data Manager APIライブラリが基本的にTimesTenのデータベースエンジンになる。APIコールはインプロセス関数呼び出しであり、TimesTenデータベース(共有メモリセグメント)はアプリケーションのアドレス空間にマッピングされる。これにより、データベースアクセス経路からコンテキストスイッチが除去されるため、最大のパフォーマンスと最小の遅延をコンスタントに実現する。
異なるアプリケーションプロセス/スレッドがダイレクトモードとクライアント/サーバモードで同時にTimesTenデータベースにアクセスする混合アクセスが発生することも多い。1つのデータベースは最大2000のユーザーコネクションを処理できる。TimesTenがインスタンス(複数TimesTenデータベースの管理)を持っている場合には、通常は最大2万5000ユーザーコネクションまで処理できる。
2つのモードの間でAPIレベルの機能的差異はほとんど存在しないため、一般にアプリケーションコードはどのモードが使用されているのかを意識する必要はない。これは基本的に、ビルドタイムあるいはランタイムの構成で選択する。
ダイレクトモードはTimesTenの斬新な機能の1つだ。企業でのTimesTenの業務配備の大半は、ダイレクトモード専用、もしくはダイレクトモードが基本だ。しかしクライアント/サーバモードも利用される場面もある。
TimesTenキャッシュは透過的だ。キャッシュしたデータを通常のリレーショナルツールを使って見ることができるのだ。アプリケーションがデータベースを中心としてデータを参照する(すなわち、SQLとJDBCを使ってデータにアクセスする)場合、TimesTenが最適かもしれない。しかしTimesTenは非Oracle Databaseとの相互運用性を備えていないため、アプリケーションコードはTimesTenとSybaseなどの他社データベースとの間のデータ移動を管理する必要がありそうだ。
TimesTenのメモリ構造
TimesTenのメモリ構造は、Oracle Databaseのそれよりもはるかにシンプルだ。Oracle Databaseと異なり、TimesTenにはデータベースバッファ、キャッシュ、KEEPプール、RECYCLEプールという概念が存在しない。従来のデータベースシステムは、ディスクI/Oを最小化するという方針で設計されている。このデザイン指針は、I/Oがデータベースのパフォーマンスを左右する極めて重要なファクターであるという認識に由来する。これに対し、インメモリデータベースシステムにはそもそもディスクI/Oが存在しない。その最大の最適化目標は、メモリとCPUへの要求を減らすことだ。
TimesTenは現時点で2種類のインデックスをサポートする。ハッシュインデックスとT-Treeインデックスだ。ハッシュインデックスはキー等価性のフル探索だけに限定されているが、探索は非常に高速であり、(サイズが適正で、小さなテーブルではハードウェアのL1/L2/L3キャッシュ効果が無視できる場合には)ベースとなるテーブルの基数にかかわらず同じパフォーマンスを実現する。ハッシュインデックスはリード/ライトに対する拡張性が高く、コンカレンシー(同時実行性)にも優れる。T-Treeインデックスもリードパフォーマンスは高いが、ハッシュインデックスほどではない。しかし範囲参照機能をサポートするので柔軟性は高い。T-Treeインデックスの弱点は、ライトのワークロードが大きい場合にコンカレンシーが減少することだ。これは、インデックスを修正するたびに、インデックス全体をラッチする必要があるからだ。しかし低コンカレンシー状態のときはT-Treeのライトパフォーマンスは非常に優れている。
TimesTenの利用分野
TimesTenの最大の利点は高速な応答時間であり、それに加えてスループットと高可用性というメリットがある。TimesTenは基本的に、非常に低くかつ安定した応答時間が必要となるOLTP型ワークロードに高い価値を提供する。もう1つ重要なポイントが冗長性だ。1台のデータベースサーバには複数のアプリケーションサーバが運用されるのが一般的だ。これらのアプリケーションサーバにTimesTenを利用すれば、データベースを参照する必要性が少なくなるため、ネットワーク遅延とディスクI/Oが減少する。
インメモリデータベース導入事例
例えば、トレーディングシステムの中にはレート情報をWeb上で提供しているものもある。TimesTenを使用しない場合、アプリケーションサーバはレートに対するクエリを受け取るたびに、ディスク常駐データベースを参照する必要がある。1秒間に10万クエリも発生すると、データベースが対応できなくなる恐れがある。TimesTenはアプリケーションレイヤーと緊密に連係するようデザインされているのに対し、従来型のDBMSははるかに広範な用途向けだ。このため、データ量が膨大でなければ、従来型DBMSの代わりにTimesTenを使用すると、リアルタイム応答時間で圧倒的なアドバンテージが得られる。プログラムトレーディングや相場データのようにベースとなるデータが素早く変化するような用途では、TimesTenが大きな威力を発揮するだろう。というのも、データがリアルタイムであり、実行エンジンによる複雑な処理なしで、ほぼリアルタイムで計算を実行しなければならないからだ。その他の利用分野としては、電気通信や防衛/情報システムなどが挙げられる。
Copyright © ITmedia, Inc. All Rights Reserved.
この記事の著者
新着ホワイトペーパー PR
-
製品資料
[株式会社MatrixFlow] 「物流リソース最適化」ガイド:人員・配車・傭車を出庫依頼の確定前に決めきる -
製品資料
[株式会社キーエンス] なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは -
製品資料
[株式会社セールスフォース・ジャパン] 「CRMは設計と無関係」は本当か? PLMとの融合で実現する高速開発 -
事例
[日本ヒューレット・パッカード合同会社] AIエージェントの時代にどう備える? 「新たな働き手」を支える3要素とは -
製品資料
[日本ヒューレット・パッカード合同会社] “横並びの自動化”から脱却、AI活用で生産性と競争力を高める秘訣
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
法務と開発者で「言葉が通じない」問題 トヨタやソニーが語るOSS管理の真実
-
2
ChatGPTは“検索しまくり”でGeminiは“淡泊”? データが明かすAIの裏側
-
3
肥大化した「SFA」の沼 4カ月でBigQuery×AppSheetの新システムを構築した方法
-
4
損保ジャパンはなぜ「COBOL」を捨てなかったのか? 脱メインフレームの真相
-
5
なぜ「全社配布Copilot」は使われないのか? 失敗に学ぶAI定着
-
6
ネットワールド、ICカード認証対応のシンクライアント構築アプライアンスを販売
-
7
ノベルティプレゼント「Windows 8 TシャツとOffice クリーニングクロスセット」
-
8
個人の業務効率化で終わる企業の盲点 AIで成果を出す「上位6%」の手法
-
9
ソーシャルエンジニアリングテストは慎重に
-
10
AIのトークン削減だけではコストは下がらない 情シスが見るべき「次のKPI」
ホワイトペーパーランキング PR
-
1
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
2
家庭用Wi-Fiルーターの業務利用は危険? 避けるべき理由と具体的な対策
-
3
Microsoft 365を安全に運用 うっかりミスやサイバー攻撃に備えるデータ保護術
-
4
プログラミング不要で誰でも実現できる、ネットワーク運用管理の自動化とは
-
5
財務部門がAIを最大限に活用する方法 無駄のない戦略的リーダーシップへの道
-
6
LLMが兵器化? 元FBI高官が鳴らす警鐘とセキュリティツール統合のポイント
-
7
なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは
-
8
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
-
9
「オンプレミス回帰」せざるを得ない“合理的な理由”
-
10
“あのファイル転送”で暗躍するノーウェアランサム
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー