Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为Couchbase服务器中的文档设置TTL_Couchbase - Fatal编程技术网

为Couchbase服务器中的文档设置TTL

为Couchbase服务器中的文档设置TTL,couchbase,Couchbase,我想为从移动设备连续推送以进行复制的所有文档设置在couchbase服务器上的TTL生存时间。我在文档中没有找到任何明确的解释/示例。 通过同步网关为从移动设备发送到服务器的文档设置TTL的方法应该是什么 方法1: 一种方法是在服务器端创建一个视图,该视图将createdDate作为键返回。我们将查询该视图中的“今日日期”键,该键将返回“今日”文档,我们可以为这些文档设置TTL。但我们将如何以及何时称之为这种观点,这是一种好的方法吗 方法2: 我是否应该使用Webhook,它将监听通过Couch

我想为从移动设备连续推送以进行复制的所有文档设置在couchbase服务器上的TTL生存时间。我在文档中没有找到任何明确的解释/示例。 通过同步网关为从移动设备发送到服务器的文档设置TTL的方法应该是什么

方法1: 一种方法是在服务器端创建一个视图,该视图将createdDate作为键返回。我们将查询该视图中的“今日日期”键,该键将返回“今日”文档,我们可以为这些文档设置TTL。但我们将如何以及何时称之为这种观点,这是一种好的方法吗

方法2: 我是否应该使用Webhook,它将监听通过Couchbase Lite推送复制创建的文档更改,为新文档设置TTL并保存回Couchbase服务器

还有其他更好的方法吗

另外,仅为特定文档设置TTL的方法是什么

编辑:我的最终方法: 我将在couchbase服务器上创建以下视图:

function (doc, meta) {
  emit(dateToArray(doc.createdDate));
}
我将有一个工作,将在EOD每天运行,查询视图,以获得今天创建的文件,并设置这些文件的TTL。 这样我就可以定期删除文档


如果有任何问题或有更好的方法,请告诉我。

当TTL到达时,Couchbase不会删除; 相反,当您访问过期文档时, 然后Couchbase检查到期,此时将其移除


达到TTL时Couchbase不删除; 相反,当您访问过期文档时, 然后Couchbase检查到期,此时将其移除


希望来自移动团队的人能够插话确认这一点,但我认为移动SDK目前不允许设置过期时间


我想您可以将创建/更新时间添加到文档中,并创建一个批处理作业,使用核心SDK通过N1QL或专用视图定期查找旧文档并将其删除。

希望移动团队中的某个人能够插话确认这一点,但我认为移动SDK目前不允许设置过期时间


我想您可以将创建/更新时间添加到文档中,并创建一个批处理作业,使用核心SDK通过N1QL或专用视图定期查找旧文档并将其删除。

目前无法像使用Couchbase Server智能客户端那样通过同步网关为文档设置TTL。在文档上使用本机样式的TTL与同步网关存在概念上的阻抗不匹配。这是因为同步网关协议基于文档“已删除”而起作用,甚至在文档“已删除”时,仍有一个文档在适当位置以标记存在已删除的文档

我也会对可能需要TTL的工作负载保持警惕,例如缓存、同步网关文档甚至在被删除后仍会占用空间,因此您的数据集可能会继续无限增长

如果确实需要TTL,并且如果您认为数据集大小不是问题,那么最好的方法是在文档中存储一个表示文档过期时间的字段。然后你会做两件事:

访问文档时,如果文档已过期,则手动将其删除 定期在端点上迭代并删除您发现的任何过期文档。
目前无法像Couchbase Server智能客户端那样通过同步网关为文档设置TTL。在文档上使用本机样式的TTL与同步网关存在概念上的阻抗不匹配。这是因为同步网关协议基于文档“已删除”而起作用,甚至在文档“已删除”时,仍有一个文档在适当位置以标记存在已删除的文档

我也会对可能需要TTL的工作负载保持警惕,例如缓存、同步网关文档甚至在被删除后仍会占用空间,因此您的数据集可能会继续无限增长

如果确实需要TTL,并且如果您认为数据集大小不是问题,那么最好的方法是在文档中存储一个表示文档过期时间的字段。然后你会做两件事:

