Tìm hiểu về việc thanh toán trên Cloud Firestore

Tài liệu này giải thích thông tin chi tiết về giá Cloud Firestore.

Nếu bạn thanh toán bằng một đơn vị tiền tệ khác đô la Mỹ, thì giá được liệt kê bằng đơn vị tiền tệ của bạn trên SKU của Cloud Platform sẽ được áp dụng.

Tổng quan về giá

Khi sử dụng Cloud Firestore, bạn sẽ bị tính phí cho những nội dung sau:

  • Số lượng tài liệu mà bạn đọc, ghi và xoá.
  • Số lượng mục nhập chỉ mục được đọc để đáp ứng một truy vấn. Xem thêm thông tin chi tiết về số lần đọc chỉ mục.
  • Dung lượng bộ nhớ mà cơ sở dữ liệu của bạn sử dụng, bao gồm cả chi phí chung cho siêu dữ liệu và chỉ mục.
  • Lượng băng thông mạng mà bạn sử dụng.

Mức sử dụng bộ nhớ và băng thông được tính bằng gibibyte (GiB), trong đó 1 GiB = 230 byte. Tất cả các khoản phí đều được tích luỹ hằng ngày.

Các phần sau đây cung cấp thông tin chi tiết về cách bạn bị tính phí cho việc sử dụng 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 mà không mất phí. Nếu cần thêm hạn mức, 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.

Bảng sau đây tóm tắt số lượng hạn mức miễn phí:

Bậc miễn phí Hạn mức
Dữ liệu đã lưu trữ 1 GiB
Số lần đọc tài liệu 50.000 mỗi ngày
Số lần ghi tài liệu 20.000 mỗi ngày
Số lần xoá tài liệu 20.000 mỗi ngày
Truyền dữ liệu đi 10 GiB mỗi tháng

Các thao tác và tính năng sau đây không bao gồm mứ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 này:

  • Xoá TTL
  • Dữ liệu PITR
  • Dữ liệu sao lưu
  • Thao tác khôi phục
  • Thao tác sao chép

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

Giá theo vị trí

Để xem giá cho số lần đọc, ghi, xoá và bộ nhớ cho từng Cloud Firestore vị trí, hãy xem phần Google Cloud giá.

Nếu bạn thanh toán bằng một đơn vị tiền tệ khác đô la Mỹ, thì giá được liệt kê bằng đơn vị tiền tệ của bạn trên SKU của Cloud Platform sẽ được áp dụng.

Hạn mức miễn phí chỉ áp dụng cho một cơ sở dữ liệu cho mỗi dự án

Các dự án chỉ có thể có một cơ sở dữ liệu đủ điều kiện hưởng hạn mức miễn phí.

Để tạo thêm cơ sở dữ liệu, bạn phải nâng cấp gói thanh toán của dự án.

Cơ sở dữ liệu đầu tiên mà bạn tạo (bất kể mã nhận dạng của cơ sở dữ liệu đó) đều đủ điều kiện hưởng hạn mức miễn phí. Nếu bạn xoá cơ sở dữ liệu đó, thì cơ sở dữ liệu tiếp theo mà bạn tạo sẽ trở thành cơ sở dữ liệu mới đủ điều kiện hưởng hạn mức miễn phí.

Bạn không phải trả thêm phí khi tạo hoặc xoá cơ sở dữ liệu. Tất cả cơ sở dữ liệu tiếp theo sẽ bị tính phí dựa trên mức sử dụng phát sinh trên các cơ sở dữ liệu đó.

Số lần đọc, ghi và xoá

Bạn sẽ bị tính phí cho các tài liệu và mục nhập chỉ mục được đọc để đáp ứng một truy vấn. Bạn sẽ bị tính phí cho mỗi lần ghi và xoá tài liệu mà bạn thực hiện.

Phí cho số lần ghi và xoá là rất đơn giản. Đối với số lần ghi, mỗi thao tác set hoặc update được tính là một lần ghi.

Phí cho các thao tác đọc có một số điểm khác biệt mà bạn nên lưu ý. Các phần sau đây giải thích chi tiết về những điểm khác biệt này.

Số lần đọc mục nhập chỉ mục

Bạn sẽ bị tính phí cho một thao tác đọc cho mỗi lô có tối đa 1.000 mục nhập chỉ mục được một truy vấn đọc, ngoại trừ trong những trường hợp sau:

  • Đối với các truy vấn tìm kiếm vectơ K-nearest neighbor, bạn sẽ bị tính phí cho một thao tác đọc cho mỗi lô có tối đa 100 mục nhập chỉ mục vectơ kNN được truy vấn đọc.

    Ví dụ: nếu truy vấn tìm kiếm vectơ sau đây có limit: 5 trả về 5 tài liệu và đọc 1.550 mục nhập chỉ mục vectơ kNN, thì bạn sẽ bị tính phí cho 5 thao tác đọc đối với các tài liệu được trả về và 16 thao tác đọc đối với các mục nhập chỉ mục:

    // Requires single-field vector index
    const vectorQuery: VectorQuery = db.collection('cities').findNearest('embedding_field', FieldValue.vector([3.0, 1.0, 2.0]), {
      limit: 5,
      distanceMeasure: 'EUCLIDEAN'
    });
    
  • Các truy vấn có tối đa một trường phạm vi sẽ không bị tính phí cho số lần đọc mục nhập chỉ mục.

    Ví dụ: truy vấn sau đây chứa một trường đẳng thức (age) và một trường phạm vi (start_date) và không bị tính phí cho số lần đọc mục nhập chỉ mục:

    db.collection("employees").whereEqualTo("age", 35)
                              .whereGreaterThanOrEqualTo("start_date", new Date(2020, 1, 1))
    

    Truy vấn sau đây chứa hai trường phạm vi (agestart_date) và bị tính phí cho số lần đọc mục nhập chỉ mục:

    db.collection("employees").whereGreaterThanOrEqualTo("age", 35)
                              .whereGreaterThanOrEqualTo("start_date", new Date(2020, 1, 1))
    

    Một trường xuất hiện trong mệnh đề order by được coi là một trường phạm vi khi có ít nhất một trường phạm vi khác trong truy vấn. Do đó, truy vấn sau đây chứa hai trường phạm vi (agestart_date) và bị tính phí cho số lần đọc mục nhập chỉ mục:

    db.collection("employees").whereGreaterThanOrEqualTo("age", 35)
                              .orderBy("start_date")
    

    Trường __name__ luôn được coi là một trường phạm vi, ngay cả khi trường này chỉ được dùng trong một bộ lọc đẳng thức. Do đó, truy vấn sau đây chứa hai trường phạm vi (age__name__) và bị tính phí cho số lần đọc mục nhập chỉ mục:

    db.collection("employees").whereIn("__name__", Arrays.asList("/employees/Alice", "/employees/Bob"))
                              .orderBy("age")
    

Truy vấn tổng hợp

Đối với các truy vấn tổng hợp như count(), sum(), và avg(), bạn sẽ bị tính phí cho số lần đọc mục nhập chỉ mục do truy vấn thực hiện như mô tả ở trên. Đối với các truy vấn tổng hợp đọc 0 mục nhập chỉ mục, mức phí tối thiểu là một lần đọc tài liệu.

Ví dụ: các thao tác count() đọc từ 0 đến 1.000 mục nhập chỉ mục sẽ bị tính phí cho một lần đọc tài liệu. Đối với một thao tác count() đọc 1.500 mục nhập chỉ mục, bạn sẽ bị tính phí cho 2 lần đọc tài liệu.

Để tìm hiểu thêm về các chỉ mục được sử dụng và các mục nhập chỉ mục được đọc, hãy sử dụng Giải thích truy vấn.

Nghe kết quả truy vấn

Cloud Firestore cho phép bạn nghe kết quả của một truy vấn và nhận thông tin cập nhật theo thời gian thực khi kết quả truy vấn thay đổi.

Khi bạn nghe kết quả của một truy vấn, bạn sẽ bị tính phí cho một lần đọc mỗi khi một tài liệu trong tập kết quả được thêm hoặc cập nhật. Bạn cũng bị tính phí cho một lần đọc khi một tài liệu bị xoá khỏi tập kết quả vì tài liệu đó đã thay đổi. (Ngược lại, khi một tài liệu bị xoá, bạn sẽ không bị tính phí cho một lần đọc.)

