ran*_*its 3 database cassandra
为了理解Cassandra中的一些基础知识,我的印象是开发人员在设计数据模型时可以采用的一个优点是动态地将列添加到由键标识的行中.这意味着我可以对我的数据进行建模,以便在有意义的情况下,密钥可以是诸如关系数据库中的user_id之类的东西,例如,我可以创建与该用户相关的任意数量的列.
我不理解的是为什么CLQ示例中的预定义列非常强调,特别是在CREATE TABLE/COLUMNFAMILY示例中:
CREATE TABLE emp (
empID int,
deptID int,
first_name varchar,
last_name varchar,
PRIMARY KEY (empID, deptID)
);
Run Code Online (Sandbox Code Playgroud)
将这种类型的模型放入关系数据库中会不会更有意义?如果我在运行时之前不知道我的列名并且需要动态创建它,该怎么办?我是否必须使用ALTER TABLE使用CLQ向行添加新列?我想到的特定应用程序用例我只需要一个键标识符和任意列名,其中列名可能包含时间戳+ variable_identifier.
Cassandra是正确的工具吗?文档中的预定义列只是一个示例吗?如何使用现有列族/表添加动态列名?
我是否必须使用ALTER TABLE使用CLQ向行添加新列?
是的,必须先定义架构,然后才能插入"新列".但是,您可以定义1列作为数据集合.在混合动态和静态列下,查看datastax的'thrift to cql upgrade'博客中的'tag'示例.
如何使用现有列族/表添加动态列名?
在CQL中,您必须首先使用ALTER关键字更改表(列族)的结构.我的猜测是,这是为了确保列族包含指定的列,从而消除错误添加列的可能性(更好的数据质量).
Cassandra是正确的工具吗?
我认为是这样,但是如果您需要在不指定模式更改语句的情况下即时添加列,那么您应该查看基于thrift的API,这可以做到这一点,但只是一个友好的警告,datastax建议新应用程序使用CQL.