Mantenga los datos de Firebase Realtime Database siempre sincronizados

Actualmente estoy reelaborando una aplicación mía que actualiza su base de datos interna de SQLite obteniendo datos sin procesar de un sitio web, no de una API oficial.

Como esto es bastante propenso a errores, me gustaría mover el procesamiento de datos del cliente a un servidor de fondo. La idea es tener un script que se ejecute en el servidor varias veces al día, similar al comportamiento del cliente antes, y almacenar los datos en una base de datos en tiempo real de Firebase. Luego, todos los clientes ya no tienen que procesar los datos ellos mismos, sino solicitar datos analizados de Firebase DB.

Me pregunto cuál es el mejor enfoque para mantener los datos sincronizados. Se me ocurrieron dos ideas, pero como no estoy muy familiarizado con Firebase, no sé qué es preferible.

Por un lado, me imagino manteniendo sincronizados los datos del cliente usandokeepSynced() ysetPersistenceEnabled() en algunos nodos Pero no estoy seguro de si esto mantendrá los datos actualizados cuando la aplicación esté en segundo plano. Además, estoy preocupado por el uso de la batería y la red de este enfoque. Un tercer punto es la cantidad de conexiones simultáneas, creo que con este enfoque todos los clientes estarán conectados todo el tiempo, ¿verdad?

El segundo enfoque sería utilizar FCM para notificar al cliente cada vez que haya un cambio en uno de sus nodos interesados, p. usando Firebase Cloud Functions para escuchar eventos y activar el mensaje. Entonces el clientegoOnline() para sincronizar con la base de datos ygoOffline() de nuevo. Esto evitaría la gran cantidad de conexiones y reduciría el uso de la batería y la red. ¿Pero no estoy seguro de cómo mantener todos los datos en el dispositivo sin conexión? No quiero usar una base de datos SQLite para mantener los datos en el dispositivo. EssetPersistenceEnabled() suficiente para mantener una cantidad particular de notas de la base de datos en el dispositivo?

¿O es una mezcla de ambos el camino a seguir? AjustekeepSynced() ysetPersistenceEnabled() en los nodos necesarios ygoOnline()/goOffline() dependiendo de los mensajes en la nube?

Cualquier ayuda o consejo basado en sus propias experiencias ¡bienvenido!

Respuestas a la pregunta(2)

Su respuesta a la pregunta