我正在为我的时间序列数据用例确定Big Table vs Big Query。
我经历了https://cloud.google.com/bigtable/docs/schema-design-time-series
这是用于存储Omniture数据的信息,其中包含诸如网站访问者密钥(某些长键),他的cookie ID(某些长键),其IP,cookie的时间戳系列数据网络匹配之类的信息
什么可以用作Big table的行键?我不能从最佳实践中了解到时间戳或CookieId作为前缀。但是应该有一个标识符(最好是字母?),然后加上时间序列后缀。今天的数据量为5亿,其中52列存储在SQL表中。我认为数据可能会基于OLTP处理进行更新。但是稍后会在时间序列数据上查询该表,以进行OLAP处理。
a)在这里,大表会是最好的选择吗?还是我应该使用大查询,因为仅根据时间序列数据进行查询会为我提供更多帮助吗? b)如果使用Big table,那么最好的行键是什么,因为时间序列是我看到的唯一筛选数据的含义。我相信,使用表中的其他字段(如visitorkey,cookieid id(长ID))作为带有时间戳的前缀仍会导致整个数据填充Bigtable中的1个节点,而不是进行分配。
请让我知道。
答案 0 :(得分:6)
(我是Cloud Bigtable团队的工程师)
正如您从我们的文档中发现的那样,行键格式是您使用Bigtable时做出的最大决定,因为它决定了可以有效执行的访问模式。在时间戳记出现之前,先使用visitorKey + cookie作为前缀,这样可以避免出现热点问题,因为几乎可以肯定,与站点中的节点相比,您网站的访问者要多得多。 Bigtable始终为此类时间序列用例提供服务!
但是,您也来自SQL体系结构,它并不总是适合Bigtable的架构/查询模型。因此,这里有一些问题可以帮助您入门:
如果需要这些功能的某种组合,也可以将两种服务组合在一起。例如,假设您一直在接收大量更新,但希望能够执行复杂的临时查询。如果您使用的是稍有延迟的数据版本,则可以将更新写入Bigtable,然后使用Dataflow定期扫描表,并将最新事件的后处理版本导出到BigQuery中。 GCP还允许BigQuery在某些区域直接从Bigtable服务查询:https://cloud.google.com/bigquery/external-data-bigtable