• ベストアンサー

普段、オラクルを常用しているものです。

普段、オラクルを常用しているものです。 mySQLを少し触ってみたところ、えらく簡単だし速いしで乗換えを検討しています。 ただ、オラクルの堅牢性がこのmySQLではどの程度なのか?という点を懸案してます。 InnoDBをいじってみた感触として「オラクルほど堅くはないんだろうが、MSのAccessよりはずいぶんまし」と感じてます。 実際に運用している方の肌感覚みたいなのを、教えていただければ幸甚です

質問者が選んだベストアンサー

  • ベストアンサー
  • hardgeek
  • ベストアンサー率50% (7/14)
回答No.4

MySQLの中の人です。InnoDBの堅さについて回答したいと思います。 InnoDBはディスク関連のオブジェクトとして、テーブルスペースとログファイルを作成します。この点は一般的なRDBMSと同じですね。トランザクションをコミットしたときにはログファイルへfsync()でされますので、コミット済みであればマシンが転けても再起動後にリカバリ処理によってデータが復活します。(ただし、一部の内蔵SATAディスクではキャッシュメモリが搭載されており、ライトバックモードで使っていると、OSが書き込んだはずのデータが電源が飛んだときなどに消えてしまう危険性があり、注意が必要です。ちゃんとRAID装置などを使っていれば問題ありませんが。) テーブルスペースへの更新には「ダブルライト」という技術を使って堅牢製を高めています。要するに、2度同じ情報を別の領域に書き込むことにより、テーブルスペースが壊れないようになっているのです。(一度目をダブルライトバッファへ、二度目を本番の領域へ書き込みます。リカバリ時にはダブルライトバッファの中身が壊れていればダブルライトバッファを破棄、本番の領域が壊れてればダブルライトバッファで上書き。) 従ってInnoDBでは、ディスク(またはファイルシステム)が壊れない限りはデータが消失しないような作りになっています。(データ破壊が起きるバグが存在する可能性はありますが、最近そのような事例は報告されていません。)つまり、DBMSとして非常に真っ当な作りになっているということです。MySQLに足りないのは堅牢製や性能ではなく、複雑な機能(パッケージや集計関数、監査など)でしょう。単に「リレーショナル」なデータベースとして使うだけであれば、他のRDBMSに引けをとることはありません。(Railsなどのフレームワークを利用する場合はなおさらです。) また、MySQLには標準でレプリケーション機能が備わっており、本番機がクラッシュして使用不能に陥ったとき、スレーブでサービスを再開するという使い方が可能です。バージョン5.1のレプリケーションは非同期ですが、最新の開発版であるバージョン5.5には準同期型(ログシッピングは同期するが、テーブルへの反映は非同期)が実装されており、実質的にレプリケーションをHA用途で使えるようになっています。 さらに安心が欲しければ、MySQLの商用サポートがあります。商用環境で利用される場合には、サポートを購入して頂ければしっかりサポート致しますのでご安心ください。

creamysoft
質問者

お礼

中の人にお答えいただき有難うございました。 >従ってInnoDBでは、ディスク(またはファイルシステム)が壊れない >限りはデータが消失しないような作りになっています InnoDBがそんなにしっかりした作りだとは思ってませんでした。 しばらくはオラクルと二重運用してみます。

その他の回答 (3)

  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.3

 実は、わたしも、あなたと似たような状態です。  使ってみた感じでのわたしなりの感想は、オラクルの方が明らかに整って見えるのは、   ロール   full outer join   ロックの扱い   クラスタ化   パーティーション周り   interMEDIA等の周辺ライブラリー群   オブジェクトデータベース   データマイニング関係  あたりかなぁという感じです。  クラッシュ時のデータベースの保護という意味では、やはりオラクルの方が堅牢なようですね。InnoDBのリカバリー性は、どうやら、OSの挙動に依存している気配があります。(遅延書き込みを全面的に停止すれば、あるラインまでいけるかな。)     まぁ、私用で使う分には、MySQLで十分すぎるくらい。少々のデータ量なら持ちこたえそうですし、ユーザーが少なければ、ロールなんて無くても運用可能だし、同一データベースを何個ものプログラムで同時走査することもそう無いし。データマイニングが本当に必要なほどの解析業務もないし。ある程度のバックアップが確保できていれば、あぁ~あやっちゃったとあきらめがつくレベルには堅牢だと思います。周辺ライブラリーやオブジェクト周りは、それこそ、アプリ側で吸収できますしね。  業務で使う段で、且つ、データの損失がお金に換算される世界になると、ちょっとやっぱり手を出すのは控えるかしら。さもなくば、障害の際の損失に対する対策を確実に外部でサポートすることが求められると思います。ユーザーが多くなり権限が複雑になると、ロールがないのは堪えそうかな。  フルアウタージョインのサポートは、私としては少し痛かったです。まぁ、代換え手段も無くはないですが・・・いかんせん、これは面倒ですね。MySQLで、将来サポートされることを祈りたいです。  

  • utakataXEX
  • ベストアンサー率69% (711/1018)
回答No.2

何に使うかですよね。 金融系のプロジェクトだったら(例え小さな案件でも)MySQLは使わないと思います。 (社内の情報系くらいならともかく) 逆に「例え飛んでもバックアップから半日くらい後には戻せます」程度の要件なら、MySQLでも十分です。 mixiのような巨大なデータを扱うプロジェクトにも使われていますよ。 http://techtarget.itmedia.co.jp/tt/news/0709/12/news01.html 但し、サン・マイクロシステムズがORACLEに買収された今、MySQLの持ち主はORACLEと言う事になります。 あまり気にする必要はないのかもしれませんが、今後、ずっと「オープンソース」足り得るのか、は微妙なところです。

creamysoft
質問者

お礼

みなさん、ご回答ありがとうございました。 確かに、○拾万円する商用DBと、GPLソフトを比較するのには無理がありますね。 もし、両者に差がないなら裁定原理が働いて、オラクルも相当お安くなるはず。 ま、そうならないようにしたということですか..

回答No.1

dbと言えばオラクルと言われ続けてきた商用ソフトと、無償バージョンで実績を積んできたMySQLを比較することが無理な気がします。 商用dbで比較してもオラクルが優れている点は「ロック」が確実に行えることだと思います。 MySQLと正しく書きましょうね http://www.mysql.gr.jp/

関連するQ&A