Việc tính phí cho trình nghe trong SDK dành cho thiết bị di động và web cũng phụ thuộc vào việc tính năng duy trì ngoại tuyến có được bật hay không:

  • Nếu tính năng duy trì ngoại tuyến được bật và trình nghe bị ngắt kết nối trong hơn 30 phút (ví dụ: nếu người dùng chuyển sang chế độ ngoại tuyến), thì bạn sẽ bị tính phí cho các tài liệu và mục nhập chỉ mục được đọc như thể bạn đã đưa ra một truy vấn hoàn toàn mới.

  • Nếu tính năng duy trì ngoại tuyến bị tắt, thì bạn sẽ bị tính phí cho các tài liệu và mục nhập chỉ mục được đọc như thể bạn đã đưa ra một truy vấn hoàn toàn mới bất cứ khi nào trình nghe ngắt kết nối và kết nối lại.

Quản lý các tập kết quả lớn

Cloud Firestore có một số tính năng giúp bạn quản lý các truy vấn trả về một số lượng lớn kết quả:

  • Con trỏ cho phép bạn tiếp tục một truy vấn chạy trong thời gian dài.
  • Mã thông báo trang giúp bạn phân trang kết quả truy vấn.
  • Giới hạn chỉ định số lượng kết quả cần truy xuất.
  • Độ lệch cho phép bạn bỏ qua một số lượng tài liệu cố định.

Bạn không phải trả thêm phí khi sử dụng con trỏ, mã thông báo trang và giới hạn. Trên thực tế, các tính năng này có thể giúp bạn tiết kiệm tiền bằng cách chỉ đọc những tài liệu mà bạn thực sự cần.

Tuy nhiên, khi bạn gửi một truy vấn có chứa độ lệch, bạn sẽ bị tính phí cho một lần đọc đối với mỗi tài liệu bị bỏ qua. Ví dụ: nếu truy vấn của bạn sử dụng độ lệch là 10 và truy vấn trả về 1 tài liệu, thì bạn sẽ bị tính phí cho 11 lần đọc. Do chi phí bổ sung này, bạn nên sử dụng con trỏ thay vì độ lệch bất cứ khi nào có thể.

Các truy vấn khác ngoài số lần đọc tài liệu

Đối với các truy vấn khác ngoài số lần đọc tài liệu, chẳng hạn như yêu cầu danh sách mã nhận dạng bộ sưu tập, bạn sẽ bị tính phí cho một lần đọc tài liệu. Nếu việc tìm nạp toàn bộ tập kết quả yêu cầu nhiều yêu cầu (ví dụ: nếu bạn đang sử dụng tính năng phân trang), thì bạn sẽ bị tính phí một lần cho mỗi yêu cầu.

Mức phí tối thiểu cho truy vấn

Mức phí tối thiểu là một lần đọc tài liệu cho mỗi truy vấn mà bạn thực hiện, ngay cả khi truy vấn không trả về kết quả nào.

Cloud Firestore Security Rules

Đối với các thư viện ứng dụng web và thiết bị di động, nếu Cloud Firestore Security Rules sử dụng exists(), get(), hoặc getAfter() để đọc một hoặc nhiều tài liệu từ cơ sở dữ liệu của bạn, thì bạn sẽ bị tính phí cho số lần đọc bổ sung như sau:

  • Bạn sẽ bị tính phí cho số lần đọc cần thiết để đánh giá Cloud Firestore Security Rules.

    Ví dụ: nếu quy tắc của bạn tham chiếu đến 3 tài liệu, nhưng Cloud Firestore chỉ phải đọc 2 trong số các tài liệu đó để đánh giá quy tắc của bạn, thì bạn sẽ bị tính phí cho 2 lần đọc bổ sung đối với các tài liệu phụ thuộc.

    Bạn chỉ bị tính phí cho một lần đọc cho mỗi tài liệu phụ thuộc, ngay cả khi quy tắc của bạn tham chiếu đến tài liệu đó nhiều lần.

  • Bạn chỉ bị tính phí cho việc đánh giá quy tắc một lần cho mỗi yêu cầu.

    Do đó, việc đọc nhiều tài liệu có thể tốn ít chi phí hơn so với việc đọc từng tài liệu một, vì việc đọc nhiều tài liệu đòi hỏi ít yêu cầu hơn.

  • Khi bạn nghe kết quả của một truy vấn, bạn sẽ bị tính phí cho việc đánh giá quy tắc trong tất cả các trường hợp sau:

    • Khi bạn đưa ra truy vấn.
    • Mỗi khi kết quả truy vấn được cập nhật.
    • Bất cứ khi nào thiết bị của người dùng chuyển sang chế độ ngoại tuyến, sau đó kết nối lại.
    • Bất cứ khi nào bạn cập nhật quy tắc.
    • Bất cứ khi nào bạn cập nhật các tài liệu phụ thuộc trong quy tắc.

