2024-04-26 06:06:15 发布
网友
我有一个NDB模型。一旦模型中的数据过时,我想从搜索和更新中删除过时的数据项。如果不是为了以后分析旧数据的需要,我本可以删除它们,这在this SO post中有解释。 我看到两个选择
我对这两种选择之间权衡的理解
问题: “移动实体”选项的速度是否可以与“标记已删除”相媲美? 如何在实体之间高效地移动代码?你知道吗
更新:2014-05-14,我决定暂时使用mark deleted。我认为减少rpc还有一个额外的好处。你知道吗
相关:
你可以把你提出的解决方案结合起来,尽管在我看来,这是一种过度工程。你知道吗
1)首先,编写一个任务队列,用新字段is_deleted更新所有实体,并使用默认值False,这将防止在询问之前的所有实体是否被删除时返回错误。你知道吗
is_deleted
False
2)在模型级别编写查询,这样在模型中进行更改时就不必更改它们,只需在进行相关查询时传递要过滤的额外参数。您可以从引导程序项目gae-init的模型中得到一个想法。您可以使用is_deleted = False查询它们。你知道吗
is_deleted = False
3)如果您正在查询10个实体或1000万个实体,BigTable的性能不会受到影响,但是如果您想在新的实体模型中移动已删除的实体,您可以尝试创建一个裁剪作业,以便在一天结束时copy将它们移到其他地方并删除原始实体。别忘了这将使用你的配额,你介意最终支付字面上的清理。你知道吗
还要记住,如果对要移动的实体有任何依赖关系,则还必须更新它们。因此,在我看来,最好是让他们标记,并索引您的旗帜。你知道吗
你可以把你提出的解决方案结合起来,尽管在我看来,这是一种过度工程。你知道吗
1)首先,编写一个任务队列,用新字段
is_deleted
更新所有实体,并使用默认值False
,这将防止在询问之前的所有实体是否被删除时返回错误。你知道吗2)在模型级别编写查询,这样在模型中进行更改时就不必更改它们,只需在进行相关查询时传递要过滤的额外参数。您可以从引导程序项目gae-init的模型中得到一个想法。您可以使用
is_deleted = False
查询它们。你知道吗3)如果您正在查询10个实体或1000万个实体,BigTable的性能不会受到影响,但是如果您想在新的实体模型中移动已删除的实体,您可以尝试创建一个裁剪作业,以便在一天结束时copy将它们移到其他地方并删除原始实体。别忘了这将使用你的配额,你介意最终支付字面上的清理。你知道吗
还要记住,如果对要移动的实体有任何依赖关系,则还必须更新它们。因此,在我看来,最好是让他们标记,并索引您的旗帜。你知道吗
相关问题 更多 >
编程相关推荐