OracleからMySQLへの「オブジェクト移行」に向けた3つのステップ:実践 OSSデータベース移行プロジェクト(3)(2/2 ページ)
本連載では、商用DBMSからOSSデータベースへの移行を検討する企業に向け、「MySQL」への移行プロジェクトで必要となる具体的なノウハウをお届けします。今回は、Oracle DatabaseからMySQLへのオブジェクト移行に向けた3つのステップを解説します。
ステップ3:ステップ1の詳細をチェックする
最後に、個々のオブジェクトの移行難易度と注意事項をチェックし、アセスメントを実施します。具体的には以下の10項目を確認します。
(1)テーブル移行
テーブルの移行に関するチェックポイントは以下の通りです。
Oracleテーブル種類 | 使用傾向 | 移行 難易度 |
注意事項 |
---|---|---|---|
標準テーブル | ◎ | 易 | 一部データ型などに差異はあるものの、概念は同じである |
一時表 | ○ | 普 | Oracleは、一次表をトランザクション単位、セッション単位で作成できるが、MySQLはセッション単位しか作成できない また、Oracleでは、一次表が作成されると明示的に指示するまで削除されることはないが、MySQLではセッションが終了すると自動的に削除される |
クラスタ表 | △ | 難 | 代用する仕組みの検討を要する |
外部表 | △ | 普 | 条件付きCSVストレージエンジンで代用可能 |
ディメンション | △ | 難 | 代用する仕組みの検討を要する |
(2)インデックスの移行
インデックスの移行に関するチェックポイントは以下の通りです。
Oracleインデックス種類 | 使用傾向 | 移行 難易度 |
注意事項 |
---|---|---|---|
B-Treeインデックス | ◎ | 易 | 一部データ型などに差異はあるものの、概念は同じである |
インデックス・タイプ(ドメイン・インデックス) | △ | 普 | データ型としてENUM型やSET型を使用することで代用可能 |
ファンクション・インデックス | △ | 普 | generated columnやVIRTUAL生成列で代用可能 |
ビットマップ・インデックス | △ | 難 | 代用する仕組みの検討を要する |
索引構成表 | △ | 難 | 同上 |
索引クラスタ(ハッシュクラスタ) | △ | 難 | 同上 |
(3)ビューの移行
ビューの移行は、SELECT句の構文に一部差異はありますが、概念は同じです。容易に移行を実施できます。
(4)シーケンスの移行
シーケンスの移行は、使用方法によって以下の通り難易度に差異があります。使用方法を個々にチェックしてください。
- カラムとシーケンスの対応が1対1の場合:auto_incrementで対応が可能。容易に移行を実施できる
- カラムとシーケンスの対応がN対1の場合:代用する仕組みの検討が必要となる
(5)シノニムの移行
MySQLにはオーナーの概念がないため、シノニムの移行についての対応は必要ありません。
なお、セキュリティ上オブジェクトへのアクセス制限を行う場合は、ユーザーに対する権限を付与することで対応できます。
(6)ストアドファンクション、ストアドプロシージャの移行
ストアドファンクションとストアドプロシージャの移行は、コーディング方法に注意して実施する必要があります。こちらは次回以降、詳細を解説する予定です。
(7)トリガの移行
トリガの移行に関するチェックポイントは以下の通りです。
Oracleトリガ種類 | 使用傾向 | 移行 難易度 |
注意事項 |
---|---|---|---|
DMLトリガ | ◎ | 易 | コーディング方法に差異があります、詳細は、次回以降で解説予定 |
INSTEAD OF トリガ | △ | 難 | 代用する仕組みの検討を要する |
DDLトリガ | ○ | 難 | 同上 |
イベント・トリガ | ○ | 難 | 同上 |
(8)制約の移行
制約の移行については、DDL(データ定義言語)の記載方法に差異があります。こちらは次回以降、詳細を解説する予定です。
(9)演算子の移行
演算子の移行についても、コーディング方法に差異があります。こちらは次回以降、詳細を解説する予定です。
(10)Oracle独自のオブジェクトの移行
Oracle独自のオブジェクトは直接移行できません。MySQLへの移行においては、これを代用する仕組みを検討する必要があります。例えば、以下のオブジェクトが挙げられます。
- パッケージ、パッケージボディ
- Javaクラス、Javaリソース、Javaソース
- マテリアライズド・ビュー、マテリアライズド・ビュー・ログ
- データベースリンク
- マイニング・モデル
- 外部プロシージャ・ライブラリ
- オブジェクトテーブル、オブジェクト型、オブジェクト・ビュー
- ディレクトリ
次回は、Oracle DatabaseからMySQLへの移行に向けた「データ型の違い」を解説します。
筆者紹介
廣濱顕司(ひろはま けんじ)
SCSK株式会社 ITマネジメント事業部門 基盤インテグレーション事業本部 通信基盤インテグレーション部所属。東京都出身 東京都在住。MySQLやMySQL Clusterのコンサルティング、設計構築、プリセールスなどを行っていたが、最近は営業やマーケティング活動もカバーするようになり、技術が分かる営業として日本国内を縦断中。
荻野邦裕(おぎの くにひろ)
SCSK株式会社所属。神奈川県横浜市在住。1983年よりIT業界へ。その間Oracleを中心とした、DB関連作業を多数経験。DBの移行を得意とする。趣味は自己チューニング(水泳、マラソン、筋トレ)及び愛犬アポロ(チワワ)と遊ぶこと。
潮雅人(うしお まさと)
SCSK株式会社 ITマネジメント事業部門 基盤インテグレーション事業本部 通信基盤インテグレーション部所属。神奈川県川崎市在住。入社当初よりデータベースの設計構築や技術サポート業務に従事。MySQLを中心にしつつもOracle Database、Oracle RACなどの構築にも携わる。趣味はスノーボード、スキューバダイビング、海外旅行など。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 「Oracle Databaseをやめる」という選択肢
Oracle Databaseのライセンス体系が変更され、これまでSE1/SEを利用していたユーザーは「実質の値上げを受け入れる」か「Oracle Databaseをやめる」かの選択が迫られています。本連載では、商用DBMSからOSSデータベースへの移行を検討する企業に向け、「MySQL」への移行プロジェクトで必要となる具体的なノウハウをお届けします。初回は、本連載を展開する背景を説明します。 - MySQLの「気になるウワサ」はどこまで本当?
Webの世界で人気の高いオープンソースRDB「MySQL」は、振り返ると買収や分岐など、運命に翻弄されてきましたが、中には正しくない話も出回っているようです。あの話は、本当ですか? - MySQL+Apache+PHPをインストールしよう
本連載は、これからWebアプリケーション開発を習得しようとする方や本格的なプログラミング経験の少ない方を対象にしています。連載途中から始まるサンプルWebアプリケーション(簡単なショッピングサイト)開発を進めていきながら、基本事項や注意点などについて詳しく解説していきます。 - OSSデータベースのMySQLとPostgreSQLは「次の段階」へ進む
オープンソースデータベースの両雄、MySQLとPostgreSQLはどちらも近々大きく変化を遂げそうです。まだ公式発表前ですが、現在入手できる情報から「来たるべき進化」を考えます。 - いよいよMySQL編、ソースからビルドすべきか?
今回から、オープンソースのRDBMSである「MySQL」の環境構築に話題を移します。まずはソースコードを探して入手と行きたいところですが、MySQLの場合はソースコードからのビルドが最善の策かどうかを考える必要があります(編集部)