【问题标题】:CQL generates two columns per value?CQL 每个值生成两列?
【发布时间】:2014-09-04 14:58:27
【问题描述】:

我想知道为什么当我使用 CQL 添加单元格时,Cassandra 会创建两列?

这是我的架构:

DROP KEYSPACE IF EXISTS tsdb;

CREATE KEYSPACE tsdb WITH replication =
{
    'class': 'SimpleStrategy',
    'replication_factor' : 3
};

USE tsdb;

CREATE TABLE datapoints (
    tsid int,
    key text,
    value blob,
    PRIMARY KEY (tsid, key)
);

INSERT INTO datapoints (tsid, key, value) 
VALUES (
    1,
    'foo',
    0x012345
);

INSERT INTO datapoints (tsid, key, value) 
VALUES (
    2,
    'foo',
    0x500000
);

在 CQLSH 中查询看起来不错:

cqlsh:tsdb> SELECT * FROM datapoints;

 tsid | key | value
------+-----+----------
    1 | foo | 0x012345
    2 | foo | 0x500000

(2 rows)

但是当我通过 cassandra-cli 列出行时,每行有两列:

[default@tsdb] list datapoints;
Using default limit of 100
Using default cell limit of 100
-------------------
RowKey: 1
=> (name=foo:, value=, timestamp=1405353603216000)
=> (name=foo:value, value=012345, timestamp=1405353603216000)
-------------------
RowKey: 2
=> (name=foo:, value=, timestamp=1405353603220000)
=> (name=foo:value, value=500000, timestamp=1405353603220000)

2 Rows Returned.
Elapsed time: 6.9 msec(s).

我期待得到类似的东西:

-------------------
RowKey: 1
=> (name=foo:value, value=012345, timestamp=1405353603216000)
-------------------
RowKey: 2
=> (name=foo:value, value=500000, timestamp=1405353603220000)

2 Rows Returned.

为什么 CQL 会创建名称为“foo:”且值为空的列?这些有什么用?

谢谢!

最好, 马耳他

【问题讨论】:

    标签: cassandra cql


    【解决方案1】:

    Understanding How CQL3 Maps to Cassandra’s Internal Data Structure

    感谢 John Berryman 对 CQL 映射的深入解释。

    【讨论】:

      猜你喜欢
      • 2014-05-10
      • 1970-01-01
      • 2018-08-12
      • 2013-07-15
      • 1970-01-01
      • 1970-01-01
      • 2021-09-06
      • 2016-07-02
      • 1970-01-01
      相关资源
      最近更新 更多