Google app engine mapreduce产量数据存储突变操作是否与NDB模型兼容
在我的Python AppEngine应用程序中,我有一个ndb类,我正在运行MapReduce作业,以便删除一些不再需要的旧对象 课程安排如下:Google app engine mapreduce产量数据存储突变操作是否与NDB模型兼容,google-app-engine,mapreduce,datastore,app-engine-ndb,mapper,Google App Engine,Mapreduce,Datastore,App Engine Ndb,Mapper,在我的Python AppEngine应用程序中,我有一个ndb类,我正在运行MapReduce作业,以便删除一些不再需要的旧对象 课程安排如下: class UserModel(ndb.Model): is_backup_object = ndb.BooleanProperty(default=False) etc. MapReduce作业如下所示: from mapreduce import operation as op # Note: userobject is an
class UserModel(ndb.Model):
is_backup_object = ndb.BooleanProperty(default=False)
etc.
MapReduce作业如下所示:
from mapreduce import operation as op
# Note: userobject is an instantiation of UserModel
def mapreduce_update_userobject(userobject):
# This will remove "backup" userobjects from the database, while leaving
# "normal" userobjects alone
if userobject.is_backup_object:
yield op.db.Delete(userobject)
当我运行MapReduce作业时,我有许多要删除的userobject
(is\u backup\u object=True
),即使is\u backup\u object值
为True
,其中一些对象也不会被删除
问题:
operation.db.Put
和operation.db.Delete
是否设计用于NDB对象回答您的问题:
operation.db.Put
在我自己的MapReduce管道中,ndb
模型很好db
和ndb
相同- 最终的一致性——正如我所提到的——只有当实体后来被删除时,它们才看起来没有被删除
- MapReduce未触及所有实体。可能是由于MapReduce管道开头的筛选器或命名空间不正确
- 管道中的错误。这应该显示在您的日志中
- 奇怪的缓存问题。要确认或取消确认,需要进行严格的测试
operation.db.Put
在我自己的MapReduce管道中,ndb
模型很好db
和ndb
相同- 最终的一致性——正如我所提到的——只有当实体后来被删除时,它们才看起来没有被删除
- MapReduce未触及所有实体。可能是由于MapReduce管道开头的筛选器或命名空间不正确
- 管道中的错误。这应该显示在您的日志中
- 奇怪的缓存问题。要确认或取消确认,需要进行严格的测试