Arn*_*sen 9 cql cassandra cql3
我上周刚刚参加了Cassandra的速成课程,从Thrift API到CQL到了SuperColumns,我不应该使用它们和用户复合键.
我现在正在尝试CQL3,看起来我不能再插入未在架构中定义的列,或者看到那些列中的列 select *
我错过了一些在CQL3中启用它的选项,或者它是否希望我定义模式中的每一列(忽略宽,灵活行的目的,imho).
是的,CQL3确实需要在使用之前声明列.
但是,您可以根据需要执行尽可能多的ALTER,不会导致锁定或性能损失.
也就是说,在早期的C*版本中使用"动态列"的大多数地方都可以通过C*1.2中的Map更好地服务.
小智 5
我建议你用"WITH COMPACT STORAGE"探索复合柱."COMPACT STORAGE"列系列允许您实际上只定义键列:
例:
CREATE TABLE entities_cargo(entity_id ascii,item_id ascii,qt ascii,PRIMARY KEY(entity_id,item_id))具有紧凑的存储
实际上,当您从itemid插入不同的值时,您不会添加具有entity_id,item_id和qt的行,但是您添加了一个名称(item_id内容)和值(qt内容)的列.所以:
插入entities_cargo(entity_id,item_id,qt)值(100,'oggetto 1',3);
插入entities_cargo(entity_id,item_id,qt)值(100,'oggetto 2',3);
现在,以下是您在CQL3中看到这些行的方式:
cqlsh:goh_master> select*from entities_cargo其中entity_id = 100;
entity_id | item_id | QT
----------- ----------- + + ----
Run Code Online (Sandbox Code Playgroud)100 | oggetto 1 | 3 100 | oggetto 2 | 3
如果你从cli检查tnem它们是怎么回事:
[default @ goh_master] get entities_cargo [100];
=>(column = oggetto 1,value = 3,timestamp = 1349853780838000)
=>(column = oggetto 2,value = 3,timestamp = 1349853784172000)
返回2个结果.
您可以使用访问单个列
select*from entities_cargo,其中entity_id = 100,item_id ='oggetto 1';
希望能帮助到你
| 归档时间: |
|
| 查看次数: |
3621 次 |
| 最近记录: |