Sự khác biệt giữa Shending và Tái tạo trên MongoDB


77

Tôi chỉ nhầm lẫn về Shending và Tái tạo rằng cách chúng hoạt động..Theo Định nghĩa

Bản sao: Một bộ bản sao trong MongoDB là một nhóm các quy trình mongod duy trì cùng một bộ dữ liệu.

Shending: Shending là phương pháp lưu trữ dữ liệu trên nhiều máy.

Theo hiểu biết của tôi nếu có dữ liệu 75 GB thì sao chép (3 máy chủ), nó sẽ lưu trữ dữ liệu 75 GB trên mỗi máy chủ nghĩa là 75 GB trên Máy chủ-1, 75 GB trên máy chủ-2 và 75 GB trên máy chủ-3 .. (sửa cho tôi nếu tôi sai) .. và bằng cách bảo vệ, nó sẽ được lưu trữ dưới dạng dữ liệu 25GB trên máy chủ-1, dữ liệu 25Gb trên máy chủ-2 và 25GB dữ liệu trên máy chủ-3. (Phải không?) ... nhưng sau đó tôi gặp phải dòng này trong hướng dẫn

Phân đoạn lưu trữ dữ liệu. Để cung cấp tính sẵn sàng cao và thống nhất dữ liệu, trong cụm phân đoạn sản xuất, mỗi phân đoạn là một bộ bản sao

Vì bộ sao chép là 75 GB nhưng shard là 25 GB thì làm sao chúng có thể tương đương ... điều này khiến tôi bối rối rất nhiều ... Tôi nghĩ rằng tôi đang thiếu một cái gì đó tuyệt vời trong việc này. Xin hãy giúp tôi trong việc này.

Câu trả lời:


111

Bộ bản sao có nghĩa là bạn có nhiều phiên bản MongoDB, mỗi phiên bản phản ánh tất cả dữ liệu của nhau. Một bộ bản sao bao gồm một Master (còn được gọi là "Chính") và một hoặc nhiều nô lệ (còn gọi là Trung học). Hoạt động đọc có thể được phục vụ bởi bất kỳ nô lệ nào, vì vậy bạn có thể tăng hiệu suất đọc bằng cách thêm nhiều nô lệ vào bộ bản sao (với điều kiện ứng dụng khách của bạn có khả năng thực sự sử dụng các thành viên khác nhau). Nhưng các thao tác ghi luôn diễn ra trên tổng thể của bản sao và sau đó được truyền tới các nô lệ, vì vậy việc ghi sẽ không nhanh hơn khi bạn thêm nhiều nô lệ.

Bản sao cũng cung cấp khả năng chịu lỗi. Khi một trong các thành viên của bộ bản sao bị hỏng, những người khác sẽ tiếp quản. Khi chủ xuống, nô lệ sẽ bầu một chủ mới. Vì lý do đó, đề xuất triển khai hiệu quả là luôn sử dụng MongoDB như một bộ bản sao của ít nhất ba máy chủ, hai trong số chúng giữ dữ liệu (máy thứ ba là "trọng tài" không cần dữ liệu để xác định chủ mới khi một trong những nô lệ đi xuống).

Một cụm Sharded có nghĩa là mỗi phân đoạn của cụm (mà cũng có thể là một bản sao-set) chăm sóc một phần của dữ liệu. Mỗi yêu cầu, cả đọc và ghi, được phục vụ bởi cụm nơi chứa dữ liệu. Điều này có nghĩa là cả hiệu suất đọc và ghi có thể được tăng lên bằng cách thêm nhiều phân đoạn vào một cụm. Tài liệu nào nằm trên phân đoạn nào được xác định bởi khóa phân đoạn của mỗi bộ sưu tập. Nó nên được chọn theo cách mà dữ liệu có thể được phân phối đồng đều trên tất cả các cụm và sao cho rõ ràng cho các truy vấn phổ biến nhất nơi khóa shard nằm (ví dụ: khi bạn thường xuyên truy vấn user_name, khóa shard của bạn sẽ bao gồm trường user_nameđể mỗi truy vấn có thể được ủy quyền cho chỉ một phân đoạn có tài liệu đó).

Hạn chế là khả năng chịu lỗi. Khi một phân đoạn của cụm bị hỏng, mọi dữ liệu trên đó đều không thể truy cập được. Vì lý do đó, mỗi thành viên của cụm cũng phải là một bộ bản sao. Điều này là không bắt buộc. Khi bạn không quan tâm đến tính sẵn sàng cao, phân đoạn cũng có thể là một trường hợp mongod duy nhất mà không cần sao chép . Nhưng để sử dụng sản xuất, bạn nên luôn luôn sử dụng nhân rộng .

