หน้านี้อธิบายขนาดพื้นที่เก็บข้อมูลของเอกสาร ช่อง และรายการดัชนีใน Cloud Firestore
ดูข้อมูลเกี่ยวกับค่าใช้จ่ายของพื้นที่เก็บข้อมูลนี้ได้ที่หน้าราคา
ขนาดสตริง
ขนาดสตริงจะคำนวณเป็นจำนวนไบต์ที่เข้ารหัส UTF-8 + 1
ระบบจะจัดเก็บข้อมูลต่อไปนี้เป็นสตริง
- ชื่อคอลเล็กชัน
- ชื่อฟิลด์
- ค่าในช่องสตริง (รวมถึง
_id)
เช่น
- ชื่อคอลเล็กชัน
tasksใช้ 5 ไบต์ + 1 ไบต์ รวมเป็น 6 ไบต์ - ชื่อช่อง
descriptionใช้ 11 ไบต์ + 1 ไบต์ รวมเป็น 12 ไบต์
ขนาดค่าในช่อง
ตารางต่อไปนี้แสดงขนาดของค่าในช่องตามประเภท
| ประเภท | ขนาด |
|---|---|
| อาร์เรย์ | ผลรวมของขนาดของค่า |
| บูลีน | 1 ไบต์ |
| ข้อมูลไบนารี | ความยาวไบต์ + 1 สำหรับประเภทย่อยที่ไม่ใช่แบบทั่วไป (ไม่ใช่ 0) |
| วันที่ | 8 ไบต์ |
| เตียงคู่ | 8 ไบต์ |
| Double128 | 16 ไบต์ |
| จำนวนเต็ม 32 บิต | 4 ไบต์ |
| จำนวนเต็ม 64 บิต (ยาว) | 8 ไบต์ |
| ออบเจ็กต์ | ผลรวมของขนาดสตริงของชื่อช่องแต่ละช่องและขนาดของค่าช่องแต่ละค่าในออบเจ็กต์ที่ฝัง |
| คีย์ต่ำสุด | 1 ไบต์ |
| คีย์สูงสุด | 1 ไบต์ |
| Null | 1 ไบต์ |
| นิพจน์ทั่วไป | (ความยาวรูปแบบ + 1) + (ความยาวตัวเลือก + 1) |
| การประทับเวลา | 8 ไบต์ |
| สตริง | จำนวนไบต์ที่เข้ารหัส UTF-8 + 1 |
เช่น ช่องบูลีนชื่อ done จะใช้ 6 ไบต์ ดังนี้
- 5 ไบต์สำหรับชื่อฟิลด์
done - 1 ไบต์สำหรับค่าบูลีน
ขนาดเอกสาร
ขนาดของเอกสารคือผลรวมของสิ่งต่อไปนี้
- ขนาดสตริงของชื่อคอลเล็กชัน
- ผลรวมของขนาดสตริงของชื่อช่องแต่ละชื่อ (ยกเว้น
_id) - ผลรวมของขนาดค่าของช่องแต่ละค่า (รวมถึง
_id) - 48 ไบต์เพิ่มเติม
ตัวอย่างนี้ใช้สำหรับเอกสารในคอลเล็กชัน tasks
{
"_id": "my_task_id",
"type": "Personal",
"done": false,
"priority": 1,
"description": "Learn Cloud Firestore"
}
ขนาดรวมของช่องคือ 78 ไบต์ ดังนี้
| ชื่อและค่าของฟิลด์ | ขนาดฟิลด์ในหน่วยไบต์ |
|---|---|
"_id": "my_task_id" |
11 สำหรับค่าสตริงของช่อง |
"type": "Personal" |
14 5 สำหรับชื่อช่อง + 9 สำหรับค่าสตริงของช่อง |
"done": false |
6 5 สำหรับชื่อช่อง + 1 สำหรับค่าบูลีนของช่อง |
"priority": 1 |
17 9 สำหรับชื่อฟิลด์ + 4 สำหรับค่าจำนวนเต็ม 32 บิตของฟิลด์ |
"description": "Learn Cloud Firestore" |
34 12 สำหรับชื่อช่อง + 22 สำหรับค่าสตริงของช่อง |
ดังนั้นขนาดเอกสารคือ 6 + 78 + 48 = 132 ไบต์
- 6 สำหรับชื่อคอลเล็กชัน
- 78 ไบต์สำหรับช่อง
- 48 ไบต์เพิ่มเติม
ขนาดรายการดัชนี
ขนาดของรายการดัชนีในดัชนีคือผลรวมของสิ่งต่อไปนี้
พิจารณาเอกสารในคอลเล็กชัน tasks ดังนี้
{
"_id": "my_task_id",
"type": "Personal",
"done": false,
"priority": 1,
"description": "Learn Cloud Firestore"
}
สำหรับดัชนีในช่อง done และ priority (ทั้ง 2 ช่องเรียงจากน้อยไปมาก) ขนาดรวมของรายการดัชนีในดัชนีนี้คือ 70 ไบต์
- 6 ไบต์สำหรับชื่อคอลเล็กชัน
tasks - 11 ไบต์สำหรับค่าในช่อง
_id - 1 ไบต์สำหรับค่าในช่องบูลีน
- 4 ไบต์สำหรับค่าในช่องจำนวนเต็ม 32 บิต
- 48 ไบต์เพิ่มเติม
สำหรับดัชนีแบบกระจัดกระจาย หากเอกสารไม่มีช่องใดๆ ระบบจะไม่สร้างรายการดัชนี หากเอกสารมีฟิลด์ที่จัดทำดัชนีอย่างน้อย 1 ฟิลด์ ระบบจะสร้างรายการดัชนีที่มีฟิลด์ที่จัดทำดัชนีซึ่งไม่มีอยู่ซึ่งตั้งค่าเป็น NULL
ขนาดรายการเหตุการณ์ของสตรีมการเปลี่ยนแปลง
ขนาดของเหตุการณ์สตรีมการเปลี่ยนแปลงคือผลรวมของสิ่งต่อไปนี้
- ผลรวมของขนาดสตริงของชื่อคอลเล็กชัน (x2)
- สำหรับเหตุการณ์การแทรกและการอัปเดตเอกสาร
- ผลรวมของขนาดสตริงของชื่อช่องแต่ละชื่อใน
fullDocumentหรือupdateDescription(ยกเว้น_id) - ผลรวมของขนาดค่าของช่องแต่ละค่าใน
fullDocumentหรือupdateDescription(รวมถึง_id)
- ผลรวมของขนาดสตริงของชื่อช่องแต่ละชื่อใน
- หากใช้ได้กับธุรกรรมแบบหลายเอกสาร จะมีข้อมูลเพิ่มเติม 24 ไบต์สำหรับ
lsidและtxnNumber - 92 ไบต์เพิ่มเติม
ลองดูตัวอย่างเหตุการณ์การแทรกสำหรับเอกสารในคอลเล็กชันงาน
{
"_id": { <Resume Token> },
"operationType": "insert",
"clusterTime": <Timestamp>,
"wallTime": <ISODate>,
"ns": {
"db": "db",
"coll": "tasks"
},
"documentKey": {
"_id": "my_task_id"
},
"fullDocument": {
"_id": "my_task_id",
"description": "Learn Cloud Firestore"
},
}
ขนาดรวมของเหตุการณ์สตรีมการเปลี่ยนแปลงคือ 149 ไบต์
- 92 ไบต์สำหรับข้อมูลเมตาทั่วไป
- 12 ไบต์ตามชื่อคอลเล็กชัน
tasks(6 ไบต์) * 2 - 11 ไบต์สำหรับค่าในช่อง
_id - 12 ไบต์สำหรับชื่อช่อง
description - 22 ไบต์สำหรับค่าในช่อง
description
ขนาดรายการดัชนีการค้นหาข้อความ
ขนาดของรายการดัชนีการค้นหาข้อความในดัชนีคือผลรวมของสิ่งต่อไปนี้
- ขนาดสตริงของชื่อคอลเล็กชัน
- ขนาดของค่า
_id - ผลรวมของไบต์จากค่าของช่องที่จัดทำดัชนี (x2)
- 48 ไบต์เพิ่มเติมสำหรับข้อมูลเมตาทั่วไป
ลองพิจารณาตัวอย่างเหตุการณ์การแทรกสำหรับเอกสารที่มี _id my_task_id ในคอลเล็กชัน tasks
{ "_id": "my_place", "type": "Restaurant", "visited": false, "priority": 1, "location": GeoPoint(longitude, latitude) }
ขนาดรวมของรายการดัชนีการค้นหาข้อความใน description คือ 105 ไบต์ โดยอิงตามข้อมูลต่อไปนี้
- 6 ไบต์สำหรับชื่อคอลเล็กชัน
tasks - 11 ไบต์สำหรับค่า
_id - 44 ไบต์ โดยอิงตาม 22 ไบต์สำหรับช่อง
descriptionx2 - 48 ไบต์เพิ่มเติมสำหรับข้อมูลเมตาทั่วไป
ขนาดรายการดัชนีภูมิสารสนเทศ
ขนาดของรายการดัชนีเชิงพื้นที่และเวลาในดัชนีคือผลรวมของสิ่งต่อไปนี้
- ขนาดสตริงของชื่อคอลเล็กชัน
- ขนาดของค่า
_id - 128 ไบต์สำหรับจุดทางภูมิศาสตร์ที่จัดทำดัชนีแต่ละจุด
- 48 ไบต์เพิ่มเติมสำหรับข้อมูลเมตาทั่วไป
ลองพิจารณาตัวอย่างเหตุการณ์การแทรกสำหรับเอกสารที่มี _id my_place ในคอลเล็กชัน places
{ "_id": "my_place", "type": "Restaurant", "visited": false, "priority": 1, "location": GeoPoint(longitude, latitude) }
ขนาดรวมของรายการดัชนีเชิงพื้นที่ใน location คือ 192 ไบต์ โดยอิงตามข้อมูลต่อไปนี้
- 7 ไบต์สำหรับชื่อคอลเล็กชัน
places - 9 ไบต์สำหรับรหัสเอกสาร
- 128 ไบต์สำหรับช่อง
location - 48 ไบต์เพิ่มเติมสำหรับข้อมูลเมตาทั่วไป
ขั้นตอนถัดไป
ดูข้อมูลเกี่ยวกับราคา