Hiểu thanh toán cơ sở dữ liệu thời gian thực

Firebase tính phí cho dữ liệu bạn lưu trữ trong cơ sở dữ liệu của mình và tất cả lưu lượng truy cập mạng đi ở lớp phiên (lớp 5) của mô hình OSI. Dung lượng lưu trữ được tính phí ở mức 5 USD cho mỗi GB/tháng, được đánh giá hàng ngày. Việc thanh toán không bị ảnh hưởng bởi vị trí cơ sở dữ liệu của bạn. Lưu lượng truy cập đi bao gồm chi phí kết nối và mã hóa từ tất cả các hoạt động cơ sở dữ liệu và dữ liệu được tải xuống thông qua các lần đọc cơ sở dữ liệu. Cả việc đọc và ghi cơ sở dữ liệu đều có thể dẫn đến chi phí kết nối trên hóa đơn của bạn. Tất cả lưu lượng truy cập đến và đi từ cơ sở dữ liệu của bạn, bao gồm cả các hoạt động bị từ chối bởi các quy tắc bảo mật, đều dẫn đến chi phí phải trả.

Một số ví dụ phổ biến về lưu lượng truy cập được tính phí bao gồm:

  • Dữ liệu đã tải xuống: Khi khách hàng nhận dữ liệu từ cơ sở dữ liệu của bạn, Firebase sẽ tính phí cho dữ liệu đã tải xuống. Thông thường, điều này chiếm phần lớn chi phí băng thông nhưng nó không phải là yếu tố duy nhất trong hóa đơn của bạn.
  • Chi phí giao thức: Một số lưu lượng bổ sung giữa máy chủ và máy khách là cần thiết để thiết lập và duy trì phiên. Tùy thuộc vào giao thức cơ bản, lưu lượng truy cập này có thể bao gồm: chi phí giao thức thời gian thực của Cơ sở dữ liệu thời gian thực Firebase, chi phí WebSocket và chi phí tiêu đề HTTP. Mỗi khi kết nối được thiết lập, chi phí này kết hợp với bất kỳ chi phí mã hóa SSL nào sẽ góp phần vào chi phí kết nối. Mặc dù đây không phải là nhiều băng thông cho một yêu cầu nhưng nó có thể là một phần đáng kể trong hóa đơn của bạn nếu tải trọng của bạn nhỏ hoặc bạn thực hiện các kết nối ngắn, thường xuyên.
  • Chi phí mã hóa SSL: Có một chi phí liên quan đến chi phí mã hóa SSL cần thiết cho các kết nối an toàn. Trung bình, chi phí này là khoảng 3,5KB cho lần bắt tay ban đầu và khoảng hàng chục byte cho tiêu đề bản ghi TLS trên mỗi tin nhắn gửi đi. Đối với hầu hết các ứng dụng, đây là một tỷ lệ phần trăm nhỏ trong hóa đơn của bạn. Tuy nhiên, điều này có thể trở thành một tỷ lệ lớn nếu trường hợp cụ thể của bạn yêu cầu nhiều bắt tay SSL. Ví dụ: các thiết bị không hỗ trợ vé phiên TLS có thể yêu cầu số lượng lớn các lần bắt tay kết nối SSL.
  • Dữ liệu bảng điều khiển Firebase: Mặc dù đây thường không phải là một phần đáng kể trong chi phí Cơ sở dữ liệu thời gian thực nhưng Firebase tính phí cho dữ liệu bạn đọc và ghi từ bảng điều khiển Firebase.

Ước tính mức sử dụng được tính phí của bạn

Để xem các kết nối Cơ sở dữ liệu thời gian thực hiện tại và mức sử dụng dữ liệu của bạn, hãy kiểm tra tab Sử dụng trong bảng điều khiển Firebase. Bạn có thể kiểm tra mức sử dụng trong thời hạn thanh toán hiện tại, 30 ngày qua hoặc 24 giờ qua.

Firebase hiển thị số liệu thống kê sử dụng cho các số liệu sau:

  • Kết nối: Số lượng kết nối đồng thời, hiện đang mở, theo thời gian thực tới cơ sở dữ liệu của bạn. Điều này bao gồm các kết nối thời gian thực sau: WebSocket, bỏ phiếu dài và các sự kiện do máy chủ HTML gửi. Nó không bao gồm các yêu cầu RESTful.
  • Lưu trữ: Lượng dữ liệu được lưu trữ trong cơ sở dữ liệu của bạn. Điều này không bao gồm lưu trữ Firebase hoặc dữ liệu được lưu trữ thông qua các sản phẩm Firebase khác.
  • Tải xuống: Tất cả byte được tải xuống từ cơ sở dữ liệu của bạn, bao gồm chi phí giao thức và mã hóa.
  • Tải: Biểu đồ này hiển thị lượng cơ sở dữ liệu của bạn đang được sử dụng, xử lý các yêu cầu trong khoảng thời gian 1 phút nhất định. Bạn có thể thấy các vấn đề về hiệu suất khi cơ sở dữ liệu của bạn đạt gần 100%.

Tối ưu hóa việc sử dụng

Có một số phương pháp hay nhất mà bạn có thể sử dụng để tối ưu hóa việc sử dụng cơ sở dữ liệu và chi phí băng thông.

  • Sử dụng SDK gốc: Bất cứ khi nào có thể, hãy sử dụng SDK tương ứng với nền tảng ứng dụng của bạn thay vì API REST. SDK duy trì các kết nối mở, giảm chi phí mã hóa SSL thường tăng thêm với API REST.
  • Kiểm tra lỗi: Nếu chi phí băng thông của bạn cao bất ngờ, hãy xác minh rằng ứng dụng của bạn không đồng bộ hóa nhiều dữ liệu hơn hoặc đồng bộ hóa thường xuyên hơn dự định ban đầu. Để xác định sự cố, hãy sử dụng công cụ trình lược tả để đo lường hoạt động đọc của bạn và bật tính năng ghi nhật ký gỡ lỗi trong Android , Objective-CWeb SDK. Kiểm tra các quy trình nền và đồng bộ hóa trong ứng dụng của bạn để đảm bảo mọi thứ đều hoạt động như bạn dự định.
  • Giảm kết nối: Nếu có thể, hãy cố gắng tối ưu hóa băng thông kết nối của bạn. Các yêu cầu REST nhỏ, thường xuyên có thể tốn kém hơn so với một kết nối liên tục, đơn lẻ bằng SDK gốc. Nếu bạn sử dụng API REST, hãy cân nhắc sử dụng các sự kiện HTTP được duy trì hoặc do máy chủ gửi để có thể giảm chi phí từ việc bắt tay SSL.
  • Sử dụng vé phiên TLS: Giảm chi phí hoạt động mã hóa SSL trên các kết nối được nối lại bằng cách phát hành vé phiên TLS . Điều này đặc biệt hữu ích nếu bạn yêu cầu kết nối thường xuyên và an toàn với cơ sở dữ liệu.
  • Truy vấn chỉ mục: Lập chỉ mục dữ liệu của bạn làm giảm tổng băng thông bạn sử dụng cho các truy vấn, điều này có lợi ích gấp đôi là giảm chi phí và tăng hiệu suất cơ sở dữ liệu của bạn. Sử dụng công cụ hồ sơ để tìm các truy vấn chưa được lập chỉ mục trong cơ sở dữ liệu của bạn.
  • Tối ưu hóa trình nghe của bạn: Thêm truy vấn để hạn chế dữ liệu mà hoạt động nghe của bạn trả về và sử dụng trình nghe chỉ tải xuống các bản cập nhật cho dữ liệu — ví dụ: on() thay vì once() . Ngoài ra, hãy đặt người nghe ở vị trí xa nhất có thể để hạn chế lượng dữ liệu họ đồng bộ hóa.
  • Giảm chi phí lưu trữ: Chạy các công việc dọn dẹp định kỳ và giảm mọi dữ liệu trùng lặp trong cơ sở dữ liệu của bạn.
  • Quy tắc sử dụng: Ngăn chặn mọi hoạt động trái phép, tốn kém trên cơ sở dữ liệu của bạn. Ví dụ: sử dụng Quy tắc bảo mật cơ sở dữ liệu thời gian thực Firebase có thể tránh được trường hợp người dùng độc hại liên tục tải xuống toàn bộ cơ sở dữ liệu của bạn. Tìm hiểu thêm về cách sử dụng Quy tắc cơ sở dữ liệu thời gian thực Firebase .

Kế hoạch tối ưu hóa tốt nhất cho ứng dụng của bạn tùy thuộc vào trường hợp sử dụng cụ thể của bạn. Mặc dù đây không phải là danh sách đầy đủ các phương pháp hay nhất nhưng bạn có thể tìm thêm lời khuyên và mẹo từ các chuyên gia Firebase trên kênh Slack của chúng tôi hoặc trên Stack Overflow .