在Cassandra 3.x中存储包含空组件的CQL元组合法吗
我必须在Cassandra 3.x中存储一个协议缓冲区结构。它在.proto文件中定义为:在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
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数据类型页面上。你知道我在哪里可以找到关于这个类型的详细信息吗?@reikjevaluemap
不是一个类型,而是一个包含嵌套在其中的元组的映射的列名。很抱歉这里有点混乱。我明白了,因为地图后缀有点混乱:)
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)