我想在couchbase服务器上设置TTL(生存时间),以便连续从移动设备推送所有文件进行复制。我没有在文档中找到任何明确的解释/示例来执行此操作。 应该通过Sync Gateway为从移动设备到服务器的文档设置TTL的方法是什么。
方法1: 一种方法是在服务器端创建一个视图,将createDate作为键返回。我们将查询该视图以获取今天日期的密钥,这些密钥将返回今天的文档,我们可以为这些文档设置TTL。但是我们如何以及何时称之为这种观点,这是一种好方法吗?
方法2: 我是否应该使用webhooks来监听通过Couchbase Lite推送复制进行的文档更改(创建),为新文档设置TTL并保存回Couchbase服务器?
还有其他更好的方法吗?
另外,仅为特定文档设置TTL的方法是什么?
编辑:我最后的方法: 我将在couchbase服务器上创建以下视图:function (doc, meta) {
emit(dateToArray(doc.createdDate));
}
我将有一份工作,每天在EOD运行,查询视图以获取今天创建的文档,并为这些文档设置TTL。 通过这种方式,我可以定期删除文档。
如果有任何问题或者有更好的方法,请告诉我。
答案 0 :(得分:0)
当达到TTL时,Couchbase不会删除; 相反,当您访问(过期)文档时, 然后Couchbase检查到期,在那一刻删除它。
http://developer.couchbase.com/documentation/server/4.0/developer-guide/expiry.html
答案 1 :(得分:0)
希望来自移动团队的人可以插入并确认这一点,但我认为移动SDK不允许此刻设置到期日。
我想您可以在文档中添加创建/更新时间,并创建一个批处理作业,使用“核心”SDK定期查找旧文档(通过N1QL或专用视图)并删除它们。
答案 2 :(得分:0)
目前无法像使用Couchbase Server智能客户端那样通过Sync Gateway设置文档的TTL。使用文档上的本机样式TTL,Sync Gateway存在概念阻抗不匹配。这是因为同步网关协议基于revision trees运行,即使文档被删除,仍然有一个文档可以标记已删除的文档
我也会对可能需要TTL(例如缓存)的工作负载持谨慎态度,Sync Gateway文档即使在被删除后也会占用空间,因此您的数据集可能会继续无限增长。
如果您确实需要TTL,并且如果您认为数据集大小不是问题,那么最好的方法是在文档中存储一个表示文档到期时间的字段。然后你会做两件事: