Google app engine 如何在Google App Engine上扩展大量记录

Google app engine 如何在Google App Engine上扩展大量记录,google-app-engine,google-cloud-datastore,data-modeling,scaling,Google App Engine,Google Cloud Datastore,Data Modeling,Scaling,我正在考虑编写一个应用程序,它必须为每个用户存储少量记录(>1000)。 我为一个平台做了一些研究,如果需要的话,它可以小规模启动,但我不确定它是否是适合它的工具,尤其是数据存储 如果我有一个用户实体和一个消息实体,并将所有用户和消息存储在该实体中,我将如何使其扩展?我认为实体中的记录量会变得非常大,并且过滤(即对用户的所有消息进行过滤)会变得非常昂贵。这是个问题还是谷歌会解决?我是否必须引入多租户并为每个用户创建一个名称空间,以便只看到与该用户相关的实体中的记录?名称空间的数量有限制吗?对数据

我正在考虑编写一个应用程序,它必须为每个用户存储少量记录(>1000)。 我为一个平台做了一些研究,如果需要的话,它可以小规模启动,但我不确定它是否是适合它的工具,尤其是数据存储

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


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

我认为有了这些数字,您在可扩展性方面可能还可以。任何严肃的数据存储都可以轻松处理300000到数百万条记录。

不建议在项目初期考虑扩展。。您的第一步应该始终是构建应用程序/产品并启动它。。。扩展是在这些天发布的大多数应用程序/产品从未达到需要扩展的水平之后出现的。。即使你确实制作或发布了这样一个网站/产品/应用程序,它会受到大量流量的冲击,你需要扩展,那就高兴吧!!!因为你已经达到了这个水平。。但如何达到这一水平始终是第一个问题


我不是想贬低你,而是想帮助你专注于你应该在的地方。。。感谢阅读,祝你的应用好运!也许你确实需要扩展,正如托比所说,即使是最基本的应用程序引擎配置也足以处理几十万条记录。

应用程序引擎数据存储明确设计用于处理这种可扩展性。查询的执行时间与返回的记录数成比例,因此,无论系统中有多少用户,获取所有用户的消息都需要相同的时间。

。问问Twitter他们有多喜欢“以后担心可伸缩性”的方法。你不必从一开始就投入每一个微优化,但你需要选择一个平台,让你可以扩展到任何你想去的地方。你最不想看到的是,你即将把你的应用程序称为“成功”(无论是盈利的、值得首次公开募股的,还是广受欢迎的),然后发现你必须在另一个平台上从头开始重新编写,因为你已经达到了旧应用程序的基本极限。@Nick,无意冒犯,先生,但我真的很想知道,有多少公司达到了与Twitter相同的水平?Twitter已经达到了线性可伸缩性的极限。我怀疑,在每年推出的数千个网站中,有多少达到了他们必须面对的可扩展性问题的水平?与代码相比,可伸缩性更像是一个架构问题。仅仅因为你的代码中有n到x次方的愚蠢循环,并不意味着rails没有性能或可伸缩性。当你需要2倍的伸缩性时,你可以重构代码并转移到更好的体系结构。@Steve:我完全同意你的观点,这是伸缩的方式。我敢肯定,如果max不得不面对可扩展性的问题,他总是可以离开Google App Engine,以防它不能满足他的要求:我认为这是模糊的,不会发生。我不认为你完全同意我,因为我认为现在值得考虑的是,该平台是否能够支持构成“成功”的扩展级别,以避免不得不离开第一个平台,从而可能在某个关键增长点重写整个应用程序。设计一个应用程序时,如果它接近成功,那么它无论如何都会失败,这是绝对没有意义的。虽然大多数项目都失败了,但这并不意味着max应该着手确保他的项目是其中之一。App Engine支持尽早构建可伸缩性,如果你已经掌握了这一点的话。需要明确的是,你没有用户实体和消息实体,你有用户实体种类和消息种类,由用户模型和消息模型定义。你所说的“记录”是一个实体。所以正确理解它:模型就是类型,实体就是该类型的实例?如果是这样的话,那么每种类型的实例数(处理过滤的时间、最大qutoa限制)是否重要,或者仅仅是我通过过滤检索的实例数?