【问题标题】:Cassandra long row with different data types具有不同数据类型的 Cassandra 长行
【发布时间】:2014-05-30 13:35:25
【问题描述】:

我已阅读以下有关 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 架构示例。 假设我添加了一组具有 bigint(long)值(而不是 float)的新传感器。

任何想法如何设计这样一个表架构以包含具有不同数据类型的两种传感器类型,同时保持基于时间戳的列?

谢谢, 伙计

【问题讨论】:

    标签: cassandra cql cql3 cqlsh


    【解决方案1】:

    如果您不需要使用 COMPACT STORAGE(并且向后兼容 Thrift),只需将表创建为

    CREATE TABLE data (
      sensor_id int,
      collected_at timestamp,
      other_field bigint,
      volts float,
      PRIMARY KEY (sensor_id, collected_at)
    )
    

    Cassandra 支持稀疏列,基本上没有开销,因此如果您以编程方式决定仅填充任何 cql 行的两个字段之一,您将实现您的目标。

    或者,您可以继续使用 COMPACT STORAGE 并切换到 blob 类型。 blob 类型绝对不会对您插入其中的字节进行解释或转换,因此可以保证准确性。我建议为此使用文本类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-11
      相关资源
      最近更新 更多