東京エレクトロン デバイス株式会社



CN Business Section

HOME製品ラインアップOracle Corp. > TimesTen FAQ
製品情報 企業紹介
Oracle Corp.
Oracle TimesTen
Oracle Berkeley DB
FAQ(よくある質問と回答)
 
Oracle TimesTen In-MemorymDatabase FAQ
Architecture
Function

 

Q. 従来のリレーショナル・データベース( RDBMS )とどのようにちがう のですか?


A. TimesTenはすべてのデータが物理的なメモリ(すなわち、 RAM )中にあって 管理されているという仮定に基づいて作られました。結果として、TimesTenでデータに アクセスする機構は RDBMS で使用される技術よりも劇的にシンプルになります。 この結果、TimesTenは実質的に同じ結果を成し遂げるためにより少ない命令、 より少ない CPU 負荷で済み、劇的に速く処理することが可能です。


Q. どうして速いのですか?


「データは必ずメモリ上に存在する」という前提に基づいたアーキテクチャを持ちます。このため余分なデータ探索ステップやバッファ・プール管理のオーバヘッドを排除し、CPU使用率を劇的に減少させる事により高速化を実現しております。


Q. どのような利用方法を前提としていますか?


A. アプリケーションにTimesTenのライブラリをリンクして、アプリケーションからTimesTenのAPIをご利用頂く形になります。ODBCとJDBCをサポートしております。

Q. インメモリ処理の場合、どのようにしてDISKにデータを残すのですか?


A. ディスク永続性は、チェックポイント・ファイルとログファイルという2種類のファイルによって実現されます。「チェックポイント」というイベントを実行した時に、2つのチェックポイント・ファイルに交互にメモリDBの更新差分ブロックが書き込まれます。チェックポイントは全てのアプリケーションがDBから切断した時にも実行されます。ユーザが任意のタイミングで実行することも可能です。最後のチェックポイント以降のトランザクションは、あるタイミングでログバッファからログファイルに記録されていきます。ログファイルはチェックポイントが行われるまで、増え続け次のチェックポイントのタイミングで削除されます。


Q. RAM 上で、どのようにデータの一貫性を実現しますか?


A. データを主として RAM に持っている一方、TimesTenはデータをディスクにも持ちます。TimesTenは従来の RDBMS と同等の一貫性を提供します。  一度コンピュータの電源をオフにして、再度オンにしてもデータは戻ります。 二つの技術がデータの一貫性を保つために使用されます。アプリケーションがテーブルに 変更を加えると、それらの変更は、 RDBMS と非常に良く似た方法でディスクに出力されます。 加えるに、TimesTenのデータストアは周期的にディスクにチェックポイントされます。 チェックポイントはデータストアの完全なスナップ・ショットです。 チェックポイントは非同期で書かれますので、アプリケーションはチェックポイントの 操作が実行されている間にもデータストアに対して、読み出しや書き込みを続けること ができます。ディスクにあるチェックポイントイメージとディクスにあるログを組み合わせる ことでTimesTen は電源停止後に、TimesTenのデータを従来の RDBMS と同じ レベルの一貫性を持って、すべてのユーザ・データを復元することができます。


Q.TimesTen によって提供されるインターフェイスは 32-bit と 64-bit 用で違いますか?


A. いいえ、違いません。TimesTenは 32-bit と 64-bit 環境で同じ ODBC と JDBC インターフェイスのセットをサポートします。


Q. 何か特別なハードウェアやソフトウェア装備を必要としますか?


A. TimesTenはすべてのデータが物理メモリ( RAM )上にあって管理されている という仮定に基づいて設計されています。ですから、ハードウェアに十分な RAM が存在するかどうかが考えるべき最も重要なことです。 これを別にすれば、TimesTenはほとんどハードウェアに気を使うことはありません。

また、どんなアプリケーションに関しても、(適切なクロック・スピードで走る)適当な数の CPUを持っていることはアプリケーションができるだけ速く走るためには重要なこと です。同様に、マルチ CPU の利点を生かすためには、複数のアプリケーションを 動作させるか、マルチスレッドを使用するようにアプリケーションを書くべきです。


Q. どのようにデータを格納し、操作できますか?


A. TimesTenは RDBMS 標準に準拠していますので、データの格納と操作には標準 SQL を使用できます。スキーマ定義には、主に CREATE TABLE, CREATE INDEX, ALTER TABLE などのSQL文を使用します。TimesTenの管理においては、テーブルのエクステント・サイズを計算したり、ファイルのディスク配置を細かく検討したりといった必要がないため、ディスクベースのRDBMSに比べて非常にシンプルです。


Q. システムがクラッシュしたときにも、データベースに書かれる全ての トランザクションを回復できることを保証しますか。


