Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon MongoDB xử lý việc di chuyển dữ liệu giữa các phân đoạn như thế nào


MongoDB xử lý việc di chuyển dữ liệu giữa các phân đoạn như thế nào


MongoDB xử lý việc di chuyển dữ liệu giữa các phân đoạn thông qua quy trình cân bằng. Bộ cân bằng chịu trách nhiệm đảm bảo rằng dữ liệu được phân bổ đồng đều trên các phân đoạn trong cụm phân đoạn. Dưới đây là các bước liên quan đến việc di chuyển dữ liệu giữa các phân đoạn:

1. Cân bằng

- Cân bằng tự động: MongoDB tự động cân bằng dữ liệu bằng cách di chuyển các phần từ phân đoạn này sang phân đoạn khác. Điều này đảm bảo rằng dữ liệu được phân bổ đồng đều trên các phân đoạn.

2. Di chuyển theo đoạn

- Di chuyển thủ công: MongoDB có thể thực hiện di chuyển đoạn thủ công cho các bộ sưu tập cụ thể. Điều này rất hữu ích cho việc phân phối dữ liệu trong quá trình chèn số lượng lớn.

3. Di chuyển phạm vi

- Di chuyển phạm vi tự động: MongoDB di chuyển dữ liệu từng phạm vi một. Bộ cân bằng không đợi giai đoạn xóa của quá trình di chuyển hiện tại hoàn tất trước khi bắt đầu quá trình di chuyển phạm vi tiếp theo.

4. Phân chia lại

- Kỹ thuật chia lại thành phân đoạn: MongoDB sử dụng phân chia lại để truyền bá dữ liệu trên các phân đoạn trong cụm một cách nhanh chóng. Điều này liên quan đến việc cố tình phân chia thành một khóa phân đoạn tạm thời khác với khóa phân đoạn mong muốn, sau đó phân chia lại thành khóa phân đoạn mong muốn.

5. Thủ tục di chuyển chunk

- Phân đoạn nguồn: Phân đoạn nguồn bắt đầu di chuyển khi nhận được lệnh nội bộ. Trong quá trình di chuyển, các thao tác đối với đoạn này sẽ được gửi đến phân đoạn nguồn.

- Phân đoạn đích: Phân đoạn đích xây dựng bất kỳ chỉ mục nào được nguồn yêu cầu nhưng không tồn tại trên đích. Phân đoạn đích bắt đầu yêu cầu tài liệu trong đoạn và bắt đầu nhận bản sao của dữ liệu.

- Đồng bộ hóa: Sau khi nhận được tài liệu cuối cùng trong đoạn, phân đoạn đích sẽ bắt đầu quá trình đồng bộ hóa để đảm bảo rằng nó có những thay đổi đối với tài liệu đã di chuyển xảy ra trong quá trình di chuyển.

- Cập nhật siêu dữ liệu: Phân đoạn nguồn kết nối với cơ sở dữ liệu cấu hình và cập nhật siêu dữ liệu cụm với vị trí mới cho đoạn.

- Xóa giai đoạn: Sau khi phân đoạn nguồn hoàn tất cập nhật siêu dữ liệu và khi không có con trỏ nào đang mở trên đoạn đó, phân đoạn nguồn sẽ xóa bản sao tài liệu của nó[3] [5].

6. Khối Jumbo

- Jumbo Chunks: Nếu một đoạn vượt quá kích thước tối đa hoặc số lượng tài liệu trong đoạn vượt quá mức tối đa cho phép, MongoDB sẽ không di chuyển đoạn đó. Thay vào đó, MongoDB cố gắng phân chia đoạn. Nếu việc phân tách không thành công, MongoDB sẽ gắn nhãn đoạn này là jumbo để tránh những nỗ lực lặp đi lặp lại để di chuyển đoạn [3].

7. Giám sát và bảo trì

- Giám sát: MongoDB cung cấp các công cụ để giám sát quá trình cân bằng và đảm bảo dữ liệu được phân bổ đồng đều trên các phân đoạn.

- Bảo trì: MongoDB cung cấp các lệnh để quản lý bộ cân bằng và đảm bảo rằng việc di chuyển dữ liệu hiệu quả và có thể mở rộng.

Phần kết luận

MongoDB xử lý việc di chuyển dữ liệu giữa các phân đoạn thông qua quy trình cân bằng, đảm bảo rằng dữ liệu được phân bổ đồng đều trên các phân đoạn trong cụm phân đoạn. Bộ cân bằng di chuyển dữ liệu theo từng phạm vi một và MongoDB cung cấp các công cụ để giám sát và quản lý quy trình cân bằng.

Trích dẫn:
[1] https://stackoverflow.com/questions/48438644/migration-data-between-shards-with-mongodb
[2] https://hackernoon.com/optimize-data-migration-in-mongodb-resharding-techniques-for-speed-and-scalability
[3] https://www.mongodb.com/docs/v3.0/core/shending-chunk-migration/
[4] https://www.mongodb.com/community/forums/t/shard-migration-leads-to-service-disruption/247228
[5] https://www.mongodb.com/docs/v6.2/core/shending-balancer-administration/