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 truy cập mạng bên ngoài ở lớp phiên (lớp 5) của mô hình OSI. Bộ nhớ được tính phí ở mức $5 cho mỗi GB/tháng, được đánh giá hàng ngày. 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 gửi đi bao gồm chi phí kết nối và mã hóa từ tất cả các hoạt động của 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à từ cơ sở dữ liệu của bạn, bao gồm các hoạt động bị từ chối bởi các quy tắc bảo mật, dẫn đến chi phí có thể lập hóa đơn.

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 tạo nên 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ì 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 một 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, 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,5 KB 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ỏ trên hóa đơn của bạn. Tuy nhiên, điều này có thể trở thành một tỷ lệ phần trăm 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ợ vé phiên TLS có thể yêu cầu số lượng lớn kết nối SSL bắt tay.
  • 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í 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 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ị thống kê sử dụng cho các chỉ số 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ủ gửi HTML. Nó không bao gồm các yêu cầu RESTful.
  • Lưu trữ: Bao nhiêu 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 giao thức và chi phí 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 đạt 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 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 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 của bạn. Để xác định vấn đề, hãy sử dụng công cụ hồ sơ để đo hoạt động đọc của bạn và bật ghi nhật ký gỡ lỗi trong SDK Android , Objective-CWeb . 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ứ đ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 so với 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 API REST, hãy cân nhắc sử dụng sự kiện HTTP keep-alive hoặc server-sent , điều này có thể giảm chi phí từ bắt tay SSL.
  • Sử dụng vé phiên TLS: Giảm chi phí 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, 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 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à 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 đường dẫn càng tốt để giới hạn 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 bất kỳ hoạt động trái phép, tốn kém nào 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ó ác ý 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 .