MySQL vs PostgreSQL for Web Applications [終了]


122

私はPython(Django)を使用してWebアプリケーションに取り組んでおり、本番環境にデプロイするときにMySQLとPostgreSQLのどちらが適しているかを知りたいです。

1つのポッドキャストで、ジョエルはMySQLにいくつかの問題があり、データに一貫性がないと述べました。

誰かにそのような問題があったかどうか知りたいのですが。また、簡単に調整できるパフォーマンスについてはどうですか?

回答:


127

今後の読者へのメモ:以下のテキストは2008年8月に最後に編集されました。この編集時点で11年近く前です。ソフトウェアはバージョンごとに急速に変化する可能性があるため、以下のアドバイスに基づいてDBMSを選択する前に、それがまだ正確かどうかを調査してください。以下の新しい回答を確認してください。


いい?

MySQLは、より一般的にはWebホストによって提供されます。

PostgreSQLははるかに成熟した製品です。

あなたの「より良い」質問に対処するこの議論があります

どうやら、このウェブページによると、MySQLは同時アクセスレベルが低く、書き込みよりも読み取りの方が多い場合に高速です。一方、負荷と書き込み/読み取り比率が高くなると、スケーラビリティが低くなります。PostgreSQLは、同時実行レベルが低い場合は比較的低速ですが、負荷レベルの増加に合わせて拡張でき、同時に書き込みと読み取りの比率が高い場合の速度低下を回避するために同時アクセスを十分に分離します。これらの事柄は非常に...条件に敏感なので、多くのパフォーマンス比較にリンクします。

したがって、決定要因が「どちらが早いか」の場合、答えは「状況によって異なります。 本当に重要な場合は、両方に対してアプリケーションをテストしてください。」そして、本当に本当に気になる場合は、2人のDBA(専門の各データベースで)、それらをデータベースからがらくたを調整してもらい、次に選択します。優れた DBAの費用が驚くほどです。そして、彼らはすべてのセントの価値があります

それが重要なとき。

おそらくそうではないので、好きなデータベースを選んでそれを使ってください。より多くのRAMとCPU、より適切なデータベース設計、賢いストアドプロシージャトリックなどを使用して、より優れたパフォーマンスを購入できます。ランダムWebサイトXでは、MySQLまたはPostgreSQLのどちらを選択するかを悩ませるよりも、すべてが安価で簡単です。 、そして高価なDBAからの専門的なチューニング。


Joelはそのポッドキャストで、MySQLはがらくたの断片であると人々が言っ​​ているため、コメントが彼に噛み付くようになると述べた-Joel countは行を取り戻すことができなかった。逸話の複数形はデータではありません。 彼は言った

MySQLは、私のキャリアの中でこれまでにプログラミングしたことがない唯一のデータベースで、データの整合性の問題がありました。クエリを実行すると、間違った意味のない答えが返されます。

そして彼はまた言った:

それは単なる逸話です。そしてそれは、ブログやインターネット全般について、私をいらだたせるものの1つです。[...]逸話を真実にする奇妙な傾向があり、私は実際にはブロガーとしてこれについて少し罪悪感を感じ始めています


15
もう1つのポイントは、フレームワークを使用すると、データベースからコードを抽象化できるため、簡単に切り替えることができるということです。
Don Jones

「どちらが速い?」。あなたが望むものによって異なり、あなたはACID準拠のデータベースをしたい場合は、この読み:randombugs.com/linux/mysql-postgresql-benchmarks.html
Sacx

47
また注目に値する。MySQLはOracle が所有しています。したがって、有料の製品と競合することは許可されません。
unixman83 2012年

15

何ヶ月か後にちょうど鳴く。

2つのデータベースの地理的な機能は非常に異なります。PostgreSQLには、並外れたPostGIS拡張機能があります。MySQLの地理的な機能は、比較すると実質的にゼロです。

Webサービスにロケーションコンポーネントがある場合は、PostgreSQLを選択します。


14

Djangoは使用していませんが、MySQLとPostgreSQLの両方を使用しています。データベースをDjangoのバックエンドとしてのみ使用する場合、ほとんどの違いを抽象化するため、それはそれほど重要ではありません。PostgreSQLは、データサイズ/クライアント数が増加してもMySQLほど速くブロック壁に到達しないため、もう少しスケーラブルです。

新しいシステムを導入する場合、本当の違いが生まれます。次に、PostgreSQLをお勧めします。これには、DBレイヤーをはるかにカスタマイズ可能にする多くの機能があり、必要に応じて微調整できるためです。


