Cassandra Query Language (CQL)

Một phần của tài liệu tìm hiểu hệ quản trị cơ sở dữ liệu phân tán cassandra (Trang 40 - 44)

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.

Một phần của tài liệu tìm hiểu hệ quản trị cơ sở dữ liệu phân tán cassandra (Trang 40 - 44)

Tải bản đầy đủ (DOC)

(44 trang)
w