Firebase Realtime Database

I. Tổng quan
Firebase Realtime Database đóng vai trò quan trọng trong việc cung cấp một giải pháp linh hoạt và mạnh mẽ cho việc lưu trữ và đồng bộ dữ liệu theo thời gian thực. Firebase Realtime Database sử dụng mô hình thời gian thực, cho phép dữ liệu được đồng bộ ngay lập tức khi có thay đổi.
Dữ liệu trong Firebase Realtime Database được lưu trữ dưới dạng JSON, tạo ra một cấu trúc linh hoạt và dễ đọc.
II. So sánh với với Firebase Firestore
Firebase cung cấp hai cơ sở dữ liệu tài liệu dựa trên đám mây mà khách hàng có thể truy cập. Firebase khuyên khách hàng mới nên bắt đầu với Cloud Firestore:
- Cloud Firestore là cơ sở dữ liệu tài liệu tương thích JSON cấp doanh nghiệp được đề xuất , được hơn 250.000 nhà phát triển tin cậy. Nó phù hợp cho các ứng dụng có mô hình dữ liệu phong phú yêu cầu khả năng truy vấn, khả năng mở rộng và tính sẵn sàng cao. Nó cũng cung cấp khả năng đồng bộ hóa máy khách có độ trễ thấp và truy cập dữ liệu ngoại tuyến.
- Realtime DB là cơ sở dữ liệu JSON của Firebase cổ điển. Nó phù hợp cho các ứng dụng có mô hình dữ liệu đơn giản yêu cầu tra cứu đơn giản và đồng bộ hóa có độ trễ thấp với khả năng mở rộng hạn chế.
Mô hình dữ liệu
Cả Cơ sở dữ liệu thời gian thực và Cloud Firestore đều là Cơ sở dữ liệu NoSQL.
Cloud Firestore | Realtime DB |
Lưu trữ dữ liệu dưới dạng bộ sưu tập tài liệu.Dữ liệu đơn giản dễ dàng lưu trữ trong các tài liệu, rất giống với JSON.Dữ liệu phức tạp, có thứ bậc dễ dàng tổ chức hơn trên quy mô lớn bằng cách sử dụng các bộ sưu tập con trong tài liệu.Yêu cầu ít chuẩn hóa và làm phẳng dữ liệu hơn. | Lưu trữ dữ liệu dưới dạng một cây JSON lớn.Dữ liệu đơn giản rất dễ dàng để lưu trữ.Dữ liệu phức tạp, có thứ bậc khó tổ chức hơn trên quy mô lớn. |
Ngoài ra còn nhiều yếu tố so sánh mà trang chủ Firebase cung cấp và khuyến nghị sử dụng Firestore, các bạn có thể xem thêm tại: https://firebase.google.com/docs/database/rtdb-vs-firestore
III. Chi phí
Chi phí cho việc sử dụng Firebase Realtime Database được tính dựa trên một số yếu tố chính. Dưới đây là một số điểm quan trọng mà bạn cần biết:
Dung Lượng Dữ Liệu (Storage):
- Chi phí được tính dựa trên dung lượng dữ liệu bạn lưu trữ trong Firebase Realtime Database. Giá sẽ tăng theo dung lượng dữ liệu đã lưu trữ.
Thao Tác Đọc và Ghi (Read and Write Operations):
- Mỗi lần bạn đọc hoặc ghi dữ liệu, Firebase tính một số lần thao tác (operations). Chi phí được tính dựa trên số lần thao tác này. Có sự khác biệt trong chi phí giữa thao tác đọc và thao tác ghi.
Thời Gian Thực (Realtime):
- Firebase Realtime Database cung cấp khả năng đồng bộ thời gian thực. Việc sử dụng tính năng này có thể ảnh hưởng đến chi phí do sự tăng của số lần đồng bộ dữ liệu trong thời gian thực.
Vùng Địa Lý (Geo-location):
- Giá có thể thay đổi tùy thuộc vào vùng địa lý mà bạn đang sử dụng Firebase Realtime Database.
Loại Dịch Vụ Mạng (Network Service Tiers):
- Firebase cung cấp các loại dịch vụ mạng khác nhau với giá khác nhau. Chi phí có thể thay đổi tùy thuộc vào loại dịch vụ mạng bạn chọn.
Giảm Giá theo Quy Mô (Volume Discounts):
- Nếu bạn có lượng lớn dữ liệu và hoạt động, có thể có các chương trình giảm giá theo quy mô.
IV. Triển khai với Flutter
Create database
Tạm thời để allow read, write là true để cho phép đọc và ghi. Ở bài Securities Rule mình sẽ nói chi tiết hơn
Vào Project Settings download lại file google-service.json, GoogleService-Info.plist copy lại vào project
Thêm lib:
- flutter pub add firebase_database
Ghi dữ liệu vào db:
Kết quả trên console:
Lấy dữ liệu