SQLite
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> SQLite

Sử dụng Firebase DB với DB cục bộ

Nếu cấu trúc firebase của bạn không quá phức tạp, bạn cũng có thể tạo một giao diện xác định các phương thức như

void addData(Data data);
Data getData(long id);
void editData(Data data, long id);
void deleteData(long id);

sau đó tạo 2 lớp triển khai giao diện đó, một lớp sử dụng Firebase, lớp kia sử dụng SQLite.

DatabaseImplementation
FirebaseImplementation

Bên trong triển khai Firebase, bạn sẽ xuất bản dữ liệu như bình thường và xuất bản một nút mới lên một thứ gì đó như root/requestUpdate/userId/push/ và push sẽ chứa thông tin về đâu bạn yêu cầu cập nhật và deviceId gì đã xuất bản nó.

Sau đó, có một ValueEventListener được liên kết với nút được đề cập đó và nếu nó có một nút con mới, hãy kiểm tra xem deviceId có giống nhau hay không. Nếu không, hãy có FirebaseImplementation getData sử dụng thông tin bạn có, sau đó sử dụng Cơ sở dữ liệu hoàn thiện , thành addData .

Điều đó sẽ đảm bảo rằng bất cứ khi nào thay đổi được thực hiện, bất kỳ ứng dụng khách nào đã đăng nhập khác sẽ biết để cập nhật firebase của nó. Nếu khách hàng không trực tuyến, lần tiếp theo anh ta trực tuyến, anh ta sẽ làm điều đó khi ValueEventListener kích hoạt khi nó được đính kèm. Đảm bảo lặp lại tất cả các bản cập nhật được yêu cầu để đảm bảo tất cả đều được thực hiện. Đồng thời lưu trữ các phím đẩy của bất kỳ bản cập nhật nào bạn đã hoàn thành trên cơ sở dữ liệu cục bộ theo cách bạn không cập nhật nhiều lần.

Về cơ bản, firebase sẽ luôn được cập nhật và lưu trữ bất kỳ thay đổi nào mà người dùng thực hiện trên một nút riêng biệt được tất cả các ứng dụng khách lắng nghe.

Rõ ràng giải pháp này vẫn còn nhiều vấn đề bạn cần khắc phục, chẳng hạn như tìm ra thời điểm xóa nút requestUpdate. Một cách hợp lý sau khi mọi người dùng đã đồng bộ hóa nhưng làm thế nào để bạn xác định điều này? ...

Đối với lần đăng nhập đầu tiên, bạn cần viết populateDatabaseFromFirebase () phương thức này sẽ thực hiện rất nhiều getDatas và addDatas. Bạn sẽ làm điều đó như thế nào sẽ phụ thuộc vào cách DB của bạn trông như thế nào. Sau đó, bạn sẽ lưu trữ rằng người dùng đã đăng nhập bằng SharedPreferences và firebase UID .

Đó là tất cả những gì đang được nói, điều này sẽ chỉ hoạt động nếu cơ sở lửa của bạn khá bằng phẳng. Nếu bạn có một cơ sở dữ liệu phức tạp, thì mọi thứ sẽ trở nên phức tạp và vướng víu hơn nhiều và khi đó bạn nên tìm kiếm một thư viện bên ngoài.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn dữ liệu JSON vào cơ sở dữ liệu SQLite trong Android

  2. SQLite trả về mã lỗi là 14

  3. Cách cài đặt SQLite trên macOS

  4. Ngoại lệ truy vấn SQLite Mã lỗi Cú pháp Android Studio 1

  5. Ràng buộc KHÔNG ĐẦY ĐỦ trong SQLite