使用TEXT作为主键时是否存在性能损失?

时间:2015-01-28 12:00:19

标签: cassandra cql

如果是,如果我想拥有一个独特的TEXT字段,数据模型会是什么样子?

1 个答案:

答案 0 :(得分:8)

没有。无论使用何种数据类型,Cassandra都会将所有数据存储在磁盘上(包括主键值)作为十六进制字节数组。在性能方面,主键的数据类型确实无关紧要。

唯一重要的情况是令牌/节点分发。这是因为作为文本的"12345"生成的令牌与为12345生成的令牌不同:

aploetz@cqlsh:stackoverflow> CREATE TABLE textaskey (key text PRIMARY KEY, value text);
aploetz@cqlsh:stackoverflow> CREATE TABLE longaskey (key bigint PRIMARY KEY, value text);
aploetz@cqlsh:stackoverflow> INSERT INTO textaskey (key, value) VALUES ('12345','12345');
aploetz@cqlsh:stackoverflow> INSERT INTO longaskey (key, value) VALUES (12345,'12345');
aploetz@cqlsh:stackoverflow> SELECT token(key),value FROM textaskey ;

 token(key)          | value
---------------------+-------
 2375712675693977547 | 12345

(1 rows)
aploetz@cqlsh:stackoverflow> SELECT token(key),value FROM longaskey;

 token(key)          | value
---------------------+-------
 3741197147323682197 | 12345

(1 rows)

但即使在这个例子中,一个人的表现也不应该比另一个更快/更不同。