長年のボトルネック「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
-
製品資料
[オーティファイ株式会社] AIでコーディングは加速したのにテストはそのまま? いまQAに必要な進化とは -
事例
[オーティファイ株式会社] QAで開発サイクルを遅延させない 8社の事例に学ぶ「テスト工程」の課題解決策 -
製品資料
[株式会社ガラパゴス] 「AIっぽい広告」の山に埋もれさせない AIマーケで着実に成果をだす秘訣とは? -
製品資料
[株式会社ガラパゴス] 「広告投資」調査レポート2026:勝ち組企業は何に投資しているのか? -
製品資料
[株式会社Helpfeel] 「問い合わせの渋滞」を解消、情シスの負担を軽減する“次世代型AI”活用方法
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
「Copilot」はなぜ放置される? “議事録要約止まり”を脱する処方箋
-
2
脱VMwareの前提が崩れる BroadcomのVDDK公開停止で確認すべき点
-
3
AI全部入り「Microsoft 365 E7」に企業が二の足を踏む訳 移行意向はわずか4%
-
4
9割が頓挫する「AI内製化」 差がついたのはツールより設計力
-
5
「Microsoft 365」が乗っ取られる 跡形もなくMFAを破る手口
-
6
「IBM i(AS/400)はクローズドなシステム」という誤解 DXに寄与する一歩
-
7
「企業内サーバ環境の利用実態」に関するアンケート
-
8
急増する「AIはこう言ってる」マン 判断を狂わせる「AI忖度」を防ぐには?
-
9
「AI活用を前提とした業務PCへの移行」に関するアンケート
-
10
AIエージェントが自社を襲う 人間より危険な「非人間ID」の盲点
ホワイトペーパーランキング PR
-
1
マンガで解説:「ゼロトラスト」「SASE」の必要性とメリット
-
2
5回聞くだけじゃ足りない? トヨタ式「なぜなぜ分析」の正しい実践方法
-
3
インシデント対応工数を約3割削減、東京ガスの事例に学ぶ監視体制刷新のコツ
-
4
AIエージェントで多様な日常業務を効率化するための入門ガイド
-
5
JR西日本ITソリューションズが「監視業務の属人化」を解消した方法とは?
-
6
国税庁の次世代基幹システム「KSK2」稼働開始に向けて、対応すべき変更点とは?
-
7
5分で分かる「セキュア大容量ファイル転送サービス」の機能とメリット
-
8
ドラマで分かる、標的型攻撃メールの被害を受ける企業と回避できる企業の分岐点
-
9
少額減価償却資産が40万円未満へ拡大、令和8年度税制改正で押さえるべき変更点
-
10
「脱Excel」か「Excel快適化」か? 現場にやさしい業務改善の進め方
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー