Google Bigtable vs BigQuery用于存储大量事件

时间:2015-12-23 14:14:48

标签: google-app-engine google-bigquery bigtable google-cloud-bigtable

背景

我们希望将不可变事件存储在(最好)托管服务中。一个事件的平均大小小于1 Kb,我们每秒有1-5个事件。存储这些事件的主要原因是,一旦我们创建可能对这些事件感兴趣的未来服务,就能够重放它们(可能使用表扫描)。由于我们在谷歌云中,我们显然将谷歌的服务视为首选。

我怀疑Bigtable非常适合这种情况,但根据price calculator,我们每月花费超过1400美元(对我们来说是 big 交易):

enter image description here

查看像BigQuery这样的东西,每月的价格为3美元(如果我没有遗漏必要的东西):

enter image description here

即使无模式数据库更适合我们,我们也可以将事件存储为带有元数据的blob。

问题

我们可以使用BigQuery代替Bigtable来降低成本吗?例如,BigQuery有一个名为streaming inserts的东西,对我来说似乎是我们可以使用的东西。如果沿着这条路走下去,我是否会在短期或长期内咬住我可能不会注意到的任何事情?

6 个答案:

答案 0 :(得分:10)

Bigtable非常适合大型(> = 1TB)可变数据集。它在负载下具有低延迟,由Google管理。在您的情况下,我认为您使用BigQuery正确的方向。

答案 1 :(得分:7)

FYI

Cloud Bigtable不是关系数据库;它不支持SQL查询或连接,也不支持多行事务。 此外,对于少量数据(<1 TB),它不是一个好的解决方案。

考虑以下情况:   - 如果需要完整的SQL支持来进行在线事务处理    (OLTP)系统,请考虑 Google Cloud SQL

如果您需要在线分析处理中进行交互式查询    (OLAP)系统,请考虑 Google BigQuery

如果需要存储大于10 MB的不可变blob,例如大    图片或电影,请考虑 Google云端存储

如果您需要存储高度结构化的对象,或者您需要    支持ACID事务和类似SQL的查询,请考虑 Cloud    数据存储

答案 2 :(得分:6)

整体费用可归结为您查询&#39;的频率。数据。如果它是备份而您不经常重播事件,那么它将变得便宜。但是,如果您需要每天重播一次,则开始轻松触发5 $ / TB扫描。我们也很惊讶插入和存储的价格是多么便宜,但这是因为谷歌希望你在某个时间点运行昂贵的查询。你必须围绕一些事情设计。例如。 AFAIK流媒体插入没有写入表格的保证,你必须经常在列表的尾部轮询,看看它是否真的被写入。可以使用时间范围表装饰器有效地完成拖尾(不支付扫描整个数据集)。

如果您不关心订单,您甚至可以免费列出表格。无需运行查询&#39;然后

答案 3 :(得分:2)

此流程图可能有助于确定不同的Google云存储产品(免责声明!从Google云页面复制了此图片)

Google Cloud - GCP database options decision flowchart

如果您的用例是实时数据库(比方说,网站的后端),则 BigTable 是您所需要的(但不是实际上是 OLTP < / strong>系统)。如果更多是出于数据分析/数据仓库的目的,那么 BigQuery 是您所需要的。

OLTP vs OLAP的思考;或者,如果您熟悉Cassandra和Hadoop,则BigTable大致等同于Cassandra,BigQuery大致等同于Hadoop(同意,不是一个公平的比较,但是您知道了)

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

请记住, Bigtable 不是关系数据库,它是一种noSQL解决方案,没有任何JOIN等SQL功能。如果需要RDBMS OLTP,则可能需要查看 cloudSQL (mysql / postgres)或 spanner

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

enter image description here

成本方面

https://stackoverflow.com/a/34845073/6785908

已经很好地涵盖了成本方面

我知道这是很晚的答案,但是无论如何添加它,以防将来可能对其他人有所帮助。

答案 4 :(得分:1)

很难比Google已经完成的更好地总结 - https://cloud.google.com/bigtable/docs/
查看 Cloud Bigtable和其他存储选项部分

我认为您需要弄清楚如何使用(重播)您的数据(事件),这可以帮助您做出最终决定。

到目前为止,BigQuery看起来是您的最佳选择

答案 5 :(得分:0)

Bigtable是用于管理海量数据的应用程序的分布式(在集群上运行)数据库。它专为海量非结构化数据而设计,可水平缩放并由列族组成。它将数据存储在键值对中,而不是关系数据库或结构化数据库中。

BigQuery是一个数据仓库应用程序。这意味着它提供了与多个数据源或流的连接,以便可以将它们提取,转换并加载到bigQuery表中以进行进一步分析。与Bigtable不同,它确实将数据存储在结构化表中并支持SQL查询。

用例;如果要通过从组织的不同来源(应用程序,研究,调查,反馈,日志等)中收集的数据中得出洞察力来进行分析或商业智能,则可能需要将所有这些信息收集到一个位置。该位置很可能是Bigquery数据仓库。

如果您有一个收集大数据的应用程序,换句话说,就是每次都以较高的速度(高速)和以非结构化,不一致的形式(具有不同的数据类型,如音频,文本,视频,图像,等等...(种类和准确性),那么您为此应用程序选择的数据库应用程序可能就是Bigtable。