Mức sử dụng và giới hạn

Hãy làm theo hướng dẫn này để nắm rõ các giới hạn của Cloud Firestore và xem phần Giá Cloud Firestore để biết nội dung giải thích đầy đủ, chi tiết về chi phí của Cloud Firestore, bao gồm cả những điều cần chú ý.

Theo dõi mức sử dụng

Để theo dõi mức sử dụng Cloud Firestore, hãy mở thẻ Cloud Firestore Mức sử dụng trong bảng điều khiển Firebase. Sử dụng trang tổng quan để đánh giá mức sử dụng của bạn theo các khoảng thời gian khác nhau.

Thông tin chi tiết về cách sử dụng trong bảng điều khiển Google Cloud

Khi tạo dự án Firebase, bạn cũng đang tạo dự án Google Cloud. Trang Định mức API Cloud Firestore và trang Định mức App Engine trong bảng điều khiển Google Cloud theo dõi thông tin về mức sử dụng và định mức Cloud Firestore.

Hạn mức miễn phí

Cloud Firestore cung cấp hạn mức miễn phí để bạn có thể bắt đầu sử dụng cơ sở dữ liệu (default) mà không mất phí. Dưới đây là số lượng hạn mức miễn phí. Nếu cần định mức cao hơn, bạn phải bật tính năng thanh toán cho dự án Google Cloud của mình.

Hạn mức được áp dụng hằng ngày và đặt lại vào khoảng nửa đêm theo giờ Thái Bình Dương.

Chỉ cơ sở dữ liệu (default) đủ điều kiện sử dụng hạn mức miễn phí.

Bậc miễn phí Hạn ngạch dung lượng
Dữ liệu đã lưu trữ 1 GiB
Đọc tài liệu 50.000 mỗi ngày
Hoạt động ghi tài liệu 20.000 mỗi ngày
Xoá tài liệu 20.000 mỗi ngày
Chuyển dữ liệu đi 10 GiB/tháng

Các thao tác và tính năng sau đây không bao gồm việc sử dụng miễn phí. Bạn phải bật tính năng thanh toán để sử dụng các tính năng sau:

  • Sử dụng cơ sở dữ liệu được đặt tên (không phải mặc định)
  • Xoá TTL
  • Dữ liệu PITR
  • Sao lưu dữ liệu
  • Khôi phục thao tác

Để biết thêm thông tin về cách tính phí các tính năng này, hãy xem phần Giá bộ nhớ.

Giới hạn tiêu chuẩn

Các bảng sau đây cho thấy các giới hạn áp dụng cho Cloud Firestore. Đây là những giới hạn cố định trừ phi có ghi chú khác.

Cơ sở dữ liệu

Giới hạn Thông tin chi tiết
Số lượng cơ sở dữ liệu tối đa cho mỗi dự án

100

Bạn có thể liên hệ với nhóm hỗ trợ để yêu cầu tăng hạn mức này.

Bộ sưu tập, tài liệu và trường

Giới hạn Thông tin chi tiết
Các hạn chế đối với mã nhận dạng bộ sưu tập
  • Phải là ký tự UTF-8 hợp lệ
  • Không được dài hơn 1.500 byte
  • Không được chứa dấu gạch chéo lên (/)
  • Không được chỉ bao gồm một dấu chấm (.) hoặc dấu chấm kép (..)
  • Không khớp với biểu thức chính quy __.*__
Độ sâu tối đa của bộ sưu tập phụ 100
Quy tắc ràng buộc đối với mã nhận dạng tài liệu
  • Phải là ký tự UTF-8 hợp lệ
  • Không được dài hơn 1.500 byte
  • Không được chứa dấu gạch chéo lên (/)
  • Không được chỉ bao gồm một dấu chấm (.) hoặc dấu chấm kép (..)
  • Không khớp với biểu thức chính quy __.*__
  • Nếu bạn nhập các thực thể Datastore vào cơ sở dữ liệu Firestore, thì mã nhận dạng thực thể dạng số sẽ hiển thị dưới dạng __id[0-9]+__
Kích thước tối đa của tên tài liệu 6 KiB
Kích thước tối đa của một tài liệu 1 MiB (1.048.576 byte)
Các hạn chế đối với tên trường
  • Phải có các ký tự UTF-8 hợp lệ
  • Không khớp với biểu thức chính quy __.*__
