長年のボトルネック「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.
この記事の著者
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
急増する「AIはこう言ってる」マン 判断を狂わせる「AI忖度」を防ぐには?
-
2
取手市がVDIと決別した理由 更改費用「4倍超」を約1.7倍に圧縮
-
3
「Excel至上主義」の終わらせ方 丸2日の手作業地獄から情シスと現場を救うには
-
4
221人調査で分かった「情シス最大のストレス」は?
-
5
「データストレージの活用方法」に関するアンケート
-
6
「AI時代の統合基盤・エンタープライズAI管理」に関するアンケート
-
7
自宅のWi-Fiが「遅い」「途切れる」本当の原因は? Dellが推奨する鉄則
-
8
本当に安いPCで十分か? “すぐ重くなる”を防ぐノートPC選びの絶対条件
-
9
100億円の「Linux更新」を回避 みずほ銀行が選んだ“おきて破り”のRHEL延命策
-
10
Claudeの不可視透かしに批判殺到 著作権消失や誤判定に潜む企業リスク
ホワイトペーパーランキング PR
-
1
年収2000万「クラウドセキュリティのプロ」になれる資格とは
-
2
セキュリティソフトをすり抜ける標的型攻撃メール、不審メールの見破り方とは?
-
3
Windows Updateの通信集中で回線が逼迫、ネットワーク刷新事例に学ぶ解決策
-
4
財務を戦略的組織へ進化させるAI活用術、4つの主要な障壁と解消方法
-
5
「NAS」「SAN」「DAS」は何が違う? いまさら聞けないストレージの基礎
-
6
“あのファイル転送”で暗躍するノーウェアランサム
-
7
標的型攻撃メールを見破るには? サンプル文面を例に傾向を解説
-
8
商用利用の安全性を確保し大量のコンテンツを高速で生成する、AI活用の秘訣
-
9
マンガで解説、1日で生成AI環境を構築できるワークショップの中身とは?
-
10
Dark AIが台頭する時代の新発想、「より高度なAIで対抗する」具体的方法とは?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー