我可以在couchbase文档的成员上使用TTL吗?

我可以在couchbase文档的成员上使用TTL吗?,couchbase,Couchbase,我正在设计我的后端。我有一个json数组/队列/一些我只需要最多2周的数据的东西,这些数据是连续附加的。我只想从此“队列”中删除,但不想删除容器文档。我可以使用TTL吗?还是TTL只适用于整个文档 有更好的方法吗?我应该将它们作为单独的文档存储在每天还是每小时的数组中 在couchbase中运行couchbase 2.2.TTL只适用于整个文档,不可能使文档的子集过期。正如您所说,您可以始终拥有不同到期时间的单独文档,其中您有一个类型、日期,然后是作为元素的数据数组 然后使用这样的视图: fun

我正在设计我的后端。我有一个json数组/队列/一些我只需要最多2周的数据的东西,这些数据是连续附加的。我只想从此“队列”中删除,但不想删除容器文档。我可以使用TTL吗?还是TTL只适用于整个文档

有更好的方法吗?我应该将它们作为单独的文档存储在每天还是每小时的数组中


在couchbase中运行couchbase 2.2.

TTL只适用于整个文档,不可能使文档的子集过期。正如您所说,您可以始终拥有不同到期时间的单独文档,其中您有一个类型、日期,然后是作为元素的数据数组

然后使用这样的视图:

function (doc, meta) {
  if(meta.type == "json") {
    if(doc.type == "ordered_data") {
      if(doc.date) {
        emit(dateToArray(doc.date)); 
      }
    }
  }
}
你可以发出所有按日期排序的相关数据(标志降序设置为true),它还允许你的应用程序通过传入一个或多个键来选择特定的日期。例如,选择2天、1周等日期范围。当文档过期时,更新时将从视图中删除它(根据您的过时参数加上第二次/第二次ops而有所不同)

然后,您可以在应用程序层执行所需的任何连接或额外处理。还有其他选择,但对我来说,这将是解决问题的最明智的方式,任何问题都可以评论,我们会再试一次


顺便问一下,你们的阵列会有多大?如果它们将非常大,那么您可能需要使用不同的技术或方法来解决问题。

Couchbase中的TTL仅适用于整个文档,不可能使文档的子集过期。正如您所说,您可以始终拥有不同到期时间的单独文档,其中您有一个类型、日期,然后是作为元素的数据数组

然后使用这样的视图:

function (doc, meta) {
  if(meta.type == "json") {
    if(doc.type == "ordered_data") {
      if(doc.date) {
        emit(dateToArray(doc.date)); 
      }
    }
  }
}
你可以发出所有按日期排序的相关数据(标志降序设置为true),它还允许你的应用程序通过传入一个或多个键来选择特定的日期。例如,选择2天、1周等日期范围。当文档过期时,更新时将从视图中删除它(根据您的过时参数加上第二次/第二次ops而有所不同)

然后,您可以在应用程序层执行所需的任何连接或额外处理。还有其他选择,但对我来说,这将是解决问题的最明智的方式,任何问题都可以评论,我们会再试一次


顺便问一下,你们的阵列会有多大?如果它们将非常大,那么您可能需要使用不同的技术或方法来解决问题。

我有“指针”数组,即指向其他值的键。我猜在过去两周里大概有一百个“指针”。如果我只添加到数组中,它们的顺序会大致相同。那么很容易就可以了,正如您所知,couchbase文档的大小限制为20mb。根据您的描述,我很想看看Redis,内置的本机数据类型、列表、哈希、排序集可能更合适。Redis支持分片,还是每个从机都有完整的数据集?没有Redis不支持分片,它正在开发中,我们使用Couchbase满足大多数数据需求,但我们发现Redis解决一些具体问题的效果要好得多。嘿@FilipHaglund如果这回答了您的问题,您介意将其标记为已接受吗?谢谢我有“指针”数组,指向其他值的键。我猜在过去两周里大概有一百个“指针”。如果我只添加到数组中,它们的顺序会大致相同。那么很容易就可以了,正如您所知,couchbase文档的大小限制为20mb。根据您的描述,我很想看看Redis,内置的本机数据类型、列表、哈希、排序集可能更合适。Redis支持分片,还是每个从机都有完整的数据集?没有Redis不支持分片,它正在开发中,我们使用Couchbase满足大多数数据需求,但我们发现Redis解决一些具体问题的效果要好得多。嘿@FilipHaglund如果这回答了您的问题,您介意将其标记为已接受吗?谢谢