2013-05-07 46 views
8

Không Apache Cassandra hỗ trợ sharding?Cassandra có hỗ trợ sharding không?

Xin lỗi rằng câu hỏi này có vẻ tầm thường, nhưng tôi dường như không thể tìm thấy câu trả lời. Tôi đã đọc rằng Cassandra đã được mô hình hóa một phần sau Bảng Lớn của GAE. Nhưng hầu hết các tài liệu tôi đang tìm kiếm trên Cassandra dường như ngụ ý rằng Cassandra không phân chia dữ liệu theo chiều ngang trên nhiều máy, mà là hỗ trợ nhiều nhiều máy trùng lặp. Điều này có nghĩa là Cassandra có khả năng đọc tốt, nhưng cuối cùng sẽ bị phá vỡ nếu khối lượng viết trở nên rất cao.

Trả lời

13

Cassandra thực hiện phân vùng trên các nút (vì nếu bạn không thể tách nó, bạn không thể chia tỷ lệ). Tất cả dữ liệu cho một cụm Cassandra được chia thành "vòng" và mỗi nút trên vòng chịu trách nhiệm cho một hoặc nhiều phạm vi chính. Bạn có quyền kiểm soát đối với Phân vùng (ví dụ: Ngẫu nhiên, Đã đặt hàng) và số lượng nút trên vòng một khóa/cột sẽ được sao chép dựa trên yêu cầu của bạn.

Điều này chứa tổng quan khá tốt. Basic architecture

Ngoài ra, tôi khuyên bạn nên đọc giấy trắng Dynamo. Trong khi Cassandra khác với Dynamo theo nhiều cách, khái niệm chúng xuất phát từ cùng một gốc. Hãy khám phá: Dynamo White Paper

+0

Ok, câu hỏi quan trọng: Cassandra có thể được truy vấn bằng cách sử dụng lớn hơn và ít hơn các toán tử trong thời gian Olog (n) không? –

+0

Điều này tùy thuộc vào việc bạn đã sử dụng Phân vùng Ngẫu nhiên hay Sắp xếp. Random Partitioner sẽ phân bố đều trên các nút, vì vậy có thể một truy vấn phạm vi sẽ cần phải nhấn nhiều nhất/tất cả các nút để lấy dữ liệu ... vì vậy có lẽ O (n). Với phân vùng có thứ tự Cassandra có thể xác định chính xác các nút nào để truy vấn và trả về mọi thứ trên vòng ở giữa, nhưng điều này được thực hiện với chi phí phân phối dữ liệu ngay cả (tức là các điểm nóng chào). Có nhiều cách để thực hiện các truy vấn phạm vi (ví dụ: xây dựng chỉ mục của riêng bạn, nơi khóa hàng của bạn là một cột). Điều này đảm bảo một câu hỏi/thảo luận khác. –

+0

Dữ liệu được phân đoạn có được sao chép trên tất cả các nút (các thiết lập để nhân bản) không? – user3587180

-3

có, cassandra hỗ trợ sharding, nhưng theo cách riêng của nó.

Trong Mongodb, mỗi nút phụ chứa đầy đủ dữ liệu của nút chính nhưng trong Cassandra, mỗi nút phụ có trách nhiệm chỉ giữ một số phân vùng chính của dữ liệu.

+7

Bạn đang ghép nối MongoDB [* replication *] (http://docs.mongodb.org/manual/replication/) (nơi thứ hai chứa toàn bộ dữ liệu cho dự phòng) với [* sharding *] (http://docs.mongodb.org/manual/sharding/) (phân vùng cơ sở dữ liệu logic trên một cụm máy). Nói chung nếu bạn đang sharding bạn cũng sẽ muốn có từng mảnh được hỗ trợ bởi một bộ bản sao, nhưng hai khái niệm trong thực tế trực giao. – Stennie