我看到Cassandra布尔数据类型存在问题,
我有一个表,其中一个字段为布尔值
CREATE TABLE keyspace.issuetable (
"partitionId" text,
"name" text,
"field" text,
"testboolean" boolean,
PRIMARY KEY ("partitionId", "name"));
现在,当我尝试插入表格时,我没有添加布尔值'testboolean'
INSERT into keyspace.issuetable("partitionId", "name", "field")
VALUES ('testpartition', 'cluster1_name','testfiled');
问题:
1)如果未在INSERT查询中添加布尔条目(例如testboolean条目),则根据数据类型,它必须为“ false”,但将其添加为 null
SELECT * FROM issuetable ;
partitionId | name | field | testboolean
---------------+---------------+-----------+-------------
testpartition | cluster1_name | testfiled | null
你能解释为什么吗?还请让我知道解决此问题的解决方案,我希望'false'而不是'null'
谢谢
哈里
答案 0 :(得分:1)
Cassandra与传统的SQL数据库不同。它不在表中存储行。考虑Cassandra数据模型的最好方法是想象一个sortedMap<rowKey, map<columnKey, value>>
。
这意味着不需要任何特定的行具有与其他任何行/列相同的字段/列。在您的示例中,插入的行仅没有没有名为testboolean
的属性。
要了解更多信息,我建议您参考here。 而且,不能为列设置默认值(或者只能在应用程序端设置默认值)。