A. はい、保証します。TimesTenはすべてのトランザクションをディスクに書き込む 「 Durable Commit 」モードを提供します。すべてのトランザクションはディスクから 回復され、システムクラッシュのあとにデータベースにリストアされます。「Durable Commit 」 モードは組み込みのSQLステートメント ttDurableCommit でいつでも有効にできます。 アプリケーションは、アプリケーション・パフォーマンスの完全なコントロールを考慮しながら、 あるトランザクションはただちにディスクに書かせ、他のトランザクションはバッファすることができます。


Q. オプティマイザの機能・効果についておしえてください。


A. TimesTenでは、コスト・ベースのオプティマイザを使用します(ルールベースはサポートしていません)。テーブルとインデックスの統計情報を基にコストを算出し、SQL実行プランを生成します。


Q. メモリの断片化への対処は可能ですか?


A. 断片化は異なったサイズの塊でメモリ領域を(割り当ておよび割り当て解除)管理 するどんなシステムでも起こりえます--TimesTenも例外ではありません。TimesTenは、断片化を最小限にするためのメモリ管理技術を使用しますが、 それでも断片化は起こりえます。TimesTenは、データストアの断片化に対処する 2つの手順を提供します。第一に「ttCompact」は、データストア全体を調べて、 メモリ上の隣合うフリーなブロックをマージします。 この操作は、SQLロックをデータストアオブジェクトにかけません、 独立のメモリブロックと管理構造に(mutexか、相互排他オブジェクト) ロックをかけます。

これに変わる手法として、「ttCompactTS(n)」があります。引数である整数 nは関数の呼び出し時に指定して、いくつのブロックを調査するかを定義します。 次回はttCompactTSが次のnブロックを調査するように呼び出され、 結局はデータストア全体を処理する形になります。 この方法は一回で少数のブロックだけを調査しますので CPUの一時的な使用率が少なくなり、アプリケーションへの影響が著しく小さくなります。 典型的なnの値は10-100の範囲でしょう。すべての呼び出しで少数の指定した ブロック数だけ調査するので、アプリケーションへのttCompactTSの影響を小さく コントロールできます。

TimesTenは、すべてのデータストアを(アプリケーションの活動が落ち着いたところで) ttCompactが定期的に、もしくは、(適切な値nで)ttCompactTS(n)が、スクリプトか プログラムで頻繁に実行され、メモリを定期的にコンパクトすることを推奨します。 この手順はメモリの割り当て状態が変わりやすい(大量の挿入/削除、 可変長カラムを含む更新)データストアに対して特に重要です。 コンパクトが十分に頻繁に行われていないことを表すひとつの兆候は、 データストアにたくさんの未割当メモリ領域が存在するにもかかわらず、 オペレーションに対してメモリ領域不足エラーを受け取ることです。


Q. TimesTenアプリケーションでパフォーマンス向上のためにマルチ CPU を 使うにはどうしたらいいですか?


A. TimesTen は SMP (Symmetric Multi-Processor) システムと完全に互換性があり、 高いパフォーマンスを実現するためにマルチ CPU を使用することができます。 方法としては、マルチ・プロセスかマルチ・スレッドのアプリケーションを使用して、 同時にTimesTenデータストアに対してトランザクションを実行することです。 ODBC 属性 SMPOptLevel が、TimesTen 5.0 以降では1、TimesTen 4.3 と 4.5 では3にセットされている場合に限り、 マルチ・プロセスやマルチ・スレッド・アプリケーションによるマルチ CPU のデータベース操作を可能にします。


Q. Xeon と P4 CPU で利用できる Intel のハイパー・スレッディング 技術を利用することができますか?


A. はい、できます。ハードウェア・プラットフォーム (BIOS と OS) がハイパー・ スレッディングをサポートする限り、すべての物理 CPU は アプリケーションに(そしてTimesTenに)二つの「仮想の」 CPU として認識されます。マルチ CPU を利用する標準技術を使用して、 ハイパー・スレッディングによる拡張処理能力をアプリケーションと TimesTenで使用することができます。 いくつかの内部処理リソースはハイパー・スレッディングによる二つの仮想 CPU によって共有されます。 一般的に、2つのハイパー・スレッド CPU を持つシステムは4つの非ハイパー・スレッド CPUを持つシステムと 完全に同じパフォーマンスは期待できません。ひとつのハイパー・スレッディング CPU はおそらく、 1.5-1.6 物理 CPU と考えるべきでしょう。


Q. Java と JDBC をサポートしますか?


A. はい、サポートします。TimesTenはハイ・パフォーマンスのタイプ2の JDBC ドライバを提供します。 開発者は Java の生産性でTimesTenの非常に高いパフォーマンスを提供することができる アプリケーションを書くことができます。


Q. サポートされる最大のデータストア・サイズはどれくらいですか?


A. 64-bit モードでは、TimesTenのデータストアサイズに理論的最大値はありませんが、 データは取り付けられた物理的な RAM に収まらなくてはいけません。 32-bit モードでは、一般的に最大のデータストアサイズは 2 GB です。しかしながら、 いくつかのオペレーティング・システムによって化せられた制限によって、2,3の例外があります。 HP-UX では最大サイズは 1 GB、 Windows (NT / 2000 / XP) では最大サイズは、どの DLL をアプリケーションが 使用しているかによって変わってきます。