Dung lượng bộ nhớ cơ sở dữ liệu

Bạn sẽ bị tính phí cho lượng dữ liệu mà bạn lưu trữ trong Cloud Firestore, bao gồm cả chi phí chung cho bộ nhớ. Lượng chi phí chung bao gồm siêu dữ liệu, chỉ mục tự động và chỉ mục tổng hợp.

Mỗi tài liệu được lưu trữ trong Cloud Firestore đều yêu cầu siêu dữ liệu sau:

  • Mã nhận dạng tài liệu, bao gồm mã nhận dạng bộ sưu tập và tên tài liệu.
  • Tên và giá trị của mỗi trường. Vì Cloud Firestore không có lược đồ, nên tên của mỗi trường trong một tài liệu phải được lưu trữ cùng với giá trị trường.
  • Mọi chỉ mục một trường và chỉ mục tổng hợp tham chiếu đến tài liệu. Mỗi mục nhập chỉ mục chứa mã nhận dạng bộ sưu tập; bất kỳ số lượng giá trị trường nào, tuỳ thuộc vào định nghĩa chỉ mục; và tên tài liệu.

Chi phí lưu trữ được tính bằng GiB/tháng và được tính hằng ngày. Cloud Firestore đo lường kích thước cơ sở dữ liệu hằng ngày. Trong khoảng thời gian một tháng, các điểm mẫu này được tính trung bình để tính toán kích thước bộ nhớ cơ sở dữ liệu. Giá trị trung bình này được nhân với đơn giá của bộ nhớ (GiB-tháng)

Tìm hiểu cách tính toán bộ nhớ Cloud Firestore tại phần Tính toán dung lượng bộ nhớ.

Dữ liệu PITR

Nếu bạn bật PITR, bạn sẽ bị tính phí cho việc lưu trữ dữ liệu PITR. Hầu hết khách hàng sẽ thấy rằng chi phí tổng thể của việc lưu trữ dữ liệu PiTR tương tự như chi phí lưu trữ của cơ sở dữ liệu.

Chi phí lưu trữ cho PITR được tính bằng GiB/tháng và được tính hằng ngày. Cloud Firestore đo lường kích thước cơ sở dữ liệu hằng ngày. Trong khoảng thời gian một tháng, các điểm mẫu này được tính trung bình để tính toán kích thước bộ nhớ cơ sở dữ liệu. Giá trị trung bình này được nhân với đơn giá của PITR (GiB-tháng).

Ví dụ: nếu kích thước trung bình của cơ sở dữ liệu trong một tháng là 1 GiB và PITR được bật trong cả tháng, thì kích thước dữ liệu PITR có thể tính phí cũng là 1 GiB.

Mức phí tối thiểu: Bạn có thể bị tính phí tối đa 1 ngày chi phí lưu trữ PITR ngay cả khi bạn tắt PITR trong vòng một ngày sau khi bật.

Dữ liệu sao lưu và thao tác khôi phục

Nếu bạn bật tính năng sao lưu, bạn sẽ bị tính phí cho việc lưu trữ dữ liệu sao lưu cơ sở dữ liệu. Dung lượng bộ nhớ cho một bản sao lưu bằng với dung lượng bộ nhớ của cơ sở dữ liệu khi bản sao lưu được thực hiện.

