我正在寻求集成测试我的Couchbase实现,并且我遇到了Couchbase最终一致性的问题。在生产中,我的数据完全可以陈旧,但在测试时我想插入一些数据,然后验证我是通过各种服务获取的。如果数据过时,这不起作用,因为我的测试期望无法解决这个问题。
我可以通过在Couchbase客户端中将staleState设置为false来解决这个问题,但这意味着我所拥有的每个测试都会触发重建索引并增加其运行时间。
有没有办法强制Couchbase触发一次性重建设计文档的索引?基本上,我想上传所有测试数据,触发重建,然后执行我的测试用例。
此外,如果使用Couchbase进行集成测试有更好的模式,我很乐意听到它。
谢谢,
微米。
答案 0 :(得分:0)
如果实际上有更多数据需要进入索引,那么当设置stale = false时,Couchbase将仅重建视图索引。您的第一个stale = false可能需要一些时间,但只要您没有将更多数据放入群集,即使设置了stale = false,其余的调用也应该很快。
对于所有后续调用,由于索引检查以确保它是最新的,因此会有一个小的(毫秒或更小)延迟。如果您不想这样,您可以只使用stale = true运行查询,只要您不再插入任何数据,就可以获得正确的结果。
最后要注意的是视图索引构建是增量的,因此它们永远不会重建整个索引。