GAE DataStore与用于企业管理系统的Google Cloud SQL

Min*_*ire 14 google-app-engine google-cloud-sql google-cloud-datastore

我正在构建一个使用gae的企业管理系统的应用程序.我使用gae和数据存储区构建了多个应用程序,但从来没有一个需要大量用户输入事务以及管理和管理报告的需求.我最担心的是,当我需要创建交叉表和其他详细报告(或商业智能报告和数据操作)时,我将面临一系列问题,即gae的数据存储区查询和数据提取限制.它真的只是建筑偏好还是存在定量问题?

在过去,我使用C++/c#/ Java构建了针对Oracle/MySql/MSSql的系统(在复杂或经常访问的数据库结果上添加了缓存层以获得一些额外的性能).

我一直在读,我们要抛弃关系数据的旧思路,转移到天空中大型McHashTable的新世界......但新的并不总是更好......任何关于上述的见解或经验都会有所帮助.

pro*_*ppy 22

来自Cloud SQL FAQ:

我应该使用Google Cloud SQL还是App Engine数据存储区?

这取决于应用程序的要求.数据存储提供高度可伸缩的NoSQL键值>存储,但不支持SQL数据库提供的复杂查询.Cloud SQL支持复杂查询和ACID事务,但这意味着数据库充当"固定管道",性能可扩展性较差.许多应用程序使用这两种类型的存储

如果你需要大量的写入(~XY// s)到数据库实体w /分布式密钥,这就是Google App Engine数据存储真正发挥作用的地方.

如果您需要支持复杂和随机的用户制作查询,那么Google Cloud SQL就更方便了.


ale*_*y28 6

在GAE数据存储中更让我害怕的是索引号限制.例如,如果您需要按某个字段搜索或排序 - 您需要+1索引.完全可以有200个索引.如果你有10个可搜索字段的实体,你可以按任何字段排序 - 那将有大约100个combunations.所以你需要100个索引.我为gae开发了一些小项目 - 这是成功的故事.但是,当一个大来的时候 - 这不适合gae.

关于缓存 - 您可以使用gae进行缓存,但它们分布式缓存的工作速度非常慢.我更喜欢使用RESTfull API创建永久后端的私有单个实例,该API在内存中保存缓存值.前端实例调用此API来获取/设置值.

也许建立带有gae的复杂系统是可行的,但这将是一组小型应用程序/服务.

  • 正如本文https://developers.google.com/appengine/articles/indexselection中所述,新的高级查询规划器可以通过在单个属性索引上使用zigzag merge join而不是昂贵的组合来大大减少复杂查询的索引数量复合索引. (6认同)