当前位置:  开发笔记 > 编程语言 > 正文

适用于Google App Engine数据存储区和其他NoSQL DB的无架构设计指南

如何解决《适用于GoogleAppEngine数据存储区和其他NoSQLDB的无架构设计指南》经验,为你挑选了1个好方法。

来自关系数据库背景,我相信很多其他人,我正在寻找一些在Google App Engine上设置/设计我的数据存储的可靠指南.人们是否有任何好的经验法则来设置这些无架构的数据存储?我理解一些基本知识,例如非规范化,因为你不能做连接,但我想知道人们有什么其他建议.

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

class Search(db.Model):
    who = db.StringProperty()
    what = db.StringProperty()
    where = db.StringProperty()

    createDate = db.DateTimeProperty(auto_now_add=True)

class SearchResult(db.Model):
    title = db.StringProperty()
    content = db.StringProperty()

    who = db.StringProperty()
    what = db.StringProperty()
    where = db.StringProperty()

    createDate = db.DateTimeProperty(auto_now_add=True)

我重复,因为我不能加入一堆的非规范化的缘故模型之间的属性SearchSearchResult在一起.这有意义吗?或者我应该在SearchResult模型中存储搜索ID,并在从数据存储区检索时有效地将两个模型"加入"代码中?请记住,这是一个简单的例子.两个模型都将拥有更多属性以及我现在正在接近的方式,我会在模型中放入我在搜索模型中放置的任何属性SearchResult.



1> Jason Hall..:

如果属性在SearchResulta和a 之间始终相同,请不要复制属性Search.如果a SearchResult应该引用a Search,请ReferenceProperty指向Search.这基本上将相关Search的存储Key在模型中.

class SearchResult(db.Model):
    search = db.ReferenceProperty(Search, required=True)
    # other stuff...

我也强烈建议你看一些从去年的谷歌I/O的App Engine视频(和2008年),特别是这一个由布雷特·斯拉特金,而 这个由Ryan巴雷特.如果你有时间,他们都是非常有用的视频,但我发现这两个特别是非常好.

推荐阅读
Chloemw
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有