web-dev-qa-db-ja.com

どのデータベースエンジンを選択するDjango app?

Djangoが初めてで、Djangoでデータベースエンジンとしてsqlite3のみを使用しています。現在、作業しているアプリケーションの1つは、モデルの複雑さの点でかなり大きくなっています。およびリクエスト/秒。

Django=でサポートされるデータベースエンジンはどのようにパフォーマンスの面で比較されますか?それらのいずれかを使用する際の落とし穴?そして最後になりましたが、しばらく使用しましたか?ありがとう!

34
Ivan Vashchenko

リレーショナルデータベースを使用する場合、Djangoコミュニティで最も人気のあるものはPostgreSQLです。個人的なお気に入りです。しかし、MongoDBはPython/Djangoでかなり人気が出ているようです。コミュニティも同様です(ただし、MySQLでプロジェクトを行ったことはありません)。MySQLでも多くの成功したプロジェクトがありますが、個人的にはPostgreSQL 9.0または9.1を好みます。

編集:私はこの投稿でそれほど素晴らしい仕事をしませんでした。さらにいくつかの考慮事項を追加します。

大部分のWebサイトでは、MySQLまたはPostgreSQLのどちらでも問題なく機能します。どちらにも長所と短所があります。 「MySQL vs. PostgreSQL」をグーグル検索することをお勧めします。この検索には多くのヒットがあります(この記事を書いている時点では、3,000,000を超えています)。評価を行う際のいくつかのヒントを以下に示します。

  1. 最近の記事を優先する。 MySQL 5.5をPostgreSQL 9.0または9.1と比較していることを確認してください。
  2. MySQLでは、ストレージエンジンを選択できます。 IMO、closes Apple Applesとの比較はInnoDBとPostgresです。
  3. InnoDBまたはPostgresのすべての機能が必要なわけではないことに注意してください。また、他のストレージエンジンの一部も確認する必要があります。

また、システムでトリガーの使用を計画している場合、MySQLとInnoDBに関連する2つの非常に厄介なバグとACIDコンプライアンスがあります。ここに 最初のもの があり、ここに 別のもの があります。この機能は必要ないかもしれませんが、気をつけてください。

あなたに違いをもたらすかもしれない最後の1つは、PostgreSQLではPythonでdb関数を書くことができるということです。これが ドキュメントへのリンク です。

34
David S

MySQLとPostgresは、Djangoコミュニティで使用される2つの最も一般的なDBバックエンドであり、同等のパフォーマンスを発揮します。Postgresは、Django確かにMySQLを選ぶつもりはありませんが、MySQLをDjango(またはMySQL一般に):

  1. MyISAMでのトランザクションサポートなし(5.5.5のデフォルトではなくなりました)
  2. 日時のミリ秒のサポートはありません
  3. 日時のタイムゾーンサポートなし
  4. 一意の文字フィールドは255文字未満である必要があります
  5. デフォルトの照合では大文字と小文字が区別されません

Djangoのさまざまな機能に関するいくつかのドキュメントがありますが、これらはさまざまなDBバックエンドではサポートされていません: https://docs.djangoproject.com/en/1.3/ref/databases /

12
Mark Lavin

MySQLとPostgreSQLは、Djangoで最適に機能します。開発中に使用するように開発設定を変更するものを選択する場合(開発モードでsqlite3を使用し、prodで「実際の」データベースを使用するのではなく)、未来。

6
guidoism

どちらのDBを使用するかわかりませんが、誰かがMongoDBを使用する予定がある場合は、py3ではなくpy2でのみ機能することに注意してください

参照リンク:

Django 1.10、mongodbおよびPython 3.4. のプロジェクト設定

Django using Django Windows上のmongodbエンジン

MongoDB + Djangoのセットアップ

5
Algor Troy