Google Cloud Bigtable与Google Cloud Datastore


122

Google Cloud Bigtable和Google Cloud Datastore / App Engine数据存储区有什么区别,主要的实际优点/缺点是什么?AFAIK Cloud Datastore建立在Bigtable之上。


8
请不要关闭。目前没有关于这些的官方文档,Google可能会在这里发表评论。
Zig Mandel

Answers:


96

根据Datastore的经验并阅读Bigtable 文档,主要区别在于:

  • Bigtable最初是为实现HBase兼容性而设计的,但现在拥有多种语言的客户端库。数据存储区最初更适合Python / Java / Go网络应用程序开发人员(最初是App Engine)
  • Bigtable比Datastore的“ IaaS”要多一些,因为它不是“仅此而已”,而是需要配置集群。
  • Bigtable仅支持一个索引-“行键”(数据存储区中的实体键)
    • 这意味着查询位于键上,这与数据存储区的索引属性不同
  • Bigtable仅在单行上支持原子性-没有事务
  • 在Bigtable中,突变和删除似乎不是原子的,而Datastore则提供最终且强大的一致性,具体取决于读取/查询方法
  • 计费模式非常不同:
    • 数据存储的读/写操作,存储和带宽费用
    • Bigtable的费用“节点”,存储和带宽

97

Bigtable已针对大量数据和分析进行了优化

  • Cloud Bigtable不会跨区域或区域复制数据(单个集群中的数据已复制且持久),这意味着Bigtable更快,更高效,成本更低,尽管持久性较差且在默认配置下可用
  • 它使用HBase API-没有锁定或学习新范例的风险
  • 它与开源大数据工具集成在一起,这意味着您可以使用客户使用的大多数分析工具(Hadoop,Spark等)来分析存储在Bigtable中的数据。
  • Bigtable由单个行键索引
  • Bigtable在一个区域中

Cloud Bigtable是为大型公司和企业设计的,这些公司和企业通常需要更大的数据需求以及复杂的后端工作负载。

数据存储经过优化,可为应用程序提供高价值的交易数据

  • Cloud Datastore通过复制和数据同步具有极高的可用性
  • 数据存储区因其多功能性和高可用性而变得更加昂贵
  • 由于同步复制,数据存储区写入数据的速度较慢
  • 数据存储具有围绕事务和查询的更好的功能(因为存在二级索引)

3
现在Bigtable的跨区域复制到一个分区停电的脸提供可用性:cloudplatform.googleblog.com/2018/07/...
布兰登DuRette

我认为交易不是数据存储的主要卖点。从其[doc | cloud.google.com/datastore/docs/concepts/transactions] “交易是一组Google Cloud Datastore操作,最多可对25个实体组中的一个或多个实体进行操作。”另外,数据存储区建立在Bigtable之上,对吗?
zyxue

19

Bigtable和Datastore极为不同。是的,数据存储区建立在Bigtable之上,但这并没有使它变得像它那样。这就好比说汽车是建立在车轮的顶部,所以汽车与车轮没有太大区别。

Bigtable和Datastore在如何更改数据方面提供了截然不同的数据模型和语义。

主要区别在于,数据存储区在称为实体组的数据子集上提供类似于SQL数据库的ACID事务(尽管查询语言GQL比SQL更具限制性)。Bigtable严格来说是NoSQL,但提供的保证要弱得多。


3
直到最后一段,你都做得不错。数据存储区提供事务,但是它们与SQL完全不同,而且绝对不是ACID。
丹尼尔·罗斯曼

4
@DanielRoseman实际上,确实如此。这是一则有关Megastore(建立了Datastore)的论文的引文:“每个Megastore实体组都充当提供可序列化ACID语义的微型数据库。” “我们对数据存储区进行分区,并分别复制每个分区,从而在分区内提供完整的ACID语义”。(research.google.com/pubs/pub36971.html)
user2771609

我认为将其称为Sql具有误导性。最多一个子集。没有有效的计数/组,所有查询都必须使用索引等
Zig Mandel

4
查询语言和事务隔离是不同的东西,您似乎在混淆它们。我正在就后者(ACID 交易)提出索赔。在您的评论中,您假设我在谈论前者。也许一些连字符会澄清?我将明确提到查询语言问题,以消除任何疑问。
user2771609 2015年

8

如果您阅读论文,那么BigTable是这个,数据存储是MegaStore。数据存储区是BigTable,外加复制,事务和索引。(而且价格昂贵得多)。


真的更贵吗?BigTable的最小数量为3个节点,10GB HDD为1400美元/月。似乎很高吗?

@ben,根据我过去的经验是。数据存储区按操作而不是按小时收费。(如果您不大量使用它,那么是的,您无需向Datastore支付太多费用。但是,如果您的流量很高,那么我认为bigtable便宜得多。)我认为Bigtable每秒声称拥有1万次操作?实际上,我发现它较低,例如大约1-2k,但仍有3个节点的速度> 5k / s。如果您将吞吐量保持一个月并将其映射到数据存储区定价,则可能远高于1.4k。
Justin Zhang

MegaStore链接已损坏
gstackoverflow

7

我将尝试总结以上所有答案以及Coursea Google Cloud Platform大数据和机器学习基础知识中给出的内容

+---------------------+------------------------------------------------------------------+------------------------------------------+--+
|      Category       |                             BigTable                             |                Datastore                 |  |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+
| Technology          | Based on HBase(uses HBase API)                                   | Uses BigTable itself                     |  |
| ----------------    |                                                                  |                                          |  |
| Access Mataphor     | Key/Value (column-families) like Hbase                           | Persistent hashmap                       |  |
| ----------------    |                                                                  |                                          |  |
| Read                | Scan Rows                                                        | Filter Objects on property               |  |
| ----------------    |                                                                  |                                          |  |
| Write               | Put Row                                                          | Put Object                               |  |
| ----------------    |                                                                  |                                          |  |
| Update Granularity  | can't update row ( you should write a new row, can't update one) | can update attribute                     |  |
| ----------------    |                                                                  |                                          |  |
| Capacity            | Petabytes                                                        | Terbytes                                 |  |
| ----------------    |                                                                  |                                          |  |
| Index               | Index key only (you should properly design the key)              | You can index any property of the object |  |
| Usage and use cases | High throughput, scalable flatten data                           | Structured data for Google App Engine    |  |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+

还要检查此图像: 在此处输入图片说明

在此处输入图片说明


2

考虑到一个相对较小的问题,截至2016年11月,bigtable python客户端仍在Alpha中,这意味着将来的更改可能不再向后兼容。此外,bigtable python库与App Engine的标准环境不兼容。您必须使用灵活的一种。


随着2016年11月,同样是Java
亚兰Paronikyan


1

在此处输入图片说明

Cloud Datastore is a highly-scalable NoSQL database for your applications.
Like Cloud Bigtable, there is no need for you to provision database instances.
Cloud Datastore uses a distributed architecture to automatically manage
scaling. Your queries scale with the size of your result set, not the size of your
data set.
Cloud Datastore runs in Google data centers, which use redundancy to
minimize impact from points of failure. Your application can still use Cloud
Datastore when the service receives a planned upgrade.

在此处输入图片说明

 Choose Bigtable if the data is:
Big
● Large quantities (>1 TB) of semi-structured or structured data
Fast
● Data is high throughput or rapidly changing
NoSQL
● Transactions, strong relational semantics not required
And especially if it is:
Time series
● Data is time-series or has natural semantic ordering
Big data
● You run asynchronous batch or real-time processing on the data
Machine learning
● You run machine learning algorithms on the data
Bigtable is designed to handle massive workloads at consistent low latency
and high throughput, so it's a great choice for both operational and analytical
applications, including IoT, user analytics, and financial data analysis.

0

数据存储区更适合应用程序使用,适用于各种服务,尤其是微服务。

数据存储区的基础技术是Big Table,因此您可以想象Big Table更强大。

数据存储区每天可免费提供2万次操作,您可以期望托管一台具有可靠数据库且成本为零的服务器。

您还可以签出此Datastore ORM库,它具有许多出色的功能 https://www.npmjs.com/package/ts-datastore-orm

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.