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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

由于Google App Engine数据存储基于Bigtable,我们知道这不是关系数据库,因此如何为使用此类数据库系统的应用程序设计数据库模式 / 数据模型

提问于
用户回答回答于

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

  • 你将使用的访问模式以及每种模式的使用频率
  • 你的类型之间的关系
  • 你需要什么指数
  • 你将使用的写入模式(为了有效传播负载)

GAE的数据存储会自动将数据非规范化。也就是说,每个索引都包含一个(大部分)完整的数据副本,因此每个索引都会显着增加执行写入所花费的时间以及所用的存储空间。

如果情况并非如此,那么设计Datastore模式将需要更多的工作:你必须仔细考虑每种类型的主键,并考虑你对数据局部性的影响。例如,在呈现博客文章时,你可能需要显示评论以与其一起发布,因此每个评论的关键可能都以关联的博文的关键字开头。

使用Datastore,这不是什么大问题:你使用的查询看起来像“Select * FROM Comment WHERE post_id = N”。(如果你想分页的话,你也会有一个限制条款,并且可能有后缀“AND comment_id> last_comment_id”)。一旦你添加了这样一个查询,Datastore会为你建立索引,你的阅读将会是奇迹般地快速。

用户回答回答于

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

扫码关注云+社区