我有一個設計問題是BlobReferenceProperty基本上ReferenceProperty?我應該像ReferenceProperty一樣執行預取(由Nick http://blog.notdot.net/2010/01/ReferenceProperty-prefetching-in-App-Engine建議)嗎?BlobReferenceProperty和ReferenceProperty模型設計
目前我有這樣的設計:
class Entry(db.Model):
creator = db.ReferenceProperty(User, required=True, collection_name='entries')
created_at = db.DateTimeProperty(auto_now_add=True)
# image
image_id = db.StringProperty() # key_name for Image
image_url = db.LinkProperty(indexed=False)
width = db.IntegerProperty(default=0, indexed=False)
height = db.IntegerProperty(default=0, indexed=False)
class Image(db.Model):
created_at = properties.DateTimeProperty(auto_now_add=True)
blob = blobstore.BlobReferenceProperty(required=True)
filename = db.StringProperty(indexed=False)
published = db.BooleanProperty(default=False, indexed=True)
width = db.IntegerProperty(default=0, indexed=False)
height = db.IntegerProperty(default=0, indexed=False)
這會是好還是壞?相反,我已將Blob移至Entry。
class Entry(db.Model):
creator = db.ReferenceProperty(User, required=True, collection_name='entries')
created_at = db.DateTimeProperty(auto_now_add=True)
# image
image_blob = blobstore.BlobReferenceProperty(required=False)
filename = db.StringProperty(indexed=False)
image_id = db.StringProperty()
image_url = db.LinkProperty(indexed=False)
width = db.IntegerProperty(default=0, indexed=False)
height = db.IntegerProperty(default=0, indexed=False)
謝謝。
這在技術上並非如此。存儲在BlobReferenceProperty上的BlobKey實際上指向一個BlobInfo實體,而不直接指向Blobstore。 BlobInfo只是一個常規的數據存儲實體,它擁有關於Blob的信息並提供一個API來獲取它。答案仍然存在,仍然可以預取BlobKey,當你不需要它時可以跳過BlobInfo步驟。 – 2011-05-24 13:34:36