2013-06-06 53 views
1

我想通過CQL 3.卡桑德拉組合柱結構,並插入

create column family marks with 
comparator = 'CompositeType(DateType,UTF8Type,UTF8Type)' AND 
key_validation_class=UTF8Type AND 
default_validation_class=UTF8Type; 

結構將進行一次與卡桑德拉-CLI外殼和結果中插入一個複合列族的數據將被保存在卡珊德拉as

**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或節儉。

回答

1

在CQL3,通過使用複合主鍵做到這一點:

CREATE TABLE marks (
    id text, 
    date timestamp, 
    subject text, 
    mark text, 
    PRIMARY KEY (id, date, subject, mark) 
) 

有了這個模式,id是行鍵,因爲它列在第一位。列名是日期:主題:標記的組合。

還可以再插入:

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(或潛在float),因此你可以在你的查詢做數字比較。

您還可以將標記存儲在列值而不是列名中。爲此,請從主鍵中刪除標記。然後你可以例如建立商標的二級指標。