Djangoではデータベースの自動ルーティングが可能です。テスト用と本番用に異なるデータベースを使用することができます。テストのデフォルトはsqlite3です。sqlite3
からに移行するcouchdb
と、10分以上かかる単体テストの時間が大幅に改善されます。走る?
テストデータベースの最適化を実行できる場合、他に何がありますか?
Djangoではデータベースの自動ルーティングが可能です。テスト用と本番用に異なるデータベースを使用することができます。テストのデフォルトはsqlite3です。sqlite3
からに移行するcouchdb
と、10分以上かかる単体テストの時間が大幅に改善されます。走る?
テストデータベースの最適化を実行できる場合、他に何がありますか?
ルーターの代わりに、開発/テストにまったく異なる設定を使用することをお勧めします。
データベースがテストの実行時間が非常に長い主な理由である場合、多くの場合、テストでフィクスチャを使用しているためです。フィクスチャは、すべてのテストの前にロードされます。https://github.com/dnerdy/factory_boyまたは同様のソリューションを使用すると非常に役立ちます。
SQLiteの使用法が非常に基本的でない限り、SQLiteをCouchDBに正常に置き換えて、彼のすべての機能を保存できるかどうかはわかりません。sqliteでどれだけのことができるかを知ることは、それほど簡単なことではありません。
CouchDBは、非常に些細なSQLクエリを使用している場合、またはクエリ結果の計算が複雑な場合にのみ、テストを高速化できます。CouchDBビューは、すぐに使用できる結果をオンデマンド更新要求セマンティクスで保存するため、これによりCPU時間を節約できます。
ただし、 :memory: storageを使用しようとしましたか?または、tmpfsでテストデータベースを使用しますか?また、CouchDBを使用すると、テストでネットワーク遅延が発生する可能性があることに注意してください。HTTPリクエストは、ドライバーを介した関数呼び出しほど安価ではありません(sqliteは単なるデータベースドライバーであり、完全なRDBMSではありません)。
PS通常、ネイティブライブラリとして優れた効果を提供できないため、DjangoORMなどの立場から話しているわけではないことに注意してください。たとえば、SQLiteはカスタムSELECT
クエリを許可しますviews
が、CouchDBviews
がカスタムクエリよりも事前定義されたクエリでより適切に機能する間はめったに使用されません(temporary views
)。