Gestión de datos

Sincronice sus datos de Edge a la nube con Actian Zen EasySync

Johnson Varughese

28 de agosto de 2024

Sincronice sus datos de Edge a la nube con Actian Zen EasySync

Bienvenido de nuevo al mundo de Actian Zen, una versátil y potente solución gestion des données diseñada para ayudarle a crear aplicacionesEmbarqué faible latence . Esta es la tercera parte de la serie de blogs de inicio rápido que se centra en ayudar a los desarrolladores de aplicaciones Embarqué a empezar con Actian Zen.

Establecer cohérence y consolidar datos en diferentes dispositivos y servidores es esencial para la mayoría de las soluciones de borde a nube. Sincronizar datos es necesario para casi todas las aplicaciones móviles, de borde o IoT, y los desarrolladores están familiarizados con los conceptos y retos básicos. Por eso muchos desarrolladores experimentados valoran las soluciones eficientes. La herramienta Actian Zen EasySync es una nueva utilidad diseñada específicamente para este fin.

Este blog le guiará a través de los pasos para configurar y ejecutar EasySync.

¿Qué es EasySync?

Zen EasySync es una versátil herramienta synchronisation des données que automatiza la sincronización de registros recién creados o actualizados de un servidor de base de datos Zen a otro. Esta herramienta transfiere datos a través de múltiples servidores, tanto si está trabajando en el borde o dentro de una red centralizada. Entre las principales características de EasySync se incluyen:

  • Horario de sincronización flexible: Sincronización pueden programarse para buscar cambios en un intervalo definido o pueden utilizarse como herramienta de transferencia por lotesdependiendo de sus necesidades.
  • Registro: Supervise la actividad general, detecte errores y solucione los resultados inesperados con las funciones de registro.

Requisitos previos

Antes de utilizar EasySync, asegúrese de lo siguiente en su instalación de Zen:

  • Datos del sistema: Los ficheros deben tener activados los datos del sistema v2, con formato de fichero versión 13 o versión 16.
  • ZEN 16.0 instalado.
  • Clave única: Tanto los archivos de origen como los de destino deben tener una clave única definida por el usuario.

Escenarios de uso de EasySync

EasySync admite varios escenarios de synchronisation des données , lo que la convierte en una herramienta flexible para diferentes casos de uso. A continuación se muestran algunos escenarios de uso comunes representados en el siguiente diagrama:

  1. Empujar a distancia: Sincronizar datos de una base de datos local a una base de datos remota.
  2. Tire del mando a distancia: Sincronizar datos de una base de datos remota a una base de datos local.
  3. Tirar y empujar a los mandos a distancia: Sincroniza datos entre varias bases de datos remotas.
  4. Datos agregados de Edge: Recopile datos de varias bases de datos de borde y sincronícelos con una base de datos central.
  5. Difundir datos a Edge: Distribuya datos de una base de datos central a múltiples bases de datos de borde.

gráfico actian edge easysync

Primeros pasos con EasySync

Para demostrar cómo utilizar EasySync, crearemos una aplicación Python que simule datos de sensores y los sincronice utilizando EasySync. Esta aplicación creará una tabla de sensores en el dispositivo de borde y en el servidor remoto, insertará datos de sensores aleatorios y sincronizará los datos con una base de datos remota. La base de datos remota puede contener varios conjuntos de datos de varios dispositivos de borde.

Paso 1: Crear el archivo de configuración

En primer lugar, debemos crear un archivo de configuración JSON (config.json). Este archivo definirá los ajustes de sincronización y los archivos a sincronizar, donde los archivos se almacenan en una carpeta de origen (demodata) y otra de destino (demodata).

A continuación se muestra un ejemplo de cómo podría ser el archivo de configuración:

{
  "version": 1,
  "settings": {
    "polling_interval_sec": 10,
    "log_file": " C:/ProgramData/Actian/Zen/logs/datasync.log",
    "record_err_log": " C:/ProgramData/Actian/Zen/logs/recorderrors.log",
    "resume_on_error": true
  },
  "files": [
    {
      "id": 1,
      "source_file": "btrv://localhost/demodata?dbfile= sensors.mkd",
      "source_username": "",
      "source_password": "",
      "destination_file": "btrv://<Destination Server>/demodata?dbfile= sensors.mkd",
      "destination_username": "",
      "destination_password": "",
      "unique_key": 0
    },
    {
      "id": 2,
      "source_file": "btrv://localhost/demodata?dbfile=bookstore.mkd",
      "destination_file": "btrv://<Destination Server>/demodata?dbfile=bookstore.mkd",
      "create_destination": true,
      "unique_key": 1
    }
  ]
}

Paso 2: Escribir el script Python

A continuación, creamos un script en Python que simula los datos del sensor, crea la tabla de base de datos necesaria e inserta registros en la base de datos. 

