我已阅读以下有关 Cassandra CQL3 和 Thrift API 的文章 http://www.datastax.com/dev/blog/does-cql-support-dynamic-columns-wide-rows
在文章中,他们举例说明了创建从传感器收集数据的方案。他们通过将时间戳作为一列来展示“宽行”解决方案。正如我所见,Cassandra 的优势在于支持 20 亿列和一种快速的按列提取数据的方法。
在文章中,他们使用 CQL3 构建了一个表
CREATE TABLE data (
sensor_id int,
collected_at timestamp,
volts float,
PRIMARY KEY (sensor_id, collected_at)
) WITH COMPACT STORAGE;
翻译为:
sensor_id | collected_at | volts
1 | 2013-06-05 15:11:00-0500 | 3.1
1 | 2013-06-05 15:11:10-0500 | 4.3
1 | 2013-06-05 15:11:20-0500 | 5.7
2 | 2013-06-05 15:11:00-0500 | 3.2
3 | 2013-06-05 15:11:00-0500 | 3.3
3 | 2013-06-05 15:11:10-0500 | 4.3
在 Thrift 中,它转换为:
list data;
RowKey: 1
=> (cell=2013-06-05 15:11:00-0500, value=3.1, timestamp=1370463146717000)
=> (cell=2013-06-05 15:11:10-0500, value=4.3, timestamp=1370463282090000)
=> (cell=2013-06-05 15:11:20-0500, value=5.7, timestamp=1370463282093000)
RowKey: 2
=> (cell=2013-06-05 15:11:00-0500, value=3.2, timestamp=1370463332361000)
RowKey: 3
=> (cell=2013-06-05 15:11:00-0500, value=3.3, timestamp=1370463332365000)
=> (cell=2013-06-05 15:11:10-0500, value=4.3, timestamp=1370463332368000)
我正在尝试为以下传感器数据收集问题考虑 Cassandra Schema 示例。假设我添加了一组具有 bigint(long)值(而不是 float)的新传感器。
任何想法如何设计这样的表模式以包含具有不同数据类型的两种传感器类型,同时保持基于时间戳的列?
谢了,兄弟们