是否可以在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);
但这意味着我所有的价值观都是一团糟,包括我事先知道的那些价值观。