节俭的卡桑德拉地图收集支持

时间:2018-07-26 19:36:48

标签: cassandra thrift cassandra-3.0 cql3

是否可以在CQL3中定义地图集合,然后将其作为Thrift中的一组列读取?

基于https://www.datastax.com/dev/blog/thrift-to-cql3,当混合静态列和动态列时,从CQL3中看不到动态列。推荐的方法是使用集合。但是,在非紧凑型存储表中定义集合时,它根本不可见。将其定义为冻结和紧凑存储时,它显示为单列。

create table main.exp2 (
    article_id blob primary key,
    text text,
    scantime int,
    info text,
    rest frozen<map<text, blob>>) WITH COMPACT STORAGE;

我是否错过了一些可能未记录的选项?我的图书馆版本太旧了吗?

或者,将其作为新功能的好地方在哪里?显然,不赞成使用节俭,我不能指望存储本身会发生任何变化,但是基于thrift-to-cql3页面上的解释,我希望有某种方法可以为数据提供带有复合列名的节俭。

动机是一种前向兼容性-准备表,这样它可以被节俭的当前应用程序使用,也可以由具有CQL3的新应用程序使用。目前看来,只有在完全动态的表中才能实现这种组合。

尽管地图集合中值的长度限制为64KB,如https://docs.datastax.com/en/cql/3.3/cql/cql_reference/refLimits.html所述,我们还是不能使用它。

所以也许要求从CQL3读取混合表的动态列的功能更有意义...

编辑:请注意,我知道我可以定义没有任何静态列的表,如下所示:

create table main.exp1 (
    article_id blob,
    column_key text,
    value blob,
    PRIMARY KEY (article_id, column_key)
) WITH COMPACT STORAGE AND CLUSTERING ORDER BY (column_key ASC);

但这意味着我所有的价值观都是一团糟,包括我事先知道的那些价值观。

0 个答案:

没有答案