Những lưu ý khi xây dựng database realtime với Firebase

Tram Ho

1. Sử dụng Cấu trúc dữ liệu phẳng thay thế cho dữ liệu lồng nhau:

vd: nesting cấu trúc:

You must go to: -> Flatten structure (Denormalization)

2. Tạo dữ liệu cấu trúc để có thể chia tỷ lệ mà không ảnh hưởng đến hiệu suất khi tìm nạp dữ liệu:

Ví dụ về nhóm & người dùng & mối quan hệ giữa họ. Trường hợp có rất nhiều nhóm & rất nhiều người dùng, lúc đó người dùng truy vấn thuộc về những nhóm nào hoặc 1 nhóm sẽ chứa những người dùng nào sẽ trở thành nên rất ít người dùng, nếu chúng ta không sử dụng thủ thuật dưới đây. Lập chỉ mục người dùng & nhóm dữ liệu để tìm kiếm nhanh hơn.

Ở trên vd, khi nhìn sơ qua, ta thấy có 1 sự dư thừa dữ liệu: alovelace lại chứa các techpionners nhóm và techpionners nhóm lại chứa user alovelace !!! Đó là 1 sự thừa cân cần thiết để truy vấn dữ liệu được nhanh chóng, trong trường hợp chúng ta có nhóm hàng và người dùng hàng triệu. If dứng ở vị trí 1 người dùng -> truy vấn ra được nhóm mà người dùng đó tham gia với chi phí thấp. Hoặc đứng ở 1 nhóm: chúng ta có thể truy vấn ra ngay những thành viên của nhóm.

Lưu ý ở this item: is when using change data must be change 2 every, should be use in code, note.

3. Cách cập nhật nhiều nơi (đường dẫn) dữ liệu trong cơ sở dữ liệu với 1 API được gọi:

Khi xóa cũng có thể sử dụng điều này kỹ thuật với null tham số và gọi UpdateChildrenAsync ()

4. Những lưu ý về việc sử dụng cơ sở dữ liệu thời gian thực để tiết kiệm tiền

  • Việc tính toán tiền của cơ sở dữ liệu dựa vào dung lượng lưu trữ cơ sở dữ liệu & lưu lượng mạng (tất cả lưu lượng mạng ra ngoài). Mỗi tháng $ 5/1 Gb, được tính từng ngày 1.
  • Lưu lượng mạng outbound bao gồm chi phí kết nối và mã hóa từ tất cả các cơ sở dữ liệu hoạt động và dữ liệu được tải xuống để đọc ở ứng dụng khách .. tất cả các kết nối loại … đều phải trả tiền ..

Tiền tính toán phải trả như thế nào?

Use tab sử dụng:

  • kết nối: số lượng kết nối đồng thời đến db
  • Storage: dung lượng lưu trữ cơ sở dữ liệu, không tính toán dữ liệu ở các sản phẩm firebase khác (chỉ db thôi)
  • Tải xuống: Tổng số byte đã tải xuống, bao gồm chi phí giao thức và mã hóa.
  • Load: Cho biết lượng db đang được sử dụng.

Làm sao để tối ưu hóa chi phí?

Theo hướng dẫn của google, có một số phương pháp hay nhất như sau:

  • Use SDK Native thay vì sử dụng REST API giảm thiểu chi phí SSL & có thể sử dụng cache cục bộ.
  • Kiểm tra lỗi liên tục: Kiểm tra việc đồng bộ nhiều dữ liệu quá? or sync thường xuyên quá -> gây lãng phí. Có chạy đồng bộ dưới nền & đồng bộ đó có đúng với mong đợi không?
  • Roof connection: băng thông tối ưu nếu có thể. Thường thì nhiều yêu cầu REST có thể sẽ tốn nhiều chi phí hơn so với 1 kết nối bằng SDK gốc. Nếu dự án phải sử dụng REST API, hãy xem xét việc sử dụng các sự kiện HTTP keep-living hoặc server-client để giảm thiểu bắt tay SSL chi phí.
  • Truy vấn chỉ mục: xem cách lập chỉ mục cơ sở dữ liệu ở đây . This Fountain for the information of the total band that you used for the query. Công cụ xác định dữ liệu nào không được lập chỉ mục ở đây .
  • Tối ưu sự kiện lắng nghe: Thêm truy vấn để giới hạn dữ liệu mà hoạt động nghe bạn trả về và sử dụng việc kiểm tra nghe chỉ tải xuống các bản cập nhật cho vd dữ liệu: use on () thay thế một lần ( ).
  • Tối ưu hóa kho lưu trữ: gắn kết thêm các tham số vào người dùng bảng và dữ liệu bảng, sau đó chạy các công việc dọn dẹp để dọn dẹp các kho dữ liệu …
  • Quy tắc sử dụng: ẩn những chi phí hoạt động, trái phép hoạt động trên cơ sở dữ liệu. Ví dụ, hacker tải xuống liên tục các phần trong cơ sở dữ liệu -> sinh ra chi phí.
Chia sẻ bài viết ngay

Nguồn bài viết : Viblo