Web アプリケーションにおける MySQL と PostgreSQL [終了]
-
09-06-2019 - |
質問
私は Python (Django) を使用して Web アプリケーションに取り組んでいますが、実稼働環境にデプロイする場合、MySQL と PostgreSQL のどちらが適しているかを知りたいと思っています。
ひとつで ポッドキャスト Joel 氏は、MySQL にいくつかの問題があり、データに一貫性がなかったと述べました。
誰かがそのような問題を抱えているかどうか知りたいです。また、パフォーマンスに関しては簡単に調整できますか?
解決
これから読む人へのメモ: 以下のテキストは 2008 年 8 月に最後に編集されました。この編集の時点で約 5 年前のことになります。ソフトウェアはバージョンごとに急速に変更される可能性があるため、以下のアドバイスに基づいて DBMS を選択する前に、それが依然として正確であるかどうかを確認するために調査を行ってください。
より良い?
MySQL は、Web ホストによって提供されることがはるかに一般的です。
PostgreSQL は、より成熟した製品です。
あるよ このディスカッションはあなたの「より良い」質問に対処します
どうやら、によると、 このウェブページ, MySQL は、同時アクセス レベルが低く、書き込みよりも読み取りが多い場合に高速になります。一方で、負荷と書き込み/読み取り比率が増加すると、スケーラビリティが低くなります。PostgreSQL は、同時実行レベルが低い場合は比較的遅くなりますが、負荷レベルの増加に合わせて適切に拡張できると同時に、同時アクセス間の十分な分離を提供して、書き込み/読み取り比率が高い場合の速度低下を回避します。これらは非常に重要であるため、これは多くのパフォーマンス比較につながります。状況に敏感。
したがって、あなたの決定要因が「どちらが速いですか?「そのときの答えは、「それは状況による」です。 本当に重要な場合は、両方に対してアプリケーションをテストしてください。「そして、本当に気になるのであれば、2 人の DBA (各データベースを専門とする 1 人) を雇って、データベースから不要な部分を調整してもらい、選択します。驚くほど高価です 良い DBA とは次のとおりです。そして それらは一セント単位の価値がある.
大事なときに。
おそらくそうではないので、好みのサウンドのデータベースを選択して使用してください。より良いパフォーマンスは、より多くの RAM と CPU、より適切なデータベース設計、賢いストアド プロシージャのトリックなどで買えます。random-website-X にとって、それらすべては、MySQL と PostgreSQL のどちらを選ぶか悩むよりも安くて簡単です。 、および高価な DBA による専門家によるチューニング。
ジョエルはまた、そのポッドキャストの中で、人々は MySQL がクソだと言うだろうから、コメントが戻ってきて彼を噛みつくだろう、と述べた。
count
後ろの列。anecdote の複数形はデータではありません。 彼は言った:
MySQL は、私がこれまでにプログラミングした中で、データの整合性の問題が発生した唯一のデータベースです。つまり、クエリを実行すると、正しくない無意味な応答が返されます。
そして彼はこうも言いました。
それはただの逸話です。そしてそれは、実際、ブログやインターネット全般に関して私がイライラしていることの 1 つです。[...] 逸話を真実にしてしまう奇妙な傾向があり、実際にブロガーとしての私はこれについて少し罪悪感を感じ始めています
他のヒント
MySQL はシンプルで速いという人もいます。
高速 - デフォルトの MyIsam ストレージ エンジンを使用すると、高速です。本格的なデータベース機能はほとんどありませんが、高速です。皮肉を言えば、フラット ファイルの grep も高速だと思います。面白いことに、MyIsam がデータを保存する方法とそれほど違いはありません。したがって、リレーショナル データベース機能は期待しないでください。参照整合性制約さえありません。
シンプル - 実際のデータベース機能のかなりのサブセットが必要だとします。整合性制約、トリガー、トランザクション分離、関数インデックスのようなものでしょうか?したがって、明らかに MyIsam エンジンを使用せず、他の 3 つの主要なストレージ エンジンから 1 つを選択する必要があります。さまざまなベンダーによって開発されており、それぞれが特定の構成/動作を持っています。
チェックアウト ストレージ エンジンの概要, 頭痛が起こらなければ、MySql があなたの観点からするとシンプルであることに同意します。
これらの事実から、MySql が高速でシンプルであると言う人については、ご判断にお任せします。
よりスケールを拡大し、時間を節約し、探すべき奇妙なバグを減らし、よりシンプルなアプリケーション コードを使用し、データベースと格闘せずにビジネスの最適化により多くの時間を費やしたい場合、最適なオープン ソース ソリューションは Postgresql です。
私は Django を使用したことはありませんが、MySQL と PostgreSQL の両方を使用したことがあります。データベースを Django のバックエンドとしてのみ使用する場合は、ほとんどの違いが抽象化されるため、それほど重要ではありません。PostgreSQL は、もう少しスケーラブルです (データ サイズやクライアント数が増加しても、MySQL ほど早く壁にぶつかることはありません)。
本当の違いは、新しいシステムを構築する場合に現れます。それなら、PostgreSQL を断然お勧めします。PostgreSQL には、DB 層をよりカスタマイズしやすくする機能がたくさんあり、あらゆる要件に合わせて微調整できるからです。
何ヶ月も経ってからチャイムが鳴る。
2 つのデータベースの地理的機能は非常に異なります。PostgreSQL には、優れた PostGIS 拡張機能があります。それに比べて、MySQL の地理的機能は事実上ゼロです。
Web サービスに位置コンポーネントがある場合は、PostgreSQL を選択します。
少し古いですが、一読の価値はあります。 MySQL の落とし穴 ページ。そこにリストされている項目の多くは、私の知る限り、今でも真実です。
PostgreSQLを使用しています。
私は両方を広く使用しています。特定のプロジェクトに対する私の選択は、要約すると次のようになります。
- ライセンス - アプリを配布しますか (IANAL)
- 既存のインフラストラクチャとナレッジベース
- どれでも 特製ソース あなたは〜を持つ必要があります。
による 特製ソース 私は次のようなことが好きです:
- 簡単/安価なレプリケーション = MySQL
- 巨大なデータセットの問題と小さな結果 = PostgreSQL。言語拡張機能を使用すると、非常に効率的なデータ操作が可能になります。(PL/Python、PL/TCL、PL/Perl など)
- R 統計ライブラリとのインターフェース = PostgreSQL PL/R debian/ubuntuで利用可能
まあ、過去の開発 (ビルド、ステージング、本番) で別のデータベース ブランドを使用するべきではないと思います。
私の理解では、PostgreSQL はより「正しい」データベース実装ですが、mySQl は正確さは劣ります (準拠性が低い) ものの、高速です。
したがって、CRUD アプリケーションをほぼ作成している場合は、mySQL が最適です。データベースに特定の機能が必要な場合 (よくわからない場合は必要ありません)、postgreSQL を調べてみるとよいでしょう。
さまざまなサーバーにかなり分散される可能性のあるアプリケーションを作成している場合は、移植性の点で MySQL が PostgreSQL よりも重視されます。PostgreSQL は、いくつかはありますが、満足のいく Web ホストでは見つけるのが困難です。ほとんどの点で、特に最終的な微調整に関しては、PostgreSQL は MySQL よりも遅くなります。全体として、PostgreSQL を完全に回避しないように短時間試してみてから判断することをお勧めします。
ありがとう。MySQL で Django を使用しましたが、問題ありません。必要な機能に応じてデータベースを選択してください。MySQL と Postgres を比較するのは困難です。Postgress と SQL Server を比較した方がよいでしょう。
@WolfmanDragon
PostgreSQL はオブジェクトを (わずかに) サポートしていますが、本質的にはリレーショナル データベースです。そのことから ページについて:
PostgreSQL は強力なオープンソースです 関連した データベースシステム。
MySQL は、 リレーショナルデータベース管理システム 一方、PostgreSQL は 物体-リレーショナルデータベース管理システム. 。PostgreSQL は、クエリの作成方法をより詳細に制御できるため、C++ または Java 開発者に適しています。ORDBMS では、オブジェクトとユーザー定義タイプも提供されます。SQL クエリ自体は、MySQL よりも ISO 標準にはるかに近いです。
ORDBMS または RDBMS が必要ですか?そうすればあなたの質問にもっとよく答えられるでしょう。