Capped Collection trong MongoDB



Capped collections là các Circular Collection có kích cỡ cố định mà theo sau thứ tự chèn để làm tăng cao hiệu suất của các hoạt động create, read và delete. Với Circular, nó nghĩa là khi kích cỡ cố định được cấp phát hết cho Collection, thì nó sẽ bắt đầu xóa Document cũ nhất trong Collection đó mà không cần cung cấp bất kỳ lệnh tường minh nào.

Capped Collection giới hạn các hoạt động cập nhật tới Document nếu các cập nhật đó làm tăng kích cỡ của Document. Khi Capped Collection lưu giữ các Document theo trật tự của Disk Storage, nó bảo đảm rằng kích cỡ tài liệu không tăng hơn kích cỡ được cấp phát trên Disk. Capped Collection là tốt nhất để lưu giữ thông tin log, cache data, …

Tạo Capped Collection trong MongoDB

Để tạo một Capped Collection, chúng ta sử dụng lệnh thường dùng là createCollection nhưng với tùy chọn cappedtrue và xác định kích cỡ tối đa (bằng byte) cho Collection đó.

>db.createCollection("cappedLogCollection",{capped:true,size:10000})

Với size của Collection, chúng ta cũng có thể giới hạn số Document trong Collection đó bởi sử dụng tham số max:

>db.createCollection("cappedLogCollection",{capped:true,size:10000,max:1000})

Nếu bạn muốn kiểm tra xem một Collection là capped hoặc không, sử dụng lệnh isCapped:

>db.cappedLogCollection.isCapped()

Nếu có một Collection đang tồn tại mà bạn có ý định muốn chuyển đổi thành capped, bạn sử dụng code sau:

>db.runCommand({"convertToCapped":"posts",size:10000})
Quảng cáo

Code này sẽ chuyển đổi posts collection đang tồn tại thành một Capped Collection.

Truy vấn trên Capped Collection

Theo mặc định, một truy vấn find trên một Capped Collection sẽ hiển thị các kết quả trong thứ tự chèn. Nhưng nếu bạn muốn lấy các Document theo thứ tự ngược lại, sử dụng lệnh sort như sau:

>db.cappedLogCollection.find().sort({$natural:-1})

Dưới đây là một số điều cần lưu ý trong khi làm việc với Capped Collection:

  • Chúng ta không thể xóa các Document từ một Capped Collection.

  • Không có chỉ mục mặc định có mặt trong một Capped Collection, ngay cả trên trường _id.

  • Trong khi chèn một Document mới, MongoDB không thực sự phải nhìn vào vị trí đặt Document mới đó trên Disk. Nó có thể chèn Document mới đó tại đuôi của Collection. Điều này làm cho hoạt động chèn trong Capped Collection diễn ra rất nhanh.

  • Tương tự, khi đọc các Document, MongoDB chỉ phải trả về các Document theo cùng thứ tự như trên Disk. Điều này làm cho hoạt động đọc diễn ra rất nhanh.

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Follow fanpage của team https://www.facebook.com/vietjackteam/ hoặc facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

Các bài học lập trình MongoDB phổ biến khác tại VietJack:




Tài liệu giáo viên