我正在尝试在 Cassandra 1.1 中对列族进行建模,逻辑上看起来像这样:
Entp: //CF
//rowkey-> entp_name_xyz:
{entp_full_name: "full_name_xyz",
some_value: 1,
policy: {policy_name: "default policy",
type: "type 1",
prop_1: "prop 1",
...
},
rules: {rule_1:, rule_2:,rule_3:}
}
我要建模的查询是:获取给定 entp 名称的所有策略,获取给定 entp 的所有规则,获取给定 entp_name 的所有列 我计划将此列族建模为具有“宽行”,其中一行将看起来像这样:
RowKey:- entp_name_xyz,
column_name:- policy:p1
Value:-{JSON object - {policy_name: "default policy", type: "type 1", prop_1: "prop 1", ...}}
column_name:- policy:p2
Value:-{JSON object - {policy_name: "default policy2", type: "type 1", prop_1: "prop 1", ...}}
column_name: rule:r1 where r1 is a rowkey of a Rules column family
Value: Null
现在我的问题是在 cqlsh 或 cassandra-cli 中,
- 如何插入复合列名称,例如 policy:p1?
- 使用此方案,是否可以进行如下查询: select * from entp where column_name like "policy:*" and entp_name= xyz 以便只读取所有策略列?
如何为列设置空值。我在一些论坛上读到,您不需要设置 null,因为它相当于没有值。但是考虑一下你有一个带有 col1、col2 和 col3 的静态模式的情况,我想插入一个 col3 =null 的行,但 col1 和 col2 有一些值。插入此类数据的 cqlsh 语法是什么(我在文档中找不到),因为以下给出了错误:
插入 entp (col1,col2,col3) 值 ("abc","xyz", null)
谢谢!