2013-05-27 33 views
1

我看到額外的列在我的專欄的家庭在創建時我使用CQL比較CLI。Extra列插件(比較CLI)

使用定製列表創建表並插入行:

cqlsh:cassandraSample> CREATE TABLE bedbugs(
       ...  id varchar, 
       ...  name varchar, 
       ...  description varchar, 
       ...  primary key(id, name) 
       ...) ; 

cqlsh:cassandraSample> insert into bedbugs (id, name, description) 
values ('Cimex','Cimex lectularius','http://en.wikipedia.org/wiki/Bed_bug'); 

現在使用CLI插入列:

[[email protected]] set bedbugs['BatBedBug']['C. pipistrelli:description']='google.com'; 
Value inserted. 
Elapsed time: 1.82 msec(s). 
[[email protected]] list bedbugs 
...  ; 
Using default limit of 100 
Using default column limit of 100 
------------------- 
RowKey: Cimex 
=> (column=Cimex lectularius:, value=, timestamp=1369682957658000) 
=> (column=Cimex lectularius:description, value=http://en.wikipedia.org/wiki/Bed_bug, timestamp=1369682957658000) 
------------------- 
RowKey: BatBedBug 
=> (column=C. pipistrelli:description, value=google.com, timestamp=1369688651442000) 

2 Rows Returned. 


cqlsh:cassandraSample> select * from bedbugs; 

id  | name    | description 
-----------+-------------------+-------------------------------------- 
    Cimex | Cimex lectularius | http://en.wikipedia.org/wiki/Bed_bug 
BatBedBug | C. pipistrelli |       google.com 

所以,CQL爲每行創建一個額外的列,空非主鍵列。這不是浪費空間嗎?

回答

0

當您創建使用CQLSh列家人和指定主鍵(ID,姓名),你讓卡桑德拉創建存儲在一個按ID排序的數據,另一個是按名稱排序的數據的數據的兩個指標。但是當你通過cassandra-cli來做這件事時,你的專欄家族沒有索引欄。 cassandra-cli不支持二級索引。我希望我對你有意義,我沒有理由解釋我的理解。

0

對於卡桑德拉-CLI兼容性,並防止這種額外的列被創建,更改CREATE TABLE語句包括「緊湊存儲」。

described here

所以

CREATE TABLE bedbugs(
    id varchar, 
    name varchar, 
    description varchar, 
    primary key(id, name) 
); 

成爲

CREATE TABLE bedbugs(
    id varchar, 
    name varchar, 
    description varchar, 
    primary key(id, name) 
) WITH COMPACT STORAGE; 

緊湊型存儲也,你會如何去定製列表中的支持wide rows