2012-01-02 17 views
11

Estoy usando iCloud con Core Data, basado en el diseño de la aplicación SQLite "Library-style" según lo especificado por Apple. Si bien la funcionalidad básica funciona muy bien, me preocupan los registros de transacciones y cómo se gestionan.Administración de datos básicos Registros de transacciones de iCloud

Si bien la base de datos para mi aplicación no es grande, es muy activa y la pila de datos básicos se guarda muchas veces mientras la aplicación está en uso. Me he dado cuenta de que se ha creado un nuevo registro de transacciones para cada almacenamiento de datos centrales. El resultado final es que tengo una TONELADA de registros de transacciones y ocupan mucho más espacio que la base de datos real.

1) ¿Los registros de transacciones llegan a ser eliminados/fusionados automáticamente, o continuarán creciendo indefinidamente, eventualmente sumando miles y ocupando muchos megabytes? Parece que la única forma de purgar manualmente los registros de transacciones y recrear un archivo .baseline sería desactivar y luego volver a habilitar iCloud (eliminando el contenedor de ubicuidad y comenzando de nuevo). Pero obviamente esta no es una buena solución.

2) Mi arquitectura actual guarda la pila de datos centrales a menudo, incluso para cambios menores. En general, esto tiene sentido ya que mi base de datos es pequeña y el ahorro a menudo garantiza que el archivo de la base de datos esté siempre actualizado. Sin embargo, dados los problemas anteriores con los registros de transacciones, estoy pensando que tal vez debería minimizar los rescates en la base de datos. Tal vez hacerlo de forma oportuna y/o en los estados de transición de la aplicación.

3) Incluso si minimizo el número de registros de transacciones reduciendo la frecuencia con la que guardo la base de datos, parece haber un problema aquí, ya que los registros continuarán creciendo en número a lo largo del tiempo. Eventualmente, el beneficio del diseño del "registro de transacciones" se convertirá en una carga en términos de la cantidad de almacenamiento de iCloud utilizada y la sincronización inicial de iCloud a medida que se agrega un nuevo dispositivo.

Como Apple ha proporcionado muy poca información en iCloud y casi nada en forma de "mejores prácticas", agradecería cualquier idea de la comunidad.

+1

Creo que esta es una buena pregunta, pero sugiero que hagas esta pregunta en los Foros de Desarrolladores de Apple también para que puedas obtener retroalimentación de los ingenieros que en realidad diseñan y desarrollan esto. Es posible que le pidan comentarios específicos en forma de informes de errores/solicitudes de funciones. –

Respuesta

3

Puse un radar sobre este tema y recibí la siguiente respuesta. Notaron que debería funcionar correctamente en iOS 5.1, aunque aún no lo he verificado.

Una aclaración para cualquiera que pueda malinterpretar lo siguiente. Los registros de transacciones serán limpiados por los datos internos del núcleo. Esto NO es algo que debería ser realizado por la aplicación en sí.

Ingeniería ha proporcionado los siguientes comentarios acerca de este tema:

Los registros de transacciones están destinados a ser eliminados después de que todos los activos compañeros han tenido la oportunidad de leer, y que superan un umbral de espacio consumado. Hubo un problema anterior que impedía que los dispositivos lo hicieran correctamente.

Cuestiones relacionadas