BigQuery和BigTable有什么区别?

时间:2016-10-07 14:35:02

标签: google-cloud-platform google-bigquery cloud bigtable google-cloud-spanner

有人会使用BigTable而不是BigQuery吗?两者似乎都支持读写操作,后者提供高级'查询'操作。

我需要开发一个联盟网络(因此我需要跟踪点击次数和'销售'),所以我对这种差异感到很困惑,因为bigQuery似乎只是具有更好API的bigTable。

4 个答案:

答案 0 :(得分:63)

区别在于:

BigQuery是一个数据集的查询引擎,它不会发生太大变化,也不会通过附加进行更改。当您的查询需要“表扫描”或需要查看整个数据库时,这是一个很好的选择。考虑总和,平均值,计数,分组。 BigQuery是您收集大量数据时使用的,需要询问有关它的问题。

BigTable是一个数据库。它旨在成为大型可扩展应用程序的基础。当您制作需要读取和写入数据的任何类型的应用程序时,请使用BigTable,并且扩展是一个潜在的问题。

答案 1 :(得分:41)

这可能有助于决定Google云提供的不同数据存储(免责声明!从Google Cloud页面复制)

Google Cloud - GCP database options decision flowchart

如果您的要求是实时数据库,则 BigTable 就是您所需要的(虽然不是 OLTP 系统)。如果它更像是一种分析目的,那么 BigQuery 就是您所需要的!

考虑 OLTP vs OLAP ;或者如果你熟悉Cassandra和Hadoop,BigTable大致相当于Cassandra,BigQuery大致等同于Hadoop(同意,它不是一个公平的比较,但你明白了)

https://cloud.google.com/images/storage-options/flowchart.svg

注意

请注意, Bigtable 不是关系数据库,它不支持SQL查询或JOIN,也不支持多行事务。此外,它不是一个很好的解决方案,适用于少量数据。如果你想要一个RDBMS OLTP,你可能需要查看cloudSQL(mysql / postgres)或者扳手。

成本视角

https://stackoverflow.com/a/34845073/6785908。在这里引用相关部分。

  

总体费用可归结为您查询'的频率。数据。如果   它是一个备份,你不会经常重播事件,它会变成泥土   廉价。但是,如果您需要每天重播一次,您将开始   触发5 $ / TB非常容易扫描。我们也很惊讶   便宜的插入和存储,但这是因为谷歌预计   您可以在某个时间点对它们运行昂贵的查询。你' 11   不得不围绕一些事情设计。例如。 AFAIK流媒体   insert无法保证写入表中而且你有   经常在列表的尾部进行轮询以查看它是否真的被写入。   使用时间范围表装饰器可以有效地完成拖尾,   虽然(不支付扫描整个数据集)。

     

如果您不关心订单,您甚至可以免费列出一张桌子。没有   需要运行查询'然后

编辑1

云扳手相对年轻,但功能强大且充满希望。至少,谷歌营销声称它的功能是两全其美的(传统RDBMS和noSQL)

enter image description here

我知道回答有点迟,但是添加它可能会对其他人有所帮助。

答案 2 :(得分:10)

选择使用方法enter image description here

大桌子

Google BigTable是Google的云存储解决方案,用于低延迟数据访问。它最初于2004年开发,并基于Google文件系统(GFS)构建。关于BigTable有一篇论文:Bigtable:一种用于结构化数据的分布式存储系统。现在,它已广泛用于许多Google的核心服务中,例如Google搜索,Google地图和Gmail。它以NoSQL架构设计,但仍可以使用基于行的数据格式。数据读取/写入时间少于10毫秒,这对于频繁提取数据的应用程序来说非常有用。它可以扩展到数百PB,每秒处理数百万次操作。

BigTable通过扩展与HBase 1.0 API兼容。从HBase进行的任何移动都将更加容易。 BigTable没有SQL接口,您只能使用API​​进行放置/获取/删除单个行或运行扫描操作。 BigTable可以轻松地与其他GCP工具集成,例如Cloud Dataflow和Dataproc。 BigTable也是Cloud Datastore的基础。

与其他云不同,GCP计算和存储是分开的。计算成本时,需要考虑以下三个部分。 1. Cloud实例的类型,以及该实例中的节点数。 2.表使用的总存储量。 3.使用的网络带宽量。请注意:部分网络流量是免费的。

好与坏。好消息是,如果您的系统空闲,则无需支付计算成本,而只需支付存储成本。不好的部分是,如果您有非常大的数据集,则很难预测您的计算使用量。 enter image description here

BigQuery

BigQuery是Google的基于云的数据仓库解决方案。与BigTable不同,它以大数据为目标,并且可以在短时间内查询大量数据。由于数据以列数据格式存储,因此与BigTable相比,它在扫描大量数据时要快得多。 BigQuery可让您扩展到PB,是出色的企业数据分析仓库。 BigQuery是无服务器的。无服务器计算意味着可以按需分配计算资源。它使用户从零服务器使用率到全面使用率受益,而无需管理员和管理基础结构。根据Google的说法,BigQuery可以在几秒钟内扫描数TB的数据,而在几分钟内可以扫描PB的数据。对于数据提取,BigQuery允许您从Google Cloud Storage或Google Cloud DataStore加载数据,或流式传输到BigQuery存储。

但是,BigQuery确实适用于OLAP类型的查询并扫描大量数据,并且不适用于OLTP类型的查询。对于较小的读/写操作,相同数量的数据大约需要2秒钟,而BigTable大约需要9毫秒。对于OLTP类型的查询,BigTable更好。尽管BigQuery支持原子单行操作,但缺少跨行事务支持。 enter image description here

查看这些以获取更多信息 Link 1 Link 2`` Link 3

答案 3 :(得分:1)

BigQuery和Cloud Bigtable不同。 Bigtable是基于Hadoop的NoSQL数据库,而BigQuery是基于SQL的数据仓库。他们有特定的使用场景。

简而言之;

  • 如果您不需要支持ACID交易,或者您的数据结构不高,请考虑使用Cloud Bigtable。
  • 如果您需要在线分析处理(OLAP)系统中的交互式查询,请考虑使用BigQuery。