7

それは少し時代遅れですが、MySQL Gotchasページを読む価値があります。そこにリストされているアイテムの多くは、私の知る限りではまだ真実です。

PostgreSQLを使用しています。


6

どちらも多用しています。特定のプロジェクトに対する私の選択は、要約すると次のようになります。

  • ライセンス-アプリを配布しますか(IANAL)
  • 既存のインフラストラクチャとナレッジベース
  • 任意の特別な醤油あなたが持っている必要があります。

することにより、特別なソース私のようなものを意味します:

  • 簡単/安価なレプリケーション= MySQL
  • 結果が小さい巨大なデータセットの問題= PostgreSQL。言語拡張を使用して、非常に効率的なデータ操作を行います。(PL / Python、PL / TCL、PL / Perlなど)
  • R統計ライブラリとのインターフェース= PostgreSQL PL / R がdebian / ubuntuで利用可能

3
Postgresは簡単/安価なレプリケーションも備えています。内蔵されていないだけです、はあり選択できる半ダースがあり、それぞれに独自の良い部分と悪い部分があります。だから、選ぶことができる1つの MySQLの平凡なレプリケーションを、または多数の1からPostgreSQLの。あなたの選択。
ランダルシュワルツ

6
PostgreSQL 9.0+には、セットアップが非常に簡単なバイナリWALレプリケーションが組み込まれています。
Sean、

1

さて、私はあなたが過去の開発(ビルド、ステージング、製品)で別のデータベースブランドを使用するべきではないと思います。

私の理解では、PostgreSQLはより「正しい」データベース実装ですが、mySQlはあまり正確ではありません(準拠性が低い)が高速です。

したがって、CRUDアプリケーションをほとんど作成している場合は、mySQLが適しています。データベースから特定の機能が必要な場合(わからない場合は必要ありません)、postgreSQLを調べてください。


1

別のサーバーにかなり分散される可能性のあるアプリケーションを作成している場合、MySQLは移植性があるため、PostgreSQLに比べて非常に重要です。PostgreSQLはいくつかありますが、満足のいくWebホストでは見つけられません。ほとんどの点で、特に最終的に微調整を行う場合、PostgreSQLはMySQLよりも低速です。全体として、私はPostgreSQLに短時間のショットを与えると言います。そうすれば、あなたは完全にそれを避けているわけではなく、それから判断を下します。


1
MySQLを私たちの顔に押し付けるのではなく、より低品質のWebホストが選択肢を提供するべきであることに同意します。ただし、共有ホスティングを使用する場合は、とにかくそれらに翻弄されます。したがって、DBMの選択はそれほど重要ではありません。
unixman83 2012年

0

ありがとうございました。MySQLでDjangoを使用しましたが、問題ありません。必要な機能でデータベースを選択します。MySQLとPostgresを比較するのは難しい。PostgressをSQL Serverと比較する方が良いでしょう。


0

ゆうたろう

PostgreSQLは(小さな)オブジェクトをサポートしていますが、本来、リレーショナルデータベースです。そのaboutページから:

PostgreSQLは、強力なオープンソースのリレーショナルデータベースシステムです。


2
オブジェクトリレーショナルデータベース管理システムISAリレーショナルデータベース管理システム。PostgSQLのドキュメントをさらに詳しく読むと、PostgSqlがORDBMSであることがわかります。おそらく、ORDBMSをObjectivity / DBなどのODBMSと混同しているのでしょう。
WolfmanDragon 2008年

-1

MySQLはリレーショナルデータベース管理システムであり、PostgreSQLはオブジェクトリレーショナルデータベース管理システムです。PostgreSQLは、クエリの記述方法をより詳細に制御できるため、C ++またはJava開発者に適しています。ORDBMSは、オブジェクトとユーザー定義型も提供します。SQLクエリ自体は、MySQLよりもISO標準にかなり近いです。
ORDBMSまたはRDBMSが必要ですか?それはあなたの質問によりよく答えるでしょう。


それはちょっと単純化しすぎです。ORDBMSを必要としないからといって、必ずしもMySQLを使用する必要があるとは限りません。他にも重要な違いはありますか?
Don Jones、

1
あなたは正しいです。PostgreSQLプッシャーのように聞こえないようにしています。設計が真のオブジェクトデータベースを必要としない限り、PostgreSQL以外のものを使用する本当の理由はありません。多くの人がMySQLに精通していることを除いて、MySQLには意味がありません。
WolfmanDragon 2008
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.