Kích thước tối đa của tên trường 1.500 byte
Các quy tắc ràng buộc đối với đường dẫn trường
  • Phải phân tách các tên trường bằng một dấu chấm duy nhất (.)
  • Có thể được truyền dưới dạng chuỗi các phân đoạn được phân tách bằng dấu chấm (.), trong đó mỗi phân đoạn là một tên trường đơn giản hoặc tên trường được trích dẫn (được xác định bên dưới).
Tên trường đơn giản là tên trường đáp ứng tất cả các điều kiện sau:
  • Chỉ chứa các ký tự a-z, A-Z, 0-9 và dấu gạch dưới (_)
  • Không bắt đầu bằng 0-9
Tên trường được trích dẫn bắt đầu và kết thúc bằng ký tự dấu nháy đơn (`). Ví dụ: foo.`x&y` đề cập đến trường x&y lồng trong trường foo. Để tạo tên trường có ký tự dấu phẩy ngược, hãy thoát ký tự dấu phẩy ngược bằng ký tự gạch chéo ngược (\). Để thuận tiện, bạn có thể tránh các tên trường được trích dẫn bằng cách truyền đường dẫn trường dưới dạng đối tượng FieldPath (ví dụ: xem FieldPath JavaScript).
Kích thước tối đa của đường dẫn trường 1.500 byte
Kích thước tối đa của giá trị trường 1 MiB – 89 byte (1.048.487 byte)
Độ sâu tối đa của các trường trong một bản đồ hoặc mảng

20

Các trường bản đồ và mảng sẽ thêm một cấp vào chiều sâu tổng thể của đối tượng. Ví dụ: đối tượng sau đây có tổng chiều sâu là 3 cấp:


{
  nested_map: {         #depth 1
    nested_array: [     #depth 2
      {
        foo: "bar"      #depth 3
      }
    ]
  }
}
      

Hoạt động ghi và giao dịch

Ngoài những giới hạn này, bạn cũng nên xem các phương pháp hay nhất để thiết kế theo quy mô.

Giới hạn Thông tin chi tiết
Kích thước yêu cầu API tối đa 10 MiB
Giới hạn thời gian cho một giao dịch 270 giây, với thời gian hết hạn là 60 giây ở trạng thái rảnh
Số lượt biến đổi trường tối đa có thể thực hiện trên một tài liệu trong một thao tác Commit hoặc trong một giao dịch 500

Chỉ mục

Các giới hạn sau đây áp dụng cho chỉ mục một trườngchỉ mục tổng hợp:

Giới hạn Thông tin chi tiết
Số lượng chỉ mục tổng hợp tối đa cho một cơ sở dữ liệu
Số lượng cấu hình trường đơn tối đa cho một cơ sở dữ liệu

Một cấu hình cấp trường có thể chứa nhiều cấu hình cho cùng một trường. Ví dụ: một trường hợp miễn trừ lập chỉ mục một trường và một chính sách TTL trên cùng một trường được tính là một cấu hình trường đối với hạn mức.

Số mục nhập chỉ mục tối đa cho mỗi tài liệu

40.000

Số mục nhập chỉ mục là tổng của các mục sau của một tài liệu:

  • Số mục nhập chỉ mục một trường
  • Số lượng mục nhập chỉ mục tổng hợp

Để xem cách Cloud Firestore chuyển một tài liệu và một nhóm chỉ mục thành các mục nhập chỉ mục, hãy xem ví dụ về số lượng mục nhập chỉ mục này.

Số trường tối đa trong một chỉ mục tổng hợp 100
Kích thước tối đa của mục nhập chỉ mục

7,5 KiB

Để xem cách Cloud Firestore tính toán kích thước mục nhập chỉ mục, hãy xem phần kích thước mục nhập chỉ mục.

Tổng kích thước tối đa của các mục trong chỉ mục trong một tài liệu

8 MiB

Tổng kích thước là tổng của các kích thước sau cho một tài liệu:

  • Tổng kích thước của các mục trong chỉ mục trong một trường của tài liệu
  • Tổng kích thước của các mục trong chỉ mục tổng hợp của một tài liệu
  • Kích thước tối đa của giá trị trường được lập chỉ mục

    1.500 byte

    Các giá trị của trường lớn hơn 1500 byte sẽ bị cắt bớt. Các truy vấn liên quan đến giá trị trường bị cắt bớt có thể trả về kết quả không nhất quán.

    Thời gian tồn tại (TTL)

    Giới hạn Thông tin chi tiết
    Số lượng cấu hình trường đơn tối đa cho một cơ sở dữ liệu

    Một cấu hình cấp trường có thể chứa nhiều cấu hình cho cùng một trường. Ví dụ: một trường hợp miễn trừ lập chỉ mục một trường và một chính sách TTL trên cùng một trường được tính là một cấu hình trường đối với hạn mức.

    Xuất/Nhập

    Các giới hạn sau đây áp dụng cho các hoạt động nhập và xuất được quản lý:

    Giới hạn Thông tin chi tiết
    Tổng số yêu cầu xuất và nhập tối đa cho một dự án được phép mỗi phút 20
    Số lượng tối đa của các lệnh xuất và nhập đồng thời 50
    Số bộ lọc mã bộ sưu tập tối đa cho các yêu cầu xuất và nhập 100

    Quy tắc bảo mật

    Giới hạn Thông tin chi tiết
    Số lệnh gọi tối đa là exists(), get()getAfter() trong mỗi yêu cầu
    • 10 đối với yêu cầu một tài liệu và yêu cầu truy vấn.
    • 20 đối với các hoạt động đọc, giao dịch và ghi hàng loạt nhiều tài liệu. Giới hạn trước đó là 10 cũng áp dụng cho từng thao tác.

      Ví dụ: giả sử bạn tạo một yêu cầu ghi hàng loạt với 3 thao tác ghi và quy tắc bảo mật của bạn sử dụng 2 lệnh gọi truy cập tài liệu để xác thực từng thao tác ghi. Trong trường hợp này, mỗi lệnh ghi sử dụng 2 trong số 10 lệnh gọi truy cập và yêu cầu ghi hàng loạt sử dụng 6 trong số 20 lệnh gọi truy cập.

    Nếu vượt quá một trong hai giới hạn này, bạn sẽ gặp lỗi từ chối cấp quyền.

    Một số lệnh gọi truy cập tài liệu có thể được lưu vào bộ nhớ đệm và các lệnh gọi được lưu vào bộ nhớ đệm không tính vào hạn mức.

    Độ sâu tối đa của câu lệnh match lồng nhau 10
    Độ dài đường dẫn tối đa trong các phân đoạn đường dẫn được cho phép trong một tập hợp các câu lệnh match lồng nhau 100
    Số lượng biến thu thập đường dẫn tối đa được phép trong một tập hợp câu lệnh match lồng nhau 20
    Độ sâu lệnh gọi hàm tối đa 20
    Số lượng đối số hàm tối đa 7
    Số lượng liên kết biến let tối đa cho mỗi hàm 10
    Số lệnh gọi hàm đệ quy hoặc tuần hoàn tối đa 0 (không được phép)
    Số lượng biểu thức tối đa được đánh giá cho mỗi yêu cầu 1.000
    Kích thước tối đa của một bộ quy tắc Quy tắc phải tuân theo hai giới hạn kích thước:
    • giới hạn 256 KB đối với kích thước nguồn văn bản quy tắc được phát hành từ bảng điều khiển Firebase hoặc từ CLI bằng cách sử dụng firebase deploy.
    • giới hạn 250 KB về kích thước của quy tắc biên dịch thu được khi Firebase xử lý nguồn và kích hoạt nguồn đó ở phần phụ trợ.

    Quản lý mức chi tiêu

    Để tránh các khoản phí không mong muốn trên hoá đơn, hãy đặt ngân sách và cảnh báo hằng tháng.

    Đặt ngân sách hằng tháng

    Để theo dõi chi phí Cloud Firestore, hãy tạo ngân sách hằng tháng trong bảng điều khiển Google Cloud. Ngân sách sẽ không giới hạn mức sử dụng của bạn, nhưng bạn có thể đặt cảnh báo để thông báo cho bạn khi bạn sắp đạt đến hoặc vượt quá chi phí dự kiến cho tháng đó.

    Để đặt ngân sách, hãy chuyển đến phần Thanh toán trong bảng điều khiển Google Cloud rồi tạo ngân sách cho tài khoản Cloud Billing. Bạn có thể sử dụng chế độ cài đặt cảnh báo mặc định hoặc sửa đổi cảnh báo để gửi thông báo theo tỷ lệ phần trăm khác nhau của ngân sách hằng tháng.

    Tìm hiểu thêm về cách thiết lập ngân sách và cảnh báo ngân sách.