除了价格,为什么选择 Google Cloud Bigtable 而不是 Google Cloud Datastore?
Price aside, why ever choose Google Cloud Bigtable over Google Cloud Datastore?
如果我有海量数据存储 和 可搜索性的用例,为什么我会选择 Google Cloud Bigtable 而不是 Google Cloud Datastore?
我在 SO 和其他方面看到了一些问题 "comparing" Bigtable 和 Datastore,但似乎归结为相同的非特定答案。
这是我目前的知识和想法:
Datastore is more expensive.
在这个问题的上下文中,让我们完全忘记定价。
Bigtable is good for huge datasets.
Datastore 好像也是?我没有看到具体是什么让 Bigtable 在这里客观上更胜一筹。
Bigtable is better than Datastore for analytics.
怎么样?为什么?看来我也可以在 Datastore 中进行分析,没问题。为什么 Bigtable 似乎是全行业分析的一致决定? GMail、eBay 等可以从 Bigtable 中获得哪些 Datastore 无法提供的价值?
Bigtable is integrated with Hadoop, Spark, etc.
考虑到 Datastore 是建立在 Bigtable 上的,难道 Datastore 不是很好吗?
来自 ,此声明是在回答中作出的:
Bigtable and Datastore are extremely different. Yes, the datastore is build on top of Bigtable, but that does not make it anything like it. That is kind of like saying a car is build on top of [car] wheels, and so a car is not much different from wheels.
然而,这个类比似乎是荒谬的,因为汽车(包括车轮)本质上比汽车的车轮本身提供更多的价值。
乍一看,Bigtable 比Datastore 差很多,只提供单一索引并且限制了快速搜索。我错过了什么?
Bigtable 和 Datastore 针对略有不同的用例进行了优化,并提供不同的权衡。主要有:
数据模型:
- Bigtable 是一个宽列数据库——想想 HBase 和 Cassandra
- Datastore 是一个文档数据库 -- 想想 MongoDB
- 请注意,这两者都可用于键值用例
费用模型:
- 每个配置节点的 Bigtable 费用
- Datastore 是无服务器的,按操作收费
总的来说,Bigtable是一个不错的选择,如果你需要:
- 快速点读取和范围扫描(尤其是在规模上)。 Bigtable 将为键值查找提供更低的延迟,以及对连续行的快速扫描——这是一个强大的工具,因为行是按字典顺序存储的。如果您有简单、可预测的查询模式并设计好您的模式,从 Bigtable 读取数据会非常高效。
- 高吞吐量写入(同样,尤其是在规模上)。这在一定程度上是可能的,因为 Bigtable 最终是一致的——作为交换,您可以在 price/performance.
中看到巨大的胜利
适用于 Bigtable 的示例用例包括时间序列数据(用于物联网、监控等 - 考虑极度写入繁重的工作负载和在 x 单位时间内生成的大量数据)、分析(考虑欺诈检测、个性化、推荐)和广告服务(每一微秒都很重要)。
如果您需要,Datastore(或 Firestore)是一个不错的选择:
- 查询灵活性:Datastore 提供文档支持和二级索引。
- 强一致性and/or事务:Bigtable具有最终一致性复制,不支持多行事务。
- 移动 SDK:Datastore 和 Firestore 与 firebase 生态系统完美集成。
示例用例包括移动和 Web 应用程序、游戏状态、用户配置文件和产品目录。
明确回答您的几个问题:
- 为什么将 Bigtable 用于分析? 这主要与性能有关:分析用例更有可能拥有大型数据集并需要高写入吞吐量。如果您存储的是点击流数据,那么 运行 进入数据库的限制要容易得多,而不是像用户帐户信息这样的东西。快速扫描对于分析用例也很重要:Bigtable 允许您极快地检索您需要的有关用户或设备的所有信息,您可以在批处理作业中处理这些信息或用于动态创建建议和分析。
- Bigtable 真的比 Datastore 差吗? Datastore 确实提供了更多的内置功能,例如二级索引和文档支持,如果您需要这些功能,Datastore 是一个绝佳的选择。但该功能需要权衡取舍。 Bigtable 提供了可能较低级别但性能令人难以置信的 API,允许用户为自己做出这些权衡:如果用户重视写入性能而不是二级索引,Bigtable 是一个很好的选择。您可以将其视为一个用途极为广泛且功能强大的基础架构构建块。我实际上喜欢 wheel/car 这个比喻:有时您并不想要汽车——如果您真正需要的是一辆越野车,那么一套实心轮子会更有用:)
如果我有海量数据存储 和 可搜索性的用例,为什么我会选择 Google Cloud Bigtable 而不是 Google Cloud Datastore?
我在 SO 和其他方面看到了一些问题 "comparing" Bigtable 和 Datastore,但似乎归结为相同的非特定答案。
这是我目前的知识和想法:
Datastore is more expensive.
在这个问题的上下文中,让我们完全忘记定价。
Bigtable is good for huge datasets.
Datastore 好像也是?我没有看到具体是什么让 Bigtable 在这里客观上更胜一筹。
Bigtable is better than Datastore for analytics.
怎么样?为什么?看来我也可以在 Datastore 中进行分析,没问题。为什么 Bigtable 似乎是全行业分析的一致决定? GMail、eBay 等可以从 Bigtable 中获得哪些 Datastore 无法提供的价值?
Bigtable is integrated with Hadoop, Spark, etc.
考虑到 Datastore 是建立在 Bigtable 上的,难道 Datastore 不是很好吗?
来自
Bigtable and Datastore are extremely different. Yes, the datastore is build on top of Bigtable, but that does not make it anything like it. That is kind of like saying a car is build on top of [car] wheels, and so a car is not much different from wheels.
然而,这个类比似乎是荒谬的,因为汽车(包括车轮)本质上比汽车的车轮本身提供更多的价值。
乍一看,Bigtable 比Datastore 差很多,只提供单一索引并且限制了快速搜索。我错过了什么?
Bigtable 和 Datastore 针对略有不同的用例进行了优化,并提供不同的权衡。主要有:
数据模型:
- Bigtable 是一个宽列数据库——想想 HBase 和 Cassandra
- Datastore 是一个文档数据库 -- 想想 MongoDB
- 请注意,这两者都可用于键值用例
费用模型:
- 每个配置节点的 Bigtable 费用
- Datastore 是无服务器的,按操作收费
总的来说,Bigtable是一个不错的选择,如果你需要:
- 快速点读取和范围扫描(尤其是在规模上)。 Bigtable 将为键值查找提供更低的延迟,以及对连续行的快速扫描——这是一个强大的工具,因为行是按字典顺序存储的。如果您有简单、可预测的查询模式并设计好您的模式,从 Bigtable 读取数据会非常高效。
- 高吞吐量写入(同样,尤其是在规模上)。这在一定程度上是可能的,因为 Bigtable 最终是一致的——作为交换,您可以在 price/performance. 中看到巨大的胜利
适用于 Bigtable 的示例用例包括时间序列数据(用于物联网、监控等 - 考虑极度写入繁重的工作负载和在 x 单位时间内生成的大量数据)、分析(考虑欺诈检测、个性化、推荐)和广告服务(每一微秒都很重要)。
如果您需要,Datastore(或 Firestore)是一个不错的选择:
- 查询灵活性:Datastore 提供文档支持和二级索引。
- 强一致性and/or事务:Bigtable具有最终一致性复制,不支持多行事务。
- 移动 SDK:Datastore 和 Firestore 与 firebase 生态系统完美集成。
示例用例包括移动和 Web 应用程序、游戏状态、用户配置文件和产品目录。
明确回答您的几个问题:
- 为什么将 Bigtable 用于分析? 这主要与性能有关:分析用例更有可能拥有大型数据集并需要高写入吞吐量。如果您存储的是点击流数据,那么 运行 进入数据库的限制要容易得多,而不是像用户帐户信息这样的东西。快速扫描对于分析用例也很重要:Bigtable 允许您极快地检索您需要的有关用户或设备的所有信息,您可以在批处理作业中处理这些信息或用于动态创建建议和分析。
- Bigtable 真的比 Datastore 差吗? Datastore 确实提供了更多的内置功能,例如二级索引和文档支持,如果您需要这些功能,Datastore 是一个绝佳的选择。但该功能需要权衡取舍。 Bigtable 提供了可能较低级别但性能令人难以置信的 API,允许用户为自己做出这些权衡:如果用户重视写入性能而不是二级索引,Bigtable 是一个很好的选择。您可以将其视为一个用途极为广泛且功能强大的基础架构构建块。我实际上喜欢 wheel/car 这个比喻:有时您并不想要汽车——如果您真正需要的是一辆越野车,那么一套实心轮子会更有用:)