2013-02-19 52 views

Trả lời

75

Tôi không nghĩ là tốt hơn so với những người khác, nó không chỉ là một hay cách khác. Đây là những hệ thống rất khác nhau, mỗi hệ thống đều có điểm mạnh và điểm yếu, vì vậy nó thực sự phụ thuộc vào trường hợp sử dụng của bạn. Họ chắc chắn có thể được sử dụng để bổ sung cho nhau trong cùng một cơ sở hạ tầng.

Để giải thích sự khác biệt tốt hơn, tôi muốn mượn một bức ảnh từ Cassandra: the Definitive Guide, nơi chúng đi qua định lý CAP. Những gì họ nói về cơ bản cho bất kỳ hệ thống phân phối nào, bạn phải tìm sự cân bằng giữa tính nhất quán, tính khả dụngdung sai phân vùng và bạn chỉ có thể thỏa mãn 2 thuộc tính này. Từ đó bạn có thể thấy rằng:

  • Cassandra đáp ứng các AvailabilityPartition Tolerance tài sản.
  • HBase hài lòng Tính nhất quánDung sai phân vùng thuộc tính.

CAP

Khi nói đến Hadoop, HBase được xây dựng trên đầu trang của HDFS, mà làm cho nó khá thuận tiện để sử dụng nếu bạn đã có một chồng Hadoop. Nó cũng được hỗ trợ bởi Cloudera, một bản phân phối doanh nghiệp chuẩn cho Hadoop.

Nhưng Cassandra cũng tích hợp nhiều hơn với Hadoop, cụ thể là Datastax Brisk đang trở nên phổ biến. Bây giờ bạn cũng có thể tự động truyền dữ liệu từ đầu ra của một công việc Hadoop vào một cụm Cassandra bằng cách sử dụng một số định dạng đầu ra do Cassandra cung cấp (ví dụ: BulkOutputFormat), chúng ta không còn là điểm mà Cassandra chỉ là một dự án độc lập.

Theo kinh nghiệm của tôi, tôi đã phát hiện ra rằng Cassandra là tuyệt vời cho ngẫu nhiên đọc, và không quá nhiều cho quét

Để đưa một chút màu sắc cho bức tranh, tôi đã sử dụng cả hai tại công việc của tôi trong cùng một cơ sở hạ tầng, và HBase có một mục đích rất khác với Cassandra. Tôi đã sử dụng Cassandra chủ yếu cho thời gian thực tra cứu rất nhanh, trong khi tôi đã sử dụng HBase nhiều hơn cho các công việc hàng loạt ETL nặng với yêu cầu độ trễ thấp hơn.

Đây là câu hỏi thực sự xứng đáng với một bài đăng trên blog, vì vậy thay vì tiếp tục, tôi muốn chỉ cho bạn an article tổng hợp nhiều điểm khác biệt giữa 2 hệ thống. Điểm mấu chốt là, không có IMHO giải pháp vượt trội, và bạn thực sự nên suy nghĩ về các trường hợp sử dụng của bạn để xem hệ thống nào phù hợp hơn.

+0

Làm thế nào MySql có thể có sẵn trong biểu đồ của bạn? Tính khả dụng được xác định như thế nào? Nó không có ý nghĩa với tôi, tôi nghĩ rằng bạn phải lựa chọn giữa C hoặc A, không phải bất kỳ 2. http://codahale.com/you-cant-sacrifice-partition-tolerance/ – user1944408

+1

@ user1944408 Tất nhiên trong mọi hệ thống có một cảm giác thỏa hiệp, điều này đơn giản là minh họa cho các phụ thuộc trượt. Bạn không thể nhận được 100% của một tài sản trong khi giữ lại 100% tài sản khác, bạn phải thực hiện một số thỏa thuận. Bài viết của bạn đưa ra giả định về dung sai phân vùng, vì vậy tất nhiên bạn không thể có cả tính nhất quán và tính khả dụng với giả định này. Như được lấy từ cùng một cuốn sách, các hệ thống trên dòng CA có thể là các cam kết 2 pha cho các giao dịch phân tán, do đó hệ thống sẽ chặn khi một phân vùng mạng xảy ra. –

+1

Điều đó có nghĩa là chúng không có sẵn khi phân vùng xảy ra, phải không? Nhưng điều đó cũng tương tự với HBase vì vậy nó có nghĩa là HBase là CA. Tôi nghĩ rằng các cơ sở dữ liệu có thể là CP hoặc AP nhưng không phải là CA. Thuộc tính nào của cơ sở dữ liệu CA không được chứa trong cơ sở dữ liệu CP? Bạn có thể cho tôi một ví dụ? Nếu một phân vùng xảy ra sự khác nhau giữa HBase và MySql bị phân mảnh là gì? – user1944408

14

Chúng tôi phải so sánh ưu điểm & chống lại cả hai cơ sở dữ liệu và đưa ra quyết định bảo vệ tùy thuộc vào yêu cầu kinh doanh.

Cassandra

Ưu điểm:

  1. Thỏa mãn Availability & Phân vùng của CAP lý thuyết & cuối cùng phù hợp.
  2. Scalable với cụm lớn với Không Single Point lần không thành
  3. SQL như ngôn ngữ để phát triển cho phép các nhà phát triển dễ dàng chuyển từ RDBMS nền
  4. Cassandra có tuyệt vời đơn hàng đọc hiệu suất miễn như ngữ nghĩa nhất quán cuối cùng là đủ cho các trường hợp sử dụng
  5. Hỗ trợ từ Datastax là lợi thế lớn
  6. Tối ưu hóa cho viết

Nhược điểm:

  1. Không hỗ trợ Phạm vi dựa hàng-quét
  2. Không hỗ trợ Atomic So sánh và Set
  3. Cassandra làm không hỗ trợ đồng bộ xử lý chức năng y`
  4. Cassandra hỗ trợ chỉ mục phụ trên họ cột nơi tên cột được biết. (Không phải trên cột động).
  5. tính gộp trong Cassandra không được hỗ trợ bởi Cassandra các nút

HBase

Ưu điểm:

  1. mạnh nhất quán và đáp ứng C onsistency & Phân vùng trong số CAP lý thuyết.
  2. RDBMS tương đương gây & lưu trữ thủ tục
  3. Hadoop hỗ trợ
  4. Phạm vi dựa Row quét
  5. Hỗ trợ Atomic So sánh và Set
  6. Tối ưu hóa cho đọc, được hỗ trợ bởi đơn vị viết r
  7. Hỗ trợ cho Aggregation
  8. khả năng mở rộng cao & dữ liệu tự động sharding

Nhược điểm:

  1. Thiếu ngôn ngữ thân thiện cho sự phát triển
  2. Không s upport đọc Balancing chống lại một hàng duy nhất Tải
  3. hoạt động liên hàng là không nguyên tử
  4. Độc điểm lỗi nếu chỉ có một HBase Thạc sĩ đã được sử dụng

Có một cái nhìn tại article 1, article 2 và điều này presentation để biết thêm chi tiết.