業界トップクラスのデータベースエキスパート集団

株式会社アクアシステムズ

Tibero RDBMS 5検証
最終回「検証を終えて」

 Tibero RDBMS 5検証

update:

最終回「検証を終えて」

著者:金永昊

Oracleとの互換性について

Tibero RDBMSは、Oracle互換のデータベースでありながら、アーキテクチャーやユーティリティやファイル構造もOracleとそっくりです。Oracleのアプリケーション資産の引き継ぎができ、Oracle上のオブジェクトやデータをTiberoへ移行もでき、従来のOracleデータベースの設計を最小限に抑えて修正し、そのものをTibero RDBMS向けに再利用することができることが今回の検証でわかりました。

しかしながら、TiberoがOracle互換データベースであってもOracleが提供するツールの機能まで互換性があるとは限りません。つまり、既存のOracleデータベースの構築手順、ツールを使用した運用管理方式をTiberoデータベースにそのまま移行することはできませんが、Oracleデータベース運用管理をしたことがあるDBAなら、Oracleとは違う技術・機能だけ覚えておけば十分対応可能です。

Oracle互換データベースとはいえ、Oracle完全互換データベースではないため、データベースの移行やデータベースの入れ替えを行う祭は、次のようなものが完全に問題がないことまで確かめると良いでしょう。

  • LOB(BLOB、CLOBなど)型列の値
  • Oracle特殊の機能を使用しているSQL文
  • 複雑なPL/SQLパッケージとプロシージャ、埋め込みSQLプログラム(Pro*C、Pro*Cobol)
  • Oracleの高機能を最大限使っているアプリケーションの動作
  • Oracle JDBC、ODBCドライバを応用して拡張実装しているアプリケーションの動作

特にOracleデータベースのオブジェクトを移行した後は、必ずデータ・ディクショナリ・ビューでオブオブジェクト数、INVAILD(無効)なオブジェクトがあるかどうか確認してください。 OracleからTiberoへのデータ移行は、TiberoのtbMigratorや、大容量のデータを持つテーブルならTiberoのtbLoderで移行する方法をお勧めします。


アプリケーションのポーティングについて

Tiberoのデータ型はOracleのデータ型に対応し、標準SQL 規格に準拠するだけでなく、多くの業界標準のインターフェースを提供し、JDBC、ODBC、 OLE DB、 CLI (Call Level Interface) 等もサポートしています。
tbJDBC(Tibero Java Database Connectivity)はJDBC 4.0を遵守しています。標準に従って実装する場合は問題ないと思いますが、ベンダー別の非標準の機能で実装した場合は、サポートされないことでエラーが発生する場合があります。
tbCLI(Tibero Call Level Interface)は、ODBC およびX/Open Call Level Interface Standardをベースに開発され、ODBC 2.0のLevel 2 および ODBC 3.0のLevel 1の全条件、そしてODBC 3.0 Level 2の大部分の条件を満たします。従って、ODBCやCLIで作成した既存のアプリケーション・プログラムはtbCLI環境に容易に移行できます。 tbJDBC、tbCLIを使用してアプリケーション・プログラムを開発する際に非標準ライブラリを使って拡張実装すると、予期しないエラーが発生する場合があるということが今回の検証で分かりました。


物理領域まで移行できるか

データベースのI/O性能を上げるために、複数台のハードディスクにデータを分散して読み書きを高速化するのが一般的です。さらに、複数台のハードディスクに同時に同じ内容を書き込むことで、耐障害性の高いデータベースを構成することもあります。
こういったソリューションをデータベースの付属として提供されると嬉しいでしょう。

現在、上記のソリューションを提供するデータベースは、Oracle以外にありません。
但し、2012年8月にストレージ管理機能(Tibero Active Storage)がリリースされる予定です。
Tibero TASはOracle ASMと同様の機能(ボリューム・マネージャ兼Tibero専用のファイルシステム)を搭載するそうです。
但し、1つのデータを2つ以上のハードディスクに分けて同時に書き込めるディスクストライピング機能は、TAS V2バージョンで追加される予定です。(Tibero 6から)
Oracle ASMは、ボリューム・マネージャ兼ファイルシステム(Oracle専用ファイルシステムのため、I/Oの性能が向上)機能を持っているので、Oracle ASMを使うためにあえて導入したOracleデータベースの場合は、Tiberoへ移行できるかどうかは要件次第でしょう。

