首页 > 解决方案 > cassandra 真的是 NoSQL 数据库吗?

问题描述

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

我做了这个谷歌。很少有人建议说用户更改查询以更改架构。如果是这种情况,我也可以在 SQL 中使用 alter schema。那为什么我需要使用 NoSQL?

我的理解正确吗?

不匹配的列名/值 com.datastax.driver.core.exceptions.InvalidQueryException:不匹配的列名/值

标签: cassandra

解决方案


是的,Cassandra 是一个 NoSQL 数据库。NoSQL数据库可以广义地定义为以非关系方式(No SQL)存储和维护数据,可以轻松存储Web规模数据,可以横向扩展并且通常是分布式的数据库。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


推荐阅读