GAE数据存储与Google Cloud SQL用于企业管理系统的比较

14
我正在使用 GAE 构建一个企业管理系统的应用程序。我已经使用过 GAE 和 Datastore 构建了几个应用程序,但从未需要处理大量用户输入交易以及需要行政和管理报告的应用程序。我最担心的是,当我需要创建交叉表和其他详细报告(或业务智能报告和数据操作)时,我将面临 GAE Datastore 查询和数据拉取限制等一系列问题。这真的只是架构偏好还是有定量的考虑因素?
在过去,我使用 C++/C#/Java 对 Oracle/MySQL/MSSQL 进行系统构建(对于一些复杂或频繁访问的数据库结果,还使用缓存层来提高性能)。
我经常读到我们要抛弃关系型数据的旧思维模式,并转向新的大型 McHashTable 世界......但新不一定就是更好... 如果您对以上有任何见解或经验,那将为我带来帮助。

关系模型已经证明自己非常有用,但现有的产品无法在互联网规模下提供它,这就是为什么我们有很多不同的解决方案,它们都有自己的问题。NuoDB是一个有趣和有前途的“NewDB”数据库的例子。在等待期间,人们倾向于针对他们特定的用例组合解决方案,将数据复制到单独的数据库中进行查询和报告,使用gigaspaces在rdbms前面等等。 - tesdal
2个回答

22

根据Cloud SQL FAQ

我应该使用 Google Cloud SQL 还是 App Engine Datastore?

这取决于应用程序的需求。Datastore 提供高度可扩展的 NoSQL 键值存储,但不支持 SQL 数据库提供的复杂查询。Cloud SQL 支持复杂查询和 ACID 事务,但这意味着数据库充当“固定管道”,性能不太可扩展。许多应用程序同时使用两种类型的存储。

如果您需要向具有分布式键的 db 实体写入大量数据(~XXX/s),那么Google App Engine datastore就非常出色。

如果您需要支持复杂和随机用户构建的查询,则Google Cloud SQL更为方便。


在这种情况下,似乎将两者结合起来可能是最好的选择。也许我可以将事情分成两个阶段。我可以使用数据存储作为 OLTP 的应用程序接口,然后通过异步队列或 cron 作业将数据迁移到云 SQL 以供 OLAP 使用。虽然存在数据重复,但我可以利用迁移活动作为机会,在代码本身中转换数据,然后将其写入更规范化的状态并从数据存储端清除“陈旧”的数据...啊,我刚刚为自己创造了多少工作量... - MindWire
我刚刚发现这个链接,它证实了我之前的评论。https://dev59.com/HUrSa4cB1Zd3GeqPUj6m#1711757 - MindWire
1
如果您有大量的数据,可以考虑使用 Big Query https://developers.google.com/bigquery/,它更适合处理大量导入数据的操作。 - proppy
谢谢,这很棒。它让我对使用什么工具感到有些犹豫(OLTP = 数据存储,OLAP = Google Cloud SQL)或者(OLTP = Google Cloud SQL,OLAP = BigQuery)... 无论如何,我认为最理想的情况是使用数据存储进行 OLTP,每天使用 GCSQL 进行查询/报告,并在某些大量数据的报告(例如借记/贷记交易数据)中添加一些 BigQuery。 - MindWire

6
在GAE数据存储中,我更担心的是索引编号限制。例如,如果您需要按某个字段搜索或排序,则需要+1索引。总共可以有200个索引。如果您有一个带有10个可搜索字段并且可以按任何字段排序的实体,则会有大约100种组合。因此,您需要100个索引。我已经为gae开发了几个小项目,并取得了成功。但是当大型项目出现时,gae就不适用了。
关于缓存-您可以使用gae进行缓存,但是它们分布式缓存运行非常缓慢。我更喜欢创建一个私有单个永久后端实例,其中包含内存中的缓存值的RESTful API。前端实例调用此API以获取/设置值。
也许可以使用gae构建复杂的系统,但这将是一组小应用程序/服务。

6
如本文所述 https://developers.google.com/appengine/articles/indexselection,新的高级查询计划器可以通过在单属性索引上使用Zigzag合并连接而不是昂贵的组合索引来大大减少复杂查询的索引数量。 - proppy
是的,已经阅读过了。在限制方面有很大的区别。 - MindWire
是的,我已经阅读了它,但是仍然按照提供的公式,如果您通过10个字段中的1个进行搜索并按10个字段中的1个进行排序,则会得到大约100个索引。因此,如果您的项目中有几个这样的实体-是的,gae可能是其中之一。但是某些项目包含大量此类实体。因此,我仍然坚持我的立场-gae与数据存储对于小型项目非常好。如果您通过小型项目分发它,则可以使用gae构建庞大的东西。 - alexey28
索引限制即将消失(已经有公告了)。此外,DS查询的成本也在发生变化,对大多数用户来说可能会降低。 - ZiglioUK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接