Chúng tôi có thể tạo các bộ sưu tập trong mongoDb mà chúng tôi có thể áp dụng giới hạn kích thước. Những loại bộ sưu tập đặc biệt này được gọi là Bộ sưu tập được giới hạn. Đây là một loại hàng đợi vòng tròn, trong đó nếu đạt đến giới hạn kích thước được phân bổ, nó sẽ tạo khoảng trống cho các tài liệu mới bằng cách ghi đè lên các tài liệu cũ nhất trong bộ sưu tập
Cách tạo Capped Collectionsdb.createCollection[nameOfCollection, {capped: Boolean, autoIndexId: Boolean, size: Number, max : Number}]
Ở đây các tham số chỉ định
- nameOfCollection. tên bộ sưu tập giới hạn
- tùy chọn "giới hạn". đặt thành true trong trường hợp tạo bộ sưu tập giới hạn
- tùy chọn "kích thước". chỉ định giới hạn kích thước cho bộ sưu tập theo byte [bắt buộc trong trường hợp bộ sưu tập bị giới hạn]
- tùy chọn “tối đa”. chỉ định giới hạn về số lượng tài liệu tối đa được phép trong bộ sưu tập [tùy chọn kích thước được ưu tiên hơn tùy chọn tối đa]
- tùy chọn “autoIndexId”. đặt thành false trong trường hợp bộ sưu tập bị giới hạn để tắt tính năng tạo chỉ mục tự động
Ví dụ: hãy tạo một bộ sưu tập giới hạn có tên là “demo”
[email protected]:/data/uncap # mongodump -d mydb -c myexample
connected to: 127.0.0.1:27017
Sun Feb 5 00:02:28.879 DATABASE: mydb to dump/mydb
Sun Feb 5 00:02:28.880 mydb.myexample to dump/mydb/myexample.bson
Sun Feb 5 00:02:31.004 Collection File Writing Progress: 868400/67569879 1% [objects]
...
Sun Feb 5 00:24:13.004 Collection File Writing Progress: 67480900/67569879 99% [objects]
Sun Feb 5 00:24:14.203 67569879 objects
Sun Feb 5 00:24:14.203 Metadata for mydb.myexample to dump/mydb/myexample.metadata.json
ii. Siêu tệp ở định dạng JSON
Bây giờ, kết xuất cũng bao gồm một tệp siêu dữ liệu ở định dạng JSON
cat dump/mydb/myexample.metadata.json { "options": { "capped": true, "size": 107374182400 }, "indexes": [ { "v": 1, "key": { "_id": 1 }, "ns": "mydb.mycoll", "name": "_id_" } ] }
iii. Bỏ phần “tùy chọn”
Bây giờ, sau phần này, hãy xóa phần “tùy chọn” hiển thị kích thước bộ sưu tập giới hạn
PROD [email protected]:/data/uncap # mongorestore -d mydb -c myexample_tmp dump/mydb/myexample.bson connected to: 127.0.0.1:27018 Sun Feb 5 00:29:41.473 dump/mydb/myexample.bson Sun Feb 5 00:29:41.473 going into namespace [mydb.myexample_tmp] Sun Feb 5 00:29:44.060 Progress: 51202216/106169934834 0% [bytes] Sun Feb 5 00:29:47.007 Progress: 106497873/106169934834 0% [bytes] Sun Feb 5 01:57:19.065 Progress: 106159626025/106169934834 99% [bytes] 67569879 objects found Sun Feb 5 01:57:19.637 Creating index: { key: { _id: 1 }, ns: "mydb.myexample_tmp", name: "_id_" }
iv. Tạo chỉ số cho chúng tôi
Sau này nó tự động tạo chỉ số cho chúng ta. Kiểm tra nó sau này
________số 8_______v. Bỏ bộ sưu tập cũ và đổi tên
Sau đó, thả bộ sưu tập cũ và đổi tên bộ sưu tập mới
db.myexample.drop[] db.myexample_tmp.renameCollection['myexample'] db.myexample.count[] 9876543210
Ưu điểm của Capped Collections
Đây là một số lợi ích
- Truy vấn không cần chỉ mục để trả về tài liệu theo thứ tự chèn do nó cung cấp thông lượng chèn cao hơn
- Các bộ sưu tập được giới hạn cho phép các bản cập nhật phù hợp với kích thước tài liệu gốc, giúp chúng tôi đảm bảo rằng tài liệu không thay đổi vị trí của nó trên đĩa
- Nó rất hữu ích để giữ các tệp nhật ký
Nhược điểm của Capped Collections
Sau đây là những hạn chế của các bộ sưu tập được giới hạn trong MongoDB
- Nếu cập nhật tài liệu vượt quá kích thước ban đầu của bộ sưu tập, thao tác cập nhật không thành công
- Không thể xóa tài liệu khỏi bộ sưu tập giới hạn. Để xóa tất cả các bản ghi khỏi bộ sưu tập được giới hạn, hãy sử dụng lệnh sau
>db.createCollection["cappedLogCollection",{capped:true,size:10000,max:1000}]0
- Không thể phân chia một bộ sưu tập giới hạn
Ứng dụng của Capped Collection
Một số ứng dụng của bộ sưu tập giới hạn như sau
- ghi nhật ký ứng dụng
- Lịch sử
- thông tin kiểm toán
Bản tóm tắt
Do đó, chúng tôi đã nghiên cứu tất cả về MongoDB capped collections – cách tạo, chuyển đổi, kiểm tra, ưu điểm, nhược điểm. Cuối cùng, chúng ta đã tìm hiểu về mongodump và mongorestore là hai lệnh được sử dụng để mở khóa bộ sưu tập
Mong. bạn thấy nó hữu ích. Nếu bạn có bất kỳ câu hỏi nào, vui lòng chia sẻ với chúng tôi. Chắc chắn, chúng tôi sẽ lấy lại cho bạn