Kiến trúc cơ sở dữ liệu master-master vs master-slave?


117

Tôi đã nghe nói về hai loại kiến ​​trúc cơ sở dữ liệu.

  • ông chủ ông chủ

  • chủ-nô

Không phải master-master phù hợp hơn với web ngày nay vì nó giống như Git, mọi đơn vị đều có toàn bộ tập hợp dữ liệu và nếu một đơn vị bị hỏng, nó không hoàn toàn quan trọng.

Master-slave nhắc tôi về SVN (mà tôi không thích) nơi bạn có một đơn vị trung tâm xử lý mọi thứ.

Câu hỏi:

  1. Ưu và nhược điểm của từng loại là gì?

  2. Nếu bạn muốn có một cơ sở dữ liệu cục bộ trong điện thoại di động của mình như iPhone, thì cái nào thích hợp hơn?

  3. Sự lựa chọn của một trong những điều này có phải là một yếu tố quan trọng để xem xét kỹ lưỡng?


1
Định lý CAP -> Dung sai phân vùng sẵn có nhất quán nói rằng bạn không thể có cả ba cùng nhau. Tùy thuộc vào ứng dụng, bạn có thể chọn một trong hai.
Pritam Banerjee

Câu trả lời:


87

Chúng tôi đang đánh đổi tính khả dụng, nhất quán và phức tạp. Để giải quyết câu hỏi cuối cùng trước tiên: Điều này có quan trọng không? Vâng rất nhiều! Các lựa chọn liên quan đến cách quản lý dữ liệu của bạn là hoàn toàn cơ bản và không có "Phương pháp hay nhất" nào né tránh các quyết định. Bạn cần hiểu các yêu cầu cụ thể của mình.

Có một căng thẳng cơ bản:

Một bản sao: sự nhất quán rất dễ dàng, nhưng nếu nó xảy ra sự cố thì mọi người đều ở ngoài nước, và nếu mọi người ở xa thì có thể phải trả chi phí liên lạc khủng khiếp. Mang các thiết bị di động, có thể cần hoạt động không kết nối, vào ảnh và một bản sao sẽ không cắt nó.

Master Slave: tính nhất quán không quá khó vì mỗi phần dữ liệu có chính xác một master sở hữu. Nhưng sau đó bạn sẽ làm gì nếu bạn không thể nhìn thấy chủ nhân đó, một số loại công việc hoãn lại là cần thiết.

Master-Master: tốt nếu bạn có thể làm cho nó hoạt động thì nó dường như cung cấp tất cả mọi thứ, không có điểm thất bại nào, mọi người đều có thể làm việc mọi lúc. Vấn đề với điều này là rất khó để giữ được tính nhất quán tuyệt đối. Xem bài viết wikipedia để biết thêm.

Wikipedia dường như có một bản tóm tắt tốt đẹp về những ưu điểm và nhược điểm

Ưu điểm

  • Nếu một cái không thành công, những cái khác sẽ tiếp tục cập nhật cơ sở dữ liệu.

  • Thạc sĩ có thể được đặt ở một số trang web vật lý, tức là được phân phối trên mạng.

Nhược điểm

  • Hầu hết các hệ thống sao chép nhiều chủ chỉ nhất quán lỏng lẻo, tức là lười biếng và không đồng bộ, vi phạm các thuộc tính ACID.

  • Hệ thống sao chép háo hức rất phức tạp và gây ra một số độ trễ giao tiếp.

  • Các vấn đề như giải quyết xung đột có thể trở nên khó chữa khi số lượng các nút liên quan tăng lên và độ trễ cần thiết giảm xuống.


CouchDB sử dụng MVCC. Loại này có xử lý được vấn đề nhất quán gặp phải khi nhiều bản chính gây ra khi tôi đưa trực tuyến trở lại hay không, hệ thống lập phiên bản xử lý tính nhất quán và bản chính này sẽ nhận được dữ liệu cập nhật chính xác.
never_had_a_name

8
Nhưng điều gì sẽ xảy ra khi hai người dùng làm điều gì đó mâu thuẫn - chẳng hạn như hai người dùng cố gắng mua món hàng cuối cùng trong kho? Hãy tưởng tượng một kịch bản trong đó chúng ta có hai bậc thầy và mỗi người dùng gặp một bậc thầy khác nhau, sau đó chúng ta gặp một số trục trặc trong giao tiếp - cuối cùng sẽ có sự ảnh hưởng đến tính toàn vẹn hoặc giảm tính khả dụng - một người dùng được thông báo rằng "xin lỗi bạn đời, Tôi thực sự không biết chuyện gì đang xảy ra cho đến khi tôi nói chuyện với người chủ khác ", hoặc chúng tôi có một cuộc tâm sự khó chịu khi các liên kết được khôi phục - và những điều đó có thể trở nên thực sự phức tạp.
djna

2
Giao dịch tài chính hoặc thị trường chứng khoán sử dụng gì? Họ sẽ đánh vấn đề này mọi lúc?
CMCDragonkai

3
Khi bạn cần một "sự thật" duy nhất, cập nhật (như trong các hệ thống tài chính), bạn cần Master / Slave hoặc thực sự chỉ là Master. Nơi bạn có thể vá sự thật sau này (nghĩ rằng hợp nhất các xung đột trong một hệ thống kiểm soát sửa đổi như Git) thì bạn có thể sử dụng Master / Master.
djna

djna thực hiện một quan sát rất nổi bật. Cơ sở dữ liệu bây giờ phải có một số loại logic "tiebreaker". Điều gì là quan trọng nhất? Dữ liệu "gần đây nhất"? Điều đó có ý nghĩa nếu bạn đang viết lại một trường, nhưng sẽ không hợp lý nếu bạn đang thực hiện "bộ đếm" và bạn cần tất cả các quy trình để tăng (hoặc giảm) trước khi trả về kết quả. Đặc biệt là bạn không bán các mặt hàng hết hàng. Nếu bạn có một phân vùng mạng, điều gì sẽ xảy ra khi nó trở lại với nhau? Tất cả những thứ này đều là thứ CAP theorum. Đây cũng là nơi bạn có thể có các thuật toán như Paxos, để phát triển sự đồng thuận giữa các máy khác nhau.
Peter Corless

95

Trong khi nghiên cứu các kiến ​​trúc cơ sở dữ liệu khác nhau. Tôi đã tổng hợp một số thông tin hữu ích có thể liên quan đến những người khác đang nghiên cứu trong tương lai. Tôi đã xem qua

  1. Master-Slave Replication
  2. Master-Master Replication
  3. Cụm MySQL

Tôi đã quyết định sử dụng MySQL Cluster cho trường hợp sử dụng của mình. Tuy nhiên, vui lòng xem bên dưới để biết những ưu và nhược điểm khác nhau mà tôi đã tổng hợp

1. Bản sao Master-Slave

Ưu điểm

  • Các ứng dụng phân tích có thể đọc từ (các) ứng dụng phụ mà không ảnh hưởng đến ứng dụng chính
  • Bản sao lưu của toàn bộ cơ sở dữ liệu tương đối không ảnh hưởng đến bản chính
  • Các nô lệ có thể được đưa vào ngoại tuyến và đồng bộ hóa trở lại trang chủ mà không có bất kỳ thời gian chết nào

Nhược điểm

  • Trong trường hợp thất bại, một nô lệ phải được thăng cấp lên thành chủ để tiếp quản vị trí của nó. Không có chuyển đổi dự phòng tự động
  • Thời gian ngừng hoạt động và có thể mất dữ liệu khi lỗi chính
  • Tất cả các ghi cũng phải được thực hiện cho chủ trong thiết kế chủ-tớ
  • Mỗi nô lệ bổ sung thêm một số tải cho bản chính vì nhật ký nhị phân phải được đọc và dữ liệu được sao chép vào mỗi nô lệ
  • Ứng dụng có thể phải được khởi động lại

2. Nhân bản Master-Master

Ưu điểm

  • Ứng dụng có thể đọc từ cả hai bản gốc
  • Phân phối tải ghi trên cả hai nút chính
  • Chuyển đổi dự phòng đơn giản, tự động và nhanh chóng

Nhược điểm

  • Nhất quán lỏng lẻo
  • Không đơn giản như master-slave để cấu hình và triển khai

3. Cụm MySQL

Đứa trẻ mới trong thị trấn dựa trên thiết kế cụm MySQL. MySQL cluster được phát triển với tính sẵn sàng và khả năng mở rộng cao và là giải pháp lý tưởng được sử dụng cho các môi trường không yêu cầu thời gian chết, khả năng phổ biến cao và khả năng mở rộng theo chiều ngang.

Xem MySQL Cluster 101 để biết thêm thông tin

Ưu điểm

  • (Tính khả dụng cao) Không có điểm hỏng hóc nào
  • Thông lượng rất cao
  • 99,99% thời gian hoạt động
  • Tự động làm sắc nét
  • Phản hồi thời gian thực
  • Hoạt động trực tuyến (thay đổi lược đồ, v.v.)
  • Viết phân tán

Nhược điểm

Bạn có thể truy cập để biết thông tin chi tiết đầy đủ về Blog của tôi bao gồm các sơ đồ kiến ​​trúc đi sâu hơn vào chi tiết về 3 kiến ​​trúc được đề cập.


2
Bạn cũng có thể viết gì đó về Galera? Percona XtraDB Cluster?
Ivanov

"Ứng dụng có thể phải được khởi động lại" là một phần của khuyết điểm. Nó có nghĩa là gì?
Lily

1
Nếu bạn phải thay đổi IP của máy chủ DB thì nó cũng cần được cấu hình trong ứng dụng để đọc từ máy chủ mới được bầu chọn. Do đó, bạn có thể cần phải khởi động lại ứng dụng của mình để chọn cài đặt cấu hình mới. Tất cả phụ thuộc vào thiết lập hiện tại của bạn. Bạn cũng có thể sử dụng một IP nổi để bỏ qua điều này. Chỉ để cung cấp cho bạn một ý tưởng chung
Skillachie
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.