Vì vậy, điều đó có nghĩa gì cho ví dụ của bạn?

                            Sharded Cluster             
             /                    |                    \
      Shard A                  Shard B                  Shard C
        / \                      / \                      / \
+-------+ +---------+    +-------+ +---------+    +-------+ +---------+
|Primary| |Secondary|    |Primary| |Secondary|    |Primary| |Secondary|
|  25GB |=| 25GB    |    | 25 GB |=| 25 GB   |    | 25GB  |=| 25GB    |   
+-------+ +---------+    +-------+ +---------+    +-------+ +---------+

Khi bạn muốn chia dữ liệu 75GB của mình thành 3 phân đoạn 25 GB mỗi dữ liệu, bạn cần ít nhất 6 máy chủ cơ sở dữ liệu được tổ chức thành ba bộ sao. Mỗi bộ bản sao bao gồm hai máy chủ có cùng 25GB dữ liệu.

Bạn cũng cần các máy chủ cho các trọng tài của ba bộ bản sao cũng như bộ định tuyến mongos và máy chủ cấu hình cho cụm. Các trọng tài rất nhẹ và chỉ cần thiết khi một thành viên thiết lập bản sao bị hỏng, vì vậy họ thường có thể chia sẻ cùng một phần cứng với thứ khác. Nhưng bộ định tuyến và máy chủ cấu hình Mongos nên dự phòng và trên các máy chủ của riêng họ.


2
Cảm ơn rất nhiều về câu trả lời chi tiết ... thêm một câu hỏi nữa ... nếu chính bị hỏng trong khi thao tác ghi hoặc đọc đang được thực hiện sau đó..1) sự chậm trễ trong việc chọn chính từ phụ và 2) Trong thời gian trễ đó, dữ liệu sẽ được lưu trữ tạm thời ở đâu?
Saad Saadi

4
@SaadSaadi Quá trình bầu cử chính được mô tả trong tài liệu . Phải mất từ ​​10 đến 12 giây để những người thứ hai nhận thấy rằng bản chính bị hỏng. Cuộc bầu cử sơ bộ thường sẽ chỉ mất một phần nghìn giây. Bộ bản sao chỉ đọc trong khi không có chính. Mọi nỗ lực từ các ứng dụng để ghi dữ liệu trong thời gian này sẽ thất bại.
Philipp

1
@Philipp: Chỉ cần hai nhận xét: (1) khóa shard không thể được sửa đổi (nghĩa là bạn không thể shard bằng một khóa khác) và (2) bạn có thể đọc từ các nút phụ của bộ bản sao nhưng tính nhất quán phụ thuộc vào mối quan tâm ghi (trong để thống nhất, tùy chọn w phải bằng với bộ sao chép sth không khả thi vì mỗi phân đoạn có thể có các kích thước bộ sao chép khác nhau có chủ ý hoặc do lỗi nút).
Mike Argyriou

@Philipp bạn có thể vui lòng trả lời các câu hỏi tiếp theo trên dba.stackexchange.com/questions/208482/ không?
dùng3198603

18
  • Sharding phân vùng dữ liệu thiết lập thành các phần rời rạc.
  • Bản sao nhân đôi tập dữ liệu.

Hai thứ này có thể xếp chồng lên nhau vì chúng khác nhau. Sử dụng cả hai nghĩa là bạn sẽ phân chia tập dữ liệu của mình trên nhiều nhóm bản sao. Nói cách khác, bạn tái tạo mảnh vỡ; một tập dữ liệu không có phân đoạn là một 'phân đoạn' duy nhất.

Một cụm Mongo với ba phân đoạn và 3 bản sao sẽ có 9 nút.

  • 3 bộ bản sao 3 nút.
  • Mỗi bộ sao giữ một mảnh duy nhất.

Đối với một tệp lớn, nó được lưu trữ vào một phân đoạn hay nhiều phân đoạn (do đó trên các nút)?
Tony

Lưu ý rằng trong MongoDB 3.4 trở lên, bạn cũng sẽ cần các máy chủ mongoDB để cấu hình và một máy chủ bổ sung để hoạt động như bộ định tuyến mongos. Điều này đưa tổng số cụm 3x3 trong ví dụ của bạn lên tổng số 13 máy chủ.
dthrasher

9

Bằng cách shending , bạn chia bộ sưu tập của bạn thành nhiều phần.
Sao chép cơ sở dữ liệu của bạn có nghĩa là bạn tạo các bản sao của tập dữ liệu của mình.


4

Về mặt chức năng giao. Shending cung cấp khả năng mở rộng và song song. Nhân rộng cung cấp sẵn có


Không, sao chép chỉ cung cấp khả năng mở rộng & song song cho rằng việc đọc thường xuyên hơn nhiều so với viết
Kristóf Szalay
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.