TimesTen In-Memory Databaseの一般的な機能の概要
特に示されていないかぎり、TimesTen ScaleoutとTimesTen Classicには、同じデータベース機能があります。
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リファレンス』のSQL文を参照してください
TimesTenでは、TimesTenインメモリー・データベースのSQLとプロシージャ構造を統合できるプログラミング言語である、Oracle PL/SQL (Procedural Language Extension to SQL)がサポートされています。PL/SQLは、サポートされているすべてのAPIから実行できます。『Oracle TimesTen In-Memory Database PL/SQL開発者ガイド』のTimesTenでの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開発者ガイド』のTimesTenでのOCIのサポートとODBCでのTimesTenデータベースの使用、および『Oracle TimesTen In-Memory Database Java開発者ガイド』のJDBCでのTimesTenデータベースの使用を参照してください。
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開発者ガイド』のTimesTenでのPro*C/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環境でのODP.NETの初期の考慮事項を参照してください。
オープン・ソース・プログラミング言語
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ガイド』の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を使用)できるようにする。
『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のトランザクションのロギングのための永続オプションを参照してください。
TimesTen Scaleoutの永続性
TimesTen Scaleoutでは、データベース内のデータは複数の要素に分散されます。各要素では、固有のチェックポイント・ファイルおよびトランザクション・ログ・ファイルが保持されます。その結果、各要素に格納されたデータは、独立して永続します。
グリッド内の各インスタンスは、データベースの1つの要素を管理します。障害が発生した場合は、1つのインスタンスでチェックポイント・ファイルおよびトランザクション・ログ・ファイルから、その要素に格納されているデータを自動的にリカバリでき、残りのインスタンスでアプリケーションの提供を続行します。
また、TimesTen Scaleoutでは、永続性とフォルト・トレランスを向上させるために、データの複数のコピーを保持できます。
パフォーマンスおよびデータ永続性の必要性に応じて、データベースの永続性設定を変更できます。たとえば、高いパフォーマンス・レベルで操作するために、データをコミットごと、または定期的にバッチでファイル・システムにフラッシュするかどうかを選択できます。
『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』の永続性の設定を参照してください。
問合せの最適化によるパフォーマンス
主流のRDBMSの場合と同様に、コスト・ベースのオプティマイザによって、問合せおよびトランザクションを最も高速に処理する方法が自動的に判別されます。TimesTenには、索引の存在、表のカーディナリティ、問合せ内のORDER BY
句の存在などの要因に基づいて最適な問合せ実行計画を選択する、コスト・ベースの問合せオプティマイザが用意されています。
TimesTenのオプティマイザがパフォーマンス・コストを最小化するためにSQL文を分析する方法は、従来のファイル・システム・ベース・システムの場合とは異なります。これは、メイン・メモリー・システムのコスト構造が、アクセスが主要なコスト要因であるファイル・システムとは異なるためです。TimesTenではファイル・システムへのアクセスが要因ではないため、最適化コストモデルには、述語の評価コストなど、ファイル・システムのオプティマイザでは通常考慮されない要因が含まれます。
TimesTenでは、範囲索引およびハッシュ索引が提供されます。また、問合せオプティマイザでは2種類の結合方法(ネステッド・ループおよびマージ結合)が使用されます。オプティマイザによって、必要に応じて一時索引を作成できます。オプティマイザが受け入れるヒントによって、一時領域の使用とパフォーマンスのような要因間でバランスを取るかどうかの決定権が、アプリケーションに与えられます。
問合せオプティマイザと索引付けテクニックの詳細は、「問合せの最適化」を参照してください。
同時実行性
TimesTenでは、共有データベースが十分にサポートされています。アプリケーションのレスポンス時間、スループットおよびトランザクション・セマンティクス間の最適なバランスを選択できるオプションが提供されています。
コミット読取り分離レベルは、非ブロッキング処理を実現します。これがデフォルトの分離レベルです。きわめて厳密なトランザクション・セマンティクスを持つデータベースに対しては、シリアライズ可能分離レベルを使用できます。これらの分離レベルは、ODBC標準に準拠し、最適なパフォーマンスを考慮して実装されています。ODBC標準で定義されているように、デフォルトの分離レベルをTimesTenデータベースに対して設定できます。これは、実行時に各接続に対して動的に変更できます。
TimesTenでの同時操作の管理の詳細は、「同時操作」を参照してください。
データベース文字セットおよびグローバリゼーション・サポート
TimesTenでは、ネイティブ言語でのデータの保存、取得および処理についてグローバリゼーション・サポートが提供されています。
最もよく使用されるシングルバイト・エンコーディング、マルチバイト・エンコーディングおよびUnicodeを含む、50を超える様々な各国語文字セット、各国間共通文字セットおよびベンダー固有の文字セットがサポートされています。キャッシュ操作では、Oracle Databaseと互換性があるいくつかのデータベース文字セットがサポートされています。接続文字セットは、別のエンコーディングで実行されているアプリケーションでTimesTenデータベースと通信できるように定義できます。アプリケーションとデータベースとの間の文字セットの変換は、透過的に自動で実行されます。
TimesTenでは、異なる言語および文化に関する複雑なソート要件を処理する、言語ソート機能が提供されています。80を超える言語ソート機能が提供されています。これらの言語ソート機能は、大/小文字を区別せず、アクセント記号の有無を区別しないソートおよび検索をアプリケーションで実行できるように拡張できます。
『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のグローバリゼーション・サポートを参照してください。
データベースの接続
TimesTenでは、ユーザーが自身のアプリケーションでのパフォーマンスと機能性とのバランスを最適にできるように、直接接続オプションおよびクライアント/サーバー接続オプションがサポートされています。
-
直接接続では、両方が同じシステム上に存在するデータベースとアプリケーションを接続します。
-
クライアント/サーバー接続では、リモート・クライアント・マシンからデータベースへのネットワーク経由の接続に対応します。
アプリケーションから見ると、直接接続またはクライアント/サーバー接続かにかかわらず、TimesTen APIは同じです。
接続オプションの詳細は、「TimesTen接続オプション」を参照してください。TimesTen Scaleoutに固有の詳細は、『Oracle TimesTen In-Memory Database Scaleoutユーザーズ・ガイド』のデータベース接続およびデータベースへの接続を参照してください。
OracleデータベースからTimesTen表へのデータのロード
SQL問合せの結果をバックエンドOracle DatabaseからTimesTenの単一の表にロードできます。TimesTenには、ユーザー提供のSELECT
文をOracleデータベースで実行し、結果セットをTimesTenの表にロードするツールが提供されています。
TimesTenでは、このタスクを実行するための次の方法が提供されています。
-
キャッシュ操作を使用します。これにより、OracleデータベースとTimesTenデータベースの間の接続およびデータ転送が実現されます。キャッシュ・グループ内でTimesTenデータベースにOracle Databaseデータをキャッシュできます。TimesTenデータベースのキャッシュ・グループでは、単一のOracle Database表または関連する一連のOracle Database表をキャッシュできます。
-
ttIsql
ユーティリティは、対話形式のSQLユーティリティです。ttIsql
createandloadfromoraquery
コマンドは、TimesTen表名とSELECT
文を指定すると、自動的にTimesTen表を作成し、SELECT
文をOracleデータベース上で実行し、結果セットをTimesTen表にロードします。 -
ttTableSchemaFromOraQueryGet
組込みプロシージャは、ユーザー提供のSELECT
文を評価して、TimesTenに表を作成するために実行できるCREATE TABLE
文を生成します。この表は、SELECT
文からの結果セットの受信に適しています。ttLoadFromOracle
組込みプロシージャは、OracleデータベースでSELECT
文を実行し、結果セットをTimesTen表にロードします。
システムの監視
TimesTen ClassicおよびTimesTen Scaleoutの両方のシステム監視およびレポートのためにシステム表、システム・ビューおよびttStats
ユーティリティを使用できます。次の各項では、システム監視ツールおよびレポート・ツールについて説明します。
システム表およびビューを使用したシステム監視
TimesTenは、ご使用のデータベースにおけるシステム表にメタデータ(ご使用のデータベースの内容に関する情報)を格納します。TimesTenには、SQLを使用して情報を問い合せることができるシステム・ビューも用意されています。
すべてのシステム表およびユーザー表のリストを表示するには、ttIsql
alltables
を使用します。すべてのシステム・ビューおよびユーザー・ビューのリストを表示するには、ttIsql
allviews
コマンドを使用します。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システム監視プラグインを使用できます。また、データベース・パフォーマンスの問題の診断とトラブルシューティングに役立つ、収集されたメトリック情報に関するレポートを参照できます。
-
ttStatsConfig
、ttSQLCmdCacheInfo
およびttSQLExecutionTimeHistogram
組込みプロシージャを使用すると、SQL操作の実行時統計を測定して表示し、SQL文のパフォーマンスを判断できます。
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の管理」を参照してください。