5

Tôi đã cố gắng đọc lên trên blog datastax và tài liệu nhưng không thể tìm thấy bất kỳ cụ thể về vấn đề nàyLàm thế nào để giữ cho 2 bảng Cassandra trong cùng một phân vùng

Có cách nào để giữ cho 2 bảng trong Cassandra thuộc về cùng một phân vùng? Ví dụ:

CREATE TYPE addr (
    street_address1 text, 
    city text, 
    state text, 
    country text, 
    zip_code text, 
); 

CREATE TABLE foo (
    account_id timeuuid, 
    data text, 
    site_id int, 
    PRIMARY KEY (account_id) 
}; 

CREATE TABLE bar (
    account_id timeuuid, 
    address_id int, 
    address frozen<addr>, 
    PRIMARY KEY (account_id, address_id) 
); 

Ở đây tôi cần phải đảm bảo rằng cả hai bảng/CF sẽ sống trên cùng một phân vùng như vậy cho ACCOUNT_ID cùng cả hai bộ dữ liệu có thể được lấy từ cùng một nút

Bất kỳ con trỏ nào được đánh giá cao.

Ngoài ra, nếu ai đó có một số kinh nghiệm trong việc sử dụng UDT (Loại do người dùng xác định), tôi muốn hiểu khả năng tương thích ngược sẽ hoạt động như thế nào. Nếu tôi sửa đổi "addr" UDT để có một vài thuộc tính hơn (ví dụ như int zip_code2 int và văn bản tên), thì các hàng cũ hơn có thuộc tính này hoạt động như thế nào? Nó thậm chí có tương thích không?

Cảm ơn

Trả lời

10

Nếu hai bảng chia sẻ cùng một chiến lược sao chép và cùng một khóa phân vùng, chúng sẽ phân chia các phân vùng của chúng. Vì vậy, miễn là hai bảng đang trong keyspace cùng VÀ phím phân vùng của họ phù hợp với

PRIMARY KEY (ACCOUNT_ID) == PRIMARY KEY (ACCOUNT_ID, address_id)

Bất kỳ ACCOUNT_ID nhất định sẽ được trên (và được nhân rộng) cùng một máy.

+0

Tuyệt vời! 1 cho phản ứng nhanh chóng và sạch sẽ. Bạn có thể vui lòng giúp trả lời phần khác của câu hỏi về UDT không? – im2kul

+0

Tốt nhất là tách các câu hỏi không liên quan thành các câu hỏi SO khác nhau. Điều này làm cho dịch vụ tốt hơn trong tương lai cho những người tìm kiếm câu trả lời tương tự. – RussS

+0

OK. Tôi đã đăng một câu hỏi khác: http://stackoverflow.com/questions/34300141/user-defined-type-udt-behavior-in-cassandra – im2kul

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