2012-12-18 32 views
11

CQL 3 cho phép cho một "hợp chất" khóa chính sử dụng một định nghĩa như thế này:Gia đình cột Cassandra/CQL3 có khóa phân vùng tổng hợp không?

CREATE TABLE timeline (
    user_id varchar, 
    tweet_id uuid, 
    author varchar, 
    body varchar, 
    PRIMARY KEY (user_id, tweet_id) 
); 

Với một sơ đồ như thế này, chìa khóa phân vùng (lưu trữ chìa khóa động cơ hàng) sẽ bao gồm các giá trị user_id, trong khi tweet_id sẽ được gộp vào tên cột. Những gì tôi đang tìm kiếm, thay vào đó, là cho khóa phân vùng (khóa hàng công cụ lưu trữ) để có một giá trị tổng hợp như user_id: tweet_id. Rõ ràng tôi có thể làm một cái gì đó như key = user_id + ':' + tweet_id trong ứng dụng của tôi, nhưng có cách nào để có CQL 3 làm điều này cho tôi?

Trả lời

15

Thực ra, bạn có thể. Chức năng đó đã được bổ sung trong vé này:

https://issues.apache.org/jira/browse/CASSANDRA-4179

Định dạng cho bạn sẽ là:

CREATE TABLE timeline (
    user_id varchar, 
    tweet_id uuid, 
    author varchar, 
    body varchar, 
    PRIMARY KEY ((user_id, tweet_id)) 
); 
+0

Thông tin cần biết! Tôi đã cập nhật câu trả lời ở trên để tránh nhầm lẫn - và upvoted của bạn. :) –

+0

Và do đó có sẵn trong Cassandra 1.2.0 trở đi. – Raedwald

2

Cho đến khi 1,2 xuất hiện, câu trả lời là không. Khóa phân vùng sẽ luôn là thành phần đầu tiên. Như bạn đã nói, cách để làm điều này là tự tạo khóa tổng hợp. Bạn không nên né tránh điều này vì nó thực sự khá phổ biến.

Các vấn đề liên quan