Django 允许自动数据库路由。可以有不同的数据库用于测试和生产。测试的默认值是 sqlite3。对于需要超过 10 分钟的单元测试,从sqlite3
to迁移将有任何显着的时间改进。couchdb
跑步?
如果可以进行任何测试数据库优化,还能做什么?
Django 允许自动数据库路由。可以有不同的数据库用于测试和生产。测试的默认值是 sqlite3。对于需要超过 10 分钟的单元测试,从sqlite3
to迁移将有任何显着的时间改进。couchdb
跑步?
如果可以进行任何测试数据库优化,还能做什么?
我建议使用完全不同的设置来开发/测试而不是路由器。
如果数据库是测试运行这么长时间的主要原因,通常是因为在测试中使用了固定装置,这些固定装置在每次测试之前加载 - 使用https://github.com/dnerdy/factory_boy或类似的解决方案可能会非常有帮助。
除非您的 SQLite 使用非常基本,否则不确定您是否可以成功地将 SQLite 替换为 CouchDB 并保存他的所有功能。知道 sqlite 允许做多少事情,这并不容易。
如果您只使用非常简单的 SQL 查询或对查询结果进行复杂计算,CouchDB 可以加快您的测试。由于 CouchDB 视图存储具有按需更新请求语义的即用型结果,这可以为您节省一些 CPU 时间。
但是,您是否尝试过使用:memory:存储?或者在 tmpfs 上使用测试数据库?另请注意,使用 CouchDB,您的测试可能会受到网络延迟的影响 - HTTP 请求并不像通过驱动程序调用函数那么便宜(sqlite 只是数据库驱动程序,而不是完整的 RDBMS)。
PS 注意,我不是从 Django ORM 或其他人的立场说的,因为通常它们不能作为原生库提供良好的效果。例如,SQLite 允许自定义SELECT
查询,但views
很少使用,而 CouchDB 使用预定义views
而不是自定义查询(temporary views
)更好地工作。