¿Cómo almacenan datos Evernote, Pocket, Tumblr, las aplicaciones populares de Android en modo fuera de línea?

Tiene razón, la mayoría de las aplicaciones grandes usarán una base de datos Sqlite o almacenarán archivos en el almacenamiento local (a veces son JSON serializados, pero no siempre). Antes de llegar, la decisión clave que debe tomar es: ¿ cuál es la copia maestra de los datos (dispositivo o nube)?

Si decide que el dispositivo es la copia maestra , entonces la nube es simplemente una copia de seguridad de esos datos. Estas aplicaciones tenderán hacia Sqlite ya que proporciona la mayor flexibilidad. En este caso, (con cierta frecuencia) cargará copias de los objetos / datos almacenados en la base de datos local a un servicio en la nube. Si hay un cambio en los datos del dispositivo que no está en la nube, la nube se actualizará con los datos del dispositivo, que se supone que es la autoridad.

Si decide que la nube es la copia maestra , puede ser oneroso duplicar el mismo modelo de datos relacionales tanto en el teléfono como en el servidor para que usen archivos locales para almacenar en caché los datos descargados de la nube. En estos modelos, se supone que todos los datos se envían y cargan desde la nube primero y la copia local solo se usa para mejorar el rendimiento. Aquí, un simple archivo serializado u objeto en memoria es suficiente. En este caso, si hay una diferencia en los datos entre el dispositivo y la nube, los datos del dispositivo se actualizarán.

Tenga en cuenta que si bien es posible tratar el teléfono y la nube como pares y no tener una sola copia “maestra”, esto dará como resultado un esquema de sincronización muy complejo. La complejidad aquí es alta, por lo que generalmente se usa uno de los anteriores.

Espero que eso ayude.