【问题标题】:What's the difference between BigQuery and Bigtable? [closed]BigQuery 和 Bigtable 有什么区别? [关闭]
【发布时间】:2017-02-16 14:31:04
【问题描述】:

为什么有人会使用 Bigtable 而不是 BigQuery?两者似乎都支持读取和写入操作,后者还提供高级“查询”操作。

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

【问题讨论】:

  • 我会说 BigTable 对于需要更好性能的人来说更像是一个低级别且管理较少的 Cloud Datastore。
  • 过去的 SO 线程也可能有所帮助:stackoverflow.com/questions/34437572/…
  • @dyeray 是的,我知道,但是有什么理由让某人在 BigTable 和 BigQuery 中维护相同的数据,而不是只在 BigQuery 中维护?
  • BigTable 非常擅长单行或小范围查找。 BigQuery 非常擅长全局。如果您想要进行高效深入的分析,可以使用 BigQuery 进行大规模分析,使用 BigTable 进行小范围分析。
  • 系统属性比较 Google BigQuery 与 Google Cloud Bigtable 与 Google Cloud Datastore。 !image(免责声明!从 db-engines.com 复制)

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


【解决方案1】:

这可能有助于在 Google Cloud 提供的不同数据存储解决方案之间做出选择(免责声明!从 Google Cloud 页面复制)

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

想想 OLTPOLAP;或者如果你熟悉 Cassandra vs Hadoop,BigTable 大致相当于 Cassandra,BigQuery 大致相当于 Hadoop(同意,这不是一个公平的比较,但你明白了)

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

注意

请记住,Bigtable 不是关系型数据库,它不支持 SQL 查询或JOINs,也不支持多行事务。此外,对于少量数据,这不是一个好的解决方案。如果您想要 RDBMS OLTP,您可能需要查看 cloudSQL (mysql/postgres) 或 spanner。

成本角度

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

总成本归结为您“查询”数据的频率。如果 这是一个备份,你不会经常重播事件,它会很脏 便宜的。但是,如果您需要每天重播一次,您将开始 很容易触发 5$/TB 的扫描。我们也感到惊讶 便宜的插入和存储是,但这是因为谷歌期望 您可以在某个时间点对它们运行昂贵的查询。你会 不过,必须围绕一些东西进行设计。例如。 AFAIK 流媒体 插入不能保证被写入表,你有 经常轮询列表的尾部,看看它是否真的被写了。 使用时间范围表装饰器可以有效地完成拖尾, 虽然(不支付扫描整个数据集的费用)。

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

编辑 1

Cloud spanner相对年轻,但功能强大且前景广阔。至少,谷歌营销声称它的功能是两全其美的(传统 RDBMS 和 noSQL)

【讨论】:

  • 您可以与用户(包括服务帐户)或组共享对永久外部表的访问权限。要查询外部表,您的用户或组需要被授予(至少): 数据集级别或更高级别的 bigquery.dataViewer 角色,以访问包含外部表的数据集 项目级别的 bigquery.user 角色或更高以便运行查询作业 Cloud Bigtable 中的 bigtable.reader 角色,它提供对元数据和表的只读访问权限
  • 我从cloud.google.com/bigquery/… 那里得到了上面的引用。为什么要访问 bigtable 我需要一个包含单词 bigquery 的权限?
  • 在图的顶部,第一个问题是:你的数据是结构化的吗?如果答案是肯定的,您可以找到选择 BigTable 服务的路径,但 BigTable 是针对非结构化数据的。为什么即使数据是结构化的,我们也能得出这个选项?
  • @ltaljuk 如果我的理解是正确的,可以将结构化数据写成匹配 Bigtable 存储模型的“键值”对:cloud.google.com/bigtable/docs/overview#storage-model
【解决方案2】:

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

简而言之;

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

【讨论】:

  • Bigtable 不是基于 Hadoop 的 NoSQL 数据库,它实际上是相反的——基于 Bigtable white paper HBase(基于 Hadoop 的 NoSQL)构建的。因此,尽管它们共享相似(相同?)的 API。
【解决方案3】:

区别基本上是这样的:

BigQuery 是一种查询引擎,适用于变化不大或通过附加进行更改的数据集。当您的查询需要“表扫描”或需要查看整个数据库时,这是一个不错的选择。想想总和、平均值、计数、分组。 BigQuery 是您在收集大量数据并需要就其提出问题时使用的工具。

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

【讨论】:

  • 在第二段 - 你的意思是Use BigTable :o)
  • @MikhailBerlyant 谢谢,已编辑
  • Google 在这里有点不幸的命名约定。当我通常想到 SQL 时 - 我想到表格数据结构,而当我想到查询时,我想到键值或查找类型的数据库。在这种情况下,BigTable 是 No-SQL 而 BigQuery Sql 数据库。
  • @Michael Manoochehri cloud.google.com/bigquery/… 请阅读下面的报价:
  • 您可以与用户(包括服务帐户)或组共享对永久外部表的访问权限。要查询外部表,您的用户或组需要被授予(至少): 数据集级别或更高级别的 bigquery.dataViewer 角色以访问包含外部表的数据集 bigquery.user 项目级别或更高级别的角色,以便运行查询作业 Cloud Bigtable 中的 bigtable.reader 角色,它提供对元数据和表的只读访问权限
猜你喜欢
  • 2014-09-11
  • 1970-01-01
  • 2010-12-10
  • 2011-09-20
  • 2013-03-25
  • 2023-03-08
  • 2016-07-17
  • 2015-07-17
  • 2014-07-11
相关资源
最近更新 更多