Tìm hiểu về việc thanh toán trên cơ sở dữ liệu theo thời gian thực

Firebase lập hoá đơn 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 đầu ra ở lớp phiên (lớp 5) của mô hình OSI. Phí bộ nhớ là 5 USD/GB/tháng, được đánh giá hằng ngày. Vị trí cơ sở dữ liệu của bạn không ảnh hưởng đến việc thanh toán. Lưu lượng truy cập đi bao gồm mức hao tổn kết nối và mã hoá từ tất cả các thao tác đối với 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. Việc đọc và ghi cơ sở dữ liệu có thể làm phát sinh chi phí kết nối trên hoá đơ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 thao tác bị từ chối theo 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í dữ liệu đã tải xuống. Thông thường, đây chiếm phần lớn chi phí băng thông, nhưng không phải là yếu tố duy nhất trong hoá đơn của bạn.
  • Mức hao tổn giao thức: Cần có thêm một số lưu lượng truy cập giữa máy chủ và ứng dụng để thiết lập và duy trì phiên. Tuỳ thuộc vào giao thức cơ bản, lưu lượng truy cập này có thể bao gồm: mức hao tổn giao thức theo thời gian thực của Cơ sở dữ liệu theo thời gian thực Firebase, mức hao tổn WebSocket và mức hao tổn tiêu đề HTTP. Mỗi khi một kết nối được thiết lập, mức hao tổn này, kết hợp với mọi mức hao tổn mã hoá SSL, sẽ góp phần làm tăng 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 hoá đơ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ã hoá SSL: Bạn sẽ phải trả một khoản phí liên quan đến mức hao tổn mã hoá SSL, cần thiết cho các kết nối bảo mật. Trung bình, chi phí này khoảng 3, 5 KB 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 thư gửi đi. Đối với hầu hết ứng dụng, đây là một tỷ lệ nhỏ trên hoá đơn của bạn. Tuy nhiên, tỷ lệ 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 nhiều lần bắt tay kết nối SSL.
  • Dữ liệu trên bảng điều khiển của Firebase: Mặc dù đây thường không phải là một phần đáng kể trong chi phí của Cơ sở dữ liệu theo thời gian thực, nhưng Firebase sẽ tính phí đối với dữ liệu mà bạn đọc và ghi từ bảng điều khiển của Firebase.

Ước tính mức sử dụng đã tính phí

Để xem mức sử dụng dữ liệu và kết nối với Cơ sở dữ liệu theo thời gian thực hiện tại, hãy kiểm tra thẻ Mức sử dụng trong bảng điều khiển của Firebase. Bạn có thể kiểm tra mức sử dụng trong kỳ 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ê về việc sử dụng cho các chỉ số sau:

  • Số lượt kết nối: Số lượng kết nối đồng thời, hiện đang mở và theo thời gian thực vào cơ sở dữ liệu của bạn. Dữ liệu này bao gồm các kết nối theo thời gian thực sau đây: WebSocket, thăm dò ý kiến trong thời gian dài và sự kiện do máy chủ HTML gửi. Dữ liệu này không bao gồm các yêu cầu RESTful.
  • Bộ nhớ: 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 tính năng lưu trữ hoặc dữ liệu của Firebase được lưu trữ thông qua các sản phẩm Firebase khác.
  • Tải xuống: Tất cả các byte được tải xuống từ cơ sở dữ liệu của bạn, bao gồm cả chi phí giao thức và mã hoá.
  • Tải: Biểu đồ này cho biết 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 mức 100%.

Tối ưu hoá việc sử dụng

Bạn có thể áp dụng một số phương pháp hay nhất để tối ưu hoá 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 của ứng dụng, thay vì API REST. Các SDK duy trì các kết nối mở, giúp giảm chi phí mã hoá SSL thường cộng 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 hiện không đồng bộ hoá nhiều dữ liệu hơn hoặc đồng bộ hoá thường xuyên hơn dự kiến ban đầu. Để xác định vấn đề, hãy dùng công cụ trình phân tích tài nguyên để đo lường hoạt động đọc và bật tính năng ghi nhật ký gỡ lỗi trong SDK Android, Target-CWeb. Kiểm tra các quy trình đồng bộ hoá và chạy ở chế độ nền trong ứng dụng của bạn để đảm bảo mọi thứ đang hoạt động như dự kiến.
  • Giảm kết nối: Nếu có thể, hãy cố gắng tối ưu hoá băng thông kết nối của bạn. Các yêu cầu REST nhỏ và thường xuyên có thể tốn kém hơn so với việc sử dụng SDK gốc để kết nối liên tục. Nếu bạn dùng API REST, hãy cân nhắc dùng một HTTP duy trì hoạt động hoặc sự kiện do máy chủ gửi để giảm chi phí do việc giao tiếp qua SSL.
  • Sử dụng vé phiên TLS: Giảm chi phí hao tổn mã hoá SSL đối với các kết nối được tiếp tục 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 cần thường xuyên kết nối bảo mật đến cơ sở dữ liệu.
  • Truy vấn lập chỉ mục: Việc lập chỉ mục dữ liệu giúp giảm tổng băng thông mà bạn sử dụng cho các truy vấn. Điều này mang lại lợi ích gấp đôi là giảm chi phí và tăng hiệu suất của cơ sở dữ liệu. Hãy dùng công cụ trình phân tích tài nguyên để 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 hoá trình nghe: Thêm truy vấn để giới hạn dữ liệu mà các thao tác nghe trả về và sử dụng trình nghe chỉ tải bản cập nhật xuống dữ liệu, ví dụ: on() thay vì once(). Ngoài ra, hãy đặt trình nghe ở cuối đường dẫn nhất có thể để giới hạn lượng dữ liệu đồng bộ hoá.
  • 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.
  • Sử dụng quy tắc: Ngăn chặn mọi hoạt động trái phép và tốn kém trên cơ sở dữ liệu của bạn. Ví dụ: việc sử dụng Quy tắc bảo mật cơ sở dữ liệu theo thời gian thực của Firebase có thể giúp tránh được trường hợp người dùng độc hại tải toàn bộ cơ sở dữ liệu của bạn xuống nhiều lần. Tìm hiểu thêm về cách sử dụng Quy tắc cơ sở dữ liệu theo thời gian thực của Firebase.

Kế hoạch tối ưu hoá tốt nhất cho ứng dụng tuỳ 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 đủ tất cả 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 của các chuyên gia Firebase trên kênh Slack hoặc trên Stack Overflow.