谷歌云的Spanner和Cloud SQL有什么区别?

40

我是GCP领域的新手,对于存储数据的众多GCP技术感到困惑:

https://cloud.google.com/products/storage

虽然上面的文章没有提到Google Cloud Spanner,但我知道它存在并且用于数据存储:https://cloud.google.com/spanner

从我的角度来看,我没有看到Cloud SQL(底层使用Postgres)和Cloud Spanner之间有任何显著区别。我发现它具有稍微不同的语法,但这并不能回答我何时应该选择此技术而不是Spring Cloud SQL。

你能解释一下吗?

P.S.

我认为Spring Cloud SQL是由Google管理的带有自动复制和水平扩展性的传统数据库。

4个回答

51

它们在存储数据方面并没有太大的区别(以表格形式存储数据)。不同之处在于它们如何处理小规模和大规模的数据。

当您需要处理海量数据且需要高度一致性和大量数据处理(每秒读/写操作超过100,000次)时,使用Cloud Spanner。Spanner具有更好的可扩展性和更好的SLOs。

另一方面,Spanner也比Cloud SQL更昂贵。

如果您只想以廉价的方式存储客户数据,但仍然不想面对服务器配置,则选择Cloud SQL是正确的选择。

如果您计划创建一个大型产品或者想为应用程序(病毒式游戏/应用程序)的用户数量的巨大增长做好准备,那么Spanner是正确的产品。

您可以在这篇官方论文中找到有关Cloud Spanner的详细信息。


1
你能解释一下什么是SLO吗? - gstackoverflow
2
SLO(服务水平目标)基本上是指产品的可靠性。SLA(服务水平协议)是您可以从产品中期望的最小服务承诺。对于Spanner,其月度SLO为>=99.999%。对于Cloud SQL,其月度SLO为>99.95%。 - Chris32
你能解释一下“处理大规模和小规模数据”的意思吗? - gstackoverflow
我的意思是,Cloud SQL适用于比Spanner少得多的数据和交易量。当您在Spanner和Cloud SQL之间进行选择时,关键是可扩展性、可靠性和价格。如果您深入了解细节,您会发现许多差异,例如Spanner需要每2TB数据一个处理节点。在这里,您可以找到一份详细的文件,更深入地描述Spanner。链接 - Chris32

31
Cloud Spanner和Cloud SQL的主要区别在于它可水平扩展+全球范围内处理超过10TB的数据。Spanner不适合通用SQL需求,而是最适合大规模机会。全球每秒1000次写入,每秒10,000-100,000次读取以上数量的量是非常难以通过正常SQL/MySQL实现的,需要对数据库进行复杂的分片操作。Spanner解决了所有这些问题,并允许ACID更新(使用分片数据库基本不可能)。他们通过超精确的时钟来管理冲突。简而言之,Spanner不适用于CRM数据库,而更适用于组织内的超大规模全球数据。由于Spanner有点昂贵(与cloud SQL相比),因此项目规模应足够大,以便证明额外成本的Spanner是合理的。你也可以在Reddit上关注这个讨论(很好的一个!):https://www.reddit.com/r/googlecloud/comments/93bxf6/cloud_spanner_vs_cloud_sql/e3cof2r/

Cloud SQL 也支持水平扩展:https://cloud.google.com/community/tutorials/horizontally-scale-mysql-database-backend-with-google-cloud-sql-and-proxysql - gstackoverflow
这就是为什么我添加了+全局可用的原因! - gruby
你说的“全球可用”是什么意思? - gstackoverflow
2
全球可用 - 如果GCP服务支持超过10TB的数据,并具有最小的延迟,那么一个人可以在不同的地区使用相同的数据库。 - gruby

5

之前的回答是正确的,Spanner最主要的优势是可扩展性和可用性。虽然您可以通过Cloud SQL进行扩展,但在不分片的情况下,写入吞吐量存在上限,这可能会成为一个主要挑战。处理分片SQL是Spanner在Google内部解决的重大问题。


2
我会在之前的回答中补充一点,Cloud SQL提供MySQL、PostgreSQL或SQL Server的托管实例,并提供相应的SQL支持。如果你正在从不同位置迁移MySQL数据库,则无需更改查询语句可能是一个巨大的优势。
Spanner有自己的SQL方言,尽管最近增加了对PostgreSQL方言子集的支持。

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