主コンテンツへ
Oracle® TimesTen In-Memory Databaseイントロダクション
リリース18.1
E98637-03
  目次へ移動
目次
索引へ移動
Index

前
 
次
 

1 Oracle TimesTen In-Memory Databaseの概要

Oracle TimesTen In-Memory Database (TimesTen)は、高速なレスポンスとスループットのためのメモリーが最適化されたリレーショナル・データベースです。1つ以上のインメモリー・データベース、SQLリレーショナル・データベース、ACID準拠データベースを作成できます。このデータベースは、実行時にメモリー内に完全に格納され、ディスク記憶域にデータを記録することでリカバリおよび再起動が可能です。

次の項では、TimesTenの概要を示します。

TimesTenデータベース・パフォーマンスの概要

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

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

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

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

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

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

TimesTen Scaleout、TimesTen ClassicおよびTimesTen Cacheはすべて、Oracle TimesTen In-Memory DatabaseをRDBMSとして使用するため、同様の高パフォーマンスを実現します。TimesTen Scaleoutが最適なスループットを実現し、TimesTen Classicが最善の待機時間を実現します。TimesTen In-Memory Databaseでは、実行時にデータが存在する場所に関する前提を変更することによって高いパフォーマンスが実現されます。TimesTen In-Memory Databaseでは、メモリー内のデータが管理され、それに応じてデータ構造およびアクセス・アルゴリズムが最適化されます。このため、データベース処理は最大効率で実行されるため、完全にキャッシュされたディスクベースのリレーショナル・データベース管理システム(RDBMS)と比較しても、応答性とスループットを大幅に改善できます。

TimesTen In-Memory Databaseの一般的な機能の概要

特に示されていないかぎり、TimesTen Scaleout、TimesTen ClassicおよびTimesTen Cacheには、類似するデータベース機能があります。

TimesTen APIおよび言語サポート

TimesTenは次をサポートしています。

  • RDBMSのための業界標準言語: SQL。

  • 業界標準のAPI: ODBC、JDBCおよびODP.NET。

  • Oracle API: PL/SQL、Oracle Call Interface (OCI)およびProC/C++。

  • TimesTen固有の処理のためにODBC機能を拡張する、TimesTenで提供されるTTClassesおよび組込みプロシージャ。

  • PythonやNode.jsなどのオープン・ソース・プログラミング言語。

TimesTenのランタイム・アーキテクチャでは、ODBC、JDBC、OCI、Pro*C/C++プリコンパイラおよびODP.NET APIを介した接続がサポートされています。

SQLおよびPL/SQLの機能

TimesTenでは、特別な機能の構成と管理を簡素化するために、豊富なSQL機能がサポートされています。SQLを使用してアプリケーションをシステム内部から遮断すると、既存のアプリケーションに影響を及ぼさずにデータベースを変更または拡張できます。アプリケーション・モジュール、表および列を追加するだけで、新しいサービスを本番環境に簡単に追加できます。OracleデータベースまたはSQLインタフェースをよく理解している開発者は、TimesTenを使用するアプリケーションの開発において、すぐに生産性を高めることができます。詳細は、『Oracle TimesTen In-Memory Database SQLリファレンス』を参照してください。

TimesTenでは、TimesTenインメモリー・データベースのSQLとプロシージャ構造を統合できるプログラミング言語である、Oracle PL/SQL (Procedural Language Extension to SQL)がサポートされています。PL/SQLは、サポートされるすべてのAPIから実行できます。詳細は、『Oracle TimesTen In-Memory Database PL/SQL開発者ガイド』を参照してください。

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

TimesTenでは、TimesTen機能用としてOracle Call Interface (OCI)がサポートされています。

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

TimesTenでは、業界標準のODBCおよびJDBC APIインタフェースもサポートされています。TimesTenでは、完全に標準に準拠し、TimesTen環境で最大のパフォーマンスが得られるように調整されたAPIのバージョンがサポートされています。

他の多くのデータベース・システムでは、ODBC APIのサポートが独自のインタフェースよりも大幅に遅くなる場合があるのに対して、ODBCは、データベース・エンジンで直接動作するTimesTen固有のインタフェースです。

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

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

