是否可以 insert/write 数据而无需在 Cassandra 中定义列?

Is it possible to insert/write data without defining columns in Cassandra?

我正在尝试了解 Cassandra 数据模型的基础知识。我正在使用 CQL。据我所知,必须在任何人插入新列之前定义架构。如果有人需要添加任何列可以使用 ALTER TABLE 并且可以将值插入到该新列。

但是在 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.

我很困惑,没有找到任何预期的答案。有人可以向我解释一下或者告诉我我是否遗漏了什么吗?

提前致谢。

您正在阅读 "Cassandra, the definitive guide":一本 3/4 年前的书,告诉您一些很久以前就已经改变的事情。现在您必须先定义表结构才能写入数据。

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

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

HTH,
卡罗

有两种不同的 API 与 Cassandra 交互以写入数据。首先是 thrift API,它始终允许动态创建列,但也支持为您的列添加元数据。 接下来是基于 API 的较新的 CQL。 CQL 的创建是为了提供另一个抽象层,使使用 Cassandra 更加用户友好。使用 CQL,您需要预先为您的列名和数据类型定义架构。但是,这并不意味着不能使用 CQL 来使用动态列。

差异请看这里: http://www.datastax.com/dev/blog/thrift-to-cql3