Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

237
Vistas
TimescaleDB vs. Registro de InfluxDB a plc

Soy 100% nuevo en iniciar sesión en una base de datos y probablemente por eso habrá algunas preguntas estúpidas aquí y espero que esté bien. Me gustaría registrar datos de un controlador Beckhoff plc en una base de datos que se coloca en el mismo IPC que mi PLC. Beckhoff plc tiene una función de enlace directo tanto a InfluxDB como a PostgreSQL en el que se basa TimescaleDB, por lo que la conexión funcionará bien. Nos gustaría registrar los datos en el tiempo para poder retroceder y ver a qué hora sucedieron ciertas cosas y también hacer preguntas a la base de datos en función del tiempo. He estado hablando con diferentes personas y la mayoría recomienda usar TimescaleDB, por lo que sería genial escuchar los beneficios entre ellos y lo que me recomendarían elegir.

El tamaño de los datos que registraremos es bastante pequeño. Tendremos una estructura de datos y que contendrá como 10 registros INT o 20 bytes. Haremos un registro en la base de datos cada 1 segundo en las máquinas rápidas y, a veces, solo una vez cada 20 minutos, pero esta parte la controlaré en mi plc.

Entonces, creo que poner datos en la base de datos será bastante sencillo, pero luego tengo algunas ideas sobre lo que me gustaría hacer y lo que es posible.

  1. ¿Es posible hacer preguntas a la base de datos para que me dé la cantidad, el valor más alto, el valor más bajo, el valor medio de los últimos 60 minutos o 24 horas, etc. y luego la base de datos puede devolver estos valores según el marco de tiempo que le doy a la base de datos en mi pregunta a ella?

  2. La resolución con la que inicio sesión que se controla desde el plc solo es necesaria para estar en ese nivel alto durante 7 días y luego me gustaría "descargar / comprimir" los datos. ¿Es eso posible en ambas bases de datos y hay algún beneficio en una de ellas? ¿Quizás más fácil en uno de ellos?

  3. ¿Existe en una de estas dos bases de datos la posibilidad de no escribir en el HD/disco cada vez que mi plc le ingresa datos? ¿O escribirá en el disco cada vez automáticamente? Leí sobre algo llamado WAL, ¿qué es eso o que no usará la RAM para almacenar los datos antes de escribir más datos y no tan a menudo en el disco?

  4. ¿Hay alguna gran diferencia en la configuración de estas dos bases de datos?

Probablemente tengo más preguntas, pero estas son las principales funciones que necesito en el sistema.

Muchas gracias

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

¿Es posible hacer preguntas a la base de datos para que me dé la cantidad, el valor más alto, el valor más bajo, el valor medio de los últimos 60 minutos o 24 horas, etc. y luego la base de datos puede devolver estos valores según el marco de tiempo que le doy a la base de datos en mi pregunta a ella?

¡Sí! Puedes usar consultas para hacerlo. Considere la siguiente estructura de tabla:

 CREATE TABLE conditions ( time TIMESTAMPTZ NOT NULL, device INTEGER NOT NULL, temperature FLOAT NOT NULL ); SELECT * FROM create_hypertable('conditions', 'time'); ALTER TABLE conditions SET (timescaledb.compress, timescaledb.compress_orderby='time');

La resolución con la que inicio sesión que se controla desde el plc solo es necesaria para estar en ese nivel alto durante 7 días y luego me gustaría "descargar / comprimir" los datos. ¿Es eso posible en ambas bases de datos y hay algún beneficio en una de ellas? ¿Quizás más fácil en uno de ellos?

Puede crear agregados continuos que es un método rápido para mantener materializados sus datos resumidos.

 CREATE MATERIALIZED VIEW conditions_hourly(time, device, low, high, average ) WITH (timescaledb.continuous) AS SELECT time_bucket('1 hour', time) as time, device, min(temperature) as low, max(temperature) as high, AVG(temperature) as average FROM conditions GROUP BY 1,2;

Y luego puede agregar una política de retención para mantener solo los últimos 7 días.

 SELECT add_retention_policy('conditions', INTERVAL '7 day');

Y agregue una política de agregados continuos que mantendrá su vista actualizada cada hora:

 SELECT add_continuous_aggregate_policy('conditions_hourly', start_offset => INTERVAL '1 day', end_offset => INTERVAL '1 hour', schedule_interval => INTERVAL '1 hour');

¿Existe en una de estas dos bases de datos la posibilidad de no escribir en el HD/disco cada vez que mi plc le ingresa datos? ¿O escribirá en el disco cada vez automáticamente? Leí sobre algo llamado WAL, ¿qué es eso o que no usará la RAM para almacenar los datos antes de escribir más datos y no tan a menudo en el disco?

En Postgresql puede usar confirmaciones asíncronas: https://www.postgresql.org/docs/current/wal-async-commit.html

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda