これは何度も取り上げていると思いますが、もう一度取り上げます!!! とにかく... Ruby on Railsでは、Sqlite3はすでにセットアップされており、余分な選択やスライスは必要ありませんが...ここや他の場所で何度も読んだ後、スケーラブルではないと言う人もいれば、実際にはかなりうまくいくと言う人もいます。大規模なプロジェクトには MySQL の方がはるかに優れていると言う人もいれば、PostgreSQL を使用するだけだと考える人もいます。これについてあなたの意見を聞きたいです。2 つのシナリオで。CNN ニュースのようなニュース発行 Web サイト用の小さな Web サイトを開始するシナリオと、Twitter に似た Web サイトを作成する別のシナリオはありますか?
4 に答える
アプリケーションに大きく依存します。
一般に、SQLite データベースへの書き込み操作は低速です。単純な :update_attribute または :create でさえ、最大 0.5 秒かかる場合があります。しかし、アプリがあまり書き込みを行わない場合 ( SQLiteに対するキラー: すべてのリクエストで DB に書き込みます!)、SQlite はほとんどの Web アプリにとって堅実な選択肢です。少量から中量のトラフィックを処理できることが証明されています。また、構成が不要なため、開発時に非常に適しています。また、インメモリ モードを使用したテスト スイートでも非常に優れたパフォーマンスを発揮します (ただし、毎回ゼロから再構築されるため、何千もの移行があります)。また、パフォーマンスが十分でなくなった場合、SQLite からたとえば MySQL に切り替えることはほとんどシームレスです。
MySQL は現在、堅実な選択肢です。Oracle の下で MySQL がどうなるかは、今後明らかになるでしょう。
PostgreSQL は私が知る限り最速のものですが、本番環境ではまだ使用していません。多分他の人はもっと言うことができます。
私は Postgres に投票したいと思います。それが懸念される場合は、特にパフォーマンスが向上しています。CNN と Twitter の例を取り上げて、できる限り強固な基盤から始めてください。後々、あなたは幸せになれるでしょう。
Web サイトの場合、SQLite3 で十分であり、中流階級のトラフィック シナリオまでは問題なく拡張できます。したがって、1 時間あたり数百万のリクエストが発生し始めない限り、SQLite3 のパフォーマンスやスケーラビリティについて心配する必要はありません。
とはいえ、SQLite3 は、専用の SQL サーバーがサポートする典型的な機能をすべてサポートしているわけではありません。アクセス制御は、データベース ファイルがあるマシン上の UNIX アカウントに設定できるファイル アクセス許可に限定されます。言及するデーモンはなく、組み込み関数のセットはかなり小さいものです。また、ビューとトリガーを使用してそれらをエミュレートすることはできますが、いかなる種類のストアド プロシージャもありません。
これらの点が気になる場合は、PostgreSQL を使用する必要があります。MySQL は (間接的に) Oracle に買収されました。また、MySQL を買収する前に Oracle も独自のデータベースを持っていたことを考えると、私は Oracle を無視して、それをどこかに落としてしまうつもりはありません。私はまた、過去に PostgreSQL の保守をはるかにスムーズに行った経験があります。
免責事項: 私は mysql が最初に登場して以来使用してきたので、私の意見は完全に偏見です。
あなたの質問は、開発環境をどのように設定すべきかについての別の議論をもたらします。多くの人が、テスト/本番環境で行うのと同じ dbms を開発環境で使用する必要があると主張します。これは、最初に何をしているかに完全に依存しています。ほとんどの場合、Sqlite は開発時に問題なく動作します。
私は個人的に、Postgres よりも MySql と MsSql を使用しているサイトに関わってきました。
私は、全国の電話拒否リストを顧客番号から削除するプロジェクトに関与していました。そのデータをローカルに保存しました。一部の市外局番には、簡単に 500 万を超えるレコードがあります。アプリは当初、MsSql を使用して .Net で作成されました。それは「それほど速くない」ものでした。PHP と MySql を使用するように変更しました (悲しいことに、Ruby について知る前に言いました)。(約)3秒で500万行を挿入/ダイジェストします。これは、MsSql で処理するよりもはるかに高速でした。また、1 日足らずで 2,000 万件のレコードに増加するテーブルに通話ログ データを保存しました。MySql は、私たちが投げかけたすべてをチャンピオンのように処理しました。レプリケーションをセットアップすると、処理は当然ヒットしましたが、それは非常に小さいものだったので無視しました。
それは本当にあなたのプロジェクトと、どのソリューションがプロジェクトのニーズに合っているかにかかっています.