Q. TimesTenアプリケーションを書くためにどんなプログラミング言語が使えますか?


A. TimesTenは標準アプリケーション・プログラミング・インターフェイス( API )として ODBC と JDBC をサポートします。両方とも業界標準として定着したものです。 ODBC は C 言語で書かれるアプリケーションに典型的に使用され、JDBC は Java で書かれるアプリケーションに使用されます。TimesTenは ODBC の上層 に乗るネイティブの C++ インターフェイスを使用するために TTClasses と呼ばれる C++ のインターフェイスも提供します。


Q. どのようにハイ・アベイラビリティ・システムに組み込めますか?


A. TimesTenはディスクとメモリにデータを蓄えます。TimesTenに蓄えられたデータは、 伝統的なRDBMSのデータとまったく同じ様に一貫性があります。つまり、コンピュータの電源 を落として再起動しても、データが戻ってくるということです。 加えるに、TimesTen は、 ひとつのマシン上のTimesTenデータストアのテーブルから ひとつかそれ以上の追加のマシン上にデータのコピーを自動的に伝達する強力なレプリケーション を提供します。この特徴は、サーバ停止によるサービスの提供停止を引き起こさないような ハイ・アベイラビリティ( HA )環境を提供します。


Q. データが変更されたときにTimesTenはアプリケーションに更新を知らせることができますか?


A. はい、できます。TimesTenはトランザクション・ログAPI( XLA )を提供します。この アプリケーション・プログラム・インターフェイス( API )はアプリケーションがTimesTenの中にあるひとつかそれ以上のテーブル、もしくはマテリアライズド・ビュー に対する変更を監視することを可能にします。

テーブルの内容が挿入、削除もしくは更新で変更されるときにはいつでも、 XLA を使用するどんなアプリケーションも変更を知ることができます。この メッセージ交換は洗練されたリアルタイム・イベント駆動アプリケーションの記述を 可能にします。マテリアライズド・ビューの特徴と組み合わせると、XLA はデータの リアルタイムの解析の実行に使用でき、自動的にリアルタイムの複雑な状況について アプリケーションやユーザに警告することができます。


Q. RDBMSのようなインデックスをサポートしますか?


A. インデックスはRDBMSで働くようにデータベースへのクエリーのパフォーマンスを改良します。TimesTenは2タイプの インデックスをサポートします: テーブルのプライマリ・キーで自動的に作成される、 ハッシュ・インデックスと CREATE INDEX ステートメントで作成される、 T-Tree インデックスです。 T-Tree インデックスはメモリに最適化されていて、 ディスクに最適化されたRDBMSによって提供される B-Tree インデックスよりも 優れたパフォーマンスを提供します。


Q. バックアップとリカバリをサポートしますか?


A. はい、サポートします。TimesTenはデータベースのスナップショットをディスクや テープにバックアップする ttBackup ユーティリティを提供します。バックアップは フルかインクリメンタルで行うことができます、また、バックアップの進行中でも データベースは操作できます。 ttRestore ユーティリティはttBackupによって 作成されたバックアップをリストアします。加えるに、TimesTenのレプリケーション 機能はネットワークを介して起動中のデータベースのバックアップをすることを 可能にし、トランザクションの損失なしに、自動的に他のノードへのリストアやノード間のレプリケーション開始をします。

Q. 非同期 I/O は可能ですか?


A..ログ・バッファからログ・ファイルへの書き込みタイミングは任意で指定できます。ファイル・バッファから物理HDDへの書き込みタイミングはOSとデバイスの設定に依存します。


Q. どのようなチューニングが可能でしょうか?


A. TimesTenは十分なメモリ領域を確保できればDBとしてのチューニングはほとんど不要ですが、一般的に良く比較されるパラメータとして、ログファイルへの書き込みタイミング(ODBC属性パラメータ:DurableCommits)、ログバッファの大きさ(ODBC属性パラメータ:LogBuffSize)、レプリケーションの同期モード(非同期 vs リターン・レシート)があります。多くのケースでは、アプリケーションの記述方法が大きな影響を及ぼします。


Q. 二重化構成は可能ですか?


A. クラスタリング、コンポーネントの役割管理(Active、Standby)、フェイルオーバについては、外部のクラスタ・ミドルウェアや独自の作りこみによって実現する必要があります。ただしTimesTenではレプリケーションを基本とするため、共有ディスクの付け替えに依存する方式に比べると極めて高速にフェイルオーバを行う事ができます。


Q. 負荷分散構成を組むことは可能ですか?


A. レプリケーションを構成し、ノードごとに競合が発生しないようにDB更新を行うことで負荷分散が可能です。競合が発生するような更新をした場合は、これを検出する機能はありますが完全な競合解消はできませんので、場合によってはデータが意図しない方法で伝播されてしまうことがあります。