【发布时间】:2017-10-13 22:26:12
【问题描述】:
我们希望使用 Apache Cassandra 来存储从领域时间传感器数据中收集的大数据。我们开发了一个能够每秒处理 100 万个事件的 IOT 平台。我们希望将它们持久保存在 Cassandra 中。
我们的桌子看起来像:
Sensor_data_by_date
Realm text K
Bucket int K
dateTimeReceived timestamp Clustering column
sensor_id text
Message_id text
Sensor_name text
我们感兴趣的查询是:
给我“realm-a”的所有传感器数据的所有结果,日期时间范围为“5th May”到“12th May”,按“dateTimeReceived”排序。
解决方案: 由于我们的平台每秒可以处理多达 100 万个事件,当我尝试将 DATE + HOUR 作为分区键时,它仍然会增加 Casssandra 推荐的最大大小。所以我们决定将桶和领域一起作为分区键。
问题: 现在说,当我们有一个广泛的日期范围时(5 月 5 日到 13 日),我们将有多个存储桶可供查找。我们还需要支持订购。 当我们有了这个,我需要对桶使用“IN 子句”说:
where realm=realm-a and bucket in (1,2,3,4)
and dateTimeReceived>…
and dateTimeReceived <… order by dateTimeReceived
这会抱怨 IN 子句和 order by 不能与分页一起工作。 我也需要分页……..
你能帮我实现这个功能吗?
我们将不胜感激。
【问题讨论】:
-
在类似的场景中,我们将 MINUTE 信息放入分区键
标签: cassandra datastax-java-driver