J’ai beau chercher sur le net des informations à ce sujet, je m’y perd un peu et ce n’est pas vraiment clair dans mon esprit… Je compte donc sur la communauté pour me conseiller et m’aider à faire le bon choix.
Pour le projet que je souhaite développer en SwiftUI (pour iOS, iPadOS et macOS), j’ai besoin de stocker pas mal de données. Jusqu’ici, dans les versions précédentes (C++ et Python), j’ai utilisé des bases de données classiques SQLite et MySQL (MariaDB en réalité). Cependant, avec la version mobile de cette application, d’autres contraintes s’ajoutent, comme la synchronisation des données entre appareils d’un même utilisateur mais aussi le partage de ces données avec un ou plusieurs utilisateurs de son choix.
C’est là que je bloque : quelle solution de persistance dois-je utiliser pour assurer cette synchronisation et ce partage ?
- Je pourrai conserver une base SQL multi-utilisateurs, mais elle doit toujours être accessible (pas de mode hors-ligne) et chaque utilisateur (ou groupe) doit gérer sa propre base, ce qui n’est pas à la porter de tous
- L’utilisation d’un fichier SQLite est tentant, d’autant plus qu’on peut le stocker sur un compte iCloud ou Dropbox par exemple et le partager avec un ou plusieurs utilisateurs. Il est même possible dans ce cas de créer plusieurs jeux de données en parallèle. Mais si le fichier est modifié à plusieurs endroits en même temps, difficile de gérer les conflits si les synchronisations ne sont pas immédiates (ce qui est souvent le cas)
- Je me suis renseigné sur Realm après avoir testé CoreData, mais je ne vois pas comment gérer la synchronisation et le partage avec la version Legacy et si j’aimerai si possible pouvoir me passer d’un service tiers comme Atlas de MondeDB
- Je pourrai développer moi-même un service web pour gérer tout ça mais ça me semble être trop long et compliqué pour le faire correctement
Quels sont vos avis ? Avez-vous d’autres solutions à me proposer ?
Je n’ose pas me lancer dans l’écriture du code tant que je ne sais pas comment gérer cet aspect indispensable. Et si ce problème me bloque trop longtemps, j’ai bien peur de perdre ma motivation…
Merci et happy coding!