TimesTenでは、CおよびC++アプリケーションのOracle Pro*C/C++プリコンパイラがサポートされています。プリコンパイラは、TimesTenデータベースにアクセスする埋込みSQLおよびPL/SQLアプリケーションで使用できます。さらに、CまたはC/C++プログラム・ホスト変数を埋込みSQLまたはPL/SQLで使用できます。詳細は、『Oracle TimesTen In-Memory Database C開発者ガイド』を参照してください。

ODP.NETサポート

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

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

オープン・ソース・プログラミング言語

TimesTenでは、オープン・ソース・プログラミング言語であるPythonおよびNode.jsがサポートされており、Oracle Database ODPI-Cドライバを通じて任意のTimesTenデータベースにアクセスできます。

ODPI-Cは、様々なプログラミング言語からOracleデータベースへのアクセスを簡素化することを目的として設計されたOracle Corporationのオープン・ソース・ライブラリです。これは、Oracle Call Interfaceの上位にあるレイヤーです。

詳細は、『Oracle TimesTen In-Memory Databaseオープン・ソース言語サポート・ガイド』を参照してください。

TTClasses

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

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

トランザクションACIDのコンプライアンス

TimesTenでは、データへのACID(Atomic: 原子性、Consistent: 一貫性、Isolated: 独立性、Durable: 永続性)アクセスを提供するトランザクションがサポートされています。TimesTenデータベースに対するすべての処理は、アプリケーション・データへの変更やアクセスを行わない場合でも、トランザクション内で実行します。詳細は、このガイドの「トランザクションの独立性」「永続性」および『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のトランザクション管理に関する項を参照してください。

永続性

TimesTen内のデータベースは、電源障害やクラッシュを超えて持続的に動作します。TimesTenでは、次のものを定期的にディスクに書き込むことで、永続性が実現されます。

  • トランザクション・ログ・ファイルを介したトランザクションによる変更

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

  • チェックポイント・ファイルを介したすべてのデータ

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

TimesTen Classicの永続性

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

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

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

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

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

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

TimesTen Scaleoutの永続性

TimesTen Scaleoutでは、データベース内のデータは複数の要素に分散されます。各要素では、固有のチェックポイント・ファイルおよびトランザクション・ログ・ファイルが保持されます。その結果、各要素に格納されたデータは、独立して永続します。グリッド内の各インスタンスは、データベースの1つの要素を管理します。障害が発生した場合は、1つのインスタンスでチェックポイント・ファイルおよびトランザクション・ログ・ファイルから、その要素に格納されているデータを自動的にリカバリでき、残りのインスタンスでアプリケーションの提供を続行します。

また、TimesTen Scaleoutでは、永続性とフォルト・トレランスを向上させるために、データの複数のコピーを保持できます。

パフォーマンスおよびデータ永続性の必要性に応じて、データベースの永続性設定を変更できます。たとえば、より高いパフォーマンス・レベルで動作するように、データをコミットごとに、またはバッチで定期的にディスクにフラッシュするかどうかを選択できます。

詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』の永続性設定に関する項を参照してください。

問合せの最適化によるパフォーマンス

主流のRDBMSの場合と同様に、コスト・ベースのオプティマイザによって、問合せおよびトランザクションを最も高速に処理する方法が自動的に判別されます。TimesTenには、索引の存在、表のカーディナリティ、問合せ内のORDER BY句の存在などの要因に基づいて最適な問合せ実行計画を選択する、コスト・ベースの問合せオプティマイザが用意されています。

TimesTenのオプティマイザがパフォーマンス・コストを最小化するためにSQL文を分析する方法は、従来のディスク・ベース・システムの場合とは異なります。これは、メイン・メモリー・システムのコスト構造が、ディスク・アクセスが主要なコスト要素であるディスク・ベース・システムとは異なるためです。TimesTenではディスク・アクセスが要素とならないため、最適化コスト・モデルには、ディスク・ベース・システムのオプティマイザでは通常考慮されない要素(条件を評価するコストなど)が含まれます。

