es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

DynamoDB Timeseries: Consultando grandes períodos de tiempo de datos.

Tengo una tabla de series temporales simple:

{
“n”: “EJEMPLO”, # Nombre, Clave de hash
“t”: 1640893628, # Marca de tiempo Unix, Clave de rango
“v”: 10 # Valor almacenado
}

Cada 15 minutos consulto datos e inserto en la tabla. Si quiero consultar valores en un período de 24 horas, esto funciona bien, lo que equivale a un total de 96 registros.

Ahora, supongamos que quiero consultar un período de tiempo más largo, 1 o 2 años. Esto significa decenas de miles de registros y (en mi opinión) es impráctico hacerlo regularmente. Esto requerirá múltiples consultas para recuperar rangos de tiempo más amplios, lo que afectaría negativamente los tiempos de respuesta y sería mucho más costoso.

He pensado en un par de soluciones potenciales para este problema:

  1. Replicar datos en otra tabla, con incrementos más grandes. Por ejemplo, una tabla con un solo registro cada 6 horas.

  2. Tener otra tabla para almacenar resultados de consulta comunes, como registros para “EJEMPLO” de la última semana, mes y año respectivamente. Periodicamente actualizaría los registros en la nueva tabla para contener cada enésimo registro de la tabla principal (un total de 100). Algo así:

{
“n”: “EJEMPLO#SEMANAL”,
“v”: [
{
“t”: 1640893628,
“v”: 10
},
{
“t”: 1640993628,
“v”: 15
},
… otros 98 registros más.
]
}

Creo que la opción 2 es un enfoque sólido. Me parece que este sería un problema lo suficientemente común, así que me encantaría saber cómo otras personas lo han abordado.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en TI especializado en series temporales y Amazon DynamoDB, me he enfrentado al desafío de consultar grandes períodos de tiempo desde una tabla simple de series temporales. Si bien no suele haber problemas al consultar valores durante un período de 24 horas, hacerlo en un período de tiempo más largo, como 1 o 2 años, puede resultar en decenas de miles de registros, lo que puede aumentar los tiempos de respuesta y los costos.

    Para abordar este problema, he considerado dos posibles soluciones. La primera solución implica replicar los datos en otra tabla, con incrementos mayores. Por ejemplo, esta nueva tabla contendría un solo registro cada 6 horas. Esta opción ofrece una solución rápida y sencilla, pero puede resultar en duplicación de datos y problemas de mantenimiento.

    La segunda solución implica crear otra tabla para almacenar los resultados de consultas comunes de la semana pasada, el mes pasado y el año pasado, respectivamente. Actualizaría periódicamente los registros en la nueva tabla para que contengan cada N-ésimo registro de la tabla principal. Esta nueva tabla contendrá el nombre de los datos consultados junto con el valor y la marca de tiempo para ese período de tiempo en particular.

    Creo que el segundo enfoque es más eficiente y práctico, ya que reduce la cantidad de consultas a la tabla principal, lo que a su vez reduce los tiempos de respuesta y los costos. Sin embargo, es posible que existan otras soluciones, y estoy ansioso por escuchar a otros expertos en TI que se hayan enfrentado a este desafío.

Comments are closed.