2
votes

Confirmation du téléchargement du document dans le canapé

Je crée une application qui enregistre les données. Je crée des documents contenant les données et j'envoie ces documents à un serveur couchbase. Ou j'essaye de toute façon. Une préoccupation majeure que j'ai est de savoir comment puis-je confirmer qu'un document est stocké sur le serveur afin qu'il puisse être immédiatement supprimé sur l'appareil? J'espère qu'il existe un moyen rapide et efficace de le faire. Le résultat final est d'avoir un thread qui vérifie constamment s'il existe une connexion à couchbase, et si c'est le cas, commencez à envoyer des données pour l'effacer de l'appareil. La plupart de la documentation semble concerner la synchronisation de la base de données, mais je ne veux pas faire cela car je ne veux pas conserver une copie des données sur l'appareil. Cela prendrait trop de stockage. Merci pour toute aide.

EDIT: Pour clarifier, j'ai actuellement l'application qui stocke de nombreux points de données dans des documents. Je souhaite envoyer ces documents à un serveur couchbase. Je ne veux pas "synchroniser" les documents, mais plutôt simplement les insérer dans la base de données, puis les supprimer immédiatement de l'appareil. Comment s'y prendrait-on? La plupart des exemples que j'ai vus synchronisent généralement des documents tels que les informations de profil où des modifications peuvent être apportées dans diverses bases de données synchronisées et toutes ces modifications apparaissent dans chaque base de données. Au lieu de cela, je veux une relation à sens unique avec la base de données où les informations sont envoyées, confirmées comme reçues, puis immédiatement supprimées de l'appareil.


2 commentaires

Utilisez-vous Couchbase Lite et Sync Gateway?


@MatthewGroves Je n'ai actuellement écrit que le code qui gère la base de données de lumière de couchbase sur le téléphone. Ainsi, à partir de maintenant, l'appareil peut enregistrer et stocker des points de données sur l'appareil. Je recherche comment obtenir ces données sur le serveur, mais tout ce que je vois fait référence à la passerelle de synchronisation. Ma compréhension de la passerelle de synchronisation est qu'elle synchronise les deux bases de données, celle de l'appareil et le serveur. Ce n'est pas ce que je veux car une fois que le serveur a une copie, je n'ai plus besoin de ces données sur l'appareil. Je ne sais pas quelles sont les autres fonctionnalités de la passerelle de synchronisation car je vois qu'elle n'est utilisée que dans un sens.


3 Réponses :


1
votes

Je ne connais pas assez bien Lite et Sync Gateway, mais du point de vue du serveur:

Vous pouvez utiliser le nouveau service Eventing dans Couchbase. Lorsqu'un document est créé dans le compartiment A, vous pouvez écrire un événement pour copier ce document dans le compartiment B. Ensuite, si les documents sont supprimés sur l'appareil, peu importe s'ils sont supprimés du compartiment A. P >

J'ai un bucket "staging" et un bucket "final". J'ai créé une fonction appelée "moveIt" avec "final" (j'ai un alias comme 'f').

Création d'une fonction 'moveit' dans Couchbase Eventing

La fonction OnUpdate pourrait être aussi simple que:

function OnUpdate(doc, meta) {
    f[meta.id] = doc;
}

Ma principale préoccupation serait le timing. Je ne pense pas qu'il existe un moyen facile pour votre application mobile de savoir que l'événement a terminé la copie d'un document avant que vous ne décidiez de le supprimer dans Lite et de démarrer une synchronisation. Mais cela vaut peut-être la peine d'essayer. Consultez la documentation pour en savoir plus sur les détails du service Eventing .


0 commentaires

2
votes

Il y a au moins quelques possibilités.

Si vous vous attendez à une connexion réseau solide ou que vous êtes d'accord avec la gestion des erreurs vous-même, vous pouvez y parvenir avec un appel REST direct à Sync Gateway. Vous pouvez, bien sûr, toujours écrire votre propre serveur REST qui communique directement avec Couchbase Server.

La seconde méthode repose sur une ancienne version de Couchbase Lite. Couchbase Lite 2.x est une réécriture majeure du produit. À partir de la version actuelle (2.1), elle ne prend pas en charge cette approche, vous devrez donc utiliser la version 1.x (1.3 ou ultérieure, IIRC). Voir plus bas pour savoir comment aborder cela avec 2.1.

Configurez une réplication push uniquement. Après la réplication, parcourez les documents et purgez tous ceux qui ne sont pas encore en attente. (Cela utilise la méthode isDocumentPending sur la classe Replication . C'est l'élément clé qui n'est pas disponible à partir de la version 2.1.) Vous pouvez exécuter des réplications ponctuelles et le faire une fois la réplication terminée , ou surveillez l'état de réplication d'une réplication continue.

La purge d'un document de la base de données locale CB Lite le fait effectivement agir comme s'il n'avait jamais existé sur cet appareil. En exécutant une réplication push uniquement, vous n'avez pas à vous soucier du renvoi des documents sur l'appareil.

Avec la version 2.1, vous ne pouvez pas déterminer aussi facilement si un document a été répliqué. Vous devez donc exécuter une réplication jusqu'à la fin tout en évitant une condition de concurrence avec l'écriture de quelque chose de nouveau.

Une approche ici consiste à interrompre l'écriture des documents, à exécuter une réplication ponctuelle, puis à purger les documents avant de redémarrer. Vous pouvez également travailler sur quelque chose avec des bases de données alternées, ou suivre vous-même les documents, etc.

Par souci d'exhaustivité, si vous étiez dans une situation où vous aviez une utilisation mixte, c'est-à-dire que vous ne vouliez que certains documents sortis de l'appareil et oubliés, et certains synchronisés, vous contrôleriez cela via les canaux Sync Gateway.


0 commentaires