Oracle ASM機能が必須条件ではなく、ストレージ管理機能が搭載されているデータベース製品が欲しいければ、Tiberoというデータベースも選択肢になるでしょう。 Tiberoがスキーマ・オブジェクトとデータだけではなく、物理領域まで移行できるソリューションを提供できれば、より互換性が高い優秀なデータベースになるはずです。


ユーザーと共に進化するRDBMS

Tibero RDBMSというデータベースは、ベンダー依存のデータベースから脱却できるものではないかと今回の検証で感じました。Tiberoを使用したDBA、開発者からのヒアリングを受け、製品に関する不具合、改善点などを見つけ、Tibero利用者が満足して使えるよう、より品質の良い製品を作ろうとしているようです。


ベンダーが提供する技術や製品に固定されてしまうことから脱却

Oracleデータベースのオブジェクト、データをTiberoでもそのまま使えることが今回の検証で分かりましたが、Oracleデータベース製品が提供するツール機能が、Tiberoのツール機能と少し異なる点がありました。ツールの操作方法、コマンド、機能についてこういった機能が欲しいと要望を出したら、次期バージョンで使えるように対応していただけるそうです。

データベースのストレージ管理機能、Windows 64bit ODBCドライバ、バックアップ情報を格納するリポジトリ機能などについて要望を出したところ、次期バージョンで対応していただけるとの回答をいただきました。この機能は、短期間で簡単に作れるものではないため心配はしていましたが、検討していただき、ポジティブな回答を頂きました。

開発向けPL/SQLのエラーコード、Static View、Dynamic Viewについては、内部構造がOracleとは異なるため、Oracleと同じ対応をすることは難しいところもあるが、可能な限りアプリケーションに修正が発生しないよう対案を継続して検討し、補強して改善するよう努めるそうです。
実際に多くの場合は、ユーザーからの依頼で直ちにサポートを行い、問題を解決した事例があるそうです。


今後のTiberoについて

Tibero機能のロードマップは次の通りです。(2012年5月 基準)

 

Tibero 5 SP1

Tibero 6

リリース

2012.8

2012.12

開発目的

ストレージ管理機能の強化

データウェアハウスの強化

主要機能

1. アプリケーションマイグレーション点検ツール
2. アドバンストキュー(Advanced Queue)
3. Tibero Active Storage V1

  • Tibero用クラスタファイルシステム
  • 分散クラスタファイルシステム(Distributed Cluster File System)

4. Bitmapインデックス追加
5. 実行計画

  • Predicate Information : オペレーションID(実行計画の ID列)の従属情報表示
  • 実行計画の表示画面を見やすくする

1. Tibero Massive Cluster

  • ビックデータ&クラウド
  • 1000ノード&ぺタバイト(Peta byte)データ以上をサポート

2. TAC (Tibero Active Cluster)

  • サーバー側の動的ロードバランス
  • Txフェイルオーバー

3. オブジェクト&関数

  • Object Type Support v1データポンプ(DataPump)

4. Tibero Active Storage V2

  • 管理機能および性能強化
  • Software Mirroring機能

5.DBMS_XPLANパッケージの追加


迅速なサポート・対応

Tibero検証中に2回のバグがあり、パッチを作っていただきました。
PL/SQLと日本語バグフィックス(Bug Fix)にかかった時間は、6日間(土日を引くと4日間)であり、Pro*Cバグフィックスにかかった時間は、たった3日間でした。
これは早急な対応ですが、今回の検証のために早急な対応をしていただいたというわけではなく、通常、ティーマックスソフト社ではこういった問題が発生した場合、早急に対応されているようです。

