ちょっと硬派なコンピュータフリークのBlogです。

カスタム検索

2009-02-24

OracleからMySQLに移行することは可能なのか?

答えは「可能な場合とそうでない場合がある」


ということである。これにはもちろん様々な意見があるだろうが、極論すれば「際限なく予算と時間があればどんな場合でも移行可能!」であると言える。しかし現実的には予算も時間も限られているので、移行出来る場合と出来ない場合があるのは当然のことだろう。OracleにあってMySQLにない機能も存在するし、Oracleの方が性能が出るアプリケーションの負荷パターンも多い。Oracle固有の機能(ストアドパッケージなど)を使いまくってる場合には、移行はとんでもなく困難な作業になる。ただし、逆もまたしかりでMySQLからOracleへの移行でも同じことが言える。いずれのデータベースもデータベースとして求められる必須の機能は備えているので、単に「データベースを利用したアプリケーション」を構築する場合にはいずれのRDBMSを利用しても良い。従ってMySQLはOracleの代替になり得る存在である。

※ここでは、OracleとMySQLについて述べているが、他のデータベースの移行(DB2、SQL Server、PostgreSQLなど)についても当てはまる話であるのでそのことを念頭に置いて読んでいただきたい。

ではなぜOracleからMySQLへ移行するのか?

1. コスト

最近、OracleからMySQLへ移行できないか?という相談話をよく聞くようになってきた。移行する最も大きな動機は、やはりコストだ。OracleはCPU数に応じたライセンスコスト、保守費用が高いというわけである。MySQLの場合は社内利用などの場合ライセンスコストはゼロで、保守費用はSLAに応じて段階的に決められているが最も高価なものでも年間サーバ1台あたり100万円もしない。

以下のURLにライセンスコストと保守費用の単純な比較アプリがあるのでOracleを利用している企業の方は試してみて欲しい。
http://www-jp.mysql.com/tcosavings/

また、Oracleを利用する場合は性能を出すためにたくさんのCPUを搭載したSMPサーバを利用することが多く、これがさらにコストを押し上げる原因になっている。SMPサーバは高価なのである。MySQLの場合は安価なサーバを必要な台数だけ並べるスケールアウト構成をとることができる。スケールアウト構成ならば負荷が増えてきたときに必要に応じてサーバを追加することができるので、最初はそれほど台数を準備せずに小さく始められるというメリットがある。従って、その分消費電力も節約できるというわけである。時代はエコ。データベースもエコ。エコな方が電気代も安くて幸せである。

2. スキル習得の容易さ

TCOという面ではスタッフのスキルも考慮しなければいけない。いくらどちらも同じくデータベースであるとはいえ、Oracleだけしか知らない人がいきなりMySQLを使いこなせるということはない。スタッフがMySQLに関するスキルを持ち合わせていない場合には、スタッフのトレーニング費用を考慮しておくべきである。とはいえ、MySQLの使い方は非常に簡単であり、学習にかかる時間や労力はOracleより遙かに少なくて済むので身構える必要はない。

さらに、MySQLは管理が容易である。データベースの起動・終了はコマンド一つで行えるし、シングルプロセス・マルチスレッドアーキテクチャなので監視するプロセスも一つでいい。ファイルシステム上にデータを格納することができるので、テーブルスペースだって必要に応じて自動拡張してくれる。また、MySQLは情報が豊富にあり、Googleでちょっと検索すれば必要な情報がすぐに手に入るだろう。筋道をたどって勉強したい場合には良好な書籍もたくさん出版されているので購入すると良い。

スキル習得が容易であるということは、後に新人教育などにかかるコストを節約できるということでもある。

3. オープンソースであるということ

MySQLはオープンソースであり、その気になれば誰だってソースコードを参照することが可能である。従ってサポートエンジニアは嘘やごまかしの回答が出来ないし、逆に調査するときには常にソースコードを参照するため非常に正確な回答をすることができる。「ただいま海外のエンジニアにエスカレーションしています。」といったことはないのである。(もちろんお互いに相談し合うことは多々ある。)

また、ソースコードがあれば自分でカスタマイズすることが可能であるので、デフォルトの機能だけではニーズを満たせないような場合に助かる。例えば、MySQLに関数を追加するということなどは比較的容易にできる。その気になればストレージエンジンを作ってしまうことも可能である。(ちなみに日本人作のものはMySQL+Senna、SPIDER、Q4Mなどがある。)

4. パフォーマンスは?

データベースがどれだけのパフォーマンスを発揮できるかということは、ハッキリ言ってアプリケーションの負荷パターンに因るところが大きい。従ってOracleと相性が良いアプリケーションもあれば、MySQLと相性がいいものもある。が、適切にチューニングした上で利用すれば殆どの場合要件を満たすパフォーマンスを発揮するため問題になることは少ないだろう。問題が起きた時にはオフィシャルなサービス(サポートおよびコンサルティング)を利用して欲しい。

5. MySQLオフィシャルサポート

ソフトウェアをミッションクリティカルなシステムにおいて利用する際、最も重要なのがサポートの存在である。昨日の投稿でも述べたことであるが、データベースはクラッシュするものである。また、バグもあれば使い方が分からないときや期待通りの動作をしないときもある。そんなとき、いち早く問題を解決するために必要なのはオフィシャルサポートの存在である。MySQLは開発元であるSun Microsystemsがオフィシャルサポートを提供している。4つのレベルがあり、上位2つ(GoldとPlatinum)なら24時間サポートが可能である。ただし、現時点では日本語による受付は9時〜5時という制限があるので、いざというときには英語で問い合わせて欲しい。(将来的に日本におけるビジネスが拡大したら日本のサポートエンジニアを増やす予定である。)

ではいつOracleからMySQLへ移行するべきか?

移行しよう!と思っていてもなかなか腰が上がらないことも多いだろう。重い腰を上げるには、次のようなタイミングがちょうど良い。
  • EOL・・・システムをリプレースする際、アプリケーションを再構築する際、計画的なシステムアップグレードを行う際など。
  • 新規システム開発時・・・アプリケーションを一から作り始めれば面倒な移行作業がない。
  • コスト削減要求に応えて・・・経営者から強いコストダウンの要望がある場合。上からの命令には逆らえないのがサラリーマンである。
3つめのパターンは最も手間がかかるしリスクも大きい。やるかどうかは勇気の問題である。不安な場合には開発段階からオフィシャルサポートを購入すれば、何らかの問題で躓いた時に適切なヘルプを得ることが可能である。

最後に。

何でもかんでもMySQLにするべきでないのと同様に、何でもかんでもOracleにするべきではないことは確かである。しかし多くの企業はそのブランドイメージからこれまでほとんどがOracleしか選択してこなかったのではないだろうか。Oracleは確かに素晴らしいソフトウェアであるが、全ての領域をOracleだけでカバー出来るということはない。データベースはITサービスを提供するための道具であり、真のITプロフェッショナルは適切に道具を選んでナンボである。(料理人が料理包丁を使い分けるように。)なのでMySQLがフィットするところには是非利用を検討して欲しいと思うのである。

0 コメント:

コメントを投稿