24

我是 GCP 堆栈的新手,所以我对用于存储数据的大量 GCP 技术感到非常困惑:

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

虽然上面的文章中没有提到谷歌云扳手,但我知道它存在并且它用于数据存储:https ://cloud.google.com/spanner

从我目前的观点来看,我没有看到云 sql(引擎盖下带有 postgres)和云扳手之间有任何显着差异。我发现它的语法有点不同,但是当我应该更喜欢这种技术而不是 spring cloud sql 时,它没有回答。

你能解释一下吗?

附言

我认为 spring cloud sql 是一个传统的数据库,由谷歌管理,具有自动复制和水平可扩展性。

4

4 回答 4

27

它们在做什么(将数据存储在表中)方面没有太大区别。不同之处在于他们如何处理小规模和大规模的数据

当您需要以更高级别的一致性和大量数据处理(每秒 +100,000 次读取/写入)来处理大量数据时,可以使用 Cloud Spanner。Spanner 提供了更好的可扩展性和更好的 SLO。

另一方面,Spanner 也比 Cloud SQL 贵得多。

如果您只想以便宜的方式存储客户的一些数据,但又不想面对服务器配置,那么 Cloud SQL 是正确的选择。

如果您计划创建一个大型产品,或者如果您想为您的应用程序(病毒游戏/应用程序)的大量用户增加做好准备,Spanner 就是合适的产品。

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

于 2020-02-26T11:44:32.083 回答
19

Cloud Spanner 和 Cloud SQL 的主要区别在于 10TB 以上数据的水平可扩展性 + 全球可用性。

Spanner 不适合一般的 SQL 需求,Spanner 最适合用于大规模的机会。全球每秒 1000 次写入。全球每秒 10,000 次 - 100,000 次读取。

如果不对数据库进行复杂的分片,使用 NORMAL SQL / MySQL 很难实现上述容量。Spanner 处理所有这些并允许 ACID 更新(这对于分片数据库基本上是不可能的)。他们通过超精确的时钟来管理冲突来实现这一点。

简而言之,Spanner 不适合 CRM 数据库,它更适合组织内的超海量全球数据。而且由于 Spanner 有点贵(与云 SQL 相比),项目应该足够大,以证明 Spanner 的额外成本是合理的。

你也可以在 Reddit 上关注这个讨论(一个很好的!):https ://www.reddit.com/r/googlecloud/comments/93bxf6/cloud_spanner_vs_cloud_sql/e3cof2r/

于 2020-02-26T11:47:52.823 回答
3

以前的答案是正确的,Spanner 的主要优点是可扩展性和可用性。虽然您可以使用 Cloud SQL 进行扩展,但写入吞吐量存在上限,除非您进行分片 - 根据您的用例,这可能是一个重大挑战。处理分片 SQL 是 Spanner 在 Google 内部解决的大问题。

于 2020-02-26T21:51:02.193 回答
1

我会在之前的答案中添加 Cloud SQL 提供 MySQL 或 PostgreSQL 或 SQL Server 的托管实例,以及对 SQL 的相应支持。如果您从不同位置的 MySQL 数据库迁移,则不必更改查询可能是一个巨大的优势。

Spanner 有自己的 SQL 方言,尽管最近添加了对 PostgreSQL 方言子集的支持。

于 2021-10-22T17:28:25.993 回答