Tiberoについては、パートナ会社や契約を結んだ契約者ではなくても、会員登録するだけでティーマックスソフト社にTiberoバージョンに関わらず、技術関連問い合わせをすることが可能です。
韓国ティーマックスソフト社には、Tibero Q/Aという掲示板があり、そのQ/A掲示板に問い合わせすると、エンジニアから回答がいただけます。
実際に筆者も今回の検証のため、Q/A掲示板に問い合わせしてみたところ、質問に対する適切なご回答をいただきました。
勿論、保守契約者であれば、最優先で迅速な対応をしていただけます。
電話、メール、オンライン対応だけではなく、場合によってTiberoエンジニアが直接現場まで来て、障害対応をしていただけるそうです。

Tiberoは、Tibero バージョン1から色々なバグフィックスを重ね、韓国で大活躍しているTibero RDBMS 4より進化して、現在最新版であるTibero RDBMS 5が日本に登場しました。 世界に認められているOracle Databaseもその段階を踏んで今のOracleがあるわけで、Tiberoも今後の更なる進化とサポートが期待されます。


コストベース・オプティマイザ(CBO)

今回の実行計画の検証で分かったことですが、統計情報を収集したからといってTiberoオプティマイザの実行計画がOracleオプティマイザと一致するとは限りません。
オプティマイザは、データベース側(データの分布に対する統計情報と表、索引、パーティションなど)のリソースと、サーバー側(I/O、CPU、メモリー)のリソースを考慮してそれぞれの実行計画のコスト(※注1)を計算し、最も効率的な実行計画を立てます。


Tibero実行計画はOracle実行計画に似ているので、SQLチューニングがしやすい。

Tibero SQLチューニングを行うDBA、開発者にとっては嬉しい話です。Oracleで使ったSQLチューニング技術をそのまま持っていけるからです。
但し、インスタンスとパラメータのチューニング技術は、少しOracleと違いますので、勉強して応用する必要があります。


SQLの実際の実行計画を確認できるDBMS_XPLANパッケージがなかった。

SQLのランタイム実行計画を確認するには、SQLTRACE機能を使うか、DBMS_XPLANパッケージを使うかが選択できますが、Tiberoでは、SQLTRACEでランタイム実行計画を確認することができます。
SELECT文でDBMS_XPLANのDISPLAY_CURSORファンクションを使うと、ランタイム実行計画(※注2)(実際の行の値、実際の経過時間)まで確認することができます。そのランタイム情報は、SQLチューニングを行うDBAにとって、決定的な判断要素になるものです。
このDBMS_XPLANパッケージはTibero 6でサポートする予定だそうです。


tbSQL画面に表示される実行計画は、Oracle SQL*Plusより見づらくてPredicate Informationが表示されない。

今回の実行計画の結果をみれば分かりますが、実行計画の出力画面の列の間に“|”がなくて見づらく、Predicate Information (identified by operation id): オペレーションID(実行計画の ID列)の従属情報または、フィルタ述語とアクセス述語に関する情報が表示されないため、正確なSQLチューニングが難しくなる懸念があります。この機能はTibero 5 SP1バージョンで改善する予定です。

※注1:コストとは、SQL処理を行うために必要なリソース量を数値化したもので、オブジェクトの統計情報、特定の実行計画を実行するのに必要な相対時間を示します。
OracleとTiberoに関わらず、最も効率的な実行計画を作成して性能を向上させるためには、正しい統計情報を収集し、統計情報の変動、システムのリソース状態を常に把握しながら維持していくということが重要です。
※注2:ランライム実行計画とは、オプティマイザがSQL文を実際に実行した実行計画です。EXPLAIN EXPAN文の実行計画は、実際にSQL文を実行せずにオプティマイザが選択した予測実行計画です。


こういうデータベースが欲しければTibero導入をお勧め!

  • Oracle RACのようなクラスタ環境で、安価に構成可能なデータベース
  • Oracle Dataguardのようなスタンバイ・データベース環境を、安価に構成可能なデータベース
  • Oracleデータベースの基本機能を十分に使え、安価に構成可能なデータベース
  • Oracleのようなデータベースにリプレースができ、移行が容易でアプリケーションに影響が少ないデータベース
  • Enterprise Editionではなく別途ライセンスを購入せずに、パーティション機能が使えるデータベース
  • Oracleより運用・保守コストダウンができるデータベース
  • Oracle ASMのようなストレージ管理機能が使えるデータベース
  • 迅速な障害対応サポートができるデータベース

