Chạy lệnh CQL bang cqlsh

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 41 - 44)

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

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

... WHERE gender='f' AND ... state='TX' AND ... birth_year='1968'; (adsbygoogle = window.adsbygoogle || []).push({});

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 41 - 44)