我想构建一个将为很多人服务(超过200万)的应用程序,因此我认为我应该使用Google Cloud DataStore。但是,我也知道有一个使用Google Cloud SQL的选择,并且仍然使用MySQL为很多人提供服务(例如Facebook和YouTube所做的)。
这是使用数据存储的正确假设,而不是与这许多用户的关系云SQL?预先感谢
要给出一个聪明的答案,我需要更多地了解您的应用程序。但是...我会概述我发现的最大陷阱...
Google DataStore实际上是分布式层次数据存储。为了获得他们想要的可伸缩性,必须有一些妥协。作为开发人员,您会发现这些都不是易于工作,难以工作或无法解决的地方。后者比您想象的更有可能。
如果您习惯了关系数据库,并且能够在同一事务内的多个表中操纵数据,则您可能会用数据存储将头发拉出。最大的(?)陷阱是仅在有限数量的实体组中支持交易(目前为5个)。举一个简单的例子,说您有一个简单的亲子关系,您需要在交易中同时更新5个以上父母的子记录...无法完成(是的,真的)。如果您重组数据结构并尝试将所有以前的子记录放在一个实体下,以便可以通过单个交易进行更新,那么您将遇到另一个限制...您无法可靠地更新相同的事实实体组每秒不止一次(是的,真的)。而且,如果您在不指定每个实体的情况下查询一个实体类型,那么您将获得委婉的说法称为"最终一致性" ...这意味着不是(是的,真的)。
。以上所有内容都在Google的文档中,但是如果您刚刚开始,您可能会掩盖它(当然可以处理它!)。
,Facebook和YouTube使用MySQL将其大部分内容提供给大多数用户并不是完全不正确的。他们都主要使用非常大的NOSQL商店(Cassandra和Bigtable)来可扩展性,并且可能使用MySQL进行较小的规模工作,需要更复杂的关系存储。如果可以的话,请尝试使用数据存储,因为您可以免费启动,并且在处理大量数据时也可以节省资金。
这取决于您的含义'很多人',您拥有的数据以及您想处理什么。
Cloud SQL设计用于需要SQL数据库的应用程序,该应用程序可以处理可以在SQL中编写的任何查询,并确保您的数据始终处于一致的状态。
云SQL最多可提供3200个并发查询,具体取决于层。如果查询很简单,并且可以从RAM中提供,则应仅获取几毫秒,并假设您的用户每秒发出约1个请求,那么它可以支持数以万计的同时活跃的用户。但是,如果他们正在做更复杂的查询,例如搜索或编写大量数据,那么它将少。
如果您有一组简单的查询,不太关心立即的一致性或期望更多的流量,那么您应该查看数据存储。