【问题标题】:How to scale a lot of Records on Google App Engine如何在 Google App Engine 上扩展大量记录
【发布时间】:2011-05-15 22:05:20
【问题描述】:

我正在考虑编写一个应用程序,每个用户必须存储少量记录(>1000)。 我对一个平台进行了一些研究,该平台允许从小规模开始并在需要时进行扩展,但我被 App Engine 卡住了,但我不确定它是否适合它,尤其是数据存储。

如果我有一个用户实体和一个消息实体并将所有用户和消息存储在这些实体中,我将如何使其扩展?我认为实体中的记录数量会变得非常大,并且过滤即用户的所有消息会变得昂贵。这是一个问题还是谷歌会处理这个问题?我是否必须引入多租户并为每个用户创建一个命名空间,以便我只能看到与用户相关的实体中的记录?命名空间的数量有限制吗?对数据存储区中的数据进行建模的正确方法是什么?

我真的不知道如何处理 App Engine 数据存储区以及它是否适合我。

【问题讨论】:

  • 明确一点,你没有用户实体和消息实体,你有一个用户实体 kind 和一个消息 kind ,由用户模型和消息模型定义。你所说的“记录”是一个实体。
  • 所以要正确理解:模型是类型,实体是该类型的实例?如果是这样的话,每种类型的实例数量是否重要(处理过滤的时间、最大配额限制)或只有我通过过滤检索到的实例数量?

标签: google-app-engine google-cloud-datastore data-modeling scaling


【解决方案1】:

App Engine 数据存储区专门设计用于处理这种可扩展性。查询的执行时间与返回的记录数成正比,因此无论系统中有多少用户,获取所有用户的消息都将花费相同的时间。

【讨论】:

    【解决方案2】:

    我认为,就可扩展性而言,您可能还可以使用这些数字。任何重要的数据存储都可以轻松处理 300,000 到数百万条记录。

    【讨论】:

      【解决方案3】:

      不建议在项目初期考虑扩展。您的第一步应该始终是构建一个应用程序/产品并启动它...扩展是后记 大多数启动的应用程序/产品都是这些日子永远不会达到他们需要扩展的水平..即使您确实创建或启动了这样一个受到大量流量打击并且您需要扩展的网站/产品/应用程序,然后欢欣鼓舞!因为你已经达到了那个水平。但是如何达到那个水平应该永远是第一个问题......

      我并不是要让您士气低落,而是要帮助您专注于应该做的事情...感谢您的阅读并祝您的应用好运!也许您确实需要扩展,正如 Toby 所说,即使是最基本的 App Engine 配置也足以处理数十万条记录......

      【讨论】:

      • 糟糕的建议。询问 Twitter 他们有多喜欢“以后担心可扩展性”的方法。
      • 您不必从一开始就进行所有最后的微优化,但您确实需要选择一个可以让您随心所欲扩展的平台。您最不想做的事情是达到您即将称您的应用程序“成功”的程度(无论这被定义为盈利、值得 IPO 还是只是受到大量人的欢迎),然后发现您必须在不同的平台上从头开始重新编写它,因为你已经达到了旧平台的基本限制。
      • @Nick,先生,无意冒犯,但我确实想知道有多少公司达到了与 Twitter 相同的水平? Twitter 已经达到了线性可扩展性的极限。我怀疑在每年推出的数千个网站中,有多少能够达到他们必须面对可扩展性问题的水平?与代码相比,可扩展性更多的是架构问题。仅仅因为您的代码中有 n 次方 x 次方愚蠢循环的 rails 并不意味着 rails 没有性能或可扩展性。当您需要 2 个扩展时,您重构代码并迁移到更好的架构。
      • @Steve:我完全同意你的看法,这就是扩展的方式。我敢肯定,如果 max 确实必须面对可扩展性问题,他总是可以从 Google App Engine 中撤出,以防它不能满足他的要求:我认为这是模糊的,不会发生。
      • 我认为你并不完全同意我的观点,因为我认为现在值得考虑的是平台是否可以支持构成“成功”的缩放水平,以避免不得不离开第一个平台,因此可能会在某个关键的增长点重写整个应用程序。以这样一种方式设计一个应用程序是绝对没有意义的,如果它接近成功,它无论如何都会失败。仅仅因为大多数项目失败并不意味着麦克斯应该着手确保他是其中之一。 App Engine 支持尽早构建可扩展性,如果您能掌握的话。
      猜你喜欢
      • 2013-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-11
      • 2019-02-09
      相关资源
      最近更新 更多