Cassandra动态柱族

Cassandra动态柱族,cassandra,column-family,Cassandra,Column Family,我刚接触卡桑德拉,读了一些关于静态和动态列族的文章。 据介绍,从卡桑德拉3表和列族都是一样的 我创建了键空间和一些表,并将数据插入到该表中 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(no

我刚接触卡桑德拉,读了一些关于静态和动态列族的文章。 据介绍,从卡桑德拉3表和列族都是一样的

我创建了键空间和一些表,并将数据插入到该表中

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查询语言是在很多年前引入的,现在它是使用Cassandra的方式-节俭在Cassandra 3.x中被弃用,在4.0中被完全删除(尚未发布)

如果您真的需要完全动态的东西,那么您可以尝试通过使用带有列的表作为从文本到特定类型的映射来模拟它,如下所示:

create table abc (
  id int primary key,
  imap map<text,int>,
  tmap map<text,text>,
  ... more types
);
然后可以将各个值作为单独的列插入:

insert into xxxx(id, col_name, ival) values (1, 'col1', 1);
insert into xxxx(id, col_name, tval) values (1, 'col2', 'text');
并选择所有列作为:

select * from xxxx where id = 1;

亚历克斯是对的。在早期,卡桑德拉曾被认为是“无模式的”,但现在已经不是这样了。
select * from xxxx where id = 1;