Google Cloud Bigtable vs Google Cloud Datastore

谷歌云大表和 Google Cloud Datastore/App Engine 数据存储有什么不同,主要的实际优缺点是什么?AFAIK 云数据存储是建立在 Bigtable 之上的。

59653 次浏览

根据使用 Datastore 的经验和阅读 Bigtable 医生的经验,主要区别如下:

  • Bigtable 最初是为 HBase 兼容性而设计的,但现在有了 多种语言的客户端库。Datastore 最初更面向 Python/Java/Go Web 应用程序开发人员(最初是 App Engine)
  • Bigtable 比 Datastore“多一点 IaaS”,因为它不仅仅是存在的,而且要求集群是 配置好了
  • Bigtable 只支持一个索引——“行键”(Datastore 中的实体键)
    • 这意味着查询位于 Key 上,不同于 Datastore 的索引属性
  • Bigtable 只支持单行的原子性——没有事务
  • 在 Bigtable,突变和删除似乎不是原子性的,而 Datastore 根据读取/查询方法提供了最终的和强大的一致性
  • 计费模式截然不同:
    • 数据存储对读/写操作、存储和带宽的收费
    • 用于 「节点」、存储和带宽的大表 指控

Bigtable 和 Datastore 是非常不同的。是的,数据存储是建立在 Bigtable 之上的,但这并不意味着它就是这样的。这有点像说汽车是建立在轮子上的,所以汽车和轮子没什么不同。

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

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

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

  • Cloud Bigtable 不会跨区域或区域复制数据(单个集群中的数据是可复制和持久的) ,这意味着 Bigtable 更快、更有效,成本也低得多,尽管它在缺省配置中持久性和可用性较差
  • 它使用了 总部 API ——没有锁定的风险,也没有需要学习的新范例
  • 它集成了开源的大数据工具,这意味着你可以分析客户使用的大多数分析工具(Hadoop,Spark 等)中存储在 Bigtable 的数据
  • Bigtable 由单个行键编制索引
  • Bigtable 位于单个区域中

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

Datastore 进行了优化,以向应用程序提供高价值的事务性数据

  • 云数据存储 在复制和高可用性数据同步方面有着极大的优势
  • Datastore 因其多功能性和高可用性而更加昂贵
  • 由于同步复制,数据存储写入数据的速度较慢
  • Datastore 在事务和查询方面有更好的功能(因为存在辅助索引)

需要考虑的一个相对次要的问题是,截至2016年11月,bigtable python 客户机 图书馆仍然在 Alpha 中,这意味着未来的更改可能不向后兼容。此外,bigtable Python 库与 AppEngine 的标准环境不兼容。你得用柔软的那个。

如果您阅读论文,BigTable 是 这个,Datastore 是 超级商店。数据存储是 BigTable 加上复制、事务和索引。(而且要贵得多)。

我将试着总结以上所有的答案,以及在 Coursea 谷歌云平台大数据和机器学习基础中给出的答案

+---------------------+------------------------------------------------------------------+------------------------------------------+--+
|      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    |  |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+

再看看这张图片:enter image description here

enter image description here

Datastore 更适合于应用程序,适合于广泛的服务,特别是微服务。

Datastore 的底层技术是大表,因此可以想象大表更强大。

数据存储提供每天20K 的免费操作,您可以期望主机服务器与可靠的数据库零成本。

你也可以查看这个 Datastore ORM 库,它有很多很棒的特性 Https://www.npmjs.com/package/ts-datastore-orm

enter image description here

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.

enter image description here

 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.

这可能是 Google Cloud Bigtable 和 Google Cloud Datastore 以及其他服务之间的另一组关键区别。下图所示的内容也可以帮助您选择正确的服务。

enter image description here

enter image description here