2010-09-04 51 views
11

Tôi làm việc trên cơ sở dữ liệu lớn (hàng trăm GB) và Mysql bây giờ mang lại cho tôi sự hài lòng nhiều hơn hoặc ít hơn. Tôi ngần ngại với cassandra khi ra mắt.Tại sao nosql với cassandra thay vì mysql?

Điều tôi muốn biết mọi thứ trước đây, vì vậy loại DBMS NoSQL này được cho là nhanh hơn MySQL?

số điểm:

  • Sự thay đổi về số lượng các cột trên một hàng Trong Mysql, họ phải tất cả được xác định trước. Các cột được đặt trong cấu trúc của bảng. NoSQL in, chúng có thể khác nhau. Có hiệu suất khác biệt thực sự trên cấu trúc cố định không? và tại sao ?

  • Không làm cho mối quan hệ có lợi cho hiệu suất. Ok nhưng tôi không bắt buộc phải tạo một bảng quan hệ Mysql. Tôi sử dụng các bảng tổng hợp, tức là các bảng mà chỉ chứa dữ liệu được lấy từ các bảng khác, I để ngăn các khớp quá đắt. Một lần nữa sự khác biệt về hiệu suất ở mức độ nào nếu tôi sử dụng mô hình này trong Mysql? Để lấy một ví dụ, tác giả của http://www.rackspacecloud.com/blog/2010/05/12/cassandra-by-example/ chèn X số lần người theo dõi trong tin nhắn USERLINE pusher. Tôi có thể làm điều đó trong MySQL.

  • Khả năng mở rộng, khả năng mở rộng, khả năng mở rộng ... Tôi thích nó, cassandra có cho phép tôi lưu trữ dữ liệu của mình trên các máy chủ khác nhau (không có SAN) không? Tôi không nói ở đây về bản sao, tôi nói về một máy chủ NoSQL duy nhất trên nhiều máy chủ vật lý.

  • Trực tiếp tại các tính toán. MySQL cung cấp các chức năng như tôi như SUM, AVG ... rất hữu ích để tránh tôi phải tập hợp lại dữ liệu của mình trong các bảng khác. Tôi chưa thấy tương đương cassandra?

  • Còn các chỉ mục. Trên Mysql tôi lập chỉ mục một số trường trong một. Ví dụ: các bảng của tôi có khóa chính trên nhiều cột và tôi chọn có chức năng. cassandra về cách viết nó? Các nối cho một định danh duy nhất cho mỗi hàng? Tôi nghĩ rằng tôi đã không hoàn toàn nắm được sự quản lý của các chỉ mục. Được tính toán lại cho sự tích hợp hay ngược dòng?

  • Yêu cầu không đồng bộ. Một đối số sai lầm có vẻ như với tôi, Mysql có thể được thực hiện với INSERT/UPDATE LOW_PRIORITY.

Tôi nghĩ là tôi đi vòng vòng. Cảm ơn bạn đã khai sáng cho tôi.

Trả lời

18

Tôi thực sự không hiểu tại sao mọi người so sánh các nhà cung cấp dữ liệu như Cassandra và MySQL cùng nhau - bạn thực sự so sánh táo và cam ở đây.

Có, các giải pháp NoSQL có thể cung cấp hiệu suất tốt hơn SQL trong một số trường hợp. Nhưng đừng quên lý do chúng cung cấp tốc độ đó - chúng bỏ qua một số kiểm tra mà bạn thường cho là được cấp trong SQL. Ví dụ, bạn sẽ không thấy những thứ như các giao dịch trong một hệ thống NoSQL, cũng như bạn sẽ không có các loại tham gia và các tính năng tổng hợp dữ liệu mà bạn nhận được như là một phần của một hệ thống SQL. Bạn nhận được rất ít bảo đảm đối với tính nhất quán của dữ liệu.

Đối với 99% đơn đăng ký, đơn giản là không đáng để dành thời gian và công sức.Nếu bạn là facebook hoặc twitter, nơi bạn có số lượng dữ liệu phi cấu trúc khổng lồ, nơi bạn không quan tâm nếu bạn thực sự mất một số dữ liệu trong sự lộn xộn của sự vật hoặc có sự chậm trễ liên quan đến dữ liệu sau khi chèn, NoSQL là tốt. Tuy nhiên, đối với phần lớn các ứng dụng, bạn vẫn nên gắn bó với SQL.

Đối với khả năng mở rộng, nếu một trang web khổng lồ như Stack Overflow hoặc Ebay có thể chạy trên đầu trang của SQL, tôi không thấy lý do tại sao ứng dụng của bạn không thể chạy trên đầu trang của SQL.

+0

Tôi không hiểu tại sao có sự khác biệt về hiệu suất, trong trường hợp cấu trúc dữ liệu bằng nhau, vì tôi không thấy rằng mysql không thể làm so với cassandra (nếu không dữ liệu bị phá hủy). Thực tế tôi chạy trên SAS HD 15k tr/phút và tôi đạt đến giới hạn không gian trống miễn phí của tôi trên một máy chủ. Vì vậy, tôi có sự lựa chọn để tạo ra một giải pháp SAN (giải pháp rất tốn kém) hoặc chuyển sang DBMS lưu trữ (và nếu nó được tối ưu hóa thì đó là nhanh nhất), hoặc một lần nữa, một giải pháp phần mềm để nhắm mục tiêu máy chủ chứa dữ liệu đích của tôi. thời gian rất dài để dev). – Xorax

+1

@ Xorax: Ý của bạn là "trong trường hợp cấu trúc dữ liệu bằng nhau"? Nếu bạn thấy sự khác biệt về hiệu suất đáng kể, thì cấu trúc dữ liệu có nhiều khả năng không bằng nhau. Bạn sẽ không đánh bại hầu hết các công cụ SQL một cách dễ dàng. Nếu SQL quá chậm đối với ứng dụng của bạn, tôi nghi ngờ bạn cần thêm các chỉ mục vào đúng vị trí. Hoặc là, hoặc bạn cần phải chuẩn hóa dữ liệu của bạn một chút. –

+1

@BillyONeal Bạn có điểm rất vững chắc ở đó, tại sao cần phải chuyển từ MySQL sang một số DBMS khác khi không có điểm chuyển đổi nó, nhưng đôi khi dựa vào chỉ một DBMS không thể là trái cây đầy đủ theo yêu cầu. Twitter hiện đang sử dụng MySQL cho tất cả các yêu cầu dữ liệu người dùng và Cassandra cho các công cụ phân tích của nó. – FaizanRabbani

3

Có, bạn chắc chắn có thể điều chỉnh một MySQL để cung cấp cho bạn hiệu suất bằng cách cắt giảm rất nhiều chi phí. NoSQL cắt giảm chi phí do không có tính năng để kích hoạt chúng ngay từ đầu.

Các ứng dụng của NoSQL rất khác với cấu trúc SQL truyền thống. Các SQL được mặc định điều chỉnh cho hiệu năng OLTP với các cấu trúc lược đồ chuẩn hóa và khả năng kết nối các truy vấn vv. NoSQL mặt khác là cấu trúc đọc/ghi nhanh. Một ví dụ thực sự tốt sẽ là một nguồn cấp dữ liệu hoạt động trên twitter/facebook (Tôi không biết nếu Twitter/FB sử dụng NoSQL tôi chỉ lấy một ví dụ).

+0

Cassandra được phát triển bởi facebook ban đầu vì vậy vâng họ sử dụng NoSql –

0

playOrm đang giúp ngày càng nhiều hệ thống OLTP có được trên các hệ thống không có SQL. Nó rất giống SQL nhưng có sự khác biệt. Bạn cần phải phân vùng bảng mà bạn mong đợi để phát triển đến các kích thước RẤT LỚN và sau đó có thể truy vấn vào các phân vùng đó. Bạn thậm chí có thể tham gia vào các phân vùng. Bạn giữ kích thước phân vùng của bạn có cùng kích thước với các bảng RDBMS điển hình và bạn có thể mở rộng quy mô cho mong muốn của trái tim mình.

vì vậy đối với các câu hỏi lập chỉ mục và tính toán, tôi nghĩ ngày càng nhiều công cụ sẽ được xây dựng trên hệ thống nosql. Dù sao, đó có thể là một giải pháp cho vấn đề của bạn.

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