- 締切済み
MySQLではなく、Postgresを使った方がよいようなケースは何かありますか
オープンソースのデータベース(最新バージョン)を 導入する場合はやはり、MYSQLにしたほうがよいでしょうか。 Postgresを導入した方がよいような事例があれば、 教えてください。 昔のバージョンですと、MySQLは圧倒的に早い 代わりに、副問い合わせが使えなかったり、 トリガーやストアドプロシージャーが使えなかったり したわけですが、比較的新しいバージョンですと、 MySQLにもこうした機能がついています。 MySQLは機能が豊富になった代わりに、若干遅くなった とかも聞きますが、やはりPostgresよりは早い と聞きます。 それでもPostgresとMySQLでは、ストアドプロシージャー やトリガーの仕様自体が少し異なっているようですが、 特にこうした面でPostgresを使ったほうがよい ようなケースがあれば、教えてください。 お願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- annyG
- ベストアンサー率25% (10/39)
私も一時期迷いましたが、結果的にPostgreSQLにしました。 ・将来性 PostgreSQLは将来性があります。これからもOracleに追いつき、追い越そうと進化していくでしょう。 ですが、Oracleに買収されたMySQLにはそれは絶対にありません。むしろ棲み分けのために機能が押さえ込まれていく可能性の方が高いように思います。また、今までMySQLを支援してきた開発コミュニティの大多数は、「あのOracle社」の売り上げに貢献するためにボランティア活動を続けていけるほど心が広くないのではないかと思います。 ・設計 PostgreSQLはかなり「マトモな」DBだと思います。「え?こんなことが?」ということがほとんどありません。全般的に70点、というカンジです。 ですが、MySQLはかなりクセがあります。一般的なSQLのコツ以外に、MySQL独自の制約やコツのようなものがけっこうあります。(サブクエリが異様に遅いとか) 普通ならこうするけど、MySQLの場合はこうしないといけない、というようなことはあまり考えたくないです。 それよりなにより、なんといっても「シーケンスがない!」というのが衝撃でした。もちろん代替策はあるんですが、「代替策があるからシーケンスなんて無くてもいいだろ」という考え方はどうも納得できません。 PostgreSQLは、機能改善の仕方が順序立っていて、まずこの機能、次にこの機能、という流れがとても自然な気がします。反面MySQLは行き当たりばったりで機能拡張していて、結果的に100点の部分もあるけど0点の部分もある、という印象です。 ・コスト PostgreSQLはどこまでいっても無料、というのが安心です。反面、責任を持っている企業もないというのが不安といえば不安ですが、有償でサポートしている会社がないわけではないので必要ならそういうところを利用するのもあるかと思います。 反面、MySQLは責任を持っている企業がある反面、そこがサポート収入に異様にどん欲なところである点が不安です。無償版の存続すら絶対とは言えない状況ですから。 ・情報 日本語の情報に関していえば、PostgreSQLが圧倒的です。ですが、マニュアル自体がかなり簡素なので、突っ込んだことを知りたいと思うとユーザのブログなどの非公式情報に頼ることが多く、ここが物足りない点ではあります。 MySQLは今現在は日本語の情報が少ないのですが、Oracleはマニュアルなどの技術情報の開示についてはかなり積極的ですし、ドキュメントの日本語化もかなりスピーディです、今後は期待できるかもしれません。 ・その他 MySQLの利点は、無償版でもクラスタの機能があるところです。PostgreSQLは単体ではクラスタの機能がありません。(私はここで迷った) ただ、pgpool2などの外部のプロジェクトやDRBDなどを使えばカバーできますし、PostgreSQLも次のバージョンでクラスタリングがサポートされそうな雰囲気です。(本当は今のバージョンで実装されるはずだったが間に合わずに延期になった) これらの点を総合的に判断すると、やっぱりPostgreSQLかな、と自分的には判断しています。
- tom233
- ベストアンサー率17% (61/352)
とりあえずパフォーマンスの所以外からだけど ライセンスがらみ。 MySQLを商用で利用する場合、ライブラリはLGPLではなくてGPLなので 商用ライセンスを取得してGPL汚染をされることを防ぐ必要があり 安く(タダ)で商用利用をするとなるとPostgreSQLの方が良い。 だから自分は、 小規模で商用&非商用の場合はSQLite それ以外でソフトを売る場合はPostgreSQL 自分でWebサービスとして実装する場合(この場合商用でも利用者にソース提示する必要はない)はMySQLって感じですかね。
- wildcat-yp
- ベストアンサー率37% (303/813)
最近の話では、両方きちんとチューニングした状態では、SelectはPostgreSQLの方が高速で、inputはMySQLの方が高速ということですね。 後は、ライセンスの問題。MySQLはGPLですのでその点で問題になってくることもあります。 後は、開発のしやすさ、メンテナンスのしやすさ等です。 とくに、メンテナンスについては、恒久的にかかってくるコストですので、楽なものや、他でも使用していて、ノウハウが共有できる等。 はっきり言って、開発自体はどちらを使用してもやりたいことの実現はできると思いますし、ノウハウ等もその開発の時だけ持っていれば良いので、それほど気にする必要はありません。 重要なのは、メンテナンスの方で、メンテナンスの要員は異動することもありますし、下手すると毎日のことですので、メンテナンスしにくかったり、システムによって、メンテナンス方法が異なる方が手間です。 私の場合、メンテナンスのしやすさは、Oracle>PostgreSQL>MySQLです。 後は、データの形式やデータ量、必要な速度等で検討します。
お礼
回答をどうも有難うございます。 参考URLは非常にためになりました。 何となく昔のバージョンのことがあってか、 MySQL=早いというイメージが強いですが、 特にPostgresの8以降で比較した 場合は、必ずしもそうではないのですね。 特に、参考URLの通信についての部分は、 MySQLとPostgresの使い分けのポイントに なりそうですね。 (MySQLはWebサーバとDBサーバを別々に した場合には性能が落ちる) また、ストアドプロシージャーやトリガーの 書式の違いがあるので、PostgresかMySQL かどちらかが有利なケースというのも あるような印象を受けていましたが、やはり こういうものは作り手次第で変わってしまうので、 一概に「かくかくのケースで有利」とは言えない ということですかね。
お礼
回答をどうも有難うございます。 「汚染」というおっしゃり方もすごいですが、 とにかくMySQLの場合は確かに、ライセンス関連で 面倒くさくなりそうですね。 確かに有効な観点です。どうも有難うございます。