ヘッダーをスキップ
Oracle® In-Memory Database Cache概要
リリース11.2.1
B56058-02
  目次へ
目次
索引へ
索引

前へ
前へ
 
次へ
次へ
 

1 Oracle TimesTen In-Memory DatabaseおよびOracle In-Memory Database Cache

Oracle TimesTen In-Memory Database(TimesTen)は、メモリーが最適化されたリレーショナル・データベースです。今日のリアルタイム・エンタープライズおよび電子通信、資本市場、防衛などの業界で必要とされている応答性および高いスループットをアプリケーションに提供します。Oracle In-Memory Database Cache(IMDB Cache)で、Oracle TimesTen In-Memory DatabaseはRDBMSエンジンとして使用されます。Oracle TimesTen In-Memory Databaseは、埋込みデータベースとしてアプリケーション層にデプロイされ、標準SQLインタフェースを使用して物理メモリーに完全に対応するデータベース上で動作します。トランザクションのリアルタイム・レプリケーションによって、メモリー内データベースの高可用性が実現されます。

Oracle In-Memory Database Cache(IMDB Cache)は、Oracle Databaseの製品オプションであり、アプリケーション層におけるレスポンス時間を向上させる目的で、パフォーマンス重視のOracle Databaseのサブセットをキャッシュするのに役立ちます。キャッシュ表は、読取り専用または更新可能にすることができます。アプリケーションでは、標準SQLを使用してキャッシュ表の読取りおよび更新を行い、キャッシュとOracle Database間でデータの同期が自動的に実行されます。Oracle In-Memory Database Cacheによって、リレーショナル・データベースの完全な汎用性と機能性、Oracle Databaseとのキャッシュ一貫性の透過的な保持およびメモリー内データベースのリアルタイム・パフォーマンスがアプリケーションに提供されます。

Oracle TimesTen In-Memory DatabaseおよびIMDB Cacheでは、実行時にデータが存在する場所に関する前提を変更することによってリアルタイム・パフォーマンスが実現されます。メモリー内でデータを管理し、それに応じてデータ構造およびアクセス・アルゴリズムを最適化することによって、データベース操作の効率が最大限になり、完全にキャッシュされるディスク・ベースのリレーショナル・データベース管理システム(RDBMS)と比較しても、応答性およびスループットの大幅な向上が実現されます。TimesTenおよびIMDB Cacheのライブラリもアプリケーション内に埋め込まれるため、コンテキスト・スイッチおよび不要なネットワーク操作が行われなくなり、パフォーマンスがさらに向上します。

標準リレーショナル・データ・モデルに従って、TimesTenおよびIMDB Cacheデータベースへのアクセスには、SQL、JDBC、ODBC、PL/SQLおよびOracle Call Interface(OCI)を使用できます。SQLを使用してアプリケーションをシステム内部から遮断すると、既存のアプリケーションに影響を及ぼさずにデータベースを変更または拡張できます。アプリケーション・モジュール、表および列を追加するだけで、新しいサービスを本番環境に簡単に追加できます。主流のRDBMSの場合と同様に、コスト・ベースのオプティマイザによって、問合せおよびトランザクションを最も高速に処理する方法が自動的に判別されます。Oracle DatabaseまたはSQLインタフェースをよく理解している開発者は、TimesTenおよびIMDB Cacheによるリアルタイム・アプリケーションの開発において、すぐに生産性を高めることができます。

Oracle TimesTen In-Memory Databaseが高速である理由

従来のディスク最適化RDBMSによって行われる作業の多くは、データが主にディスクに常駐するという前提に基づいて行われます。この基本的な前提に基づいて、最適化アルゴリズム、バッファ・プール管理、および索引検索技法が設計されています。

ディスク・ベースのRDBMSがそのすべてのデータをメイン・メモリー内に保持するように構成されている場合でも、ディスク・ベース・データの常駐という前提がパフォーマンスの足かせになります。これらの前提は、処理ロジック、索引付けスキーム、データ・アクセス・メカニズムなどについてハードコードされているため、簡単に変更できません。

TimesTenは、データがメイン・メモリーに常駐するという認識で設計されているため、データへのより直接的な経路を選択し、コード・パスの長さを短縮してアルゴリズムおよび構造を簡素化できます。

