對不起,如果這個問題太簡單了,我只進入9年級。Google App Engine數據存儲區中最有效的一對多關係?
我想了解NoSQL數據庫設計。我想設計一個Google數據存儲模型,以最大限度地減少讀/寫次數。
下面是在一個一對多關係的博客文章和評論的玩具例子。哪種方法更高效 - 將所有註釋存儲在StructuredProperty中,或在Comment模型中使用KeyProperty?
此外,其目標是最大限度地減少對數據存儲的讀取/寫入次數。你可以做出以下假設:
- 評論將不會獨立於各自的博客文章檢索。 (我懷疑,這使得最優選的StructuredProperty。)
- 評論將需要按日期,等級,作者等排序(數據存儲中的子屬性不能被索引,所以,這可能會影響性能?)
- 博客文章和評論可以在創建後進行編輯(甚至刪除)。
使用StructuredProperty:
from google.appengine.ext import ndb
class Comment(ndb.Model):
various properties...
class BlogPost(ndb.Model):
comments = ndb.StructuredProperty(Comment, repeated=True)
various other properties...
使用KeyProperty:
from google.appengine.ext import ndb
class BlogPost(ndb.Model):
various properties...
class Comment(ndb.Model):
blogPost = ndb.KeyProperty(kind=BlogPost)
various other properties...
隨意彈出,涉及到有效地代表與問候到最小化一個一對多的關係,任何其他考慮因素讀/寫數據存儲的次數。
謝謝。
請考慮您將如何解決評論和博客帖子總大小超過1MB的問題。它能發生嗎?如果可以,並且你沒有一個好的解決方案來處理它,那麼從純粹的功能角度來看,你甚至不會打擾包含兩者的單個實體。 – 2012-08-01 06:30:28
另一種方法可能是將所有註釋的關鍵字存儲在博客文章中。然後你可以用一個ndb.get_multi(keys)檢索所有的評論,但是可以提供更多的評論,如果你仍然超過1MB,那麼你可以單獨檢索評論 – 2012-08-01 06:38:04