Trên một nút vật lý nhất định, các hàng cho một khóa phân vùng đã cho được lưu trữ theo thứ tự được tạo ra bởi các phím phân cụm, làm cho việc thu hồi các hàng theo thứ tự phân cụm đó đặc biệt hiệu quả. http://cassandra.apache.org/doc/cql3/CQL.html#createTableStmt Loại thứ tự nào được tạo ra bởi các phím phân cụm?Clustering Keys trong Cassandra
Trả lời
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
.
Cảm ơn Richard. Bạn có thể vui lòng đưa ra một ví dụ? – Vinodh
Tôi đã thêm một ví dụ vào câu trả lời của mình. – Richard
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