sql >> Database teknologi >  >> RDS >> SQLite

Brug Firebase DB med lokal DB

Hvis din firebasestruktur ikke er for kompleks, kan du også lave en grænseflade, der definerer metoder som

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

opret derefter 2 klasser, der implementerer denne grænseflade, den ene bruger Firebase, den anden bruger SQLite.

DatabaseImplementation
FirebaseImplementation

Inde i din Firebase-implementering vil du udgive dataene som normalt og udgive en ny node til noget som root/requestUpdate/userId/push/ og push ville indeholde information om hvor du anmoder om en opdatering, og hvilket deviceId offentliggjort det.

Så har en ValueEventListener knyttet til den nævnte node, og hvis den får et nyt barn, så få det til at se, om enheds-id'et er det samme eller ej. Hvis det ikke er, skal du have FirebaseImplementation getData ved hjælp af de oplysninger, du har fået, og brug derefter DatabaseImplementation , for at addData .

Det ville sikre, at når der foretages en ændring, vil enhver anden klient, der er logget på, vide, at dens firebase skal opdateres. Hvis klienten ikke er online, næste gang han er online, vil han gøre det som ValueEventListener udløser, når den er vedhæftet. Sørg for at gennemgå alle de ønskede opdateringer for at sikre, at alle er lavet. Gem også push-tasterne for eventuelle opdateringer, du har gennemført, i en lokal database, så du ikke ender med at opdatere mere end én gang.

Grundlæggende vil firebasen altid være opdateret og gemme eventuelle ændringer, som en bruger har foretaget på en separat node, som alle klienter lytter til.

Denne løsning har naturligvis stadig mange problemer, du skal løse, som at finde ud af, hvornår du skal slette requestUpdate-noden. Logisk efter hver bruger har synkroniseret, men hvordan bestemmer du dette? ...

Hvad angår det første login, skal du skrive en populateDatabaseFromFirebase() metode, som vil gøre en hel masse getDatas og addDatas. Hvordan du vil gøre det, afhænger af, hvordan din DB ser ud. Du vil derefter gemme, at brugeren allerede er logget ind med SharedPreferences og firebasen UID .

Når alt er sagt, vil dette kun fungere, hvis din firebase er ret flad. Hvis du har en kompleks database, så bliver alt meget mere kompliceret og indviklet, og så kan det være værd at kigge på et eksternt bibliotek.



  1. En datamodel for en lægebestillingsapp

  2. 5 sikkerhedsfordele ved cloud-baserede databaseovervågningsløsninger

  3. Eksporter MySQL eller MariaDB-database

  4. Oracle SQL:Kolonne ikke tilladt