Compartir este chat
Cualquiera que tenga el link puede ver esta conversación.
Necesito trackear todo lo que los lectores hacen en un documento:
- Clics, scrolls, zoom, movimientos del mouse, por página, por sesión.
Escribir todo eso en mi base relacional no va a escalar: el volumen es demasiado grande. Creo que necesito otro tipo de sistema.
Buena intuición. Una base transaccional no sirve para datos de eventos append-only a ese volumen: las lecturas se vuelven lentísimas cuando las filas se acumulan. Para esto existen, justamente, los motores OLAP.
- Hechos para eventos. Con almacenamiento columnar, particionado y cache, ingerir millones de filas sale baratísimo.
- Rápidos para consultar. Las agregaciones sobre tablas enormes siguen siendo rápidas, así que el tamaño del almacenamiento y el tiempo de consulta dejan de ser un problema.
Guardá todo y olvidate del volumen y de la latencia de las consultas.
Perfecto. ¿Cómo lo integrarías con Laravel? ¿Y en qué infraestructura conviene correr el servidor, teniendo en cuenta la etapa en la que está el proyecto?
Usá ClickHouse. Su cloud administrado es la opción más simple, pero a esta altura es más de lo que necesitás y sale caro. ClickHouse es open source: alquilá un servidor básico en un proveedor que te cobre solo por lo que usás, e instalale ClickHouse.
Después, tres piezas:
- Modelá los eventos separados de la base de tu app. Un modelo
DocumentEventdedicado apunta a la conexión de ClickHouse: escribís consultas estilo Eloquent para las estadísticas sin tocar nunca tu base principal. - Armá un buffer en el cliente. Juntá los eventos en un buffer de JavaScript en el navegador y mandalos en lotes a un único endpoint, en lugar de hacer un request por cada movimiento del mouse.
- Ingesta asíncrona. Ese endpoint solo recibe el lote y devuelve OK al instante. Después, un job en cola lo convierte al formato de ClickHouse y lo inserta.
Poné las lecturas detrás de un servicio de estadísticas que consulte ClickHouse directamente. Para el lector, la escritura es instantánea, y tus dashboards leen directo del motor OLAP.
Perfecto. Acá está mi página de estadísticas, corriendo exactamente sobre esa arquitectura:
Mandale un email a Eliott
Escribí tu mensaje acá: se abre directo en tu app de correo.
Currículum de Eliott Baylot
Documento PDF descargable.
CV de Eliott
¿Te presentás?
Es solo para que Eliott sepa con quién habla. Lo único obligatorio es tu nombre.
Claude es una IA y puede cometer comete errores. Chequeá las respuestas tres veces.