簡體   English   中英

Google App Engine數據存儲區建模

[英]Google App Engine Datastore Modeling

有關如何為Google App Engine數據存儲建模的一般問題。 我對實體組部分感到困惑。 讓我們以一個Facebook示例為例,其中有3個實體:用戶,帖子和評論。

現在,我將如何實現它就像傳統的RDBMS。 每個帖子都有一個userId屬性,每個注釋都有一個postId屬性和userId屬性,我將通過查詢將它們彼此鏈接。 我不使用任何實體組。 但是,我覺得這對實體組來說是個好地方,因為如果沒有用戶,帖子就無法生存,而如果沒有帖子,評論就不能生存。 我是否將帖子設置為Users的子代? 和評論是帖子和用戶的子代??

再次明確地說,我對何時使用實體組感到困惑。

**更新:我正在使用Java

您應該知道,在高復制數據存儲上,實體組的軟限制為1個寫入/秒。 創建建模選擇時請記住這一點

使用實體組的一個很好的理由是要進行一致的查詢或以事務方式更新多個模型。 如果您需要使用事務更新1個或多個模型,則它們必須屬於同一實體組(盡管現在有跨組事務,一次支持多達5個不同的組)。 如果要執行強一致性查詢(默認情況下最終不是一致性查詢),則需要在查詢中指定父級。 在此處閱讀有關強一致性的更多信息

您可以在此處閱讀有關實體組用法的信息

您可以按照描述的方式對關系進行建模,但是也可以使用ndb.KeyPropertydb.ReferenceProperty從一種模型引用到另一種模型。

JAVA的更新我上面對實體組說的話對JAVA和python都適用,只是您將使用com.google.appengine.api.datastore.Key來引用模型之間的對象。

再次,對於兩個JAVA / Python,我相信單個實體組中的所有實體都可以更快地檢索,因為數據保存在單個節點上(M / S數據存儲區確實如此,不確定HRD)。 這里

實體組關系告訴App Engine將多個實體存儲在分布式網絡的同一部分中。

我搜集到您正在使用python? 如果使用應使用的NDB,則可以將“外國ID”或密鑰存儲為密鑰屬性列表

message = ndb.KeyProperty(kind=Message, repeated=True) 

但是請仔細閱讀選項,因為有很多;)

https://developers.google.com/appengine/docs/python/ndb/properties

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM