用couchdb数据库替换默认的sqlite以进行django测试优化

时间:2012-09-18 14:28:24

标签: django sqlite unit-testing couchdb django-testing

Django allows auto database routing。可以为测试和生产提供不同的数据库。测试的默认值是sqlite3。从sqlite3迁移到couchdb的单位测试会有超过10分钟的显着时间改进。跑?

如果可以进行任何测试数据库优化,还有什么其他方法?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

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

P.S。请注意,我不是在谈论Django ORM或其他人的立场,因为通常他们无法像本机库那样提供良好的效果。例如,SQLite允许自定义SELECT个查询,而views很少使用,而CouchDB可以更好地使用预定义的views而不是自定义查询(temporary views)。