Question

Récemment, j'ai travaillé avec un client qui nous a demandé de fournir son ensemble de données pour une utilisation dans une application mobile que nous faisons pour eux. Les exigences de ce projet incluent la possibilité de mettre à jour l'ensemble de données local sur les appareils mobiles avec les modifications que notre client nous apporte. Les bases de données locales doivent être stockées dans SQLite selon la norme de l'appareil mobile.

Les problèmes:

  1. L'ensemble de données: nos clients ne peuvent nous livrer qu'un vidage entier de leur base de données au format CSV. Nous devons être en mesure d'appliquer uniquement les modifications entre le nouveau CSV et nos bases de données existantes sans provoquer des entrées en double ou des données périmées.
  2. La livraison: seules les modifications de l'ensemble de données peuvent être envoyées aux bases de données mobiles. La retenue de l'ensemble de la base de données est trop chère.

Approcher:

Actuellement, la solution que nous recherchons consiste à utiliser l'un de nos serveurs MySQL backend pour maintenir une sauvegarde de la base de données stockée sur les bases de données SQLite mobiles. Lorsqu'un nouvel ensemble de données arrive, nous prévoyons de créer une nouvelle base de données avec les nouvelles données, puis de pouvoir utiliser DIFF et patch les commandes Linux pour mettre à jour les données côté serveur. Cependant, avec cette approche, savoir quoi ou comment mettre à jour dans les bases de données locales du téléphone mobile nous donne quelques problèmes. Je ne connais actuellement aucune façon d'utiliser le correctif ou le fichier Diff de MySQL dans les environnements Android ou iOS.

Approche idéale:

De préférence, lorsque nous recevons l'ensemble de données entièrement nouveau, nous aimerions pouvoir détecter uniquement les changements dans le nouveau CSV par rapport à l'état actuel de la base de données. Ensuite, avec cette liste de modifications, nous générerions des instructions d'insert / mise à jour / supprimer qui pourraient appliquer chacune des modifications aux bases de données MySQL et SQLite. Nous stockons une liste de chacune des instructions INSERT / UPDATE / DELETE ainsi que la date mise à jour afin qu'à la demande, chacun des téléphones puisse être mis à jour en conséquence des données les plus récentes.

Cependant, je ne sais pas non plus un moyen de détecter les modifications d'un nouveau CSV à une base de données existante qui rend difficile la construction d'insertion / mise à jour / supprimer.

Questions:

  1. Quelle est la meilleure façon d'obtenir les modifications entre le fichier CSV et notre implémentation actuelle de la base de données dans un format portable et significatif?
  2. Quelle est la méthode préférée pour en cascade de telles modifications de la base de données du côté serveur aux bases de données locales du téléphone?

Je cherche actuellement des conseils pour des améliorations de notre conception ou de la mise en œuvre proposée. J'ai l'impression que je ne peux pas être la première personne à essayer de refléter les modifications d'un CSV dans une base de données ou à synchroniser les modifications d'une base de données côté serveur dans une base de données hors ligne locale.

Merci à tous d'avance pour votre aide. J'ai hâte d'entendre d'autres approches de ce problème.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top