对不起,如果这个问题太简单了;我才上九年级。
我正在尝试了解 NoSQL 数据库设计。我想设计一个谷歌数据存储模型,最大限度地减少读/写次数。
这是一个玩具示例,用于一对多关系中的博客文章和评论。哪个更有效 - 将所有评论存储在 StructuredProperty 中或在 Comment 模型中使用 KeyProperty?
同样,目标是尽量减少对数据存储的读/写次数。您可以做出以下假设:
- 评论将不会独立于其各自的博客文章而被检索。(我怀疑这使得 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...
随意提出与有效表示一对多关系有关的任何其他注意事项,以最大限度地减少对数据存储的读/写次数。
谢谢。