หน้านี้อธิบายขนาดพื้นที่เก็บข้อมูลของเอกสาร ช่อง และ รายการดัชนีใน 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 ไบต์
ขนาดรายการดัชนี
ขนาดของรายการดัชนีในดัชนีคือผลรวมของข้อมูลต่อไปนี้
- ขนาดสตริงของชื่อคอลเล็กชัน
- ขนาดค่าในช่อง
_id - ผลรวมของค่าในช่องที่ทำดัชนี field values
- อีก 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
ขนาดรายการเหตุการณ์ของ Change Stream
ขนาดของเหตุการณ์ Change Stream คือผลรวมของข้อมูลต่อไปนี้
- ผลรวมของขนาดสตริงของชื่อคอลเล็กชัน (x2)
- สำหรับเหตุการณ์แทรกและอัปเดตสำหรับเอกสาร
- หากใช้ได้กับการทำธุรกรรมหลายเอกสาร ให้เพิ่มอีก 24 ไบต์สำหรับ
lsidและtxnNumber - อีก 92 ไบต์
พิจารณาตัวอย่างสำหรับเหตุการณ์แทรกสำหรับเอกสารในคอลเล็กชัน tasks
{
"_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"
},
}
ขนาดรวมของเหตุการณ์ Change Stream คือ 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 ไบต์สำหรับข้อมูลเมตาทั่วไป
ขั้นตอนถัดไป
ดูข้อมูลเกี่ยวกับการกำหนดราคา