終わりに

Oracleデータベースは世界に認められている優秀なデータベースです。
しかし、Oracleの高機能を使うためには、高いライセンス費用がかかります。
今までOracleのような高機能を持ち、Oracle互換の商用データベースはなかったため、導入費用が高くてもOracleを使うしかなかったというユーザーは多いかと思います。

Oracleデータベースの資産は、Tiberoへほぼ移行できました。

アプリケーションで使っているSQL文がTiberoでは未サポート機能のため、エラーが発生したことがありますが、簡単な修正で解決できる問題でした。
特に、今回の検証で使用したPL/SQLスクリプトは、完璧に問題なく動作しました。
PL/SQLだけではくPro*Cプログラムも問題なくプリコンパイル、コンパイル、実行までOracleと同様の結果がでました。ただし、PL/SQLのエラーコードの番号で判断して処理するプログラムの場合は、エラーが発生する可能性があることが分かりました。
データベースの互換だけではなく、プログラム言語までも互換性があることについて検証しながらも驚いたことが何回もありました。

残念ながら、データベースの付属ツールまでは、機能互換性が高くなっかたです。
勿論、Tiberoでも対応する付属ツールはありますが、操作方法やコマンドなどが違いました。
当たり前な話ですが、Oracle付属ツールをTiberoでもそのまま使えるということは、あり得ないですね。
Oracle運用管理方式をTiberoへ移行した場合、ある程度しか移行できなく、Oracle Enterprise ManagerでOracleデータベースを運用管理する現場なら、かなりのリスクを抱えて移行する自信が必要だと思います。それでもtbSQL、tbLoader、tbExport、tbImportツールは、Oracleのものとそっくりで運用管理の方式をそのまま持って行けると思います。
無理な希望かもしれませんが、運用管理ツールまで互換性の高いデータベースであれば、何よりもOracle互換のデータベースだと言えます。

今回の検証はデータベースの資産移行、オブジェクトやデータ移行だけでなく、オプティマイザの実行計画も検証しました。
Tiberoのオプティマイザがデータベースの統計情報、サーバーのリソースなどを考慮して最も効率の良いと判断された実行計画を立てて実行するコストベース・オプティマイザ(CBO)からです。
言い換えると、SQLチューニングに必要な実行計画をTiberoでも確認することができることで、Oracleで使ったSQLチューニング技術もTiberoへ移行ができるという大きなメリットがあります。

ライセンス費用と保守にかかるコスト削減ができ、低予算でOracleが持っている高機能が使えるTiberoデータベースが日本に登場したので、ユーザーはシステムの要件や規模によって、選択できるデータベースが増えたと言えます。
今回の検証で問い合わせのやり取り感じたのですが、ティーマックスソフト社は、Tiberoを世界NO1のRDBMSにしようとする意気込みを強く感じました。

Oracle 互換RDBMSとしてのTiberoは、Oracle Databaseのデータ、オブジェクト、Oracleアプリケーション資産の高い移行性を備えていて、予想以上にスムーズに検証が進みました。
アーキテクチャーやユーティリティ、データ構造がそっくりで、Oracleに類似した高可用性のための機能も備えているということは、Tiberoだけが持っている大きなメリットだと言えます。
もう一つ重要な要素は運用管理です。Oracleと違うところが多くありますので、習得とスクリプトの修正、試験が必要になります。

Tibero開発元では、Oracle DBMSの高可用性ソリューション(RAC、Data Guard)、バックアップ/リカバリツール(RMAN)に対応できるソリューションとツールも提供し、Oracle ASMというストレージ管理機能も次期バージョンで提供する予定です。今後の機能アップに注目です。


業界トップクラスのデータベースエキスパート集団
アクアシステムズ

データベースに関するすべての課題、トラブル、お悩みを解決します。
高難易度、複雑、他社対応不可案件など、お気軽にご相談ください。