2013-09-05 29 views

Trả lời

34

Giả phím phân nhóm của bạn là

k1 t1, k2 t2, ..., kn tn 

nơi ki là tên chính thứ i và ti là loại chìa khóa thứ i. Sau đó, dữ liệu đơn đặt hàng được lưu trữ theo thứ tự từ điển, trong đó mỗi thứ nguyên được so sánh bằng cách sử dụng bộ so sánh cho loại đó.

Vì vậy, (a1, a2, ..., an) < (b1, b2, ..., bn) nếu a1 < b1 sử dụng so sánh t1, hoặc a1 = b1 và a2 b2 < sử dụng so sánh t2, hoặc (a1 = b1 và a2 = b2) và a3 < b3 sử dụng bộ so sánh t3, v.v.

Điều này có nghĩa là tìm tất cả các hàng với một số k1 = a nhất định, vì dữ liệu được lưu trữ cùng nhau. Nhưng không hiệu quả khi tìm tất cả các hàng với ki = x cho i> 1. Thực tế, truy vấn như vậy không được phép - các ràng buộc khóa phân cụm duy nhất được cho phép chỉ định 0 hoặc nhiều cụm phân cụm, bắt đầu từ khóa đầu tiên .

Ví dụ, hãy xem xét các giản đồ

create table clustering (
    x text, 
    k1 text, 
    k2 int, 
    k3 timestamp, 
    y text, 
    primary key (x, k1, k2, k3) 
); 

Nếu bạn đã chèn sau:

insert into clustering (x, k1, k2, k3, y) values ('x', 'a', 1, '2013-09-10 14:00+0000', '1'); 
insert into clustering (x, k1, k2, k3, y) values ('x', 'b', 1, '2013-09-10 13:00+0000', '1'); 
insert into clustering (x, k1, k2, k3, y) values ('x', 'a', 2, '2013-09-10 13:00+0000', '1'); 
insert into clustering (x, k1, k2, k3, y) values ('x', 'b', 1, '2013-09-10 14:00+0000', '1'); 

sau đó chúng được lưu trữ theo thứ tự này trên đĩa (thứ tự select * from clustering where x = 'x' lợi nhuận):

x | k1 | k2 | k3      | y 
---+----+----+--------------------------+--- 
x | a | 1 | 2013-09-10 14:00:00+0000 | 1 
x | a | 2 | 2013-09-10 13:00:00+0000 | 1 
x | b | 1 | 2013-09-10 13:00:00+0000 | 1 
x | b | 1 | 2013-09-10 14:00:00+0000 | 1 

k1 đặt hàng chi phối, sau đó k2, sau đó k3.

+0

Cảm ơn Richard. Bạn có thể vui lòng đưa ra một ví dụ? – Vinodh

+2

Tôi đã thêm một ví dụ vào câu trả lời của mình. – Richard

+1

Cảm ơn rất nhiều Richard. Từ ví dụ của bạn, tôi có thể hiểu các cột phân cụm và tài liệu CQL "thứ tự các cột được định nghĩa cho các vấn đề KEY CHÍNH". từ http://cassandra.apache.org/doc/cql3/CQL.html#createTableStmt. – Vinodh