Bigtable 与 Bigquery 时间序列数据用例

2024-05-14

我希望最终确定 Big table 与 Bigquery 的时间序列数据用例。

我曾经经历过https://cloud.google.com/bigtable/docs/schema-design-time-series https://cloud.google.com/bigtable/docs/schema-design-time-series

这是用于存储 Omniture 数据,其中包含网站访问者密钥(一些长密钥)、他的 cookie id(一些长密钥)、他的 IP 的时间戳系列数据网络点击、cookie 等信息

大表的rowkey可以用什么?正如我从最佳实践中学到的那样,我不能使用时间戳或 CookieId 作为前缀。但应该有一个标识符(最好是字母表?),然后是时间序列后缀。目前 SQL 表中存储的数据量为 5 亿,有 52 列。我认为数据可能会基于OLTP处理进行更新。但稍后会查询该表的时间序列数据,以进行 OLAP 处理等。

a)大表将是这里的最佳选择,还是我应该使用大查询,因为稍后根据时间序列数据进行查询会对我有更多帮助? b)如果使用大表,最好的行键是什么,因为时间序列是我看到的数据的唯一含义过滤器。我相信,使用表中的其他字段(如访问者密钥、cookieid ids(长 ids))作为带有时间戳的前缀仍然会导致整个数据填满 Bigtable 中的 1 个节点,而不是分布。

请告诉我。


(我是 Cloud Bigtable 团队的工程师)

正如您从我们的文档中发现的那样,行键格式是您在使用 Bigtable 时做出的最大决定,因为它决定了可以有效执行哪些访问模式。在我看来,在时间戳之前使用访问者密钥 + cookie 作为前缀可以避免热点问题,因为几乎可以肯定,您网站的访问者数量比集群中的节点数量要多。 Bigtable 始终为此类时间序列用例提供服务!

然而,您也来自 SQL 架构,它并不总是适合 Bigtable 的架构/查询模型。因此,这里有一些问题可以帮助您入门:

  • 您是否计划执行大量临时查询,例如“SELECT A FROM Bigtable WHERE B=x”?如果是这样,强烈推荐 BigQuery。如果不执行全表扫描,Bigtable 无法支持此查询。一般来说,Bigtable 更适合快速流回数据的简单子集,例如数据流作业,而不是在查询本身中嵌入复杂的处理。
  • 您需要多行 OLTP 事务吗?再次使用 BigQuery,因为 Bigtable 仅支持单行内的事务。
  • 您是否以高 QPS 直播新活动? Bigtable 更适合此类大容量更新。请记住,Bigtable 的最初目的是作为 Google 搜索索引中网络爬虫更新的随机访问接收器!
  • 您想对数据执行任何类型的大规模复杂转换吗?同样,Bigtable 在这里可能更好,因为您可以更快地传出和传回数据,并让数据流作业中的自定义业务逻辑执行您想要的任何操作。

如果您需要这些功能的某种组合,您还可以组合这两种服务。例如,假设您一直在接收大量更新,但希望能够执行复杂的即席查询。如果您可以处理稍微延迟的数据版本,那么将更新写入 Bigtable 是有意义的,然后使用 Dataflow 定期扫描表并将最新事件的后处理版本导出到 BigQuery 中。在某些地区,GCP 还允许 BigQuery 直接从 Bigtable 提供查询服务:https://cloud.google.com/bigquery/external-data-bigtable https://cloud.google.com/bigquery/external-data-bigtable

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Bigtable 与 Bigquery 时间序列数据用例 的相关文章

随机推荐