是否可以在不定义Cassandra中的列的情况下插入/写入数据?

时间:2015-03-25 08:14:25

标签: cassandra cql cassandra-2.0 cql3

我试图了解Cassandra数据模型的基本原理。我正在使用CQL。据我所知,必须先定义架构,然后才能插入新列。如果有人需要添加任何列,可以使用ALTER TABLE,并且可以将值INSERT到该新列。

但是在cassandra权威指南中写道,Cassandra的模式较少。

In Cassandra, you don’t define the columns up front; you just define the column
families you want in the keyspace, and then you can start writing data without defining
the columns anywhere. That’s because in Cassandra, all of a column’s names are
supplied by the client.

我感到困惑,没有找到任何预期的答案。有人可以向我解释或告诉我,如果我错过了什么吗?

提前致谢。

2 个答案:

答案 0 :(得分:5)

两个不同的API与Cassandra交互以编写数据。首先是thrift API,它总是允许动态创建列,但也支持为列添加元数据。 接下来是更新的基于CQL的API。创建CQL是为了提供另一个抽象层,使其更适合与Cassandra一起使用。使用CQL,您需要为列名和数据类型预先定义模式。但是,这并不意味着无法使用CQL来使用动态列。

请点击此处查看差异: http://www.datastax.com/dev/blog/thrift-to-cql3

答案 1 :(得分:3)

你正在阅读“Cassandra,权威指南”:一本3/4岁的书,它告诉你很久以前发生过变化的事情。现在,您必须在能够写入数据之前定义表结构。

Here你可以找到CQL引入和无模式放弃背后的一些原因。

The official Datastax documentation应该是您的权威指南。

HTH,
卡罗