2013-05-09 22 views

Trả lời

12

Loại bộ sưu tập không thể là một phần của khóa chính và không thể là loại bộ đếm. Bạn có thể dễ dàng kiểm tra điều này, nhưng lý do có thể không rõ ràng.

Bộ, danh sách, bản đồ là phần mềm trên đầu trang của mô hình lưu trữ (nhưng không có nghĩa là theo cách tiêu cực). Một tập hợp thực sự chỉ là một số cột có cùng tiền tố khóa. Là một phần của khóa chính giá trị phải là vô hướng và các loại bộ sưu tập không phải là.

+0

Hey Theo, chỉ muốn cảm ơn bạn đã trả lời. Tôi đã rất bối rối rằng tôi đã có thể làm điều này trong Big Table, nhưng không phải trong Cassandra, được cho là dựa trên Big Table. Bây giờ chúng ta đang viết một lớp trên đầu trang của Cassandra để tạo ra bảng chỉ mục. Bạn không có cơ hội biết bất kỳ cơ sở dữ liệu nào (ngoại trừ Bảng Lớn của GAE) để quản lý sự trừu tượng này, do đó chúng tôi không phải làm như vậy, phải không? –

+0

Xin lỗi, quá ít thông tin để trả lời câu hỏi đó một cách có ý nghĩa. Bạn có thể có thể mô hình dữ liệu của bạn một chút khác nhau và làm cho nó hoạt động, nhưng tôi không biết bất cứ điều gì về usecase của bạn vì vậy tôi không thể thực sự suy đoán. Có vẻ hơi lạ khi tôi có * tất cả * của e-mail của người dùng trong khóa chính, vì điều đó có nghĩa là bạn phải biết tất cả chúng để tìm người dùng ... – Theo

+0

Hey Theo, vâng, nhìn lại câu hỏi, có e-mail ở đó không có ý nghĩa. Vào thời điểm đó tôi đã rất bối rối về cách làm các truy vấn đối với Cassandra và chỉ nắm bắt ý tưởng rằng "truy vấn" luôn được thực hiện đối với khóa chính. Ý tưởng là để có thể tìm kiếm một người dựa trên tên của họ và một trong những e-mail của họ (không phải là một trường hợp sử dụng thực tế). Trong thực tế, một hàng khác sẽ phải được ghi vào bảng chỉ mục cho mỗi biến thể của tên người dùng đơn. –

6

tôi muốn nói không: vì bộ sưu tập là có thể thay đổi, và bạn không thể có một khóa chính mà tiếp tục thay đổi theo thời gian.

+0

Chúng ta có thể nói rằng nó không phải là một khóa chính rất hữu ích? –

+0

Nếu tôi hiểu Cassandra hoạt động chính xác như thế nào, cách mà Cassandra được truy vấn là bằng khóa chính? –

+0

@ChrisGerken đúng. Nó sẽ không phải là một định danh duy nhất, đánh bại toàn bộ mục đích của khóa chính –

6

Đã lâu rồi nhưng vì đây là trang đầu tiên trong Google khi bạn tìm kiếm bằng cách sử dụng bản đồ trong khóa chính, tôi nghĩ rằng đáng để cập nhật nó.

Cassandra now allows (Tôi nghĩ từ 2.1) để sử dụng bộ sưu tập trong Khóa chính với điều kiện là bị đóng băng.

A cố định giá trị nối tiếp nhiều thành phần thành một giá trị duy nhất. Các loại không cố định cho phép cập nhật các trường riêng lẻ. Cassandra xử lý giá trị của một loại đông lạnh như một đốm màu. Toàn bộ giá trị phải được ghi đè.

Khi bị đóng băng, bộ sưu tập trở nên cơ bản không thay đổi, không cho phép sửa đổi tại chỗ, do đó, trở nên phù hợp với Khóa chính.

Dưới đây là ví dụ sử dụng danh sách được cố định.

CREATE TABLE test_frozen (
    app_id varchar, 
    kind varchar, 
    properties frozen <list<text>>, 
    PRIMARY KEY ((app_id, kind), properties)); 

Kể từ 2.1, Cassandra cũng cho phép tạo chỉ mục trên cột kiểu bản đồ, tập hợp hoặc danh sách - mặc dù không nhất thiết phải là ý tưởng hay.

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