【问题标题】:Cassandra: map collections with multiple datatypesCassandra:具有多种数据类型的地图集合
【发布时间】:2015-10-26 06:54:35
【问题描述】:

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

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});

homework phone_numbers 都是 integer 类型。但是我们需要一个具有各种数据类型的集合。说,

创建表存储(mobile_id int PRIMARY KEY, date timestamp, data map);

然后数据包含这些:

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

所以我的问题是,我们有替代方案吗? CQL 可以做到这一点吗?

【问题讨论】:

标签: database cassandra datastax cql3 cqlsh


【解决方案1】:

在这个时候,我相信这是不可能的。最好使用嵌入了某种类型信息的字符串

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-01-17
      • 2020-07-18
      • 1970-01-01
      • 1970-01-01
      • 2014-08-26
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多