0

Django 允许自动数据库路由。可以有不同的数据库用于测试和生产。测试的默认值是 sqlite3。对于需要超过 10 分钟的单元测试,从sqlite3to迁移将有任何显着的时间改进。couchdb跑步?

如果可以进行任何测试数据库优化,还能做什么?

4

2 回答 2

0

我建议使用完全不同的设置来开发/测试而不是路由器。

如果数据库是测试运行这么长时间的主要原因,通常是因为在测试中使用了固定装置,这些固定装置在每次测试之前加载 - 使用https://github.com/dnerdy/factory_boy或类似的解决方案可能会非常有帮助。

于 2012-09-18T16:25:19.047 回答
0

除非您的 SQLite 使用非常基本,否则不确定您是否可以成功地将 SQLite 替换为 CouchDB 并保存他的所有功能。知道 sqlite 允许做多少事情,这并不容易。

如果您只使用非常简单的 SQL 查询或对查询结果进行复杂计算,CouchDB 可以加快您的测试。由于 CouchDB 视图存储具有按需更新请求语义的即用型结果,这可以为您节省一些 CPU 时间。

但是,您是否尝试过使用:memory:存储?或者在 tmpfs 上使用测试数据库?另请注意,使用 CouchDB,您的测试可能会受到网络延迟的影响 - HTTP 请求并不像通过驱动程序调用函数那么便宜(sqlite 只是数据库驱动程序,而不是完整的 RDBMS)。

PS 注意,我不是从 Django ORM 或其他人的立场说的,因为通常它们不能作为原生库提供良好的效果。例如,SQLite 允许自定义SELECT查询,但views很少使用,而 CouchDB 使用预定义views而不是自定义查询(temporary views)更好地工作。

于 2012-09-18T16:26:47.887 回答