撇开价格,为什么选择Google Cloud Bigtable而不是Google Cloud Datastore?

时间:2018-11-26 21:21:06

标签: google-cloud-platform nosql google-cloud-datastore bigtable google-cloud-bigtable

如果我同时具有大量数据存储的用例,为什么我会选择Google Cloud Bigtable而不是Google Cloud Datastore?

我已经在SO和其他方面“比较” Bigtable和Datastore时看到了一些问题,但这似乎可以归结为相同的非特定答案。

这是我目前的知识和想法:

  

数据存储区更昂贵。

在这个问题中,让我们完全忘记定价。

  

Bigtable适用于庞大的数据集。

似乎数据存储也是如此?我看不到是什么使Bigtable在客观上优于其他产品。

  

Bigtable优于Datastore进行分析。

如何?为什么?似乎我也可以在数据存储区中进行分析,没问题。为什么Bigtable似乎是全行业分析界的一致决定? BigTable可以从Datastore无法提供的GMail,eBay等商品中获得什么价值?

  

Bigtable已与Hadoop,Spark等集成。

考虑到数据存储库是建立在Bigtable上的,它不是很好吗?

this question中,此声明是在一个答案中提出的:

  

Bigtable和数据存储区极为不同。是的,数据存储区是建立在Bigtable之上的,但这并没有使其成为现实。这就好比说汽车是在[汽车]车轮上构建的,因此汽车与车轮没有太大区别。

但是,这似乎比喻似乎是荒谬的,因为汽车(包括车轮)从本质上提供的价值比仅靠汽车本身的车轮要多。

乍一看,Bigtable严格比Datastore差,仅提供单个索引并限制了快速搜索性。我想念什么?

1 个答案:

答案 0 :(得分:13)

Bigtable和Datastore已针对稍微不同的用例进行了优化,并提供了不同的权衡。主要的是:

数据模型:

  • Bigtable是一个宽列数据库-想想HBase和Cassandra
  • 数据存储区是一个文档数据库-想想MongoDB
  • 请注意,这两个都可以用于键值用例

成本模式:

  • 每个已配置节点的大表费用
  • 数据存储区无服务器并且按操作收费

通常,Bigtable是您的理想选择:

  • 快速点读取和范围扫描(尤其是大规模扫描)。 Bigtable将为键值查找以及连续行的快速扫描提供较低的延迟,这是一种强大的工具,因为行以字典顺序存储。如果您具有简单且可预测的查询模式,并且设计得当,那么从Bigtable读取数据将非常有效。
  • 高吞吐量写入(再次,尤其是大规模)。之所以可能这样做,部分是因为Bigtable最终是一致的-作为交换,您可以看到在价格/性能方面的巨大胜利。

适用于Bigtable的示例用例包括时间序列数据(用于IoT,监控等-认为极度写入繁重的工作负载和在x单位时间内生成的大量数据),分析(考虑欺诈检测,个性化) ,建议)和广告投放(每毫秒)。

如果需要,

数据存储(或Firestore)是一个不错的选择

  • 查询的灵活性:数据存储区提供文档支持和二级索引。
  • 强大的一致性和/或事务:Bigtable最终具有一致的复制功能,并且不支持多行事务。
  • 移动SDK:Datastore和Firestore与Firebase生态系统完美地集成在一起。

示例用例包括移动和Web应用程序,游戏状态,用户配置文件和产品目录。

要明确回答您的几个问题:

  • 为何将Bigtable用于分析?主要与性能有关:分析用例更有可能包含大型数据集,并且需要较高的写入吞吐量。如果要存储点击流数据,则比起用户帐户信息之类的数据库,要容易达到数据库的限制要容易得多。快速扫描对于分析用例也很重要:Bigtable允许您非常快速地检索有关用户或设备所需的所有信息,您可以在批处理作业中进行处理或用于动态创建建议和分析。
  • Bigtable严格比Datastore差吗? Datastore肯定提供了更多的内置功能,例如二级索引和文档支持,如果需要这些功能,Datastore是一个不错的选择。但是该功能需要权衡。 Bigtable提供了可能较低级别的但性能却令人难以置信的API,这些API允许用户自己进行权衡:如果用户重视通过二级索引的写入性能,则Bigtable是绝佳的选择。您可以将其视为功能极其强大的基础结构构建块。我实际上喜欢车轮/汽车的类比:有时候您不想要汽车-如果您真正需要的是越野车,那么一套坚固的车轮会更加有用:)