Vì vậy, trước tiên hãy để tôi bắt đầu câu hỏi với sự hiểu biết của tôi về cách MongoDb lưu trữ dữ liệu trên đĩa: Vì vậy, khi bạn tạo cơ sở dữ liệu trong mongodb, nó sẽ phân bổ một tệp lớn có tên <databasename>.0
và trong tệp đó phân bổ các khu vực tiếp giáp với dữ liệu cụ thể bộ sưu tập hoặc chỉ số cụ thể.
Tại điểm mà tệp dữ liệu này được điền, nó tạo ra một tệp mới được gọi <databasename>.1
và điền vào nó theo cách tương tự. Do đó, có vẻ hợp lý khi giả định rằng dữ liệu được chèn gần đây nhất vào cơ sở dữ liệu cụ thể sẽ nằm trong tệp được đánh số cao nhất (và các kiểm tra hiệu suất của tôi xác nhận điều này).
Tuy nhiên, tôi không thể thấy điều này có thể đúng với các chỉ số như thế nào ... vì chúng ta đang nói về một bTree, dường như không thể / có thể có bTree này nằm rải rác trên các tệp theo cùng một cách. Vì Mongo đang thực hiện bảo trì cho một chỉ mục, toàn bộ chỉ mục có sống ở một mức độ cho đến khi nó vượt xa nó tại điểm mà nó được di chuyển đến hiện tại (tệp dữ liệu được đánh số cao nhất) không?
Điều này đã trở nên quan trọng đối với tôi khi bắt đầu một cơ sở dữ liệu từ ảnh chụp nhanh Amazon EBS, có vẻ như có một chi phí rất lớn để đánh vào các tệp dữ liệu này cho đến khi âm lượng nóng lên. Tôi chỉ quan tâm đến một tập hợp con của các tài liệu N gần đây nhất từ một bộ sưu tập. Nếu tôi có thể chắc chắn rằng tôi sẽ chỉ cần một vài tệp dữ liệu gần đây nhất thì tôi có thể kiểm tra trước các tệp này bằng cách đọc tuần tự trước khi bắt đầu mongod.