Check out what’s new from Firebase at Google I/O 2022. Learn more

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

Firebase lập hóa đơ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 mạng gửi đi ở lớp phiên (lớp 5) của mô hình OSI. Bộ nhớ được tính phí $ 5 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ủa cơ sở dữ liệu của bạn. Lưu lượng đ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 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ị các quy tắc bảo mật từ chối, 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 lập hóa đơn bao gồm:

  • Dữ liệu đã tải xuống: Khi khách hàng lấy 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 của bạn, 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ì một 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í chung của WebSocket và chi phí tiêu đề HTTP. Mỗi khi kết nối được thiết lập, chi phí chung này, kết hợp với bất kỳ chi phí mã hóa SSL nào, sẽ đóng góp 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 duy nhất, nhưng nó có thể là một phần đáng kể trong hóa đơn của bạn nếu trọng tải 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 đầu tiên 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 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 lần bắt tay SSL. Ví dụ: các thiết bị không hỗ trợ phiếu 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 mà bạn đọc và ghi từ bảng điều khiển Firebase.

Ước tính mức sử dụng được lập hóa đơn 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 của bạn và mức sử dụng dữ liệu, 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ị 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ở, trong thời gian thực vớ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, long polling 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ả cá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 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 tiếp cậ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ể áp dụng để tối ưu hóa việc sử dụng cơ sở dữ liệu và chi phí băng thông của mình.

  • 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 cộng với REST API.
  • 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 các vấn đề, hãy sử dụng công cụ hồ sơ để đo lường các 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 nền và quy trình đồng bộ hóa trong ứng dụng của bạn để đảm bảo mọi thứ đang 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 một kết nối liên tục, đơn lẻ bằng cách sử dụng SDK gốc. Nếu bạn sử dụng REST API, hãy cân nhắc sử dụng sự kiện HTTP giữ nguyên hoặc sự kiện do máy chủ gửi , điều này có thể giảm chi phí từ quá trình bắt tay SSL.
  • Sử dụng phiếu phiên TLS: Giảm chi phí chung cho 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 phiếu 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, an toàn với cơ sở dữ liệu.
  • Truy vấn lập chỉ mục: Việc lập chỉ mục dữ liệu của bạn làm giảm tổng băng thông mà bạn sử dụng cho các truy vấn, điều này có lợi kép 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 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 để giới hạn dữ liệu mà các 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 của bạn càng xa càng tốt để giới hạn lượng dữ liệu mà chúng đồ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 có thể tốn kém trên cơ sở dữ liệu của bạn. Ví dụ: sử dụng Quy tắc cơ sở dữ liệu thời gian thực của Firebase có thể tránh được trường hợp người dùng độc hại tải xuống liên tục 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 của 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 .