我应该如何在 Cassandra 中划分计量数据?

How should I partition metering data in Cassandra?

我构建了一个从多个设备(在本例中为多个房间)接收计量数据(例如,房间的当前温度)的应用程序。

我每 15 分钟接收一次计量数据。我的应用程序计算当前温度与接收到的前一个温度之间的差异,并将其发送到另一个应用程序。我将接收到的计量数据存储在 Cassandra 集群中。 (时间戳、温度、device_id、房间、...)

我应该使用哪个字段进行分区?

如果我使用时间戳作为分区键,它会将所有负载放在同一个节点上吗? (不考虑复制)?

如果我使用device_id/room,我不会得到一个无限分区吗?也许我可以添加保留期?

Cassandra 数据建模的规则是根据您的查询设计您的 table。因此,请先准备您的查询。例如,如果您有类似

的查询
  1. 获取房间读数。
  2. 获取设备读数。

你可以有两个 table

  • READING_BY_ROOM (parition key room id)
  • READING_BY_DEVICE(分区键设备 ID)

这是您在 Cassandra 中设计 table 的唯一方法。不要尝试创建 table RDBMS 方式。