SQLite
 sql >> Base de données >  >> RDS >> SQLite

Utiliser la base de données Firebase avec la base de données locale

Si votre structure Firebase n'est pas trop complexe, vous pouvez également créer une interface qui définit des méthodes telles que

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

puis créez 2 classes implémentant cette interface, l'une utilisant Firebase l'autre utilisant SQLite.

DatabaseImplementation
FirebaseImplementation

Dans votre implémentation Firebase, vous publierez les données comme d'habitude et publierez un nouveau nœud sur quelque chose comme root/requestUpdate/userId/push/ et push contiendrait des informations sur vous demandez une mise à jour, et quel deviceId l'a publié.

Ensuite, ayez un ValueEventListener lié à ce nœud mentionné, et s'il obtient un nouvel enfant, faites-le vérifier si le deviceId est le même ou non. Si ce n'est pas le cas, ayez le FirebaseImplementation getData en utilisant les informations que vous avez obtenues, puis utilisez le DatabaseImplementation , pour ajouter des données .

Cela garantirait que chaque fois qu'une modification est apportée, tout autre client connecté saura mettre à jour sa firebase. Si le client n'est pas en ligne, la prochaine fois qu'il sera en ligne, il le fera lorsque ValueEventListener se déclenchera lorsqu'il sera attaché. Assurez-vous de parcourir toutes les mises à jour demandées pour vous assurer que toutes sont effectuées. Stockez également les touches push de toutes les mises à jour que vous avez effectuées sur une base de données locale afin de ne pas mettre à jour plus d'une fois.

Fondamentalement, la firebase sera toujours à jour et stockera toutes les modifications apportées par un utilisateur sur un nœud séparé écouté par tous les clients.

De toute évidence, cette solution présente encore de nombreux problèmes que vous devrez résoudre, comme déterminer quand supprimer le nœud requestUpdate. Logiquement, après la synchronisation de chaque utilisateur, mais comment déterminez-vous cela ? ...

Comme pour la première connexion, vous devrez écrire un populateDatabaseFromFirebase() méthode qui fera beaucoup de getDatas et addDatas. La façon dont vous feriez cela dépendra de l'apparence de votre base de données. Vous enregistreriez alors que l'utilisateur s'est déjà connecté avec SharedPreferences et l'UID Firebase .

Cela étant dit, cela ne fonctionnera que si votre base de feu est assez plate. Si vous avez une base de données complexe, alors tout devient beaucoup plus compliqué et enchevêtré et il peut alors valoir la peine de se tourner vers une bibliothèque externe.