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.

¿Cómo guardar los datos de la serie temporal en Thingsboard en un sistema de archivos externo como archivo CSV o JSON?

¿Cuál sería la mejor manera de guardar datos de series de tiempo en un sistema de archivos externo para su posterior procesamiento en otra plataforma?

Cuando digo “mejor”, me refiero a:
– La menor cantidad de codificación posible.
– La mayor resistencia posible a cargas pesadas.
– Integración con TB (o utilizando herramientas o soluciones alternativas dentro de TB).

La solución podría ser en tiempo real o por lotes, ya que el destino final es para análisis y no requiere información de último minuto.

He pensado en algunas formas, pero me gustaría recibir consejos u opiniones sobre cuál sería más conveniente. Y, por supuesto, apreciaría cualquier otra idea que no haya considerado.

Para el modo en tiempo real:

  1. En la cadena de reglas, guardar los datos con un nodo después del nodo “Guardar series de tiempo”.
    a. ¿Esto podría afectar significativamente el rendimiento? ya que agregará una operación de guardado en el sistema de archivos por cada llamada al nodo.
    b. ¿Hay algún ejemplo de código de un nodo así?

  2. Utilizar el nodo “Llamada a la API Rest” para enviar los datos de series de tiempo mediante una solicitud POST a un punto final y generar el archivo allí.
    a. ¿Tiene alguna posibilidad de ser eficiente?
    b. ¿Hay algún ejemplo de código de cómo hacerlo?

  3. Utilizar el nodo Kafka para enviar los datos de series de tiempo a un servidor Kafka y desde allí a su destino final.
    a. Esto introduce otro nivel (Kafka) que requiere otro tipo de experiencia y más recursos.
    b. ¿Alguien ha trabajado con este nodo con éxito? Y, ¿le importaría compartir un ejemplo?

Para el modo por lotes:

  1. Descubrir qué tablas utiliza TB dentro de Cassandra y programar un script para extraer información directamente de la base de datos.
    a. Esto requeriría tener un buen conocimiento del modelo de datos de TB dentro de Cassandra y de Cassandra misma para poder escribir los scripts. Por lo tanto, no parece una forma muy natural/integrada de resolver el problema.

  2. Crear una cadena de reglas que active una consulta en ciertos intervalos de tiempo, para recuperar un período de tiempo de los datos de series de tiempo guardados en TB, y luego utilizar algunas de las opciones de tiempo real para guardar el archivo en una operación.

(Note: TB refers to an information technology platform, not tuberculosis)

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Según los criterios dados, la mejor manera de guardar datos de series temporales en un sistema de archivos externo para su posterior procesamiento en otra plataforma sería la opción 3 – Utilizar un nodo de Kafka para enviar los datos de series temporales a un servidor Kafka y desde allí a su destino final. Aquí tienes el porqué:

    1. Menor cantidad de código posible: Utilizar el nodo de Kafka requeriría un esfuerzo mínimo de programación ya que el nodo se encargará de enviar los datos al servidor Kafka.
    2. Resistencia a cargas pesadas: Kafka es una plataforma de transmisión distribuida de alto rendimiento que puede manejar grandes volúmenes de datos y es conocida por su confiabilidad y escalabilidad.

    3. Integrado con TB: TB soporta la integración con Kafka de manera nativa, lo que significa que puede integrarse fácilmente con la infraestructura existente de TB.

    4. Casi en tiempo real: Kafka puede manejar el procesamiento de datos casi en tiempo real, lo cual es perfecto para el caso de uso dado.

    Si bien las otras opciones, como guardar los datos en un sistema de archivos o activar consultas en lotes, podrían funcionar, la opción 3 brinda el mejor equilibrio entre rendimiento, escalabilidad y facilidad de implementación.

Comments are closed.