我想通过CQL 3在复合列族中插入数据。
create column family marks with
comparator = 'CompositeType(DateType,UTF8Type,UTF8Type)' AND
key_validation_class=UTF8Type AND
default_validation_class=UTF8Type;
结构将使用cassandra-cli shell进行一次,结果将保存在cassandra中
**63** (2013-06-04 00:00:00 UTC, Science, 89.00): ''
(2013-06-04 00:00:00 UTC, Mathematics, 80.00): ''
(2013-06-04 00:00:00 UTC, English, 90.00):''
此处行键为63,即主键和唯一键。数据只会在列名中保存在cassandra中。什么是插入查询,以及什么是最适合实现此CQL3或thrift的驱动程序。
答案 0 :(得分:1)
在CQL3中,您可以使用复合主键执行此操作:
CREATE TABLE marks (
id text,
date timestamp,
subject text,
mark text,
PRIMARY KEY (id, date, subject, mark)
)
使用此架构,id是行键,因为它首先列出。列名是date:subject:mark。
的组合然后您可以插入:
insert into marks (id, date, subject, mark) values ('63', '2013-06-04 00:00:00 UTC', 'Science', '89.00');
insert into marks (id, date, subject, mark) values ('63', '2013-06-04 00:00:00 UTC', 'Mathematics', '80.00');
insert into marks (id, date, subject, mark) values ('63', '2013-06-04 00:00:00 UTC', 'English', '90.00');
并列出:
> select * from marks;
id | date | subject | mark
----+--------------------------+-------------+-------
63 | 2013-06-04 01:00:00+0100 | English | 90.00
63 | 2013-06-04 01:00:00+0100 | Mathematics | 80.00
63 | 2013-06-04 01:00:00+0100 | Science | 89.00
您可能希望将标记存储为int(或可能是浮点数),以便您可以在查询中进行数字比较。
您还可以将标记存储在列值而不是列名称中。为此,请从主键中删除标记。然后你可以,例如建立标记的二级索引。