访问文档时,如果文档已过期,则手动将其删除 定期在端点上迭代并删除您发现的任何过期文档。
您使用哪个库访问Couchbase?每个库都提供像add和set这样的方法,其中肯定有一个参数,您可以通过该参数设置密钥的TTL。有关仅为特定文档设置TTL的信息,请参阅我使用的是.net sdk。我已经看过上面的文件了。但是,在通过同步网关将文档从移动设备复制到服务器的流程中,它将在何处适用?我将如何访问这些文档并为其设置TTL?在您的系统中,您可以通过库访问Couchbase的地方,您将使用库

函数设置TTL。每一份文件都将由一把钥匙标识。所以你们需要把这些关键信息传递给图书馆。假设模块_A可以访问Couchbase,并且在模块_X中生成了复制文档的请求,那么您需要将所有必要的信息从模块_X传递到模块_A。模块_X还应该具有文档信息和表示Couchbase中文档的密钥。您使用哪个库访问Couchbase?每个库都提供像add和set这样的方法,其中肯定有一个参数,您可以通过该参数设置密钥的TTL。有关仅为特定文档设置TTL的信息,请参阅我使用的是.net sdk。我已经看过上面的文件了。但是,在通过同步网关将文档从移动设备复制到服务器的流程中,它将在何处适用?我将如何访问这些文档并为其设置TTL?在您的系统中,您可以通过库访问Couchbase的地方,您将使用库函数设置TTL。每一份文件都将由一把钥匙标识。所以你们需要把这些关键信息传递给图书馆。假设模块_A可以访问Couchbase,并且在模块_X中生成了复制文档的请求,然后,您需要将所有必要的信息从模块_X传递到模块_A。模块_X还应该有文档信息和Couchbase中表示文档的密钥。好的,但我的问题是,应该如何为通过同步网关从移动设备发送到服务器的文档设置TTL。这让我有点困惑大量这个答案是不正确的。文档过期时不会立即删除,过期后访问后也不会立即删除;当到期寻呼机定期扫描并删除过期文档时,它们将被删除。这里有一个更清楚的解释,但我的问题是,通过同步网关为从移动设备到服务器的文档设置TTL的方法应该是什么;这个答案是不正确的。文档过期时不会立即删除,过期后访问后也不会立即删除;当到期寻呼机定期扫描并删除过期文档时,它们将被删除。这里有一个更清楚的解释,我将采用问题末尾提到的方法。请务必让我知道它是否有任何问题。我会非常小心在同步网关创建的任何文档上设置TTL,因为同步网关不希望在未通过同步网关直接通信的情况下删除文档。我找到了一种解决方法,可以将服务器上的文档删除通知同步网关。我将为同步bucket配置一个影子bucket。删除将发生在影子存储桶上,此更改将通过同步网关复制到同步存储桶,同步网关将为该文档设置必要的元数据,例如_deleted=true。现在,此删除更改将自动复制到移动设备。让我知道你的想法。这应该行得通,我会非常小心地使用影子桶,因为它们将被正式弃用,甚至没有正式的文档记录。您还需要注意影子存储桶相对于修订树的行为,因为删除影子存储桶中的文档可能会在同步网关存储桶中留下其他活动修订。您知道当影子不推荐时,什么样的逻辑将取代它吗?我们能在我们的案例中使用这种逻辑吗?我将采用问题末尾提到的方法。请务必让我知道它是否有任何问题。我会非常小心在同步网关创建的任何文档上设置TTL,因为同步网关不希望在未通过同步网关直接通信的情况下删除文档。我找到了一种解决方法,可以将服务器上的文档删除通知同步网关。我将为同步bucket配置一个影子bucket。删除将发生在影子存储桶上,此更改将通过同步网关复制到同步存储桶,同步网关将为该文档设置必要的元数据,例如_deleted=true。现在,此删除更改将自动复制到移动设备。让我知道你的想法。这应该行得通,我会非常小心地使用影子桶,因为它们将被正式弃用,甚至没有正式的文档记录。您还需要注意影子存储桶相对于修订树的行为,因为删除影子存储桶中的文档可能会在同步网关存储桶中留下其他活动修订。您知道当影子不推荐时,什么样的逻辑将取代它吗?我们能在我们的案例中使用这种逻辑吗?