首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何为Bigtable/Datastore (GAE)设计数据模型?

如何为Bigtable/Datastore (GAE)设计数据模型?
EN

Stack Overflow用户
提问于 2008-09-17 04:02:54
回答 3查看 8.8K关注 0票数 18

由于Google App Engine数据存储是基于Bigtable的,而我们知道它不是关系数据库,那么如何为使用这种数据库系统的应用程序设计数据库schema/data模型呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-09-17 06:02:39

设计bigtable模式是一个开放的过程,基本上需要您考虑:

  • 你将使用的访问模式以及每种模式的使用频率
  • 你将需要什么索引
  • 你将使用的写模式(为了有效地分散负载)

GAE的数据存储会自动解除数据的规格化。也就是说,每个索引包含(大部分)数据的完整副本,因此每个索引显著增加了执行写入所需的时间和使用的存储空间。

如果不是这样,那么设计一个数据存储模式将是一项更多的工作:您必须仔细考虑每种类型的主键,并考虑您的决策对数据局部性的影响。例如,当呈现一篇博客文章时,您可能需要显示相应的评论,因此每个评论的关键字可能会以相关帖子的关键字开头。

对于数据存储,这并不是什么大问题:您使用的查询将类似于"Select * FROM Comment WHERE post_id =N“。(如果您想对注释进行分页,您还应该有一个limit子句和一个可能的后缀“and comment_id >last_comment_id”。)一旦您添加了这样的查询,Datastore将为您构建索引,您的读取速度将变得神奇。

要记住的是,每个额外的索引都会产生一些额外的成本:最好使用尽可能少的访问模式,因为这将减少GAE将构建的索引的数量,从而减少数据所需的总存储空间。

仔细阅读这个答案,我发现它有点含糊。也许一个亲身实践的设计问题会有助于缩小范围?:-)

票数 19
EN

Stack Overflow用户

发布于 2008-10-13 03:49:30

您可以使用www.web2py.com。您只需构建模型和应用程序一次,它就可以在GAE上运行,也可以在SQLite、MySQL、Posgres、Oracle、MSSQL、FireBird上运行。

票数 1
EN

Stack Overflow用户

发布于 2008-09-17 06:01:53

随着GAE构建如何在Django中管理数据,在Django文档中有很多关于如何解决类似问题的信息(例如,请参阅here,向下滚动到“您的第一个模型”)。

简而言之,您将数据库模型设计为常规对象模型,并让GAE对所有对象关系映射进行排序。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/79850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档