![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
オープンソースのデータベース(最新バージョン)を
導入する場合はやはり、MYSQLにしたほうがよいでしょうか。
Postgresを導入した方がよいような事例があれば、
教えてください。
昔のバージョンですと、MySQLは圧倒的に早い
代わりに、副問い合わせが使えなかったり、
トリガーやストアドプロシージャーが使えなかったり
したわけですが、比較的新しいバージョンですと、
MySQLにもこうした機能がついています。
MySQLは機能が豊富になった代わりに、若干遅くなった
とかも聞きますが、やはりPostgresよりは早い
と聞きます。
それでもPostgresとMySQLでは、ストアドプロシージャー
やトリガーの仕様自体が少し異なっているようですが、
特にこうした面でPostgresを使ったほうがよい
ようなケースがあれば、教えてください。
お願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
私も一時期迷いましたが、結果的に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かな、と自分的には判断しています。
No.2
- 回答日時:
とりあえずパフォーマンスの所以外からだけど
ライセンスがらみ。
MySQLを商用で利用する場合、ライブラリはLGPLではなくてGPLなので
商用ライセンスを取得してGPL汚染をされることを防ぐ必要があり
安く(タダ)で商用利用をするとなるとPostgreSQLの方が良い。
だから自分は、
小規模で商用&非商用の場合はSQLite
それ以外でソフトを売る場合はPostgreSQL
自分でWebサービスとして実装する場合(この場合商用でも利用者にソース提示する必要はない)はMySQLって感じですかね。
回答をどうも有難うございます。
「汚染」というおっしゃり方もすごいですが、
とにかくMySQLの場合は確かに、ライセンス関連で
面倒くさくなりそうですね。
確かに有効な観点です。どうも有難うございます。
No.1
- 回答日時:
最近の話では、両方きちんとチューニングした状態では、SelectはPostgreSQLの方が高速で、inputはMySQLの方が高速ということですね。
後は、ライセンスの問題。MySQLはGPLですのでその点で問題になってくることもあります。
後は、開発のしやすさ、メンテナンスのしやすさ等です。
とくに、メンテナンスについては、恒久的にかかってくるコストですので、楽なものや、他でも使用していて、ノウハウが共有できる等。
はっきり言って、開発自体はどちらを使用してもやりたいことの実現はできると思いますし、ノウハウ等もその開発の時だけ持っていれば良いので、それほど気にする必要はありません。
重要なのは、メンテナンスの方で、メンテナンスの要員は異動することもありますし、下手すると毎日のことですので、メンテナンスしにくかったり、システムによって、メンテナンス方法が異なる方が手間です。
私の場合、メンテナンスのしやすさは、Oracle>PostgreSQL>MySQLです。
後は、データの形式やデータ量、必要な速度等で検討します。
参考URL:http://japan.zdnet.com/news/db/story/0,200005618 …
回答をどうも有難うございます。
参考URLは非常にためになりました。
何となく昔のバージョンのことがあってか、
MySQL=早いというイメージが強いですが、
特にPostgresの8以降で比較した
場合は、必ずしもそうではないのですね。
特に、参考URLの通信についての部分は、
MySQLとPostgresの使い分けのポイントに
なりそうですね。
(MySQLはWebサーバとDBサーバを別々に
した場合には性能が落ちる)
また、ストアドプロシージャーやトリガーの
書式の違いがあるので、PostgresかMySQL
かどちらかが有利なケースというのも
あるような印象を受けていましたが、やはり
こういうものは作り手次第で変わってしまうので、
一概に「かくかくのケースで有利」とは言えない
ということですかね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL mysqlがインストールされているのかどうか 1 2023/06/05 14:19
- MySQL mysqlがインストールされているのかわかりません 1 2023/06/05 02:26
- MySQL MySQLでcreateが使えない MySQLを使ってデータベースを作ろうと思い、CREATE を使 3 2022/06/19 15:32
- PostgreSQL PostgressからMySQL(MariaDB)へ構造を変更する際のTimestamp等について 2 2023/04/04 12:09
- JavaScript Typescript が必要な理由 1 2023/01/07 11:45
- MySQL XamppでインストールしたMySQLのフォルダのWinRARでのバックアップについて 1 2022/06/22 18:55
- MySQL 【投稿情報用データベース posts】は必要ないと思います。 1 2022/06/02 21:25
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- MySQL [1000地域 × 10カテゴリー = 1万件のテーブル]!グループ化? 1 2023/06/14 23:56
- MySQL MySQLのテーブル作成でハイフン - は使用できないのでしょうか? 2 2022/10/21 16:50
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SAIを違うPCで使いたい
-
SIDとSERVICE_NAMEの違いとは?
-
CloverをインストールしたUSBメ...
-
データベース接続情報作成しま...
-
ORA-12170のエラーについて
-
OracleでEMが起動できない
-
Windows Storeを使わずに付箋を...
-
インスタンス、ノード、ターゲ...
-
Oracle11g SQLPlusログインにつ...
-
突然オラクルへ接続できなくな...
-
AIRの音声化について
-
データソース名および指定され...
-
東方紅魔郷
-
異なる文字コードの環境にイン...
-
倒産した18禁ゲーム会社のパ...
-
移行PCにDockerがインストール...
-
倒産した会社のゲーム(18禁...
-
DB2で SQL1032N start databas...
-
ダークソウル3のたまねぎ頭NPC...
-
ASP.NETでのオラクルAL16UTF16...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLではなく、Postgresを使っ...
-
SAIを違うPCで使いたい
-
アメリカOTNの開発者ライセンス...
-
ホットスタンバイ構成の際のラ...
-
オラクルのライセンスコストを...
-
Windows Server CAL(Client Ac...
-
Oracleのライセンス形態
-
Solaris9での学習環境の構築
-
クライアントアクセスライセン...
-
オラクルを練習
-
お絵描きソフトSAIを使ってます
-
SIDとSERVICE_NAMEの違いとは?
-
ORA-12170のエラーについて
-
突然オラクルへ接続できなくな...
-
DB2で SQL1032N start databas...
-
倒産した18禁ゲーム会社のパ...
-
oracleのメモリ使用量が97%ほど...
-
Oracle11g SQLPlusログインにつ...
-
.NET Frameworkがコントロール...
-
Windows Storeを使わずに付箋を...
おすすめ情報