【问题标题】:Optimizing 'soft deleted' entities index number优化“软删除”实体索引号
【发布时间】:2015-09-20 15:30:49
【问题描述】:

几乎所有应用程序都需要将数据存储区中的某些实体标记为删除。根据业务逻辑,这些实体可以被物理删除,或者只是“软删除”,如所述。

在 google 数据存储中,一个明显的方法是使用一个索引属性来存储软删除信息。例如:

Post
  - Title
  - Body
  - IsDeleted

这种方法的问题在于,为了跟踪极少数软删除的实体,它们都必须忍受额外索引的开销。

当软删除的实体非常小时,有哪些策略可以避免索引?

我能想到的一种方法是更改​​实体类型,例如从 Post 更改为 DeletedPost,这涉及物理删除旧实体并创建新实体。

【问题讨论】:

    标签: google-app-engine google-cloud-datastore app-engine-ndb nosql


    【解决方案1】:

    也应该可以创建一个新的命名空间,其后缀为__deleted,但具有相同的种类,并将实体复制到新的命名空间,但使用另一个 ID 来破坏索引。因此,它将允许您在真正需要时以完全相同的方式恢复实体。

    【讨论】:

      【解决方案2】:

      我能想到的唯一其他解决方案是创建一个名为 DeletedPost 的表,并将已删除帖子的 ID 存储在表中。

      在进行查询时,请排除已删除表中的 ID。 (加入) 所以基本上和添加 IsDeleted 一样,只是移到了另一个表。

      【讨论】:

      • 我猜你的意思是在查询和内存中排除已删除的实体。这会弄乱分页之类的东西:删除删除的实体后,每页的项目数不一致。
      • 那么您计算的记录数不正确。您不能使用所有内容的记录数,并且只能通过未删除的记录进行拉取。相同的逻辑必须适用于分页。
      猜你喜欢
      • 2012-09-03
      • 1970-01-01
      • 2016-07-12
      • 2012-03-24
      • 2012-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多