Gestion des journaux de transactions de database iCloud

J'utilise iCloud avec Core Data, basé sur le design d'application SQLite "Library-style" tel que spécifié par Apple. Bien que la fonctionnalité de base fonctionne très bien, je suis préoccupé par les journaux de transactions et la façon dont ils sont gérés.

Bien que la database pour mon application ne soit pas grande, elle est très active et la stack de données de base est sauvegardée plusieurs fois pendant que l'application est utilisée. J'ai remarqué qu'un nouveau journal des transactions est créé pour chaque sauvegarde de données de base. Le résultat final est que j'ai un TON de journaux de transactions et ils prennent beaucoup plus d'espace que la database réelle.

1) Est-ce que les journaux de transactions seront automatiquement élagués / fusionnés, ou vont-ils continuer à croître indéfiniment, en numérotant éventuellement par milliers et en prenant plusieurs mégaoctets? Il semble que la seule façon de purger manuellement les journaux de transactions et de recréer une archive .baseline serait de désactiver, puis de réactiver iCloud (en supprimant le conteneur d'ubiquité et en commençant à nouveau). Mais ce n'est évidemment pas une bonne solution.

2) Mon architecture actuelle enregistre souvent la stack de données de base, même pour des changements mineurs. En général, cela est logique car ma database est petite et l'logging garantit souvent que le file de database est toujours à jour. Cependant, étant donné les problèmes ci-dessus avec les journaux de transactions, je pense que je devrais peut-être minimiser les sauvegardes à la database. Peut-être le faire sur une base de time et / ou sur des états de transition d'application.

3) Même si je minimise le nombre de journaux de transactions en réduisant la fréquence à laquelle je sauvegarde la database, il semble y avoir un problème ici, car les journaux continueront à augmenter en nombre au fil du time. Finalement, l'avantage de la design du «journal des transactions» deviendra un fardeau en termes de quantité de stockage iCloud utilisée et la synchronisation iCloud initiale en tant que nouveau périphérique est ajoutée.

Comme Apple a fourni des informations très clairsemées sur iCloud et presque rien sous la forme de «meilleures pratiques», j'apprécierais tout sharepoint vue de la communauté.

J'ai déposé un radar sur cette question et j'ai reçu la réponse suivante. Ils ont noté qu'il devrait fonctionner correctement dans iOS 5.1, bien que je ne l'ai pas encore vérifié moi-même.

Une clarification pour ceux qui pourraient mal comprendre ce qui suit. Les journaux de transactions seront nettoyés par les internes de données de base. Ce n'est pas quelque chose qui devrait être effectué par l'application elle-même.

Ingénierie a fourni les commentaires suivants concernant ce problème:

Les journaux de transactions sont destinés à être supprimés une fois que tous les homologues actifs ont eu la possibilité de les lire, et ils dépassent un seuil d'espace consommé. Un problème précédent empêchait les périphériques de le faire correctement.