我是couchbase的新手,并且想知道对单个文档(可能每秒)的非常频繁的更新是否会导致所有更新都通过磁盘写入队列,或者只是对文档进行的最后一次更新?
换句话说,couchbase是否通过仅将文档写入磁盘一次来优化磁盘写入,即使在写入之间多次更新也是如此。
根据文档http://docs.couchbase.com/admin/admin/Monitoring/monitor-diskqueue.html,听起来好像处理了所有更新。如果有人能证实这一点,我将不胜感激。
感谢
答案 0 :(得分:4)
更新在写入磁盘之前保存在磁盘队列中。如果发生对文档的写入并且之前的写入仍在磁盘队列中,则两个写入将被合并,并且只有更新的版本才会实际写入磁盘。
磁盘队列耗尽的速度究竟取决于存储子系统,因此对同一密钥的写入是否合并将取决于写入与存储子系统速度/节点负载相比的速度。
答案 1 :(得分:0)
Jako,您应该更加担心在毫秒时间范围内发生的更新,或者在1(一)毫秒内发生多次更新。光盘写入不是问题,Couchbase本身可以智能地解决这个问题,但是当您在毫秒时间范围内操作时会出现并发问题。
当我测试我的应用程序时,我很容易遇到它们,并且首先无法理解为什么Node.js(在我的情况下)有时会将数据写入CouchBase而有时不会。如果它没有写入CouchBase通常是第一条记录。
当我第一次检查是否存在具有特定键的文档时出现了更多问题,如果不存在,我会尝试将其写入CouchBase,但发现在此期间早期回调已经完成,现在确实有一个键对于同一份文件。
在这种情况下,您必须使用CAS标志进行操作并对其进行迭代编程,以便您的应用程序不断尝试为该密钥提取正确的文档,然后进行更新。请记住这一点,特别是在运行测试和对同一文档的更新时!