TimesTenでは、範囲索引およびハッシュ索引が提供されます。また、問合せオプティマイザでは2種類の結合方法(ネステッド・ループおよびマージ結合)が使用されます。オプティマイザによって、必要に応じて一時索引を作成できます。オプティマイザが受け入れるヒントによって、一時領域の使用とパフォーマンスのような要因間でバランスを取るかどうかの決定権が、アプリケーションに与えられます。

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

同時実行性

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

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

TimesTenでの同時操作の管理の詳細は、第4章「同時操作」を参照してください。

データベース・キャラクタ・セットおよびグローバリゼーション・サポート

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

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

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

データベースの接続

TimesTenでは、ユーザーが自身のアプリケーションでのパフォーマンスと機能性とのバランスを最適にできるように、直接接続オプションおよびクライアント/サーバー接続オプションがサポートされています。

  • 直接接続では、両方が同じシステム上に存在するデータベースとアプリケーションを接続します。

  • クライアント/サーバー接続では、リモート・クライアント・マシンからデータベースへのネットワーク経由の接続に対応します。

アプリケーションから見ると、直接接続またはクライアント/サーバー接続かにかかわらず、TimesTen APIは同じです。

接続オプションの詳細は、TimesTen接続オプションを参照してください。TimesTen Scaleoutに固有の詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』のデータベース接続に関する項およびデータベースへの接続に関する項を参照してください。

Oracle DatabaseからTimesTen表へのデータのロード

SQL問合せの結果をバックエンドOracle DatabaseからTimesTenの単一の表にロードできます。TimesTenでは、Oracle Databaseでユーザーが指定したSELECT文を実行し、その結果セットをTimesTenの表にロードするツールが提供されます。

TimesTenでは、このタスクを実行するための次の方法が提供されています。

  • OracleデータベースとTimesTenデータベース間のデータの接続および転送を実現するTimesTen Cacheを使用します。キャッシュ・グループ内でTimesTenデータベースにOracle Databaseデータをキャッシュできます。TimesTenデータベースのキャッシュ・グループでは、単一のOracle Database表または関連する一連のOracle Database表をキャッシュできます。

  • 対話形式のSQLユーティリティであるttIsqlユーティリティでは、createandloadfromoraqueryコマンドが提供されています。これは、TimesTen表名とSELECT文を指定すると、TimesTen表を自動的に作成し、OracleデータベースでそのSELECT文を実行し、TimesTen表に結果セットをロードします。

  • ttTableSchemaFromOraQueryGet組込みプロシージャは、ユーザー指定のSELECT文を評価して、TimesTenに表を作成するために実行できるCREATE TABLE文を生成します。これは、SELECT文からの結果セットを受け取るのに適しています。ttLoadFromOracle組込みプロシージャは、Oracle DatabaseでSELECT文を実行し、結果セットをTimesTen表にロードします。

システムの監視

TimesTen ClassicおよびTimesTen Scaleoutの両方のシステム監視およびレポートのためにシステム表、システム・ビューおよびttStatsユーティリティを使用できます。次の各項では、システム監視ツールおよびレポート・ツールについて説明します。

システム表およびビューを使用したシステム監視

TimesTenは、ご使用のデータベースにおけるシステム表にメタデータ(ご使用のデータベースの内容に関する情報)を格納します。TimesTenには、SQLを使用して情報を問い合せることができるシステム・ビューも用意されています。

すべてのシステム表およびユーザー表のリストを表示するには、ttIsql alltablesを使用します。すべてのシステム・ビューおよびユーザー・ビューのリストを表示するには、ttIsql allviewsコマンドを使用します。ttIsqlユーティリティの詳細は、Oracle TimesTen In-Memory DatabaseリファレンスのttIsqlを参照してください

詳細は、『Oracle TimesTen In-Memory Databaseシステム表およびビュー・リファレンス』のシステム表およびビューに関する項を参照してください。

TimesTen Classic用のシステム監視

