我是新来Cassandra,我读了一些关于静态和动态列家族的文章。据介绍,从Cassandra3表和列族是一样的。
我创建了键空间、一些表并将数据插入到该表中。
CREATE TABLE subscribers(
id uuid,
email text,
first_name text,
last_name text,
PRIMARY KEY(id,email)
);
INSERT INTO subscribers(id,email,first_name,last_name)
VALUES(now(),'Test@123.com','Test1','User1');
INSERT INTO subscribers(id,email,first_name,last_name)
VALUES(now(),'Test2@222.com','Test2','User2');
INSERT INTO subscribers(id,email,first_name,last_name)
VALUES(now(),'Test3@333.com','Test3','User3');
一切似乎都很顺利。
但我需要的是创建一个动态列族,它只包含数据类型,没有预定义的列。
使用insert查询,我可以有不同的参数,并且应该插入表。
在文章中提到,对于动态列族,不需要创建模式(预定义列)。我不确定这在Cassandra是否可行,或者我的理解是错误的。
让我知道这是否可行?如果可能,请提供一些例子。
提前谢谢。
1条答案
按热度按时间yhxst69z1#
我认为你所指的文章是在Cassandra的头几年写的,当时它是基于节俭协议的。cassandra查询语言是在很多年前引入的,现在它是使用cassandra的一种方式——节俭在cassandra 3.x中被弃用,在4.0中被完全删除(尚未发布)。
如果您真的需要完全动态的东西,那么您可以尝试通过使用带有列的表作为从文本到特定类型的Map来模拟它,如下所示:
但是您需要小心—在使用集合时存在限制和性能影响,特别是如果您希望存储超过数百个元素。
另一种方法是将数据存储为单独的行:
然后可以将各个值作为单独的列插入:
并选择所有列作为: