Tài liệu này giải thích thông tin chi tiết về giá của Cloud Firestore.
Nếu bạn thanh toán bằng đơn vị tiền tệ không phải USD, thì giá niêm yết 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 mục sau:
- Số lượng tài liệu bạn đọc, ghi và xoá.
- Số 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ượt đọc chỉ mục.
- Dung lượng lưu trữ mà cơ sở dữ liệu của bạn sử dụng, bao gồm cả mức hao tổn 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 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 mà không tốn 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 hạn mức miễn phí:
| Bậc miễn phí | Hạn ngạch dung lượng |
|---|---|
| Dữ liệu được lưu trữ | 1 GiB |
| Tài liệu đọc | 50.000/ngày |
| Số lượt ghi tài liệu | 20.000/ngày |
| Xoá tài liệu | 20.000 bản/ngày |
| Chuyển dữ liệu ra ngoài | 10 GiB mỗi tháng |
Các thao tác và tính năng sau đây không có hạn mức sử dụng miễn phí. Bạn phải bật thông tin 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 các thao tác đọc, ghi, xoá và lưu trữ cho từng vị trí Cloud Firestore, hãy xem phần Google Cloud giá.
Nếu bạn thanh toán bằng đơn vị tiền tệ không phải USD, thì mức giá được niêm yết bằng đơn vị tiền tệ của bạn trên trang Mã 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 trên mỗi dự án
Mỗi dự án chỉ có thể có một cơ sở dữ liệu đủ điều kiện nhận 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 bạn tạo (bất kể mã nhận dạng của cơ sở dữ liệu đó) đủ điều kiện nhận 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 nhận 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ẽ được tính phí dựa trên mức sử dụng phát sinh trên các cơ sở dữ liệu đó.
Đọ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 thao tác ghi và xoá tài liệu mà bạn thực hiện.
Phí cho các thao tác ghi và xoá rất đơn giản. Đối với thao tác ghi, mỗi thao tác set hoặc update được tính là một thao tác 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.
Đọc mục nhập chỉ mục
Bạn sẽ bị tính phí một thao tác đọc cho mỗi lô có tối đa 1.000 mục nhập chỉ mục được đọc bằng một truy vấn, ngoại trừ những trường hợp sau:
Đối với truy vấn tìm kiếm vectơ K lân cận gần nhất, bạn sẽ bị tính phí 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: 5trả về 5 tài liệu và đọc 1550 mục nhập chỉ mục vectơ kNN, bạn sẽ bị tính phí 5 thao tác đọc cho các tài liệu được trả về và 16 thao tác đọc cho 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 dải ô sẽ không bị tính phí cho các mục nhập chỉ mục đã đọc.
Ví dụ: truy vấn sau đây chứa một trường bằng (
age) và một trường dải ô (start_date) và không bị tính phí cho các mục nhập chỉ mục đã đọ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 dải ô (
agevàstart_date) và bị tính phí cho các mục nhập chỉ mục đọc:db.collection("employees").whereGreaterThanOrEqualTo("age", 35) .whereGreaterThanOrEqualTo("start_date", new Date(2020, 1, 1))Trường xuất hiện trong mệnh đề order by được coi là 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 dải ô (
agevàstart_date) và bị tính phí cho các lượt đọ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à trường dải ô, ngay cả khi trường này chỉ được dùng trong bộ lọc bằng. Do đó, truy vấn sau đây chứa hai trường dải ô (agevà__name__) và bị tính phí cho các lượt đọ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 truy vấn tổng hợp như count(), sum() và avg(), bạn sẽ bị tính phí cho các mục nhập chỉ mục mà truy vấn đọc được 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ượt đọ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ẽ được tính phí cho một lượt đọ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ượt đọ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 tính năng Giải thích truy vấn.
Nghe kết quả truy vấn
Cloud Firestore cho phép bạn lắng 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 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ượt đọc khi một tài liệu bị xoá khỏi tập hợp kết quả do 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ượt đọc.)
Việc tính phí cho trình nghe trong SDK web và thiết bị di động cũng phụ thuộc vào việc tính năng duy trì trạng thái ngoại tuyến có được bật hay không:
Nếu bạn bật tính năng lưu trữ cố định khi không có mạng 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 không có mạng), 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 lưu trữ cố định khi không có mạng bị tắt, 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ý tập hợ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ế, những 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 gửi một truy vấn có độ lệch, bạn sẽ bị tính phí đọc cho 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ượt đọc. Do chi phí bổ sung này, bạn nên sử dụng con trỏ thay vì độ dời bất cứ khi nào có thể.
Các truy vấn không phải là đọc tài liệu
Đối với các truy vấn không phải là đọc tài liệu, chẳng hạn như yêu cầu danh sách mã nhận dạng tập hợp, bạn sẽ được tính phí cho một lần đọc tài liệu. Nếu việc tìm nạp toàn bộ kết quả cần 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ẽ được 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ỗi truy vấn bạn thực hiện sẽ bị tính phí tối thiểu là một lượt đọc tài liệu, ngay cả khi truy vấn đó không trả về kết quả nào.
Cloud Firestore Security Rules
Đối với 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, thì bạn sẽ bị tính phí cho các lượt đọc bổ sung như sau:
Bạn sẽ bị tính phí cho những lượt đọc cần thiết để đánh giá Cloud Firestore Security Rules của bạn.
Ví dụ: nếu các quy tắc của bạn tham chiếu đến ba tài liệu, nhưng Cloud Firestore chỉ phải đọc hai trong số các tài liệu đó để đánh giá các quy tắc của bạn, thì bạn sẽ bị tính phí cho hai lần đọc bổ sung đối với các tài liệu phụ thuộc.
Bạn chỉ bị tính phí một lần đọc cho mỗi tài liệu phụ thuộc, ngay cả khi các 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í đá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 lắng 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 lần 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 không có kết nối mạng, sau đó có kết nối mạng trở 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 của mình.
Kích thước 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ả mức hao tổn bộ nhớ. Lượng dữ liệu hao tổn bao gồm siêu dữ liệu, chỉ mục tự động và chỉ mục kết hợp.
Mỗi tài liệu được lưu trữ trong Cloud Firestore đều cần có siêu dữ liệu sau:
- Mã tài liệu, bao gồm cả mã 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ó giản đồ, nên tên của mỗi trường trong tài liệu phải được lưu trữ cùng với giá trị của trường.
- Mọi chỉ mục một trường và chỉ mục kết 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 tập hợp; số lượng giá trị trường bất kỳ, 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 theo 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 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 dung lượng lưu trữ của Cloud Firestore trong phần Cách tính dung lượng lưu trữ.
Dữ liệu PITR
Nếu bật tính năng PITR, bạn sẽ bị tính phí lưu trữ dữ liệu PITR. Hầu hết khách hàng sẽ thấy rằng tổng chi phí 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 theo 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 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 cho cả tháng, thì kích thước dữ liệu PITR có thể tính phí cũng là 1 GiB.
Mức thanh toán tối thiểu: Bạn có thể bị tính phí lưu trữ PITR tối đa 1 ngày ngay cả khi bạn tắt PITR trong vòng một ngày sau khi bật.
Hoạt động sao lưu dữ liệu và khôi phục
Nếu bật tính năng sao lưu, bạn sẽ bị tính phí cho bộ nhớ của các bản sao lưu cơ sở dữ liệu. Dung lượng lưu trữ của một bản sao lưu bằng với dung lượng lưu trữ của cơ sở dữ liệu tại thời điểm sao lưu.
Chi phí lưu trữ cho các bản sao lưu được tính theo GiB/tháng. Trong khoảng thời gian một tháng, số ngày lưu giữ mỗi bản sao lưu (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 lấy kích thước bộ nhớ của bản sao lưu nhân với tỷ lệ thời gian lưu giữ bản sao lưu trong tháng, rồ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 hoạt động 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, 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à lập 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. Bạn không phải trả thêm phí cho hoạt động giải thích và phân tích, mà chỉ phải trả 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 yêu cầu Cloud Firestore của bạn sử dụng, như trình bày trong các phần sau. Chi phí băng thông mạng của một yêu cầu Cloud Firestore 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 đến 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 chuyển đổi tuần tự. Phí tổn giao thức, chẳng hạn như phí tổn 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 sẽ không được tính vào mức sử dụng băng thông mạng.
Để biết bạn đã sử dụng bao nhiêu băng thông mạng, bạn có thể dùng Google Cloud Console để xuất dữ liệu thanh toán sang một tệp.
Giá chung cho mạng
Đố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á |
|---|---|
| Chuyển dữ liệu vào | Miễn phí |
| Chuyển dữ liệu trong một khu vực | Miễn phí |
| Chuyển dữ liệu giữa các khu vực trong cùng một đa khu vực | Miễn phí |
| Chuyển dữ liệu giữa các khu vực trong Hoa Kỳ (mỗi GiB) | 0,01 USD (miễn phí 10 GiB đầu tiên mỗi tháng) |
| Chuyển dữ liệ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ỳ | Mức phí chuyển dữ liệu Internet ra bên ngoài của Google Cloud Platform |
Nếu bạn thanh toán bằng đơn vị tiền tệ không phải USD, thì mức giá được niêm yết bằng đơn vị tiền tệ của bạn trên trang Mã SKU của Cloud Platform sẽ được áp dụng.
Cloud Firestore cũng phải chịu thêm phí lưu lượng truy cập Internet đi ra ngoài cho những trường hợp 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á lưu lượng truy cập Internet đi ra.
Xem ví dụ về giá
Để xem cách chi phí được lập hoá đơ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ý chi tiêu
Để tránh bị tính phí ngoài dự kiến trên hoá đơn, hãy đặt ngân sách hằng tháng và cảnh báo trong bảng điều khiển Google Cloud.
Để theo dõi mức sử dụng Cloud Firestore của bạn trong bảng điều khiển của Firebase, hãy chuyển đến thẻ Cơ sở dữ liệu và bộ nhớ > Firestore > Mức sử dụng. Hãy sử dụng trang tổng quan này để đánh giá mức sử dụng của bạn trong các khoảng thời gian khác nhau.