ユーザーは、次のオプションを使用してシステムの監視とレポートを行うことができます。

  • データベース・パフォーマンス・メトリックを監視して表示する、ttStatsユーティリティを使用できます。ユーザーが指定した間隔で、パフォーマンス・スナップショットからHTMLレポートが生成されます。


    注意:

    システム統計は収集されてSYS.SYSTEMSTATS表に格納され、この情報は様々なTimesTenのユーティリティおよび監視機能によって使用されます。

  • データベース・メトリックおよびパフォーマンスを監視するためのグラフィカル・ユーザー・インタフェースを提供する、TimesTen In-Memory Database用Oracle Enterprise Managerシステム監視プラグインを使用できます。また、データベース・パフォーマンスの問題の診断とトラブルシューティングに役立つ、収集されたメトリック情報に関するレポートを参照できます。

  • SQL文のパフォーマンスを判断するためにSQL操作の実行時統計を測定して表示する、ttStatsConfigttSQLCmdCacheInfoおよびttSQLExecutionTimeHistogram組込みプロシージャを使用できます。

TimesTen Scaleout用のシステム監視

ユーザーは、グリッドとデータベースのシステム監視およびレポートのための次のオプションを使用できます。


注意:

TimesTen Scaleout用のシステム監視の詳細は、Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイドのTimesTen Scaleoutの監視を参照してください。

  • ttStatsユーティリティを使用して、データベース・メトリック(統計、状態およびその他の情報)を監視することや、メトリックのスナップショットを取得して比較できます。ユーザーが指定した間隔で、パフォーマンス・スナップショットからHTMLレポートが生成されます。詳細は、Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイドのttStatsユーティリティの使用を参照してください。


    注意:

    システム統計は収集されてSYS.SYSTEMSTATS表に格納され、この情報は様々なTimesTenのユーティリティおよび監視機能によって使用されます。

  • グリッドに含まれるすべてのホストから様々なログを収集できます。これらのログは、グリッドまたはデータベースの使用中に発生する可能性があるエラーのトラブルシューティングに役立ちます。Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイドのグリッド・ログの収集を参照してください。

  • 管理インスタンスを監視できます。Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイドの管理インスタンスの監視を参照してください。

  • SQL Developerを使用して、グリッドとそのコンポーネントを作成、管理および探索できます。また、特定のデータベース・オブジェクトの参照、作成、編集および削除、SQL文とスクリプトの実行、データの操作とエクスポート、レポートの表示と作成、およびデータベース・メトリックの表示ができます。詳細は、Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイドのSQL Developerの使用によるTimesTen Scaleout使用を参照してください。

管理とユーティリティ

アクティブでないSQL、バルク・コピー、バックアップとリストア、データベースの移行およびシステムの監視などのサービスを実行するユーティリティ・プログラムは、ユーザー、スクリプトまたはアプリケーションによって明示的に起動されます。

TimesTenでは、次のような一般的なデータベース・ユーティリティがサポートされています。

  • 対話形式のSQL (ttIsql)。

  • 移行(ttMigrate)では、様々な主要バージョンのTimesTen間で迅速にデータを移動する方法が提供されます。

  • SQL文やシステム・ビューを介して多くの管理アクティビティを使用できます。TimesTenでは、SQL文を使用してマテリアライズド・ビューも設定します。

TimesTen Scaleoutでは、ttGridAdminユーティリティを介してデータベース管理を行います。

TimesTen Classicでは、次のような一般的なデータベース・ユーティリティもサポートされています。

  • バックアップおよびリストア(ttBackupおよびttRestore)。

  • 異なるデータベース・システム間のデータ・コピー。

  • SQL文を使用したOracleデータベースからのレプリケーションおよびキャッシュの設定。

TimesTen組込みプロシージャとC言語関数は、TimesTenの操作と設定に対してプログラム制御を可能にします。TimesTenのコマンドライン・ユーティリティによって、ユーザーは、接続、ロック、レプリケーションなどのステータスを監視できます。また、TimesTenスキーマのシステム表に対してSQL SELECT問合せを使用することによって、それらの状態を取得することもできます。

TimesTen管理の詳細は、第9章「TimesTenの管理」を参照してください。

TimesTen Scaleout固有の機能

TimesTenの一般的な機能に加えて、次の機能がTimesTen Scaleout内でサポートされています

TimesTen Scaleoutの高可用性機能

TimesTen Scaleoutアーキテクチャは、高パフォーマンスを提供し、高可用性をサポートします。