Chi phí lưu trữ cho bản sao lưu được tính bằng GiB/tháng. Trong khoảng thời gian một tháng, số ngày mà mỗi bản sao lưu được giữ lại, tính trung bình trong tháng cũng được tính. Chi phí của mỗi bản sao lưu được tính bằng cách nhân dung lượng bộ nhớ của bản sao lưu với tỷ lệ phần trăm của tháng mà bản sao lưu được giữ lại, nhân với đơn giá. Ranh giới ngày được xác định theo múi giờ America/Los_Angeles cho mục đích thanh toán.

Khi bạn thực hiện thao tác khôi phục, Cloud Firestore sẽ đo lường kích thước của bản sao lưu cho thao tác khôi phục. Kích thước của bản sao lưu được nhân với đơn giá của thao tác khôi phục (GiB).

Giải thích truy vấn

Việc sử dụng tính năng Giải thích truy vấn Firestore sẽ phát sinh chi phí.

Khi một truy vấn được giải thích bằng tuỳ chọn mặc định, sẽ không có thao tác đọc chỉ mục nào được thực hiện. Bất kể độ phức tạp của truy vấn, một thao tác đọc sẽ bị tính phí.

Khi một truy vấn được giải thích bằng tuỳ chọn phân tích, các thao tác đọc và chỉ mục sẽ được thực hiện, vì vậy, bạn sẽ bị tính phí cho truy vấn như bình thường. Không có khoản phí bổ sung nào cho hoạt động giải thích và phân tích, chỉ có khoản phí thông thường cho truy vấn đang được thực thi.

Băng thông mạng

Bạn sẽ bị tính phí cho băng thông mạng mà các Cloud Firestore yêu cầu sử dụng, như minh hoạ trong các phần sau. Chi phí băng thông mạng của một Cloud Firestore yêu cầu phụ thuộc vào kích thước phản hồi của yêu cầu, vị trí của cơ sở dữ liệu Cloud Firestore và đích của phản hồi.

Cloud Firestore tính toán kích thước phản hồi dựa trên định dạng thông báo được tuần tự hoá. Chi phí giao thức, chẳng hạn như chi phí SSL, không được tính vào mức sử dụng băng thông mạng. Các yêu cầu bị Cloud Firestore Security Rules từ chối không được tính vào mức sử dụng băng thông mạng.

Để tìm hiểu lượng băng thông mạng mà bạn đã sử dụng, bạn có thể sử dụng bảng điều khiển Cloud để xuất dữ liệu thanh toán sang một tệp.

Giá mạng chung

Đối với các yêu cầu bắt nguồn từ Google Cloud Platform (ví dụ: từ một ứng dụng chạy trên Google Compute Engine), bạn sẽ bị tính phí như sau:

Loại lưu lượng truy cập Giá
Truyền dữ liệu đến Miễn phí
Truyền dữ liệu trong một khu vực Miễn phí
Truyền dữ liệu giữa các khu vực trong cùng một khu vực nhiều vùng Miễn phí
Truyền dữ liệu giữa các khu vực trong Hoa Kỳ (mỗi GiB) 0,01 đô la Mỹ (10 GiB đầu tiên mỗi tháng là miễn phí)
Truyền dữ liệu giữa các vùng, không bao gồm lưu lượng truy cập giữa các vùng ở Hoa Kỳ Giá truyền dữ liệu internet đi của Google Cloud Platform

Nếu bạn thanh toán bằng một đơn vị tiền tệ khác đô la Mỹ, thì giá được liệt kê bằng đơn vị tiền tệ của bạn trên SKU của Cloud Platform sẽ được áp dụng.

Cloud Firestore cũng phải chịu thêm phí truyền dữ liệu internet đi cho những nội dung sau:

  • Google Cloud yêu cầu giữa các khu vực, không bao gồm lưu lượng truy cập giữa các khu vực ở Hoa Kỳ
  • Yêu cầu từ bên ngoài Google Cloud (ví dụ: từ thiết bị di động của người dùng)

Xem Google Cloud giá truyền dữ liệu internet đi.

Xem ví dụ về giá

Để xem cách chi phí thanh toán Cloud Firestore tích luỹ trong một ứng dụng mẫu thực tế, hãy xem ví dụ về thanh toán Cloud Firestore.

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 bằng Google Cloud's bảng điều khiển thanh toán.

Để 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 để đo lường mức sử dụng của bạn trong các khoảng thời gian khác nhau.