Google Cloud Bigtable与Google Cloud Datastore

问题描述 投票:101回答:7

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

google-app-engine google-cloud-datastore google-cloud-bigtable
7个回答
88
投票

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

  • Bigtable似乎是为HBase兼容而设计的,而Datastore则更适合Python / Java / Go Web应用程序开发人员(最初是App Engine)
  • Bigtable比数据存储更“IaaS”,因为它不仅仅是'那里',而是需要一个集群才能成为configured
  • Bigtable仅支持一个索引 - “行密钥”(数据存储区中的实体密钥) 这意味着查询位于Key上,与Datastore的索引属性不同
  • Bigtable仅支持单行的原子性 - 没有事务
  • 变异和删除在Bigtable中似乎不是原子的,而数据存储提供最终和强一致性,具体取决于读/查询方法
  • 结算模式非常不同: 数据存储区对读/写操作,存储和带宽收费 Bigtable charges用于“节点”,存储和带宽

89
投票

Bigtable is optimized for high volumes of data and analytics

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

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

Datastore is optimized to serve high-value transactional data to applications

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

18
投票

Bigtable和Datastore非常不同。是的,数据存储区建立在Bigtable之上,但这并不像它那样。这有点像说汽车是在车轮顶部建造的,因此汽车与车轮没什么不同。

Bigtable和Datastore提供了截然不同的数据模型,并且在数据更改方式上有着截然不同的语义。

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


8
投票

如果您阅读论文,BigTable是this,Datastore是MegaStore。数据存储区是BigTable以及复制,事务和索引。 (而且要贵得多)。


3
投票

我将尝试总结以上所有答案以及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    |  |
+---------------------+------------------------------------------------------------------+------------------------------------------+--+

检查这个图像:enter image description here

enter image description here


2
投票

一个相对较小的一点需要考虑,截至2016年11月,bigtable python客户端library 仍处于Alpha状态,这意味着未来的变化可能不会向后兼容。此外,bigtable python库与App Engine的标准环境不兼容。你必须使用灵活的。


-1
投票

我刚刚在Datastore文档(强调我的)中发现了这个有用的类比,它隐藏在length page about eventual consistency中:

一种做法是结合使用Cloud Datastore和BigQuery来满足不同的业务需求。使用Cloud Datastore进行核心应用程序逻辑所需的联机事务处理(OLTP),并将BigQuery用于后端操作的联机分析处理(OLAP)。可能需要实施从Cloud Datastore到BigQuery的连续数据导出流,以移动这些查询所需的数据。

© www.soinside.com 2019 - 2024. All rights reserved.