¿Qué son las Live Queries en Tiempo Real?

Actualizado: agosto de 2026

Una live query es una suscripción a una consulta de base de datos: el servidor envía eventos create, update y delete de los registros coincidentes al ocurrir. Es el tiempo verbal que le faltaba al acceso a datos: las consultas normales hablan en pasado (“qué coincidía cuando pregunté”), las live queries hablan en presente continuo (“qué coincide, a medida que cambia”). La pantalla deja de preguntar y empieza a mantenerse en lo correcto.

Puntos clave

PreguntaRespuesta
Qué esUna consulta permanente — te suscribes una vez, recibes cada cambio en sus resultados
Los cinco eventoscreate · update · delete · enter · leave
Por debajoChange stream de la base de datos → matching de predicados → push por WebSocket
vs. pollingLatencia en tiempo real, payloads del tamaño del delta, sin carga de consultas por intervalo
vs. sockets crudosLa capa de consultas: matching, eventos tipados, permisos, reconexiones

La suscripción, en código

El movimiento que lo define — toma la consulta que ya tenías, y suscríbete a ella:

// JavaScript / Node.js — Back4app JS SDK
// A live query: subscribe to a QUERY and receive its changes as events
const query = new Parse.Query('Task');
query.equalTo('assignee', currentUser);

const sub = await query.subscribe();
sub.on('create', (t) => addRow(t));       // new match appeared
sub.on('update', (t) => refreshRow(t));   // a match changed
sub.on('enter',  (t) => addRow(t));       // edited INTO the result set
sub.on('leave',  (t) => removeRow(t));    // edited OUT of the result set
sub.on('delete', (t) => removeRow(t));    // a match was deleted

El vocabulario de eventos merece su tabla, porque enter y leave son lo que hace de esto una suscripción a consultas y no una notificación de tablas:

EventoSe dispara cuando…Ejemplo (suscrito a “tareas asignadas a mí”)
createUn registro nuevo coincideSe crea una tarea para ti
updateUn registro coincidente cambiaEl estado de tu tarea cambia
enterUna edición hace coincidir un registro existenteUna tarea es reasignada hacia ti
leaveUna edición hace que una coincidencia deje de serloTu tarea es reasignada a otro
deleteUn registro coincidente se borraLa tarea se elimina

El pipeline detrás del push

Cómo funcionan las live queries de punta a puntaLas escrituras en la base de datos fluyen hacia un change stream; un servidor de suscripciones compara cada cambio contra los predicados de consulta registrados y hace push de eventos tipados por WebSockets a los clientes suscritos, con permisos verificados por suscriptor.

push por WebSocket

push por WebSocket

Escrituras
(cualquier cliente, cualquier API)

Base de datos

Change stream
(oplog / WAL / triggers)

Servidor de suscripciones
matching de predicados + chequeo de ACL

Suscriptor A

Suscriptor B

Las escrituras en la base de datos fluyen hacia un change stream; un servidor de suscripciones compara cada cambio contra los predicados de consulta registrados y hace push de eventos tipados por WebSockets a los clientes suscritos, con permisos verificados por suscriptor.

Dos mitades, limpiamente separables: la fuente de cambios — el propio feed de escrituras de la base de datos (change streams en los almacenes de documentos, logs de replicación en el resto) — y la capa de matching, que compara cada cambio contra cada predicado registrado y hace push exactamente a los suscriptores cuyos resultados cambiaron, con permisos aplicados por suscriptor. El protocolo abierto LiveQuery es una implementación de referencia legible de toda esta forma.

Live queries vs. polling vs. SSE vs. WebSockets

EnfoqueLatenciaPayloadCosto de servidorTú construyes
PollingIntervalo del pollRefetch completo cada vezConsultas × clientes × frecuenciaTimers, diffing
Long pollingCasi tiempo realRespuesta completa por eventoSolicitudes retenidasPlomería de fallback
SSETiempo realDeltaStreams, un solo sentidoDiseño de eventos
WebSockets crudosTiempo realLo que tú definasConexiones + tu fan-outTodo
Live queriesTiempo realEventos por cambioMatching + conexiones (gestionado)La consulta

La última columna es el argumento: con sockets crudos construyes el protocolo de mensajes, el enrutamiento, los chequeos de permisos y la puesta al día tras reconectar; con live queries el predicado es el protocolo y la plataforma es dueña del resto.

Casos de uso comunes

  • Chat e inboxes — suscríbete a los mensajes de la conversación; la llegada es un evento, no un refresh.
  • Dashboards en vivo — pedidos, métricas, flotas: la consulta define la vista, los eventos la mantienen verdadera.
  • Apps colaborativas — tableros de tareas y documentos compartidos donde las ediciones de cinco personas se entrelazan en segundos.
  • Presencia y estado — quién está en línea, qué está en curso — enter/leave haciendo su trabajo de precisión.
  • Pantallas operativas — consolas de soporte y vistas de administración que deben reflejar producción ahora, no el último refresh.

¿Poll, push o suscripción? Matriz de decisión

Elige live queries cuando…Herramientas más simples bastan cuando…
Los usuarios miran datos compartidos que cambianLos datos cambian rara vez — poll suave o refetch al enfocar
Los cambios vienen de muchos escritores y rutasUn solo escritor podría simplemente hacer push vía SSE
La vista es naturalmente una consultaEl mensaje no tiene forma de datos (usa sockets directamente)
Los permisos deben filtrar lo que cada espectador veTodo es difusión pública
Prefieres no ser dueño de la infraestructura de fan-outYa operas una plataforma de tiempo real

La disciplina del lado del cliente que mantiene sanas las suscripciones, elijas lo que elijas: suscríbete de forma acotada (predicados selectivos sobre campos indexados) y cancela la suscripción cuando la pantalla se cierra — las consultas permanentes son estado del servidor, y las pantallas que las filtran acumulan costo de forma invisible.

