Meilleure façon de synchroniser local HTML5 DB (WebSQL de Stockage, SQLite) avec un serveur (2 façon de synchronisation)
Je développe une application web mobile (pour iPhone & Android) avec une base de données locale (à l'aide de html5 webstorage) donc mon application est utilisable lorsque l'utilisateur est hors-ligne.
Cela fonctionne parfaitement, mais je veux enregistrer les données sur un serveur. J'ai donc besoin de synchroniser l'DB avec une base de données sur un serveur. La synchronisation peut être la seule façon, mais dans l'avenir, je tiens à le synchroniser à la fois moyen (serveur <-> local DB).
Ce requierement semble très commun (ou qui le seront à l'avenir pour l'application web mobile), mais je ne peux pas trouver une bibliothèque de le faire.
Je sais que google est en train de faire que dans leur application web mobile (ex. gmail), et j'ai trouvé le WSPL projet un projet google mais sans source à télécharger.
Si je ne peux pas trouver une solution, je vais créer une bibliothèque pour le faire, comme un moyen de synchronisation n'a pas l'air difficile, mais je me demande si il y a d'autres solutions.
- Je ne sais pas s'il y a des libs, mais le plus simple semble être de stocker timestamp de modification, et de transférer des modifications aux documents qui sont plus récents que les enregistrements de l'autre côté, et de transférer également les ajouts et suppressions depuis la dernière synchronisation. Il peut devenir fou si le local et le serveur horloges ne sont pas synchronisées, mais vous aurez à penser à quelque chose. - L'affichage de commentaires car ce n'est probablement pas très utile et ne pas vous donner une réponse.
- Merci Ivan. Vous avez raison, si le local et le serveur horloges ne sont pas synchronisées, il pourrait être compliqué... j'ai juste trouvé que : quickconnect.pbworks.com/Using-Enterprise-Synchronization il dit qu'Il est possible de synchroniser un local HTML 5 DB avec une base de données dans un serveur. J'ai besoin d'avoir un regard plus profond sur, et voir si il peut fonctionner en dehors de la QuickConnect Cadre...
- J'ai trouvé une autre solution : impel.simulacre.org/blog/... Ressemble beaucoup, mais vous aurez besoin d'utiliser Mootools bibliothèque, et le Poussent ORM...
- Comment à propos de CouchDB? couchdb.apache.org
- Je ne pense pas qu'il fournit WebSQL synchronisation...
- Les sujets sont pour des discussions, de la Pile Échange de questions. À un moment, messages comme celui-ci ont été acceptés sur la Pile d'Échange, mais pas plus.
- Microsoft Access est un moyen de synchronisation des lignes à l'aide de hachage unique, de type ID. Cela pourrait être une couche supplémentaire, y compris une date de transaction. Si c'est juste un tableau c'est une tâche facile. Lorsque vous arrivez dans plusieurs tables et dépendances, c'est quand peut être salissant.
- Vous pouvez marquer toutes les modifications hors connexion ou de nouveaux enregistrements qui sont fait dans le HTML5 (local) db. Le processus de synchronisation sera seulement un effet sur la synchronisation des modifications de serveur qui sont marqués comme "hors ligne".
- Ces réponses ne sont pas à jour, découvrez pouchdb.com
- Votre commentaire est hors de la question, nous parlons WebSQL DB ici
- Est-il un cadre de Synchronisation IndexDB base de données pour la base de données?
Vous devez vous connecter pour publier un commentaire.
https://github.com/orbitaloop/WebSqlSync
http://quickconnect.pbworks.com/Using-Enterprise-Synchronization
Pour utiliser cette lib, vous devez utiliser le DataAccessObject le cadre de l'accès à votre base de données. Il fonctionne en stockant toutes les requête SQL appliquée à la DB (sauf certains bien sûr) , et de les envoyer au serveur. C'est génial pour gérer la suppression, mais c'est un peu lourd si vous avez beaucoup de mises à jour, et le serveur doivent utiliser le même langage SQL...
http://www.quickconnectfamily.org/qcdbsync/
(Je pense que ce magasin a aussi l'histoire de toutes les requêtes SQL)
https://github.com/zefhemel/persistencejs
"persistence.js est un asynchronous Javascript object-relational mapper de la bibliothèque. Vous pouvez l'utiliser dans le navigateur, aussi bien sur le serveur (et vous pouvez partager des modèles de données entre eux)".
Ils ont une base de données de synchronisation du module: DOC de persistence.synch.js
(fonctionne avec HTML5 DB SQLite ou Google Gears sur le client, et MySQL sur le serveur)
http://impel.simulacre.org/api/Impel.inTouch
http://www.sencha.com/products/io/
J'ai développé un générique solution de synchronisation appelé WebSqlSync.
Il n'est pas dépendant d'aucun schéma.
Il est disponible ici :
https://github.com/orbitaloop/WebSqlSync
Extrait du fichier README :
WebSqlSync
Synchroniser automatiquement un local WebSql base de données (SQLite dans le navigateur à un serveur. (2 façon de synchronisation : client <-> serveur)
Très facile à intégrer à votre application existante et très facile à utiliser (2 fonctions d'appel : initSync et syncNow)
Utilisation
Initialiser
Vous devez initialiser la lib (à chaque démarrage par exemple).
Il va automatiquement créer 2 tables (si ils ne sont pas déjà présent, pour stocker tous les éléments nouveaux ou modifiés (tableau new_elem) et de stocker la date de la dernière synchronisation (tableau sync_info). Il permettra également de créer SQLite déclencheurs pour regarder l'INSERTION ou la mise à JOUR sur les tables que vous souhaitez synchroniser (pour insérer automatiquement les éléments modifiés dans le new_elem table):
Où TABLES_TO_SYNC s'agit de la liste de la table que vous souhaitez synchroniser avec le serveur, ex :
Synchroniser
Pour démarrer la synchronisation, vous devez appeler le syncNow fonction. Vous pouvez l'appeler toutes les X secondes, ou après quelques modifications, par exemple :
Et c'est tout ce que vous devez faire sur le client. Sur le côté serveur, vous aurez besoin de votre propre code de solution (mais c'est pas compliqué). Et il y a quelques exemple inPHP & Java. Encore une fois, les contributions sont les bienvenues.