Trang này mô tả kích thước bộ nhớ của tài liệu, trường và mục nhập chỉ mục trong Cloud Firestore.
Bạn có thể tìm hiểu về chi phí của bộ nhớ này trên trang Định giá.
Kích thước chuỗi
Kích thước chuỗi được tính bằng số byte được mã hoá theo UTF-8 + 1.
Các mục sau được lưu trữ dưới dạng chuỗi:
- Tên bộ sưu tập
- Tên trường
- Giá trị trường chuỗi (bao gồm cả
_id)
Ví dụ:
- Tên bộ sưu tập
taskssử dụng 5 byte + 1 byte, tổng cộng là 6 byte. - Tên trường
descriptionsử dụng 11 byte + 1 byte, tổng cộng là 12 byte.
Kích thước giá trị trường
Bảng sau đây cho biết kích thước của giá trị trường theo loại.
| Loại | Kích thước |
|---|---|
| Mảng | Tổng kích thước của các giá trị trong mảng |
| Boolean | 1 byte |
| Dữ liệu nhị phân | Độ dài byte + 1 cho loại phụ không chung chung (không phải 0) |
| Ngày | 8 byte |
| Giường đôi | 8 byte |
| Double128 | 16 byte |
| Số nguyên 32 bit | 4 byte |
| Số nguyên 64 bit (dài) | 8 byte |
| Đối tượng | Tổng kích thước chuỗi của từng tên trường và kích thước của từng giá trị trường trong đối tượng được nhúng |
| Khoá tối thiểu | 1 byte |
| Khoá tối đa | 1 byte |
| Null | 1 byte |
| Cụm từ thông dụng | (Độ dài mẫu + 1) + (Độ dài tuỳ chọn + 1) |
| Dấu thời gian | 8 byte |
| Chuỗi | Số byte được mã hoá theo UTF-8 + 1 |
Ví dụ: một trường boolean có tên là done sẽ sử dụng 6 byte:
- 5 byte cho tên trường
done - 1 byte cho giá trị boolean
Kích thước tài liệu
Kích thước của một tài liệu là tổng của:
- Kích thước chuỗi của tên bộ sưu tập
- Tổng kích thước chuỗi của từng tên trường (ngoại trừ
_id) - Tổng kích thước của từng giá trị trường (bao gồm cả
_id) - 48 byte bổ sung
Ví dụ này dành cho một tài liệu trong bộ sưu tập tasks:
{
"_id": "my_task_id",
"type": "Personal",
"done": false,
"priority": 1,
"description": "Learn Cloud Firestore"
}
Tổng kích thước của các trường là 78 byte:
| Tên và giá trị trường | Kích thước trường tính bằng byte |
|---|---|
"_id": "my_task_id" |
11 cho giá trị chuỗi của trường |
"type": "Personal" |
14 5 cho tên trường + 9 cho giá trị chuỗi của trường |
"done": false |
6 5 cho tên trường + 1 cho giá trị boolean của trường |
"priority": 1 |
17 9 cho tên trường + 4 cho giá trị số nguyên 32 bit của trường |
"description": "Learn Cloud Firestore" |
34 12 cho tên trường + 22 cho giá trị chuỗi của trường |
Vậy kích thước tài liệu là 6 + 78 + 48 = 132 byte:
- 6 cho tên bộ sưu tập
- 78 byte cho các trường
- 48 byte bổ sung
Kích thước mục nhập chỉ mục
Kích thước của một mục nhập chỉ mục trong một chỉ mục là tổng của:
- Kích thước chuỗi của tên bộ sưu tập
- Kích thước của giá trị trường
_id - Tổng các giá trị trường được lập chỉ mục
- 48 byte bổ sung
Hãy xem xét một tài liệu trong bộ sưu tập tasks:
{
"_id": "my_task_id",
"type": "Personal",
"done": false,
"priority": 1,
"description": "Learn Cloud Firestore"
}
Đối với một chỉ mục trên các trường done và priority (cả hai đều tăng dần), tổng kích thước của mục nhập chỉ mục trong chỉ mục này là 70 byte:
- 6 byte cho tên bộ sưu tập
tasks - 11 byte cho giá trị trường
_id - 1 byte cho giá trị trường boolean
- 4 byte cho giá trị trường số nguyên 32 bit
- 48 byte bổ sung
Đối với chỉ mục thưa thớt, nếu một tài liệu không chứa bất kỳ trường nào, thì sẽ không có mục nhập chỉ mục nào được tạo. Nếu một tài liệu chứa ít nhất một trong các trường được lập chỉ mục, thì một mục nhập chỉ mục sẽ được tạo với các trường được lập chỉ mục bị thiếu được đặt thành NULL.
Kích thước mục nhập sự kiện luồng thay đổi
Kích thước của một sự kiện luồng thay đổi là tổng của:
- Tổng kích thước chuỗi của tên bộ sưu tập (x2).
- Đối với các sự kiện chèn và cập nhật cho một tài liệu:
- Tổng kích thước chuỗi của từng tên trường trong
fullDocumenthoặcupdateDescription(ngoại trừ_id). - Tổng kích thước của từng giá trị trường trong
fullDocumenthoặcupdateDescription. (bao gồm cả_id).
- Tổng kích thước chuỗi của từng tên trường trong
- Nếu áp dụng cho các giao dịch nhiều tài liệu, thì thêm 24 byte cho
lsidvàtxnNumber. - 92 byte bổ sung
Hãy xem xét một ví dụ về sự kiện chèn cho một tài liệu trong bộ sưu tập 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"
},
}
Tổng kích thước của sự kiện luồng thay đổi là 149 byte:
- 92 byte cho siêu dữ liệu chung
- 12 byte dựa trên tên bộ sưu tập
tasks(6 byte) * 2 - 11 byte cho giá trị trường
_id - 12 byte cho tên trường
description - 22 byte cho giá trị trường
description
Kích thước mục nhập chỉ mục tìm kiếm văn bản
Kích thước của một mục nhập chỉ mục tìm kiếm văn bản trong một chỉ mục là tổng của:
- Kích thước chuỗi của tên bộ sưu tập
- Kích thước của giá trị
_id - Tổng số byte từ các giá trị trường được lập chỉ mục (x2)
- 48 byte bổ sung cho siêu dữ liệu chung
Hãy xem xét một ví dụ về sự kiện chèn cho một tài liệu có _id my_task_id
trong bộ sưu tập tasks:
{ "_id": "my_place", "type": "Restaurant", "visited": false, "priority": 1, "location": GeoPoint(longitude, latitude) }
Tổng kích thước của một mục nhập chỉ mục tìm kiếm văn bản trên description là 105 byte dựa trên:
- 6 byte cho tên bộ sưu tập
tasks - 11 byte cho giá trị
_id - 44 byte, dựa trên 22 byte cho trường
descriptionx2 - 48 byte bổ sung cho siêu dữ liệu chung
Kích thước mục nhập chỉ mục không gian địa lý
Kích thước của một mục nhập chỉ mục không gian địa lý trong một chỉ mục là tổng của:
- Kích thước chuỗi của tên bộ sưu tập
- Kích thước của giá trị
_id - 128 byte cho mỗi điểm địa lý được lập chỉ mục
- 48 byte bổ sung cho siêu dữ liệu chung
Hãy xem xét một ví dụ về sự kiện chèn cho một tài liệu có _id my_place trong bộ sưu tập places:
{ "_id": "my_place", "type": "Restaurant", "visited": false, "priority": 1, "location": GeoPoint(longitude, latitude) }
Tổng kích thước của một mục nhập chỉ mục không gian địa lý trên location là 192 byte dựa trên:
- 7 byte cho tên bộ sưu tập
places - 9 byte cho mã tài liệu
- 128 byte cho trường
location - 48 byte bổ sung cho siêu dữ liệu chung
Bước tiếp theo
Tìm hiểu về định giá.