ディスク常駐という前提がなくなると、複雑さは大幅に緩和されます。マシンのコマンド数は減少し、バッファ・プール管理や余分なコピーは不要となり、索引ページも縮小し、これらの構造は簡素化されます。設計はより単純かつ縮小され、リクエストは高速に実行されます。図1-1に、TimesTenの設計の簡素さを示します。

図1-1 ディスク・ベースのRDBMSとTimesTenの比較

図1-1の説明が続きます。
図1-1「ディスク・ベースのRDBMSとTimesTenの比較」の説明

従来のディスク・ベースのRDBMSでは、クライアント・アプリケーションは、なんらかの種類のIPC接続を介してデータベース・サーバー・プロセスと通信を行います。これによって、すべてのSQL操作に対してパフォーマンス・オーバーヘッドが追加されます。アプリケーションでは、TimesTenをそのアドレス空間に直接リンクすることによって、IPCオーバーヘッドを排除し、問合せ処理を簡素化できます。これはTimesTenに直接接続することで実現されます。従来のクライアント/サーバー・アクセスも、レポートなどの機能に対して、または多数のアプリケーション層プラットフォームで共通のメモリー内データベースへのアクセスを共有する必要がある場合にはサポートされます。アプリケーションから見ると、直接接続またはクライアント/サーバー接続かにかかわらず、TimesTen APIは同じです。

TimesTenおよびIMDB Cacheの機能の概要

TimesTenおよびIMDB Cacheには、多くのよく知られているデータベース機能およびいくつかの独自の機能が含まれています。この項では説明する内容は、次のとおりです。

TimesTenのAPIサポート

TimesTenのランタイム・アーキテクチャでは、ODBC、JDBC、OCIおよびODP.NETのAPIを介した接続がサポートされています。また、TimesTenでは、TimesTen固有の処理に対してODBC、JDBCおよびOCIの機能を拡張し、かつPL/SQLをサポートする組込みプロシージャおよびユーティリティも提供されています。追加のAPIサポートについては、後続の章を参照してください。

ODBCおよびJDBCインタフェース

TimesTenおよびIMDB Cacheでは、ODBCおよびJDBCがサポートされています。他の多くのデータベース・システムでは、ODBCまたはJDBC APIのサポートが独自のインタフェースよりも大幅に遅くなる場合があるのに対して、ODBCおよびJDBCは、データベース・エンジンで直接動作するTimesTen固有のインタフェースです。TimesTenでは、完全に標準に準拠し、TimesTen環境で最大のパフォーマンスが得られるように調整されたAPIのバージョンがサポートされています。

詳細は、『Oracle TimesTen In-Memory Database C開発者ガイド』および『Oracle TimesTen In-Memory Database Java開発者ガイド』を参照してください。

SQLおよびPL/SQLの機能

TimesTenおよびIMDB Cacheでは、広範なSQL機能およびSQL拡張機能がサポートされているため、レプリケーションやIMDB Cacheなどの特別な機能の構成と管理が簡単になります。

TimesTenおよびIMDB Cacheでは、PL/SQL(Procedural Language Extension to SQL)がサポートされています。このプログラミング言語を使用すると、TimesTenまたはIMDB CacheデータベースでSQLにプロシージャ構造を統合できます。PL/SQLは、ODBC、JDBC、TTClasses、OCI、Pro*C/C++プリコンパイラなどのクライアント・アプリケーションから実行できます。

詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス・ガイド』および『Oracle TimesTen In-Memory Database PL/SQL開発者ガイド』を参照してください。

OCIおよびPro*C/C++プリコンパイラのサポート

TimesTenおよびIMDB Cacheでは、TimesTenの機能に対してOracle Call Interface(OCI)およびPro*C/C++プリコンパイラがサポートされています。

TimesTen OCIは、Oracleクライアント・ライブラリおよびTimesTen ODBCライブラリに依存しています。TimesTen OCIサポートによって、既存の多くのOCIアプリケーションを、TimesTenでダイレクト・モードまたはクライアント/サーバー・モードで実行できます。OCIをデータベース・インタフェースとして使用する他のOracle製品(Pro*C/C++など)を使用することもできます。また、OCIアプリケーションからPL/SQLをコールすることもできます。

Pro*C/C++プリコンパイラは、TimesTenデータベースにアクセスする埋込みSQLおよびPL/SQLアプリケーションとともに使用できます。

