【问题标题】:How to scale database efficiently in Google App Engine?如何在 Google App Engine 中有效地扩展数据库?
【发布时间】:2015-12-29 18:18:32
【问题描述】:

我正在使用 Google App Engine Python SDK 开发我的第一个网络应用程序。

我知道 GAE 可以处理扩展,但我只是想知道我是否以正确的方式考虑数据库设计。

例如,如果我有一个 User 类来存储所有用户名、散列密码等,我想一旦我有很多用户,从这个 User 类中读取会很慢。

与其拥有一个巨大的用户数据库,我是否会将其拆分为一个 UserA 类,该类存储以 A 开头的用户名的所有用户信息?所以我会有一个 UserA 类、UserB 类等。这会让用户的阅读/写作更有效率吗?

如果我在我的应用程序上销售衣服,而不是有一个 Clothing 类,我是否会按类别将其拆分,以便我有一个只存储衬衫的 ShirtsClothing 类、一个只存储裤子的 PantsClothing 类等?

p>

我在正确的轨道上吗?

【问题讨论】:

    标签: python database google-app-engine scaling


    【解决方案1】:

    我想一旦我有很多用户,从这个 User 类中读取 会很慢。

    不,阅读一定数量的条目需要相同的时间,无论周围有多少其他未读条目,很少或不计其数。

    相反,如果在给定查询中您只需要实体字段的子集,请考虑projection queries

    “分片”(例如按用户姓名、服装类别等)通常不会提高您应用的可扩展性。如果您需要基于多个不等式的查询,则可能会出现一个例外:数据存储本身支持每个查询仅对一个字段进行不等式约束,也许一些分片可能有助于缓解这种情况。但是,就像所有类型的非规范化一样,这完全取决于应用程序:您需要执行哪些查询,具有哪些性能限制/目标。

    有关可扩展性实践的一些好的提示,请考虑有关该主题的 Google's own essays

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      • 2011-05-15
      • 2019-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多