![](/img/trans.png)
[英]Achieving the equivalence of ndb.StructuredProperty in new Cloud Datastore Mode?
[英]What's faster and less expensive in terms of datastore writes? Storing data in ndb.StructuredProperty or storing separately as child entities
我目前正在使用此模型將數據存儲在我的appengine ndb數據存儲區中
class BundleModel (ndb.Model):
product_vals=ndb.StructuredProperty(ProductModel,repeated=True)
ProductModel如下:
class ProductModel(ndb.Model):
p_created=ndb.DateTimeProperty(auto_now_add=True)
p_updated=ndb.DateTimeProperty(auto_now=True)
p_title=ndb.StringProperty()
p_link=ndb.StringProperty()
p_categ=ndb.StringProperty()
p_categ_alt=ndb.StringProperty()
p_value=ndb.FloatProperty()
p_location=ndb.StringProperty()
p_avail=ndb.BooleanProperty(default=True)
p_mod=ndb.BooleanProperty(default=False)
我只將BundleModel放在數據存儲區中,並且ProductModel實體作為列表嵌入在每個實體中。
我想知道這是否是一種昂貴且緩慢的數據存儲方法。 將每個ProductModel存儲為一個子實體,以BundleModel作為父實體,會更好嗎?
在這種情況下,對BundleModel的每個請求都將轉換為對ProductModels的多個請求。 那么,要權衡一下,一個請求大數據塊而不是多個請求(大約十個左右)嗎? 在寫數據方面,我將分別寫小塊,而不是修改一個大塊。
這種變化在成本,速度和任何其他參數方面的后果是什么?
謝謝!
不,與使用單獨的子實體相比,使用結構化屬性會更快,更便宜。
結構化屬性的工作方式是通過展平結構並為該結構中的每個屬性自動在實體中創建新屬性。 在您的情況下,您的BundleModel
實體將獲得自動生成的屬性: product_vals.p_created
, product_vals.p_updated
等。
結構化屬性更好,因為它僅存儲一個實體,而不是兩個或多個(父代+子代)。 這使得它更快,更便宜。 請注意,訪問實體時,每個實體大小都沒有成本。
限制說明:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.