Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

238
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda