MongoDB có nhất quán mạnh mẽ không?
Trong bài viết này, tôi sẽ nói về định lý CAP và vị trí của các cơ sở dữ liệu được sử dụng nhiều nhất này trong định lý CAP và một chút về các hệ thống này Show CAP là viết tắt của Tính nhất quán, Tính khả dụng và Dung sai Phân vùng Tính nhất quán có nghĩa là, nếu bạn ghi dữ liệu vào hệ thống phân tán, bạn sẽ có thể đọc cùng một dữ liệu tại bất kỳ thời điểm nào từ bất kỳ nút nào của hệ thống hoặc chỉ cần trả về lỗi nếu dữ liệu ở trạng thái không nhất quán. Không bao giờ trả lại dữ liệu không nhất quán
Tính khả dụng có nghĩa là hệ thống phải luôn thực hiện đọc/ghi thành công trên bất kỳ nút nào không bị lỗi của cụm mà không có bất kỳ lỗi nào. Đây là tính khả dụng chủ yếu liên quan đến phân vùng mạng. tôi. e. trong sự hiện diện của phân vùng mạng cho dù một nút trả về phản hồi thành công hay lỗi cho thao tác đọc/ghi
Dung sai phân vùng có nghĩa là, nếu có một phân vùng giữa các nút hoặc các phần của cụm trong một hệ thống phân tán không thể nói chuyện với nhau, thì hệ thống vẫn hoạt động Định lý CAP là gì?Một hệ thống phân tán luôn cần có khả năng chịu phân vùng, chúng ta không nên tạo một hệ thống mà một phân vùng mạng sẽ làm hỏng toàn bộ hệ thống. Vì vậy, nói một cách đơn giản, định lý CAP có nghĩa là nếu có phân vùng mạng và nếu bạn muốn hệ thống của mình tiếp tục hoạt động, bạn có thể cung cấp Tính khả dụng hoặc Tính nhất quán chứ không phải cả hai Hệ thống phân tán phá vỡ tính nhất quán hoặc tính khả dụng như thế nào?Kịch bản 1. Không gửi được yêu cầu cập nhật đến các nút khác. Trong sơ đồ trên, nút N1 nhận được yêu cầu cập nhật id 2 và cập nhật mức lương từ 800 lên 1000. Nhưng do có phân vùng mạng nên N1 không thể gửi bản cập nhật mới nhất cho N2 Vì vậy, khi yêu cầu đọc đến N2, nó có thể thực hiện một trong hai việc
kịch bản 2. Hệ thống dựa trên Nhà lãnh đạo duy nhất trong đó việc đọc và ghi đến với nhà lãnh đạo và tất cả các nút khác được cập nhật từ nhà lãnh đạo và duy trì chế độ chờ trong trường hợp nhà lãnh đạo gặp sự cố Vấn đề với hệ thống này là, nếu người lãnh đạo ngắt kết nối khỏi cụm hoặc máy khách không thể kết nối với người lãnh đạo do phân vùng mạng giữa máy khách và người lãnh đạo, hệ thống không thể chấp nhận yêu cầu ghi cho đến khi người lãnh đạo mới được chọn. Làm cho các loại hệ thống này nhất quán và không khả dụng Một hệ thống dựa trên nhà lãnh đạo duy nhất chấp nhận đọc và ghi, không bao giờ được phân loại theo Tính khả dụng MongoDB so với Cassandra so với RDBMS trong Định lý CAP Nhiều người trong chúng ta đã nhìn thấy sơ đồ dưới đây. Cơ sở dữ liệu trong định lý CAP. Việc phân loại cơ sở dữ liệu này không hoàn toàn chính xác RDBMS (MySQL, Oracle, MS SQL Server, v.v.)Không có gì phải bàn cãi khi tất cả các RDBMS đều nhất quán vì tất cả các lần đọc và ghi đều chuyển đến một nút/máy chủ duy nhất Làm thế nào về sự sẵn có? . Vì vậy, làm thế nào nó được phân loại theo Tính khả dụng? Như tôi đã nói trước đó Tính khả dụng của CAP không giống như tính khả dụng/thời gian ngừng hoạt động hàng ngày mà chúng ta nói đến. Trong một hệ thống nút duy nhất, sẽ không có bất kỳ phân vùng mạng nào do đó nếu nút hoạt động, nó sẽ luôn trả về thành công cho bất kỳ thao tác đọc/ghi nào và do đó khả dụng Điều gì xảy ra khi bạn sao chép các Cơ sở dữ liệu quan hệ này? Chúng tôi có thể tạo các hệ thống như vậy bằng cách sử dụng bất kỳ hệ thống quản lý cụm nào như Zookeeper hoặc etcd Vậy điều này có nghĩa là các cơ sở dữ liệu quan hệ sao chép này có sẵn không?
Điều gì về tính nhất quán khi dữ liệu được sao chép?
Tóm lại, cơ sở dữ liệu quan hệ có thể có thời gian ngừng hoạt động hoặc không khả dụng nhưng nó luôn ở trạng thái CAP-Available. Những điều bạn nên biết về MongoDB
Tính nhất quán và tính khả dụng trong MongoDB cảnh 1. Hành vi mặc định - Cả đọc và viết từ chính/lãnh đạo Theo mặc định, Mongo DB Client (trình điều khiển MongoDB), gửi tất cả các yêu cầu đọc/ghi tới nút chính/lãnh đạo Một lần nữa, hành vi mặc định này cho phép Mongo DB trở thành một hệ thống nhất quán nhưng không khả dụng vì những lý do dưới đây
Vì vậy, nếu chúng ta sử dụng ứng dụng khách MongoDB với hành vi mặc định của nó, thì MongoDB sẽ hoạt động như một hệ thống Nhất quán và không Khả dụng kịch bản 2. Cho phép đọc từ phụ Như chúng ta đã thấy trong kịch bản trước khi một nhà lãnh đạo mới được bầu hoặc nếu khách hàng ngắt kết nối với nhà lãnh đạo. Hệ thống của chúng tôi không có sẵn cho cả đọc và viết Làm cách nào để chúng tôi thay đổi điều đó và làm cho hệ thống có sẵn để đọc? Chúng ta có thể chỉ cần định cấu hình chế độ tùy chọn đọc trong ứng dụng khách MongoDB để đọc từ bất kỳ nút phụ nào. Làm cách nào chúng tôi có thể giải quyết vấn đề trên trong MongoDB và làm cho hệ thống trở nên “nhất quán cao” ngay cả khi các lần đọc đang chuyển sang nhiều nút phụ? MongoDB giải quyết vấn đề này bằng cách sử dụng "viết quan tâm" Trong khi ghi dữ liệu vào MongoDB, bạn có thể chuyển một tùy chọn ghi. Đề cập đến số lượng nút mà dữ liệu sẽ được ghi để ghi thành công hoặc bạn có thể chuyển "đa số", cho biết ghi sẽ thành công nếu chính nhận được xác nhận từ phần lớn các nút.
Tóm lại, MongoDB có thể luôn Nhất quán dựa trên cách bạn định cấu hình máy khách của mình và cách bạn ghi dữ liệu (sử dụng tùy chọn ghi) và có thể luôn sẵn sàng để đọc nhưng bạn không bao giờ có thể luôn sẵn sàng ghi, sẽ luôn luôn có sẵn . Trong Cassandra, bất kỳ nút điều phối viên nào cũng có thể chấp nhận yêu cầu đọc hoặc ghi và chuyển tiếp yêu cầu tới các bản sao tương ứng dựa trên khóa phân vùng. Do đó, ngay cả khi một bản sao/nút bị hỏng, những nút khác có thể phục vụ các yêu cầu đọc/ghi. Vì vậy, có an toàn không khi nói rằng Cassandra luôn khả dụng? Trong Cassandra, chúng ta có thể xác định hệ số sao chép. Nếu được đặt thành 3, Cassandra sẽ sao chép dữ liệu thành ba nút cảnh 1. Trường hợp mặc định — Không có mức nhất quán nào được xác định Trong trường hợp này, khi một lệnh ghi được gửi tới bất kỳ nút nào, nút đó sẽ trả về thành công khi dữ liệu được ghi vào nút đó. Nếu vì lý do nào đó, bản sao thứ ba không nhận được bản sao dữ liệu được cập nhật, thì đó có thể là do độ trễ hoặc phân vùng mạng hoặc bạn vừa làm mất gói. Do đó, trong cài đặt mặc định của nó, Cassandra được phân loại là AP (Có sẵn và Dung sai phân vùng) kịch bản 2. Đọc/Ghi yêu cầu với các mức nhất quán Trong Cassandra, chúng ta có thể xác định mức độ nhất quán đọc/ghi trong ứng dụng khách Cassandra trong khi tạo Phiên Cassandra Mức nhất quán tác động đến việc ghi như thế nào? Mức nhất quán ảnh hưởng đến việc đọc như thế nào? Vì vậy, chỉ bằng cách đặt mức nhất quán thành QUORUM(đa số) nhất quán. Vì các cài đặt mức nhất quán này được áp dụng cho cả đọc và ghi. Chúng tôi có thể đạt được tính nhất quán 100% Vậy, điều gì sẽ xảy ra với Tính khả dụng? Tóm lại, Cassandra luôn khả dụng nhưng một khi chúng tôi bắt đầu điều chỉnh nó để nhất quán hơn, chúng tôi sẽ mất tính khả dụng Bảng tóm tắtBảng dưới đây tóm tắt vị trí của mỗi DB với một bộ cấu hình khác nhau dựa trên định lý CAP Tại sao MongoDB không nhất quán?Theo mặc định, Máy khách Mongo DB (trình điều khiển MongoDB), gửi tất cả các yêu cầu đọc/ghi tới nút chính/nút chính. Một lần nữa, hành vi mặc định này cho phép Mongo DB trở thành một hệ thống nhất quán nhưng không khả dụng vì những lý do dưới đây. Nếu một người lãnh đạo ngắt kết nối khỏi cụm, sẽ mất vài giây để chọn một người lãnh đạo mới .
MongoDB có nhất quán có thể điều chỉnh được không?Để cung cấp cho người dùng một tập hợp các tùy chọn nhất quán có thể điều chỉnh, MongoDB hiển thị các cấp độ writeConcern và readConcern , là các tham số có thể được đặt trên từng cấp độ . writeConcern chỉ định mức độ đảm bảo độ bền mà một lần ghi phải đáp ứng trước khi được xác nhận cho khách hàng.
Điểm mạnh của MongoDB là gì?Ưu điểm của MongoDB . Nền tảng dữ liệu dành cho nhà phát triển dựa trên đám mây đầy đủ Lược đồ tài liệu linh hoạt Truy cập dữ liệu gốc và được hỗ trợ rộng rãi Thiết kế thân thiện với thay đổi Truy vấn và phân tích mạnh mẽ Dễ dàng mở rộng theo chiều ngang với sharding Cài đặt đơn giản hiệu quả về chi phí MongoDB có dễ mở rộng không?Là một dịch vụ cung cấp, MongoDB Atlas giúp mở rộng quy mô dễ dàng như đặt đúng cấu hình . Cả tỷ lệ ngang và dọc đều được hỗ trợ. Chia tỷ lệ theo chiều dọc cũng đơn giản như định cấu hình tầng cụm. Lưu ý rằng ngay cả trong một bậc, vẫn có thể mở rộng quy mô hơn nữa (bao gồm tự động chia tỷ lệ từ bậc M10 trở lên). |