cassandra真的是NoSQL数据库吗



我是casandara和NoSql数据库的新手。根据我的理解,当你说它是NoSQL时,意味着当你插入值时,它应该接受所有数据(它是无模式的(。即,我在cassandra中创建了一个表,它包含5个字段。第一次插入查询我只插入了5个值,就是成功了。接下来我尝试了6个值,它抛出错误,说有不匹配的列名/值(第6个字段(。如果cassandra是NoSQL,那么第6个字段应该插入到表中。

我在谷歌上做了这个。很少有人建议用户通过更改Query来更改模式。如果是这样的话,我也可以在SQL中使用alter模式。那为什么我需要去NoSQL?

我的理解正确吗?

不匹配的列名/值com.datatax.river.core.exceptions.InvalidQueryException:列名/值不匹配

是的,Cassandra是一个NoSQL数据库。NoSQL数据库可以广泛定义为以非关系方式存储和维护数据的数据库(NoSQL(,可以轻松存储网络规模的数据,可以扩展,并且通常是分布式的。Cassandra勾选了所有被调用为NoSQL数据库的框。

回到您关于模式需求的问题。Cassandra过去使用thriftAPI提供(仍然作为不推荐使用的功能提供(以在移动中添加列。Thrift API将在Cassandra 4.0中被完全删除。Cassandra现在支持基于模式的CQL。

您仍然可以设计您的表来使用CQL动态添加列,如

CREATE TABLE keyspace.table_name (
partition_key  text,
column_name   text,
column_value   text,
PRIMARY KEY ((partition_key),column_name));   

现在,您可以将由column_namecolumn_value组成的所有行与partition_key以及按column_name排序的行进行分组。

最新更新