Guarde el siguiente código Python en un archivo llamado run_easysync.py. Ejecute la secuencia de comandos para crear la tabla de sensores en el dispositivo de borde local y en el servidor, y para insertar datos en el dispositivo de borde.

import pyodbc
import random
import time
from time import sleep
random.seed()
def CreateSensorTable(server, database):
    try:
db_connection_string = f"Driver={{Pervasive ODBC Interface}};
ServerName={server};
DBQ={database};"
        conn = pyodbc.connect(db_connection_string, autocommit=True)
        cursor = conn.cursor()
       # cursor.execute("DROP TABLE IF EXISTS sensors;")
        cursor.execute("""
            CREATE TABLE sensors SYSDATA_KEY_2(
                id IDENTITY,
                ts DATETIME NOT NULL,
                temperature INT NOT NULL,
                pressure FLOAT NOT NULL,
                humidity INT NOT NULL
            );
        """)
        print(f"Table 'sensors' created successfully on {server}")
     except pyodbc.DatabaseError as err:
         print(f"Failed to create table on {server} with error: {err}")
def GetTemperature():
     return random.randint(70, 98)
def GetPressure():
     return round(random.uniform(29.80, 30.20), 3)
def GetHumidity():
     return random.randint(40, 55)
def InsertSensorRecord(server, database):
     temp = GetTemperature()
     press = GetPressure()
     hum = GetHumidity()
     try:
      insert = 'INSERT INTO sensors (id, ts, temperature, pressure, humidity) VALUES (0, NOW(), ?, ?, ?)'
        db_connection_string = f"Driver={{Pervasive ODBC Interface}};ServerName={server};DBQ={database};"
        conn = pyodbc.connect(db_connection_string, autocommit=True)
        cursor = conn.cursor()
        cursor.execute(insert, temp, press, hum)
        print(f"Inserted record [Temperature {temp}, Pressure {press}, Humidity {hum}] on {server}")
    except pyodbc.DatabaseError as err:
        print(f"Failed to insert record on {server} with error: {err}")
# Main
local_server = "localhost"
local_database = "Demodata"
remote_server = "remote-server_name"
remote_database = "demodata"

# Create sensor table on both local and remote servers
CreateSensorTable(local_server, local_database)
CreateSensorTable(remote_server, remote_database)

while True:
    InsertSensorRecord(local_server, local_database)
    sleep(0.5)

Sincronización de datos del dispositivo IoT con un servidor remoto

Ahora, incorporemos el proceso synchronisation des données mediante la herramienta EasySync para garantizar que los datos de los sensores del dispositivo IoT se replican en un servidor remoto.

Paso 3: Ejecute EasySync

Para sincronizar los datos mediante EasySync, sigue estos pasos:

  1. Asegúrese de que el easysync esté instalada y accesible desde la línea de comandos.
  2. Ejecute el script de Python para empezar a generar e insertar los datos de los sensores.
  3. Ejecute el comando EasySync para iniciar el proceso de sincronización.

Abra su línea de comandos y navegue hasta el directorio que contiene el archivo de configuración y el script de Python. A continuación, ejecute el siguiente comando:

easysync -o config.json

Este comando ejecuta la utilidad EasySync con el archivo de configuración especificado y garantiza el inicio del proceso de sincronización.

Conclusión

Actian Zen EasySync es una herramienta sencilla pero eficaz para automatizar synchronisation des données entre servidores de bases de datos Zen. Siguiendo los pasos descritos en este blog, puede configurar y ejecutar EasySync fácilmente. EasySync proporciona la flexibilidad y fiabilidad que necesita para gestionar sus datos en el borde. Recuerde asegurarse de que sus archivos tienen el formato correcto, de que los datos del sistema v2 están activados y de que poseen una clave única definida por el usuario para una sincronización perfecta. Con EasySync, puede gestionar con confianza los datos de los dispositivos IoT y sincronizarlos con servidores remotos de forma eficiente.

Para más detalles y guías visuales, consulte la Academia Actian y la completa documentación. ¡Feliz programación!

Johnson Varughese headshot

Sobre Johnson Varughese

Johnson Varughese es el Gerente de Ingeniería de Soporte en Actian, donde apoya a los desarrolladores que crean aplicaciones utilizando interfaces ZEN como Btrieve, ODBC, JDBC, ADO.NET, Btrieve2, y otros. Su función consiste en proporcionar orientación técnica, solucionar problemas y garantizar que los desarrolladores puedan utilizar eficazmente estas interfaces para crear aplicaciones sólidas y eficientes en diferentes entornos de programación. La experiencia de Johnson en estas tecnologías ayuda a agilizar los procesos de desarrollo y a mejorar el rendimiento y la funcionalidad de las aplicaciones que se desarrollan.