Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MongoDB

ขนาดสูงสุดของ MongoDB Capped Collection คือเท่าไหร่?

Capped Collection ใน MongoDB เป็นคอลเลกชันแบบ Fixed-Size ที่เก็บข้อมูลแบบ Circular Buffer (เขียนทับข้อมูลเก่าสุดเมื่อเต็ม) ขนาดสูงสุด ขึ้นอยู่กับการกำหนดของผู้ใช้ ผ่านพารามิเตอร์ size ไม่มีขีดจำกัดคงที่จาก MongoDB เอง

ไวยากรณ์การสร้าง Capped Collection

db.createCollection('yourCollectionName', {capped: true, size: yourValueInBytes})

ตัวอย่าง: สร้าง Capped Collection ขนาดใหญ่มาก (~1.9 PB)

> db.createCollection('cappedCollectionMaximumSize', {capped: true, size: 1948475757574646});
{ "ok": 1 }

ตรวจสอบข้อมูลคอลเลกชัน

> db.cappedCollectionMaximumSize.find().explain();

ผลลัพธ์ (แสดงว่าเป็น COLLSCAN บน Capped Collection):

{
  "queryPlanner": {
    "plannerVersion": 1,
    "namespace": "test.cappedCollectionMaximumSize",
    "indexFilterSet": false,
    "parsedQuery": {},
    "winningPlan": {
      "stage": "COLLSCAN",
      "direction": "forward"
    },
    "rejectedPlans": []
  },
  "serverInfo": {
    "host": "DESKTOP-QN2RB3H",
    "port": 27017,
    "version": "4.0.5",
    "gitVersion": "3739429dd92b92d1b0ab120911a23d50bf03c412"
  },
  "ok": 1
}

ข้อจำกัดและข้อควรระวัง

  • size ระบุเป็น Bytes (บังคับ)
  • สามารถระบุ max (จำนวนเอกสารสูงสุด) ได้อีกพารามิเตอร์หนึ่ง (Optional)
  • ขนาดสูงสุดจริง จำกัดโดย พื้นที่ดิสก์ที่มีอยู่ และ ขีดจำกัดของระบบไฟล์/OS
  • บน 64-bit Systems: ขนาดสูงสุดทฤษฎี ~16 TB ต่อคอลเลกชัน (WiredTiger)
  • Capped Collection ไม่รองรับ Sharding
  • ไม่สามารถ delete เอกสารเดี่ยวได้ (ต้อง drop collection ทั้งอัน)
  • เหมาะสำหรับ: Logs, Metrics, Cache, Audit Trail ที่ข้อมูลเก่าไม่ต้องเก็บ

ตัวอย่างใช้งานจริง

// Capped Collection สำหรับ Log เก็บได้ 100MB หรือ 10,000 docs
db.createCollection("appLogs", {
  capped: true,
  size: 104857600,  // 100 MB
  max: 10000        // สูงสุด 10,000 documents
});