Google app engine Google App Engine数据存储和其他NoSQL数据库的无模式设计指南

Google app engine Google App Engine数据存储和其他NoSQL数据库的无模式设计指南,google-app-engine,database-design,nosql,google-cloud-datastore,Google App Engine,Database Design,Nosql,Google Cloud Datastore,我来自关系数据库背景,我相信其他很多人都是这样,我正在寻找一些可靠的指南,用于在Google App Engine上设置/设计我的数据存储。对于建立这种无模式的数据存储,人们有什么好的经验法则吗?我了解一些基础知识,比如去规范化,因为你不能做连接,但我想知道人们还有什么其他建议 我正在处理的一个特别简单的示例涉及存储搜索及其结果。例如,我在我的Google App Engine应用程序中使用Python定义了以下两个模型: 类搜索(db.Model): who=db.StringProperty

我来自关系数据库背景,我相信其他很多人都是这样,我正在寻找一些可靠的指南,用于在Google App Engine上设置/设计我的数据存储。对于建立这种无模式的数据存储,人们有什么好的经验法则吗?我了解一些基础知识,比如去规范化,因为你不能做连接,但我想知道人们还有什么其他建议

我正在处理的一个特别简单的示例涉及存储搜索及其结果。例如,我在我的Google App Engine应用程序中使用Python定义了以下两个模型:

类搜索(db.Model):
who=db.StringProperty()
what=db.StringProperty()
其中=db.StringProperty()
createDate=db.DateTimeProperty(auto\u now\u add=True)
类搜索结果(db.Model):
title=db.StringProperty()
content=db.StringProperty()
who=db.StringProperty()
what=db.StringProperty()
其中=db.StringProperty()
createDate=db.DateTimeProperty(auto\u now\u add=True)

为了反规范化,我在模型之间复制了一组属性,因为我不能将
Search
SearchResult
连接在一起。这有意义吗?或者我应该在
SearchResult
模型中存储一个搜索ID,并在从数据存储中检索这两个模型时在代码中有效地“连接”它们吗?请记住,这是一个简单的例子。这两个模型都会有更多的属性,按照我现在的做法,我会将我在搜索模型中放置的任何属性也放在
搜索结果
模型中。

如果
搜索结果
搜索
之间的属性始终相同,请不要复制这些属性。如果
搜索结果
应该引用
搜索
,请保持指向该搜索。这基本上将相关的
搜索
存储在模型中

class SearchResult(db.Model):
    search = db.ReferenceProperty(Search, required=True)
    # other stuff...
我也强烈推荐你看一些(和来自),特别是布雷特·斯莱特金的,和 瑞安·巴雷特。如果你有时间的话,它们都是非常有用的视频,但我发现这两个视频特别棒