Google Cloud Bigtable 与 Google Cloud Datastore

Google Cloud Bigtable vs Google Cloud Datastore

Google Cloud Bigtable和Google Cloud Datastore / App Engine datastore有什么区别,主要实用的是什么advantages/disadvantages? AFAIK Cloud Datastore 建立在 Bigtable 之上。

根据使用 Datastore 的经验和阅读 Bigtable docs,主要区别是:

  • Bigtable 最初是为兼容 HBase 而设计的,但现在有 client libraries in multiple languages。 Datastore 最初更适合 Python/Java/Go 网络应用程序开发人员(最初是 App Engine)
  • Bigtable 比 Datastore 'a bit more IaaS' 因为它不是 'just there' 但需要集群 configured.
  • Bigtable 只支持一个索引——'row key'(Datastore 中的实体键)
    • 这意味着查询是在键上进行的,这与 Datastore 的索引属性不同
  • Bigtable 仅在单行上支持原子性 - 没有事务
  • 突变和删除在 Bigtable 中似乎不是原子的,而 Datastore 提供最终和强一致性,具体取决于 read/query 方法
  • 计费模式非常不同:
    • read/write 操作、存储和带宽的数据存储费用
    • Bigtable charges 'nodes'、存储和带宽

Bigtable 和 Datastore 截然不同。是的,数据存储是建立在 Bigtable 之上的,但这并不能使它变得更像它。这有点像说汽车是建立在轮子上的,所以汽车和轮子没有太大区别。

Bigtable 和 Datastore 提供了非常不同的数据模型,并且在数据更改方式方面也提供了非常不同的语义。

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

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

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

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

Datastore 经过优化,可为应用程序提供高价值事务数据

  • Cloud Datastore 具有极高的复制和数据同步可用性
  • Datastore 由于其多功能性和高可用性,价格更高
  • 由于同步复制,Datastore 写入数据速度较慢
  • Datastore 在事务和查询方面具有更好的功能(因为存在二级索引)

需要考虑的一个相对次要的问题是,截至 2016 年 11 月,bigtable python 客户端 library 仍处于 Alpha 阶段,这意味着未来的更改可能无法向后兼容。此外,bigtable python 库与 App Engine 的标准环境不兼容。你必须使用灵活的。

如果你阅读论文,BigTable 是 this and Datastore is MegaStore。 Datastore 是 BigTable 加上复制、事务和索引。 (而且要贵得多)。

我将尝试总结以上所有答案以及 Coursea 中给出的内容 Google Cloud Platform Big Data and Machine Learning Fundamentals

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

也检查这张图片:

Datastore 更适合应用程序,适用于范围广泛的服务,尤其是微服务。

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

数据存储每天提供 20K 次免费操作,您可以期望以零成本托管具有可靠数据库的服务器。

您还可以查看此 Datastore ORM 库,它具有很多很棒的功能 https://www.npmjs.com/package/ts-datastore-orm

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.

This might be another set of key differences between Google Cloud Bigtable and Google Cloud Datastore along with other services. The contents shown in the image below can also help you in selecting the right service.