詳細は、『Oracle TimesTen In-Memory Database C開発者ガイド』を参照してください。

ODP.NETサポート

Oracle Data Provider for .NET(ODP.NET)は、Microsoft ADO.NETインタフェースの実装です。TimesTenおよびIMDB Cacheに対するODP.NETサポートによって、.NETクライアント・アプリケーションからTimesTenデータベースへの高速で効率的なADO.NETデータ・アクセスが提供されます。

詳細は、Oracle Data Provider for .NET Oracle TimesTen In-Memory Databaseサポートのユーザーズ・ガイドを参照してください。

トランザクション・ログAPI

TimesTenおよびIMDB Cacheには、データベース外の動作に連動させるために、アプリケーションで更新アクティビティを監視できるAPIが用意されています。TimesTenおよびIMDB Cacheでは、この機能がトランザクション・ログAPI(XLA)によって提供され、アプリケーションで、コミットされる更新レコードを監視し、検出された更新に基づいて様々な動作を起動できます。たとえば、XLAアプリケーションでは、検出した更新を別のデータベース(TimesTenまたはディスク・ベースのRDBMS)に適用できます。別のタイプのXLAアプリケーションでは、重要な更新が行われたことをサブスクライバに通知できます。

TimesTenおよびIMDB Cacheで提供されるマテリアライズド・ビューをXLAとともに使用することによって、SQL問合せで記述されたイベントの通知を有効にできます。

詳細は、「トランザクション・ログAPI」および『Oracle TimesTen In-Memory Database C開発者ガイド』を参照してください。

TTClasses

TimesTen C++ Interface Classes(TTClasses)は、パフォーマンス速度を高速に維持したままでODBCより簡単に使用できます。このC++クラス・ライブラリでは、最も一般的なODBC機能が含まれているラッパーが提供されます。また、TTClassesライブラリは、アプリケーション・ソフトウェアの作成時に最良の方法を推奨するためにも使用されます。

詳細は、『Oracle TimesTen In-Memory Database TTClassesガイド』を参照してください。

分散トランザクション処理API

TimesTen では、X/Open XA仕様とそのJava派生機能であるJavaトランザクションAPI(JTA)を実装しています。

TimesTenのXAインタフェースは、分散トランザクション処理(DTP)環境でトランザクション・マネージャが使用するために実装されています。これらのインタフェースを使用することで、新しいトランザクション・マネージャを作成して、あるいは既存のトランザクション・マネージャを適用して、TimesTenリソース・マネージャと連携した処理を実現できます。

TimesTenのJTAインタフェースは、Javaアプリケーション、アプリケーション・サーバー、トランザクション・マネージャを有効にして、TimesTenリソース・マネージャをDTP環境で使用するために実装されています。

詳細は、『Oracle TimesTen In-Memory Database C開発者ガイド』および『Oracle TimesTen In-Memory Database Java開発者ガイド』を参照してください。

アクセス制御

アクセス制御を使用してTimesTenおよびIMDB Cacheをインストールすると、特定の権限を持つユーザーのみが特定のTimesTen機能にアクセスできるように設定できます。TimesTenアクセス制御では、標準SQL操作を使用して、特定の権限を持つTimesTenユーザー・アカウントを設定します。TimesTenでは、オブジェクトレベルのアクセス制御と、データベースレベルのアクセス制御がサポートされます。

詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』を参照してください。

データベースの接続

TimesTenおよびIMDB Cacheでは、ドライバ・マネージャを介した接続に加えて、高パフォーマンスを実現するためにダイレクト・ドライバ接続がサポートされています。また、クライアント/サーバー接続もサポートされています。

これらの接続オプションによって、ユーザーはアプリケーションに対して、最高のパフォーマンスおよび機能性のトレードオフを選択できます。ダイレクト・ドライバ接続は最速です。クライアント/サーバー接続では柔軟性が向上します。ドライバ・マネージャ接続では、異なるバージョンのODBC用に作成されたODBCアプリケーション、またはODBCインタフェースを使用する複数のRDBMS製品のサポートが可能です。

詳細は、「TimesTen接続オプション」を参照してください。

永続性

