我正在尝试找出在多个地区部署单个Google应用引擎应用的最佳方式。
将使用相同的代码,但存储的数据特定于每个区域。激励范例是超本地评论网站,例如yelp.com或urbanspoon,其中要查看的餐馆和其他商家特定于某个地区(例如boston.app.com,seattle.app.com)。
一些选项包括:
创建多个gae应用程序, 并在它们之间复制代码。
创建一个gae应用程序,并存储所有区域的所有数据 在同一个数据存储区中,与一个区域 每个模型的标识符字段 划定相关区域
一些权衡:
选项2似乎效率会越来越低(空间:为每个模型的每个记录复制一个区域标识符;时间:对每个查询的标识符进行过滤/索引)
选项1需要每个地区的应用ID,而gae只允许每个帐户使用10个应用。此外,在每个区域部署代码以及数据存储迁移似乎都很难管理。
在理想世界中,我会有一个应用程序实例。从该实例中,我可以在子域之间路由(如here),并为每个子域提供单独的数据存储。但我相信gae只允许每个应用程序使用一个数据存储区。
有没有人对解决这个问题的最佳方法有什么想法?还是我不考虑的选择?
谢谢你的时间!
答案 0 :(得分:2)
我会推荐你的方法#2。与大多数数据库不同,存储空间很便宜(区域代码很短),并且数据存储性能不随着大小而降低。使用单个应用程序还可以简化管理和升级,并避免TOS出现任何问题(禁止对应用进行分片以避免收费)。
答案 1 :(得分:0)
如果您使用源代码修订控制,那么将相同的代码推送到多个应用程序并不是太糟糕。您可以设置一个策略,只允许将完整标记推送到GAE。另一个选择是使您的应用程序版本与修订版号相同。
使用App Engine,我(我相信其他大多数人)总是从我的模型代码中迁移数据。您无法在GAE中轻松执行批量迁移,通常的解决方案是在代码中遇到数据时迁移数据。通过这种方式,您可以使各个应用程序的模型完全相同。
话虽如此,我可能仍然会使用统一的应用程序。它更具有前瞻性。如果用户想要加入他们的L.A.身份和他们的纽约身份怎么办?或者,如果广告客户为您提供了一个很好的协议,您可以根据自己的数据运行一些营销报告呢?
最后,几个字节的数据在App Engine上并不重要。随着您网站的发展,您将非常快速发现您将永远碰到天花板。与传统的Web服务器相比,GAE限制极小,因此无论如何您都必须在这些限制范围内工作。例如,您一次只能获取1,000条记录。因此,您的架构已经支持零碎的分页解决方案。因此,不要过多担心记录中的一两个字段。