Sumar los datos del firebase eficientemente

Tengo una aplicación donde tengo hasta unos pocos miles de entradas en una mesa de firebase. Ahora alguien se está conectando a esta tabla y necesito contar y sumar estos artículos para arriba.

-itemlist | --1 |-x:2 --2 |-x:4 

y así. Un usuario puede conectarse en cualquier momento (lo que significa que nunca vio esta tabla antes) y otro usuario puede cambiar algún valor en un momento dado o agregar valores.

Ahora si intento y agrego un ValueEventListener a la "lista del artículo" trabaja si no hay nuevos datos pero tan pronto como conecto con una nueva base de datos con 1000 entradas o así que el oyente llama para cada una de estas 1000 entradas.

Intenté con onChildlistener pero esto llama el en ChildItem agregado para cada artículo adicional en la primera vez. Esto tarda más de 2 minutos a veces.

¿Hay una manera de obtener toda la base de datos una vez, calcularlo y luego sólo escuchar los cambios?

La base de datos Firebase no tiene operadores de agregación del servidor, ya que inherentemente estarían en desacuerdo con la escalabilidad y la naturaleza en tiempo real de la base de datos.

Eso le deja con dos opciones para calcular agregados:

  1. llevar a cabo el lado del cliente como ya has sugerido

  2. mantener un agregado de ejecución que actualiza con cada cambio

Realizar la agregación de cliente es una buena opción si el cliente ya tiene que mostrar los datos de todos modos. Por ejemplo: si está mostrando la lista de usuarios en una sala de chat específica, puede contar fácilmente el número de usuarios del lado del cliente de los mismos datos.

Pero si no necesita los datos del lado del cliente, entonces sólo descargarlo para agregar es un desperdicio y dañará la escalabilidad de su aplicación. En tales casos, una opción es mantener un nodo adicional que mantiene el agregado y actualizarlo con cada operación de escritura relevante. Por ejemplo: si desea mostrar cuántos usuarios se han registrado con su aplicación, puede mantener un global /user_count que actualiza cada vez que un usuario registra / /user_count registro. Para esta actualización, normalmente utilizaría una transacción .

  • Cómo eliminar datos de firebase después de "n" días
  • Mi implementación de la indexación de aplicaciones no funciona
  • Android - Notificaciones Azure Push de Google FCM
  • Error en remoteMessage.getNotification (). GetBody ()
  • Firebase agrega oyentes en adaptadores en Android
  • Cargar archivos de ProGuard en Firebase
  • ¿Cómo dirigir la queja de la pelusa del android sobre las implementaciones exportadas del servicio de la mensajería de Firebase?
  • No estoy recibiendo los datos de Firebase en formato correcto
  • Error de registro de eventos de Firebase Analytics
  • Quitar el token FCM del grupo de dispositivos Firebase
  • Eliminar los análisis de firebase de la aplicación android por completo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.