Cassandra:具有多种数据类型的地图集合

时间:2015-08-04 02:14:51

标签: database cassandra datastax cql3 cqlsh

正如Ellis先生在dynamic-columns/wide-rows中所述和讨论的那样,动态表可以通过地图集合实现。但是,我可以看到这仅适用于具有相同类型的数据。 链接示例:

CREATE TABLE users (
  user_id text PRIMARY KEY,
  name text,
  birth_year int,
  phone_numbers map
);

INSERT INTO users (user_id, name, birth_year, phone_numbers)
VALUES ('jbellis', 'Jonathan Ellis', 1976, {'home': 1112223333, 'work': 2223334444});

主页工作 phone_numbers都是整数类型。但是我们需要一个具有各种数据类型的集合。说,

  

创建表存储(mobile_id int PRIMARY KEY,日期时间戳,数据映射);

然后数据包含以下内容:

  

{'state':String,'protocol':整数,'weight':Double,'frame':Blob ......}

所以我的问题是,我们有替代方案吗?这可能与CQL有关吗?

2 个答案:

答案 0 :(得分:1)

此时,我相信这是不可能的。你最好使用一个嵌入了某种类型信息的String

ie {'home':'int:1112223333','work':'str:222-333-4444'}

或者使用blob并使用blob类型和特定于语言的序列化将特定于语言的地图保存到Cassandra中以保存变量映射。

答案 1 :(得分:0)

键入地图。你仍然可以为每种类型创建一个地图字段吗? map_int,map_text,map_etc

这有一个额外的好处,它会更快一些,因为集合在读取时作为一个整体加载,因此按类型拆分将为每个查询加载更少的数据。你应该能够预先找出你正在寻找的类型。