为什么有人会使用 Bigtable 而不是 BigQuery?两者似乎都支持读取和写入操作,后者还提供高级“查询”操作。
我需要开发一个附属网络(因此我需要跟踪点击次数和“销售”),所以我对这种差异感到非常困惑,因为 BigQuery 似乎只是具有更好 API 的 Bigtable。
为什么有人会使用 Bigtable 而不是 BigQuery?两者似乎都支持读取和写入操作,后者还提供高级“查询”操作。
我需要开发一个附属网络(因此我需要跟踪点击次数和“销售”),所以我对这种差异感到非常困惑,因为 BigQuery 似乎只是具有更好 API 的 Bigtable。
区别基本上是这样的:
BigQuery 是一种查询引擎,适用于变化不大或通过追加进行更改的数据集。当您的查询需要“表扫描”或需要查看整个数据库时,这是一个不错的选择。想想总和、平均值、计数、分组。BigQuery 是您在收集大量数据并需要对其提出问题时使用的工具。
BigTable 是一个数据库。它旨在成为大型、可扩展应用程序的基础。当您制作需要读取和写入数据的任何类型的应用程序时使用 BigTable,并且规模是一个潜在的问题。
这可能有助于在谷歌云提供的不同数据存储解决方案之间做出决定(免责声明!从谷歌云页面复制)
如果您的要求是实时数据库,那么BigTable就是您所需要的(虽然不是真正的OLTP系统)。如果它更像是一种分析目的,那么BigQuery就是您所需要的!
想想OLTP与OLAP;或者如果你熟悉 Cassandra vs Hadoop,BigTable 大致相当于 Cassandra,BigQuery 大致相当于 Hadoop(同意,这不是一个公平的比较,但你明白了)
https://cloud.google.com/images/storage-options/flowchart.svg
请记住,Bigtable不是关系型数据库,它不支持 SQL 查询或JOIN
s,也不支持多行事务。此外,对于少量数据,这不是一个好的解决方案。如果您想要一个 RDBMS OLTP,您可能需要查看 cloudSQL (mysql/postgres) 或 spanner。
成本观点
https://stackoverflow.com/a/34845073/6785908。在这里引用相关部分。
总成本归结为您“查询”数据的频率。如果它是备份并且您不经常重播事件,那么它将非常便宜。但是,如果您需要每天重播一次,您将很容易开始触发 5$/TB 扫描。我们也对插入和存储的便宜程度感到惊讶,但这是因为谷歌希望您在某个时间点对它们运行昂贵的查询。不过,您必须围绕一些事情进行设计。例如,AFAIK 流插入不能保证被写入表,您必须经常在列表尾部轮询以查看它是否真的被写入。但是,可以使用时间范围表装饰器有效地完成拖尾(不支付扫描整个数据集的费用)。
如果您不关心订单,您甚至可以免费列出一张桌子。无需运行“查询”。
Cloud spanner相对年轻,但功能强大且前景广阔。至少,谷歌营销声称它的功能是两全其美的(传统 RDBMS 和 noSQL)
BigQuery 和 Cloud Bigtable 不一样。Bigtable 是基于 Hadoop 的 NoSQL 数据库,而 BigQuery 是基于 SQL 的数据仓库。他们有特定的使用场景。
简而言之;