【问题标题】:Persisted Delete [Community Edition]持久删除[社区版]
【发布时间】:2023-04-08 18:26:01
【问题描述】:

是否有一种规范的方法可以保证已删除的数据在社区版中保持删除状态?特别是对于具有未过期 ttls 的数据。

【问题讨论】:

标签: aerospike aerospike-ce


【解决方案1】:

一种正确的方法是在您的对象上设置较短的 TTL(相对于冷启动时间),并定期将它们接触到未来。如果该命名空间的数据存储在 SSD 上,那么每次触摸都会带来额外的写入 IOPS 成本。 TTL 应该是您认为该节点冷启动的时间长度,这又取决于数据量和 SSD 的读取 IOPS 容量。假设一个节点重新启动需要 1 小时。如果将对象的 TTL 设置为 1 小时,则删除的对象要么不会插入到主索引中(它的 void-time 已经过去),要么会在节点备份之前过期。这样删除的记录就无法复活了。

否则,durable deletes 是您可能需要的企业功能。只需考虑这可能是您的用例中的一个问题 - 不同的应用程序具有非常不同的访问和存储模式。

【讨论】:

  • 谢谢。我会将此标记为答案,因为它似乎是删除 Aerospike 社区中条目的唯一方法。虽然我不确定持久删除是否可以被视为数据库中的一项深奥功能(只有企业用户需要)。
  • Hmmmm .. 您如何将默认 TTL 设置为您愿意在冷启动节点之前等待的时间?慷慨地扩大集群以考虑节点故障模式,例如,如果您可以让一个节点停机一天,并且您的默认 ttl 是一天,那么您等待一天,然后冷启动停机节点......可以工作。每次使用 touch() -bad ssd wear out 扩展 ttl 时,都会在 touch() 时将整个数据集重写到 SSD 中的新位置。如果 touch() 没有按时运行怎么办?:-(,你丢失了所有数据。太乱了。如果必须删除数据,请获取 EE。
  • 顺便说一句,Aerospike 自 2010/2011 年以来一直在生产中使用,持久删除仅在 2016 年引入。显然大多数用户不需要删除并让他们的记录使用正确选择的默认 TTL 自然过期。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-17
  • 1970-01-01
  • 2011-07-31
  • 2021-06-06
  • 2019-07-23
  • 1970-01-01
相关资源
最近更新 更多