2014-10-26 13 views
5

Cách kinh điển để mô hình quan hệ nhiều-nhiều với CQL3 là gì? Hãy nói rằng tôi phải bảngLập mô hình quan hệ nhiều-nhiều trong Cassandra 2 với CQL3

CREATE TABLE actor (
    id text PRIMARY KEY, 
    given text, 
    surname text, 
) 

CREATE TABLE fan (
    id text PRIMARY KEY, 
    given text, 
    surname text, 
) 

và tôi muốn để mô hình thực tế là một diễn viên có thể có nhiều fan hâm mộ và mỗi người hâm mộ có thể thích nhiều diễn viên.

Ý tưởng đầu tiên đến với tôi tôi đã sử dụng sets, giống như trong những điều sau đây (và ngược lại cho người hâm mộ):

CREATE TABLE actor (
    id text PRIMARY KEY, 
    given text, 
    surname text, 
    fans set<text> 
) 

<similarly for fan> 

nhưng có vẻ như họ có nghĩa là cho bộ nhỏ, và tôi không thấy cách kiểm tra xem người hâm mộ có liên quan đến diễn viên mà không tải hoàn toàn hoặc không.

Sự lựa chọn thứ hai tôi thấy sẽ làm cho hai bảng lập bản đồ, mỗi cho mỗi hướng liên quan:

CREATE TABLE actor_fan (
    text actor, 
    text fan, 
    PRIMARY KEY(actor,fan) 
); 

<similarly for fan_actor> 

này sẽ cung cấp cho tôi khả năng để có được cả hai danh sách fan hâm mộ của một diễn viên và kiểm tra xem một cụ thể người là một fan hâm mộ của một diễn viên nhất định? Có rất nhiều tài liệu về Cassandra, nhưng nó thường liên quan đến các phiên bản cũ hơn và dường như có nhiều khác biệt giữa các bản phát hành.

Trả lời

4

Cách thích hợp để thực hiện việc này trong Cassandra là chuẩn hóa dữ liệu thành 2 bảng. Bạn không nên lo lắng về việc phải viết hai lần, một lần trên mỗi bảng, vì Cassandra được thiết kế để xử lý viết rất nhanh để hỗ trợ mô hình như vậy.

Hãy nhìn vào mô hình dữ liệu này hướng dẫn mà sẽ giúp đỡ để hiểu những điều này:

Data modelling tutorials

Ngoài ra tôi thấy bạn đề cập đến bộ là tốt. Cũng giống như một lưu ý phụ và mặc dù đây không phải là câu trả lời cho câu hỏi của bạn, bạn có thể muốn biết một số tính năng mới như: http://www.datastax.com/dev/blog/cql-in-2-1

+0

Cảm ơn bạn đã liên kết. Các phiên bản khác nhau của Cassandra thay đổi rất nhiều về các tính năng (Cassandra 1.2 và ở trên trông giống như một sản phẩm hoàn toàn khác so với các phiên bản trước), do đó rất dễ dàng để tìm tài liệu không đầy đủ hoặc lỗi thời. –

1

Cách để đạt được điều này là chuẩn hóa dữ liệu tạo actors_by_fansfans_by_actors. Bạn cũng có thể sử dụng bộ nhưng điều này có những hạn chế bạn đã đề cập.

HTH, Carlo

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