TimesTenおよびIMDB Cacheでは、永続性は、ディスク・ベース・バージョンのデータベースのトランザクション・ロギングと定期的リフレッシュを組み合せることによって実現されます。ログ・レコードは、トランザクションに対して非同期または同期でディスクに書き込まれ、アプリケーションによってトランザクション・レベルで制御されます。ネットワーク・システム内での非金銭的トランザクションなどの最大スループットが優れたシステムでは、非同期ロギングによって、発生の可能性がある障害を最小限に抑えて非常に高いスループットを実現できます。データ整合性を保持する必要がある場合(証券取引の場合など)、TimesTenおよびIMDB Cacheを使用すると、データを失うことなく、完全な永続性が保証されます。

TimesTenでは、次の場合にトランザクション・ログが使用されます。

  • アプリケーションまたはデータベースで障害が発生した場合にトランザクションを記録する。

  • ロールバックされるトランザクションを取り消す。

  • 他のTimesTenデータベースに変更をレプリケートする。

  • Oracle表にTimesTenの変更をレプリケートする。

  • アプリケーションで表への変更を検出(XLA APIを使用)できるようにする。

TimesTenおよびIMDB Cacheでは、バックグラウンドで処理され、データベース・アプリケーションにほとんど影響を与えないチェックポイント処理で、ディスク・ベース・バージョンのデータベースが保持されます。この処理は、ファジー・チェックポイントと呼ばれ、自動的に実行されます。また、TimesTenおよびIMDB Cacheには、リカバリでトランザクション・ログ・ファイルを必要としない、ブロッキング・チェックポイントもあります。ブロッキング・チェックポイントは、アプリケーションで開始する必要があります。TimesTenおよびIMDB Cacheでは、チェックポイントの途中で障害が発生した場合に備えて2つのチェックポイント・ファイルが保持されます。アプリケーションのアクティビティに対するチェックポイントの影響を最小限に抑えるために、チェックポイント・ファイルはトランザクション・ログとは別のディスクに存在している必要があります。

詳細は、次の項を参照してください。

問合せの最適化

TimesTenおよびIMDB Cacheには、索引の存在、表のカーディナリティ、問合せ内のORDER BY句の存在などの要素に基づいて最適な問合せ計画を選択する、コスト・ベースの問合せオプティマイザが備えられています。

メイン・メモリー・システムのコスト構造は、ディスク・アクセスが主要なコスト要素であるディスク・ベース・システムのコスト構造とは異なるため、TimesTenおよびIMDB Cacheでは、オプティマイザのコスト感度がディスク・ベース・システムよりも少し高くなります。TimesTenおよびIMDB Cacheではディスク・アクセスが要素とならないため、ディスク・ベース・システムのオプティマイザでは通常考慮されない要素(条件を評価するコストなど)が、最適化コスト・モデルに含まれます。

TimesTenおよびIMDB Cacheでは、範囲索引、ハッシュ索引およびビットマップ索引が提供され、2種類の結合方法(ネステッド・ループとマージ結合)がサポートされています。オプティマイザによって、必要に応じて一時索引を作成できます。

また、オプティマイザが受け入れるヒントによって、一時領域の使用とパフォーマンスのような要因間でバランスを取る柔軟性が、アプリケーションに与えられます。

問合せオプティマイザと索引付けテクニックの詳細は、「問合せの最適化」を参照してください。

同時実行性

TimesTenおよびIMDB Cacheでは、共有データベースが完全にサポートされています。アプリケーションのレスポンス時間、スループットおよびトランザクション・セマンティクス間の最適なバランスを選択できるオプションが提供されています。

コミット読取り分離レベルは、非ブロッキング処理を実現します。これがデフォルトの分離レベルです。きわめて厳密なトランザクション・セマンティクスを持つデータベースに対しては、シリアライズ可能分離レベルを使用できます。これらの分離レベルは、ODBC標準に準拠し、最適なパフォーマンスを考慮して実装されています。ODBC標準で定義されているように、デフォルトの分離レベルをTimesTenまたはIMDB Cacheデータベースに対して設定でき、このデフォルトの分離レベルは、実行時に各接続に対して動的に変更できます。

TimesTenおよびIMDB Cacheにおける同時操作の管理の詳細は、「同時操作」を参照してください。

自動データ・エージング