TimesTen Scaleoutを使用すると、1つ以上のホストで実行されている相互接続されたインスタンスのセットであるグリッドを作成できます。グリッドでホストされるデータベースを作成すると、そのデータベースに格納されているデータがグリッドのインスタンス全体に分散されます。各インスタンスには、グリッドでホストされているすべてのデータベースの1つの部分(要素)が含まれます。

図1-2は、アーキテクチャのこの部分を示しています。

  • TimesTen Scaleoutは、データベース内でデータの各項目の複数のコピーを保持するよう指定できるようにすることで、高可用性を実現します(K-safetyと呼ばれます)。データのコピー数はk-factorと呼ばれます。データのコピーを複数保持することで、単一の障害が発生した場合にデータ損失から保護されます。そのため、kが1のグリッドでは高可用性が実現されませんが(データのコピーが1つのみであるため)、kが1より大きいグリッドでは高可用性が実現されます。

    データベースの各コピーは、論理的にはデータ領域内に含まれており、データベースのコピー全体を含むインスタンスを論理的にグループ化します。データ領域はグリッドのk-factorと同じ数だけ存在します。

  • TimesTen Scaleoutでは、データベースの作業がデータ・インスタンス間でパラレルに分散されるため、SQL文の結果がより高速に計算されます。データベースのデータは要素に分散されます。

  • アプリケーションはグリッド内の任意のデータ・インスタンスに接続でき、特定のデータが配置されている場所を認識しなくても、データベースのすべてのデータに透過的にアクセスできます。

  • レプリカ・セットは、同一の内容を持つデータベース要素のセットです(指定されたk-factorの結果として生成される複数のコピー)。各レプリカ・セットには常にk要素が含まれます。レプリカ・セット内の個々の要素は、別々のデータ領域に配置されています。1つの要素に障害が発生した場合、接続をレプリカ・セット内の他の要素(まだ使用可能な場合)に再ルーティングできます。

  • グリッドにインスタンスを追加または削除して次のことを行うことができます。

    • 必要に応じてデータベースの記憶域容量を拡張または縮小します。

    • アプリケーションのパフォーマンス要件にあわせてデータベースのコンピューティング・リソースを拡張または縮小します。

図1-2は、k-factorが2に設定されているグリッド内のデータベースを示しています。

図1-2 TimesTen Scaleoutでのパフォーマンスおよび高可用性アーキテクチャ

図1-2の説明が続きます。
「図1-2 TimesTen Scaleoutでのパフォーマンスおよび高可用性アーキテクチャ」の説明

詳細は、このガイドの「TimesTen Scaleoutのアーキテクチャの概要」および『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』のTimesTen Scaleoutアーキテクチャに関する項を参照してください。

透過的データ分散

TimesTen Scaleoutは複数のインスタンスにデータを分散し、アプリケーションはデータの分散方法を認識する必要はありません。アプリケーションはグリッド内のいずれかのインスタンスに接続すると、特定のデータが配置されている場所を認識しなくても、データベースのすべてのデータにアクセスできます。

TimesTen Scaleoutではデータの分散に関する知識は必要ありませんが、この知識を使用してアプリケーションのパフォーマンスをチューニングできます。可能な場合は、この知識を使用して場所を利用できます。

詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』のデータの透過性に関する項を参照してください。

オンラインでの柔軟なスケーラビリティ

TimesTen Scaleoutでは、データベースのパフォーマンスと記憶域容量の両方を制御するためにインスタンスを追加または削除できます。インスタンスを追加すると、これらのインスタンスを実行しているホストの追加のコンピューティング・リソースが提供されることで、ワークロードのスループットが向上します。ビジネス・ニーズが変化した場合、インスタンス(およびそのホスト)を削除して、少ないリソースでターゲットを満たすことができます。

詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』のスケーラビリティに関する項を参照してください。

K-Safetyを介した自動的な高可用性

「TimesTen Scaleout固有の機能」で説明したように、TimesTen Scaleoutでは、K-safety (k)を使用した別々のホスト全体にわたって複数のデータのコピーがある場合に高可用性およびフォルト・トレランスを実現します。ソフトウェアのエラーによりデータのコピーの1つが使用できない場合は、データの他のコピーにSQL文が自動的にリダイレクトされます(可能な場合)。その間、TimesTen Scaleoutは障害が発生したシステムのデータをデータベースの残りの部分と同期します。

詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』の高可用性とフォルト・トレランスに関する項を参照してください。

管理および監視のための単一ポイント

管理アクティビティを実行するには、グリッド内のすべてのホストにログオンする必要はありません。かわりに、ttGridAdminユーティリティを使用して単一の管理インスタンスからすべての管理アクティビティを実行します。ttGridAdminユーティリティは、各データベースのステータスを定義、デプロイおよび確認するために使用する主要なユーティリティです。

また、ttGridRolloutユーティリティまたはOracle SQL Developer GUI (どちらもすべてのリクエストを実行するために背後でttGridAdminユーティリティを使用)を使用して、グリッドの作成、デプロイおよび管理を容易にすることもできます。

詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』の一元管理に関する項を参照してください。

TimesTen Classic固有の機能

TimesTenの一般的な機能に加えて、次の機能がTimesTen Classic内でサポートされています。

TimesTen Classicの高可用性機能

TimesTen Classicには、パフォーマンスおよび高可用性を実現するいくつかの機能があります。図1-3に、これらの機能のいくつかを示します。

  • TimesTen Classicのレプリケーションでは、2つ以上のホスト間で更新を送信することによって、ほぼ間断なく可用性またはワークロード分散を実現できます。アクティブ・スタンバイ・ペアのレプリケーション・スキームには、アクティブ・データベース、スタンバイ・データベースおよびオプションの読取り専用サブスクライバ・データベースが含まれます。図1-3では、アクティブ・データベースおよびスタンバイ・データベースはプライマリ・サイトに配置できますが、読取り専用サブスクライバは障害時リカバリ・サイトに配置されています。

  • TimesTen Cacheを使用すると、キャッシュ・グループ内の表にあるTimesTenデータベースにOracleデータベースの一部をキャッシュできます。図1-3では、Oracleデータベースにキャッシュされた表をTimesTenに読取り専用コピーとしてキャッシュできます。TimesTen Cacheでは、Oracle表での変更が、TimesTenデータベースにキャッシュされているコピーに自動的に伝播されます。

    図1-3では、2つのOracleデータベースがActive Data Guard (ADG)構成内に設定されています。1つはプライマリ・サイトに、もう1つは障害時リカバリ・サイトにあります。ADGは、プライマリOracleデータベースで行われたデータの変更をスタンバイOracleデータベースに伝播します。TimesTen Cacheと組み合せて使用すると、TimesTen内でADGを統合することにより、スタンバイOracleデータベースに伝播された変更のみをキャッシュにリフレッシュするよう徹底できます。プライマリOracleデータベースに障害が発生した場合は、スタンバイOracleデータベースに切り換えます。その後、TimesTen Cacheも切り換えられ、Oracleデータベースとの一貫性を維持しながら自動リフレッシュが継続されます。

    スタンバイOracleデータベースに障害が発生した場合、またはプライマリ・サイト全体に障害が発生した場合、他のリカバリ方法も用意されています。詳細は、『Oracle TimesTen Application-Tier Database Cacheユーザーズ・ガイド』の非同期Active Data Guardの使用時の障害後のリカバリに関する項を参照してください。

図1-3 TimesTen Classicのパフォーマンスおよび高可用性の構成

図1-3の説明が続きます
「図1-3 TimesTen Classicのパフォーマンスおよび高可用性の構成」の説明

TimesTen Cacheとレプリケーションの詳細は、「キャッシュ・データ」および「レプリケーション」を参照してください。

サーバー間のデータ・レプリケーション

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

トランザクション・ログAPI (XLA)

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

TimesTen Classicで提供されるマテリアライズド・ビューをXLAとともに使用することで、SQL問合せで記述されたイベントの通知を有効にできます。XLAの主な目的は、トリガーにかわる高パフォーマンスで非同期の機能を提供することです。

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

自動データ・エージング

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

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

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

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

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

TimesTen Cache固有の機能

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

TimesTen Cacheには、自動データ同期を使用してOracleデータベース表をキャッシュする複数のタイプのキャッシュ・グループが用意されています。

詳細は第7章「TimesTen Cache」を参照してください。