如何从Google App Engine数据存储区批量删除

时间:2011-12-23 04:45:37

标签: google-app-engine google-cloud-datastore jdo

我需要从数据存储中删除批量记录,我浏览了所有以前的链接,但所有人刚刚谈到从数据存储中获取实体然后逐个删除它们,我的问题是我有大约80K实体和每当我尝试使用数据存储区db.delete()方法时,read都会超时。

这里有没有人知道一种更接近SQL的方法来执行批量删除?

3 个答案:

答案 0 :(得分:3)

您可以使用任务队列+ DB光标进行删除。

任务最多可以执行10分钟,可能需要时间来删除所有实体。但是如果需要更长的时间,你可以获得当前光标位置,并再次调用任务本身,将此光标作为参数,并从最后位置开始处理。

答案 1 :(得分:0)

定义您正在使用的API。 JDO? GAE? JPA?你引用一些db.delete,但将其标记为JDO;他们不一样。 JDO显然提供pm.deletePersistentAll(),如果想要更多,你可以使用Google Mapper API

答案 2 :(得分:0)

您可以使用Cloud Dataflow批量删除数据存储区中的实体。您可以使用GQL查询来选择要删除的实体:

https://cloud.google.com/datastore/docs/bulk-delete