1
在我的Python AppEngine應用程序中,我有一個ndb類,我正在運行MapReduce作業以刪除一些不再需要的舊對象。mapreduce是否產生與NDB模型兼容的數據存儲區變異操作
類如下:
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
s表示我想刪除( is_backup_object = True
),其中一些對象即使is_backup_object value
爲True
也未被刪除。
問題:
- 的設計與NDB對象打交道映射縮減產量數據存儲變異操作功能
operation.db.Put
和operation.db.Delete
? - NDB自動緩存是否會干擾刪除對象(或者可能在數據存儲查看器中顯示過時的對象)?
- 是否有一種特定的方式讓我們產生與標準數據庫對象不同的NDB對象?
- 對於我見過的這種奇怪行爲,還有其他可能的解釋嗎?
- 如果我做的不正確,那麼使用mapreduce有效批量處理NDB數據庫實體的最佳方法是什麼?