Siêu cột bị một số vấn đề, không kém phần quan trọng là Cassandra phải deserialze tất cả các cột phụ của cột siêu khi truy vấn (ngay cả khi kết quả sẽ chỉ trả về một tập hợp con). Kết quả là, có một giới hạn thực tế đối với số lượng cột phụ cho mỗi cột siêu có thể được lưu trữ trước khi hiệu suất bị ảnh hưởng. Về lý thuyết, điều này có thể được cố định trong Cassandra bằng cách lập chỉ mục các cột phụ, nhưng sự đồng thuận là các cột tổng hợp là một giải pháp tốt hơn, và chúng hoạt động mà không có sự phức tạp thêm vào.
Cách dễ nhất để tận dụng các cột tổng hợp là tận dụng lợi thế của sự trừu tượng mà CQL 3 cung cấp. Hãy xem xét lược đồ sau:
CREATE TABLE messages(
username text,
sent_at timestamp,
message text,
sender text,
PRIMARY KEY(username, sent_at)
);
Tên người dùng ở đây là khóa hàng, nhưng chúng tôi đã sử dụng định nghĩa PRIMARY KEY tạo nhóm nhóm hàng và cột sent_at. Điều này rất quan trọng vì nó có tác dụng lập chỉ mục thuộc tính đó.
INSERT INTO messages (username, sent_at, message, sender) VALUES ('bob', '2012-08-01 11:42:15', 'Hi', 'alice');
INSERT INTO messages (username, sent_at, message, sender) VALUES ('alice', '2012-08-01 11:42:37', 'Hi yourself', 'bob');
INSERT INTO messages (username, sent_at, message, sender) VALUES ('bob', '2012-08-01 11:43:00', 'What are you doing later?', 'alice');
INSERT INTO messages (username, sent_at, message, sender) VALUES ('bob', '2012-08-01 11:47:14', 'Bob?', 'alice');
Đằng sau những cảnh Cassandra sẽ lưu trữ một cái gì đó chèn trên dữ liệu như thế này:
alice: (2012-08-01 11:42:37,message): Hi yourself, (2012-08-01 11:42:37,sender): bob
bob: (2012-08-01 11:42:15,message): Hi, (2012-08-01 11:42:15,sender): alice, (2012-08-01 11:43:00,message): What are you doing later?, (2012-08-01 11:43:00,sender): alice (2012-08-01 11:47:14,message): Bob?, (2012-08-01 11:47:14,sender): alice
Nhưng sử dụng CQL 3, chúng ta có thể truy vấn "hàng" sử dụng một vị sent_at, và lấy lại một bảng tập hợp kết quả.
SELECT * FROM messages WHERE username = 'bob' AND sent_at > '2012-08-01';
username | sent_at | message | sender
----------+--------------------------+---------------------------+--------
bob | 2012-08-01 11:43:00+0000 | What are you doing later? | alice
bob | 2012-08-01 11:47:14+0000 | Bob? | alice
Đó là một câu hỏi hay. Tôi nghĩ rằng blog công nghệ ebay này có một cái nhìn tổng quan về công nghệ tối ưu và công nghệ thấp (không có nhiều chi tiết công nghệ). http://www.ebaytechblog.com/2012/07/16/cassandra-data-modeling-best-practices-part-1/ Tuy nhiên, nếu bạn tham gia vào nội dung thực, hãy đọc tốt hơn từng thay đổi và lộ trình để bạn có được cảm thấy tốt hơn ở đâu và các vấn đề là gì và chúng được giải quyết như thế nào. Đó là quá nhiều đọc và nó sẽ được tốt đẹp nếu nó có thể được systemized một nơi nào đó, nhưng tôi cũng không thể tìm thấy nhiều trên internet. –