Limitaciones y trade-offs

  • El matching es una carga de trabajo real. Cada escritura se verifica contra los predicados registrados; miles de suscripciones amplias sobre clases calientes lo multiplican — la selectividad es la palanca.
  • Las conexiones son estado. La flota de sockets necesita afinidad, heartbeats y backplanes de fan-out — las plataformas gestionadas existen precisamente porque esto es trabajo pesado sin diferenciación.
  • Las reconexiones necesitan puesta al día. Un cliente que estuvo offline se perdió eventos; los flujos robustos vuelven a correr la consulta base al resuscribirse en lugar de confiar en que el hueco estuvo tranquilo.
  • El orden y la entrega tienen forma de at-least-once. Handlers de eventos idempotentes (aplica por ID de objeto, no por append) absorben con gracia el duplicado ocasional.
  • No todo quiere una suscripción. Los datos poco vistos y poco cambiados son territorio de polling; las live queries ganan su costo donde ojos y escrituras son ambos frecuentes.

Live queries en Back4app

Back4app es una plataforma open-source de Backend as a Service (BaaS) que combina base de datos gestionada, APIs REST y GraphQL generadas automáticamente, autenticación, almacenamiento de archivos y funciones serverless con Cloud Code. Live Query es su capa de tiempo real, y las pestañas de código de arriba son toda la historia del cliente: el mismo constructor de consultas que ya usas, una llamada de suscripción, cinco eventos tipados — con ACLs verificadas por suscriptor para que el tiempo real nunca se salte el modelo de permisos, y con la flota de WebSockets, los change streams y el fan-out corriendo como infraestructura gestionada. Habilita Live Query en una clase desde el dashboard, suscríbete desde cualquier SDK, y el presente continuo pasa a ser una funcionalidad, no un proyecto.

Preguntas frecuentes

¿Qué es una live query?

Una suscripción permanente a una consulta de base de datos: en lugar de preguntar una vez y recibir una foto, te suscribes a la consulta y el servidor envía un evento cada vez que su conjunto de resultados cambia — un registro coincidente creado, actualizado, borrado o editado hacia dentro o hacia fuera de los resultados. Tu pantalla deja de hacer polling y empieza a escuchar.

¿En qué se diferencia una live query de una consulta normal?

En el tiempo de vida. Una consulta normal corre, devuelve y termina — su respuesta empieza a envejecer de inmediato. Una live query queda registrada en el servidor: los resultados iniciales llegan igual, y luego eventos de cambio puntuales los mantienen al día hasta que cancelas la suscripción. El mismo lenguaje de predicados, la relación opuesta con el tiempo.

¿Cómo funcionan las live queries por debajo?

Dos mitades unidas: una fuente de cambios y un transporte. La base de datos emite su flujo de escrituras — vía change streams, logs de replicación o triggers — y un servidor de suscripciones compara cada cambio contra los predicados de consulta registrados, enviando los eventos relevantes a los suscriptores por WebSockets. El SDK del cliente envuelve el ciclo de vida del socket para que tu código solo vea eventos tipados.

¿Qué son los eventos enter y leave?

El par sutil que hace precisas a las suscripciones a consultas. Enter se dispara cuando un registro existente se edita y empieza a coincidir con tu predicado; leave, cuando una edición hace que deje de coincidir. Una tarea reasignada a ti entra en tu suscripción de asignadas-a-mí sin haber sido creada; reasignada a otro, sale sin haber sido borrada. Create, update y delete cubren el resto.

¿Por qué las live queries son mejores que el polling?

De tres formas a la vez: latencia — los cambios llegan en tiempo real y no en el siguiente poll; ancho de banda — los eventos llevan solo lo que cambió en lugar de traer todo de nuevo; y carga — el servidor hace matching por cambio en lugar de correr consultas completas por cliente por intervalo. Hacer polling cada pocos segundos es una simulación; las suscripciones son la cosa real.

¿Qué agregan las live queries sobre WebSockets crudos?

El cerebro de consultas. Un socket crudo mueve mensajes; todo lo demás — a qué clientes les importan qué cambios, qué significan los eventos, quién puede ver qué, ponerse al día tras reconectar — es código que escribes. Una capa de live queries hace el matching de predicados en el servidor, tipa los eventos, aplica permisos por suscriptor y gestiona el ciclo de vida del socket. Es la diferencia entre un transporte y una funcionalidad.

¿Las subscriptions de GraphQL son lo mismo que las live queries?

La misma familia, distinto disparador. Las subscriptions de GraphQL se disparan con eventos nombrados que tú defines — una mutación publica, los suscriptores reciben. Las live queries se disparan con cambios en el conjunto de resultados de una consulta — sin cableado de eventos, el predicado es la suscripción. Ambas viajan por WebSockets; las live queries cambian diseño explícito de eventos por cobertura automática de cada ruta de escritura.

¿Cómo escalan las live queries?

En dos ejes: conexiones — miles de sockets abiertos repartidos entre servidores de suscripción detrás de un backplane de pub/sub — y matching — cada escritura verificada contra los predicados registrados, y por eso importan las suscripciones selectivas sobre campos indexados. Las plataformas gestionadas operan ambos ejes por ti; la disciplina del lado del cliente es suscribirse de forma acotada y cancelar cuando las pantallas se cierran.

Términos relacionados

Compara con

Lecturas recomendadas

¿Listo para construir tu backend?

Empieza tu proyecto en Back4app en minutos — base de datos, autenticación, APIs y Cloud Code incluidos. Sin tarjeta de crédito.

Escrito y revisado por Back4app Engineering, Back4app Engineering · Publicado el 2026-08-31