【问题标题】:Bigtable rowkey design for real-time sensor data?实时传感器数据的 Bigtable 行键设计?
【发布时间】:2019-01-07 17:25:22
【问题描述】:

您的公司正在将实时传感器数据从他们的工厂车间传输到 Bigtable,他们注意到性能极差。应如何重新设计行键以提高 Bigtable 对填充实时仪表板的查询的性能?

a) Use a row key of the form <timestamp>
b) Use a row key of the form <sensorid>
c) Use a row key of the form <timestamp>#<sensorid>
d) Use a row key of the form >#<sensorid>#<timestamp>

根据文档,在这种情况下,理想的行键是什么?我认为它应该是 sensorid 和 timestamp 的 row key,但是我看到一些在线文章只提到了上述作业问题的“timestamp”。请帮忙。

我对上述特定用例的理论相互矛盾,如下所示: - 由于行是按字典顺序排序的,因此将时间戳用作行键不仅是明智的。 (来自 Doc - 不建议将时间戳本身用作行键,因为大多数写入将被推送到单个节点上。) - 在这个用例中,由于要求是一个实时仪表板,这也可能意味着所有 sensorid 数据可以只存储一个时间戳,因此可以仅基于时间戳进行实时查询。

请帮助解决此用例的理想行键。

【问题讨论】:

    标签: bigtable google-cloud-bigtable


    【解决方案1】:

    问题是,它没有指定实时仪表板显示的查询,也没有对性能有太多了解。请参阅schema design for time series 数据文档,其中包含一些示例场景。如果您只有时间戳作为键,您可能会遇到热点问题。理想的键是##(选项 D),但它始终取决于问题中不太清楚的用例。

    【讨论】:

      【解决方案2】:

      根据 Bigtable schema design documentation:

      • “不建议将时间戳本身用作行键,因为大多数写入将被推送到单个节点上”。所以这不包括选项 A
      • “出于同样的原因,请避免在行键的开头放置时间戳。”。有选项 C

      此外,该页面显示“您的此数据的行键可以将机器的标识符与数据的时间戳结合起来(例如 machine_4223421#1425330757685)。”。这导致我们选择选项 D 作为最佳选项。

      理论上,选项 B 也是有效的,但选项 D 似乎更好。

      【讨论】:

      • 使用 d) 时您会创建哪些列? Sensorid 是 Key 的一部分,Date 和 value 在单元格内。
      猜你喜欢
      • 2015-12-08
      • 2022-11-04
      • 2013-08-17
      • 2021-01-13
      • 2010-12-05
      • 2016-03-12
      • 2010-12-02
      • 1970-01-01
      • 2021-09-27
      相关资源
      最近更新 更多