Dung lượng bộ nhớ

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 Giá.

Kích thước chuỗi

Kích thước chuỗi được tính bằng số byte được mã hoá UTF-8 + 1.

Sau đây đượ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 tasks sử dụng 5 byte + 1 byte, tổng cộng là 6 byte.
  • Tên trường description sử 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 các 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ị
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
Max Key 1 byte
Null 1 byte
Biểu thức chính quy (Độ dài mẫu + 1) + (Độ dài lựa chọn + 1)
Dấu thời gian 8 byte
Chuỗi Số lượng byte được mã hoá theo UTF-8 + 1

Ví dụ: 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:

Ví dụ này dành cho một tài liệu trong tập hợ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 chỉ mục

Kích thước của một mục chỉ mục trong chỉ mục là tổng của:

Hãy xem xét một tài liệu trong tập hợp tasks:

{
  "_id": "my_task_id",
  "type": "Personal",
  "done": false,
  "priority": 1,
  "description": "Learn Cloud Firestore"
}

Đối với chỉ mục trên các trường donepriority (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ì 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 chỉ mục sẽ được tạo với các trường được lập chỉ mục không có giá trị được đặt thành NULL.

Thay đổi kích thước mục sự kiện phát trực tiếp

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 mỗi tên trường trong fullDocument hoặc updateDescription (ngoại trừ _id).
    • Tổng kích thước của mỗi giá trị trường trong fullDocument hoặc updateDescription. (bao gồm cả _id).
  • Nếu áp dụng cho các giao dịch có nhiều tài liệu, bạn sẽ có thêm 24 byte cho lsidtxnNumber.
  • 92 byte bổ sung

Hãy xem xét ví dụ về sự kiện chèn cho một tài liệu trong bộ sưu tập việc cần làm:

{
  "_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 chỉ mục tìm kiếm văn bản

Kích thước của một mục trong chỉ mục tìm kiếm văn bản trong 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 ví dụ về một sự kiện chèn cho một tài liệu có _id my_task_id trong tập hợ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 trong 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 description x2
  • 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 trong chỉ mục không gian địa lý trong 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 ví dụ về một sự kiện chèn cho một tài liệu có _id my_place trong tập hợ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 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ã nhận dạng 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ề giá.