在cassandra中的地图中插入多个类型

时间:2015-08-04 14:04:52

标签: cassandra cql3

在cassandra map中是否可以输入不同的数据类型,就像我有一个像

这样的表
(id int, value map<text,text>)

现在我想在此表中插入值,如

(1,{'test':'test1'})
(2,{'a':1})
(3,{'c':2})

3 个答案:

答案 0 :(得分:5)

Cassandra Map类型不支持不同类型的值(或键)。但是,您可以创建一个User Defined Type来处理它。

aploetz@cqlsh:stackoverflow2> CREATE TYPE testac (test text, a int, c int);

aploetz@cqlsh:stackoverflow2> CREATE TABLE testactable (
                                    key int, 
                                    values frozen<testac>,
                                    PRIMARY KEY (key));

aploetz@cqlsh:stackoverflow2> INSERT INTO testactable (key,values) 
                              VALUES (1,{test: 'test1', a: 1, c: 2});

aploetz@cqlsh:stackoverflow2> SELECT * FROm testactable ;

 key | values
-----+-----------------------------
   1 | {test: 'test1', a: 1, c: 2}

(1 rows)

答案 1 :(得分:0)

而不是在你的情况下将它作为text(String)列,它将为你节省大量空间。通过字符串化将数据保存为JSON格式。

答案 2 :(得分:0)

没有Cassandra不支持这个功能.cassandra Map就像java map,我们知道java也不支持这个。我们已经根据数据类型传递了map中的所有值。