Thật khó để nói thế nào là số lượng lớn chèn tối ưu - điều này một phần phụ thuộc vào kích thước của các đối tượng bạn đang chèn và các yếu tố không thể đo lường khác. Bạn có thể thử một vài phạm vi và xem điều gì mang lại cho bạn hiệu suất tốt nhất. Thay vào đó, một số người thích sử dụng mongoimport, nó khá nhanh, nhưng dữ liệu nhập của bạn cần phải là json hoặc csv. Rõ ràng là có mongodrestore, nếu dữ liệu ở định dạng BSON.
Mongo có thể dễ dàng xử lý hàng tỷ tài liệu và có thể có hàng tỷ tài liệu trong một bộ sưu tập nhưng hãy nhớ rằng kích thước tài liệu tối đa là 16mb . Có rất nhiều dân gian với hàng tỷ tài liệu trong MongoDB và có rất nhiều cuộc thảo luận về nó trên MongoDB Nhóm người dùng Google . Đây là tài liệu bản trình bày từ Craigslist về việc chèn hàng tỷ tài liệu vào MongoDB và blogpost .
Có vẻ như sharding sẽ là một giải pháp tốt cho bạn nhưng thường thì sharding được sử dụng để mở rộng trên nhiều máy chủ và rất nhiều người làm điều đó vì họ muốn mở rộng các bài viết của họ hoặc họ không thể giữ tập hợp hoạt động của mình (dữ liệu và chỉ mục) trong RAM. Hoàn toàn hợp lý khi bắt đầu với một máy chủ và sau đó chuyển sang phân đoạn hoặc tập hợp bản sao khi dữ liệu của bạn phát triển hoặc bạn cần thêm dự phòng và khả năng phục hồi.
Tuy nhiên, có những người dùng khác sử dụng nhiều mongod để vượt qua giới hạn khóa của một mongod duy nhất với nhiều lần ghi. Đó là điều hiển nhiên nhưng vẫn đáng nói nhưng việc thiết lập nhiều mongod sẽ phức tạp hơn để quản lý so với một máy chủ duy nhất. Nếu IO hoặc cpu của bạn không được tối đa ở đây, bộ làm việc của bạn nhỏ hơn RAM và dữ liệu của bạn dễ giữ cân bằng (được phân phối khá ngẫu nhiên), bạn sẽ thấy sự cải thiện (với sharding trên một máy chủ). Là một FYI, có tiềm năng về trí nhớ và khả năng tranh chấp IO. Với 2.2 đã cải thiện đồng thời với db khóa , Tôi nghi ngờ rằng sẽ có ít lý do hơn cho việc triển khai như vậy.
Bạn cần lập kế hoạch chuyển sang sharding một cách hợp lý, tức là hãy suy nghĩ cẩn thận về việc chọn khóa phân đoạn của bạn. Nếu bạn đi theo cách này thì tốt nhất nên tách trước và tắt bộ cân bằng. Sẽ phản tác dụng khi di chuyển dữ liệu xung quanh để giữ mọi thứ cân bằng, có nghĩa là bạn sẽ cần phải quyết định trước như thế nào để phân chia nó. Ngoài ra, đôi khi điều quan trọng là phải thiết kế tài liệu của bạn với ý tưởng rằng một số trường sẽ hữu ích để dùng sharding hoặc làm khóa chính.
Đây là một số liên kết tốt -
- Chọn khóa phân đoạn
- Bài đăng trên blog về khóa phân đoạn
- Trình bày tổng quan về sharding
- Bản trình bày về các phương pháp hay nhất của Sharding