Từ phiên bản 0.8 có đã có Cassandra Query Language. Cũng như SQL client thao tác trên CQL chỉ cần biết thông dịch câu truy vấn thành đối tượng resultset
CQL syntax dựa vào SQL. Mặc dầu nó có nhiều tương đồng với SQL nhưng nó không thay đổi mô hình dữ liệu nền tảng bên dưới của Cassandra. Nó không hỗ trợ JOIN
6.2.1. Khởi động chương trình CQL(cqlsh)
Từ Cassandra 1.0 trở đi đã có cql client install cùng với Cassandra package.
Khi bạn start cqlsh, bạn phải hỗ trợ IP của node muốn connect tới (mặc định là localhost) và port muốn connect tới (mặc định là 9160)
$ cqlsh 103.263.89.126 9160 cqlsh>
Để thoát thì gõ lệnh exit cqlsh> exit
6.2.2. Chạy lệnh CQL bang cqlsh
Chi tiết các lệnh tham khảo tại. Hiện tại version 2.0 vẫn còn đang phát triển và nó vẫn còn một vài hạn chế.
• Tạo một Keyspace
Ví dụ cho việc tạo keyspace Twissandra với thông số replication factor là 3 và cqlsh> CREATE KEYSPACE twissandra WITH
Strategy_class = 'NetworkTopologyStrategy AND strategy_options:DC1 = 3;
• Tạo một Column Family
Tạo column family users trong keyspace vừa mới tạo. Trước đó phải dùng USE để connect tới keyspace vừa tạo
cqlsh> USE twissandra;
cqlsh> CREATE COLUMNFAMILY users ... KEY varchar PRIMARY KEY, ... password varchar,
... gender varchar,
... session_token varchar, ... state varchar,
... birth_year bigint);
• Insert và Retrieve Columns
Sử dụng INSERT và SELECT để insert và retrieve dữ liệu từ users
cqlsh> INSERT INTO users (KEY, password) VALUES ('jsmith', 'ch@ngem3a') USING TTL 86400;
cqlsh> SELECT * FROM users WHERE KEY='jsmith';
u'jsmith' | u'password',u'ch@ngem3a' | u'ttl', 86400
• Thêm Column với ALTER COLUMNFAMILY
Lênh ALTER COLUMNFAMILY sẽ cho bạn một cột mới cho một column family. Ví dụ thêm cột coupon_code với value kiểu varchar vào users
cqlsh> ALTER TABLE users ADD coupon_code varchar;
Cái này sẽ tạo một cột metadata và thêm vào colum family schema nhưng không update những dòng đang tồn tại trong users
• Thay đổi metadata của column
Với ALTER COLUMNFAMILY bạn có thể thay đổi kiểu của cột tại thời điểm sau khi column family đó được định nghĩa. Ví dụ thay đổi value của cột từ varchar sang int. Chú ý rằng nhưng coupon code hiện tạo sẽ không được kiểm tra kiểu cho những kiểu mới. chỉ những giá trị insert sau này mới được kiểm tra
cqlsh> ALTER TABLE users ALTER coupon_code TYPE int;
• Xóa metadata của column
Nếu mục đích của bạn là xóa hoàn toàn cột metadata bao gồm tên cột và giá trị cột bạn có thể dùng
ALTER TABLE <columnFamily> DROP <column>.
Sau khi chạy lệnh này client vẫn có thế add cột mới tên coupon_code cho column family users. Nhưng chúng sẽ không có kiểm tra cho đến khi bạn add nó tường minh
• Tạo Index cho một Column
Cqlsh có thể được dùng để tạo secondary index hoặc index cho giá trị cột.
Trong ví dụ này chúng ta sẽ tạo một index lên state và birth_year cqlsh> CREATE INDEX state_key ON users (state);
cqlsh> CREATE INDEX birth_year_key ON users (birth_year);
Bởi vì secondary index được tạo cho 2 cột nên giá trị của nó có thể được truy vấn trực tiếp như sau
cqlsh> SELECT * FROM users
... WHERE gender='f' AND ... state='TX' AND ... birth_year='1968';
u'user1' | u'birth_year',1968 | u'gender',u'f' | u'password',u'ch@ngem3' | u'state',u'TX'
• Xóa Column và Row
Cqlsh hỗ trợ lệnh DELETE để xóa cột hoặc hoặc row. Trong ví dụ này chúng ta sẽ xóa cột smith và sau đó xóa hoàn toàn row smith
cqlsh> DELETE session_token FROM users where KEY = 'jsmith';
cqlsh> DELETE FROM users where KEY = 'jsmith';
Chú ý rằng có một hiện tượng gọi là “range ghost” rằng key của dòng bị delete vẫn có thể được retrieve bởi lệnh SELECT. Nó chỉ thực sự mất định kì mỗi lần tác vụ compaction đc chạy
• Xóa Column Family và Keyspaces
Với lệnh cqlsh bạn có thể drop column family và key space giống như bảng và database trong DBMS
cqlsh> DROP COLUMNFAMILY users;
cqlsh> DROP KEYSPACE twissandra;
Tham khảo
[1] Website http://www.datastax.com/docs/1.0/index. [2] Cassandra The Definitive Guide.