データ・エージングは、不要となったデータを削除する処理です。通常、データ・エージングには、特定の時間値に基づいた古いデータの削除と最低使用頻度(LRU)に基づいたデータの削除の2つのタイプがあります。たとえば、昨日の物価リストの削除、システムからログアウトしているユーザーのプロファイルとプリファレンスの削除、2年以上前の詳細記録の削除などを実行できます。

TimesTenのデータベース表およびIMDB Cacheデータに対して、次の2つのタイプの自動データ・エージング機能を使用できます。

  • タイムスタンプ値に基づいた時間ベースのデータ・エージング

  • LRUアルゴリズムに基づいた使用率ベースのデータ・エージング

詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』の表へのエージングの実装に関する説明と、『Oracle In-Memory Database Cacheユーザーズ・ガイド』のキャッシュ・グループへのエージングの実装に関する説明を参照してください。

グローバリゼーション・サポート

TimesTenおよびIMDB Cacheでは、ネイティブ言語でのデータの保存、取得および処理に対してグローバリゼーション・サポートが提供されています。最もよく使用されるシングルバイト・エンコーディング、マルチバイト・エンコーディングおよびUnicodeを含む、50を超える様々な各国語キャラクタ・セット、各国間共通キャラクタ・セットおよびベンダー固有のキャラクタ・セットがサポートされています。接続キャラクタ・セットは、別のエンコーディングで実行されているアプリケーションでTimesTenおよびIMDB Cacheデータベースと通信できるように定義できます。アプリケーションとデータベース間のキャラクタ・セットの変換は、透過的に自動で実行されます。

TimesTenおよびIMDB Cacheでは、異なる言語および文化に関する複雑なソート要件を処理する言語ソート機能が提供されています。80を超える言語ソート機能が提供されています。これらの言語ソート機能は、大/小文字を区別せず、アクセント記号の有無を区別しないソートおよび検索をアプリケーションで実行できるように拡張できます。

詳細は、『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のグローバリゼーション・サポートに関する説明を参照してください。

管理とユーティリティ

TimesTenおよびIMDB Cacheでは、対話型SQL、バックアップとリストア、コピー(異なるデータベース・システム間のデータのコピー)、移行(異なるバージョンのTimesTenまたはIMDB Cache間のデータ移動のための高速コピー)など、典型的なデータベース・ユーティリティがサポートされています。

SQL拡張機能を使用することによって、多くの管理作業を実行できます。また、TimesTenおよびIMDB Cacheでは、レプリケーション、Oracle Databaseからのキャッシュおよびマテリアライズド・ビューを設定する場合にもSQL拡張機能が使用されます。

TimesTen組込みプロシージャとC言語関数は、TimesTenの操作と設定に対してプログラム制御を可能にします。TimesTenコマンドライン・ユーティリティによって、ユーザーは接続、ロック、レプリケーションなどの状態を監視できます。また、TimesTenスキーマのシステム表に対してSQL SELECT問合せを使用することによって、それらの状態を取得することもできます。たとえば、TimesTenのSYS.SYSTEMSTATS表には、TimesTenアプリケーションの分析やデバッグに有効な多くの統計情報が記録されます。

TimesTen管理の詳細は、「TimesTenおよびIMDB Cacheの管理」を参照してください。

レプリケーション

TimesTenおよびIMDB Cacheのレプリケーションによって、サーバー間のリアルタイム・データ・レプリケーションが可能になり、高可用性および負荷分散が実現します。データ・レプリケーション構成は、非同期送信または同期送信を使用して、競合の検出と解決および障害が発生したサーバーのリストア後の自動再同期化が行われるように、アクティブ/スタンバイまたはアクティブ/アクティブにできます。

詳細は、「レプリケーション」を参照してください。

IMDB Cache

Oracle In-Memory Database Cacheでは、Oracleデータに対して、更新可能なリアルタイム・キャッシュが作成されます。また、Oracle Databaseから計算サイクルをオフロードし、応答性に優れたスケーラブルなリアルタイム・アプリケーションを使用可能にします。IMDB Cacheによって、Oracle表のサブセットがキャッシュ・データベースにロードされます。更新を双方向で伝播し、キャッシュされないデータに対するSQLリクエストのパススルーを自動化するように構成できます。また、障害が発生すると、データの再同期化を自動的に実行します。

詳細は、「IMDB Cache」を参照してください。