Hola,
tras la recuperación de valores de un dispositivo MQTT (índice/consumo energético) y su análisis aquí, veo que para este dispositivo tengo 32433 valores que en realidad no cambian (si se descarta el valor erróneo):
Por supuesto, tengo más o menos la misma cantidad de valores para cada día de este sensor Índice (Tempo HP Día Rojo) que no cambia durante varios meses.
No me atrevo a imaginar el tamaño que esto debe ocupar en mi base de datos que ya supera los 3 GB
¿No podríamos tener un valor inicial (el primero del día) y un valor final (el último del día) solo si y solo si los valores son los mismos durante el día?
Más generalmente, en cuanto a los índices, ¿no podríamos registrar/conservar solo los valores diferentes del día anterior?
Este tipo de optimización no es claramente responsabilidad nuestra : es exactamente el trabajo de DuckDB, y lo hace muy bien
Por el contrario, eliminar deliberadamente los valores similares en Gladys perdería información : la ausencia de variación es una información en sí misma. Ya hemos discutido esto muchas veces en Gladys, y nunca he sido favorable a este enfoque.
Ahora que nos apoyamos en DuckDB, que gestiona este caso de manera muy eficiente, ya no hay realmente argumentos para no conservar estos datos
Vale, entonces me parece bien si no ocupa más espacio que eso.
Por otro lado, aunque DuckDB solo almacene una vez los datos (que son idénticos), debe almacenar la marca de tiempo, que es diferente en cada instante…
Lo que más me preocupa (aunque igualmente voy a dormir bien, tranquilo ) es que tengo más de 30.000 datos por día por índice, aunque algunos no cambian durante meses (los rojos, por ejemplo) y eso desde hace un año, eso es mucha información
Estoy de acuerdo.
En el caso particular de mis índices Tempo, sé que nunca tendré un día rojo entre el 01/04 y el 31/08, por lo que no necesito que la información del valor se almacene. Pero esto solo me concierne a mí, que uso teleinfo2mqtt, que devuelve una información json en mqtt donde se envían todas las informaciones.
Si quieres probar DuckDB, intenta insertar 30k, 300k, 1 millón de valores idénticos en una instancia de Gladys de prueba y compara el tamaño de la base de datos para tener una idea de las magnitudes
¿Por qué 30k datos por día?
¿Cuál es tu fuente de adquisición?
En mi caso, mi Lixee está configurado para enviar un valor por minuto.
30k/día, eso son 20 por minuto, cada 3 segundos, es enorme. ¿Necesitas esta precisión?
Acabo de mirar las variables de entorno de Docker y se puede gestionar el tiempo de emisión MQTT entre cada payload, y yo había puesto « enviar todo » así que ahora he puesto un máximo
Si no me equivoco, quería recuperar la evolución en tiempo real de la potencia instantánea (PAPP).