Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL Cluster (NDB) so với MySQL Replication (InnoDB) cho ứng dụng Rails 3:ưu / nhược điểm?

Có một so sánh tốt giữa InnoDB và MySQL Cluster (ndb) gần đây được đăng lên tài liệu ... đáng xem: http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-compared.html

Kiến trúc Cụm bao gồm một nhóm Máy chủ MySQL được (các) ứng dụng truy cập; Các Máy chủ MySQL này không thực sự lưu trữ dữ liệu Cụm, dữ liệu được phân vùng trên nhóm các nút dữ liệu bên dưới. Mọi Máy chủ MySQL đều có quyền truy cập vào dữ liệu trong tất cả các nút dữ liệu. Nếu một máy chủ MySQL thay đổi một phần dữ liệu thì tất cả các Máy chủ MySQL khác sẽ hiển thị ngay lập tức.

Rõ ràng, kiến ​​trúc này giúp cho việc mở rộng cơ sở dữ liệu trở nên cực kỳ dễ dàng. Không giống như sharding, ứng dụng không cần biết dữ liệu được lưu trữ ở đâu - nó có thể cân bằng tải trên tất cả các Máy chủ MySQL có sẵn. Không giống như mở rộng với MySQL replication Cluster cho phép bạn mở rộng quy mô ghi cũng như đọc. Các nút dữ liệu mới hoặc máy chủ MySQL có thể được thêm vào một Cụm hiện có mà ứng dụng không mất dịch vụ.

Kiến trúc không chia sẻ của MySQL Cluster có nghĩa là nó có thể mang lại tính khả dụng cực cao (99,999% +). Mỗi khi bạn thay đổi dữ liệu, nó sẽ được sao chép đồng bộ sang một nút dữ liệu thứ hai; nếu một nút dữ liệu bị lỗi thì các yêu cầu đọc và ghi của ứng dụng sẽ tự động được xử lý bởi nút dữ liệu sao lưu.

Do tính chất phân tán của MySQL Cluster, một số hoạt động có thể chậm hơn (ví dụ:JOIN có hàng nghìn kết quả tạm thời - mặc dù có sẵn một giải pháp nguyên mẫu để giải quyết vấn đề này) nhưng những hoạt động khác có thể rất nhanh và có thể mở rộng cực kỳ tốt (ví dụ:chính phím đọc và ghi). Bạn có tùy chọn lưu trữ các bảng (hoặc thậm chí các cột) trong bộ nhớ hoặc trên đĩa và bằng cách chọn tùy chọn bộ nhớ (với các thay đổi được kiểm tra trên đĩa trong backgoround) các giao dịch có thể rất nhanh chóng.

MySQL Cluster có thể phức tạp hơn để thiết lập so với một máy chủ MySQL duy nhất nhưng nó có thể ngăn bạn phải thực hiện phân tách sharding hoặc đọc / ghi trong ứng dụng của mình. Xích đu và bùng binh.

Để có được hiệu suất tốt nhất và khả năng mở rộng của MySQL Cluster, bạn có thể cần phải tinh chỉnh ứng dụng của mình (xem Sách trắng về điều chỉnh hiệu suất của Cluster: http://www.mysql.com/why-mysql/white-papers/mysql_wp_cluster_perfomance.php ). Nếu bạn sở hữu ứng dụng thì đây không phải là vấn đề lớn nhưng nếu bạn đang sử dụng ứng dụng của người khác mà bạn không thể sửa đổi thì đó có thể là một vấn đề.

Lưu ý cuối cùng là nó không cần phải là tất cả hoặc không có gì - bạn có thể chọn lưu trữ một số bảng của mình trong Cluster và một số bằng cách sử dụng các công cụ lưu trữ khác, đây là tùy chọn cho mỗi bảng. Ngoài ra, bạn có thể sao chép giữa Cluster và các công cụ lưu trữ khác (ví dụ:sử dụng Cluster cho cơ sở dữ liệu thời gian chạy của bạn và sau đó sao chép sang InnoDB để tạo các báo cáo phức tạp).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để thay đổi kiểu dữ liệu cho một cột trong MySQL?

  2. HAProxy:Tất cả các tài nguyên của Somenines

  3. Cách dễ nhất để sao chép cơ sở dữ liệu MySQL?

  4. Mysql COUNT (*) trên nhiều bảng

  5. mysql fulltext MATCH, LẠI trả về 0 kết quả