Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Cassandra 3.x中存储包含空组件的CQL元组合法吗_Cassandra_Cql_Cql3 - Fatal编程技术网

在Cassandra 3.x中存储包含空组件的CQL元组合法吗

在Cassandra 3.x中存储包含空组件的CQL元组合法吗,cassandra,cql,cql3,Cassandra,Cql,Cql3,我必须在Cassandra 3.x中存储一个协议缓冲区结构。它在.proto文件中定义为: message Attribute { required string key = 1; oneof value { int64 integerValue = 2; float floatValue = 3; string stringValue = 4; } } 为了存储多个属性,我考虑了这个CQL定义 CREATE TABLE

我必须在Cassandra 3.x中存储一个协议缓冲区结构。它在.proto文件中定义为:

message Attribute
{
    required string key = 1;
    oneof value {
        int64 integerValue = 2;
        float floatValue = 3;
        string stringValue = 4;
    }
}
为了存储多个
属性
,我考虑了这个CQL定义

CREATE TABLE ... attributes: map<text, tuple<int, float, text> ...

创建表。。。属性:map让我们试试这个。我将从一个简单的表开始,其中包含类型为
map的
valuemap
列伟大的答案Aaron,谢谢。我以前从未见过
valuemap
类型,它也没有记录在CQL 3.3数据类型页面上。你知道我在哪里可以找到关于这个类型的详细信息吗?@reikje
valuemap
不是一个类型,而是一个包含嵌套在其中的元组的映射的列名。很抱歉这里有点混乱。我明白了,因为地图后缀有点混乱:)
CREATE TABLE tupleTest (
  key text,
  value text, 
  valuemap map<text, FROZEN<tuple<int,float,text>>>,
  PRIMARY KEY (key));
INSERT INTO tupletest (key,value,valuemap) VALUES ('1','A',{'a':(0,0.0,'hi')});
INSERT INTO tupletest (key,value,valuemap) VALUES ('2','B',{'b':(0,null,'hi')});
INSERT INTO tupletest (key,value,valuemap) VALUES ('3','C',{'c':(null,null,'hi')});
aploetz@cqlsh:stackoverflow> SELECT * FROM tupletest ;

 key | value | valuemap
-----+-------+---------------------------
   3 |     C | {'c': (None, None, 'hi')}
   2 |     B |    {'b': (0, None, 'hi')}
   1 |     A |       {'a': (0, 0, 'hi')}

(3 rows)