Volver al inicio

BI offline en asapBI: Docker y ClickHouse

El artículo describe la configuración de desarrollo offline en asapBI con un stack Docker local PostgreSQL y ClickHouse. En detalle: lanzamiento de contenedores, copia de datos vía dbcopy-json, creación de Vistas gráficas con versionado Git e integración de documentación.

asapBI offline: bases de datos locales y Vista sin red
Advertisement 728x90

Desarrollo de BI sin conexión en asapBI: Pila local y vistas visuales

asapBI ofrece soporte completo para el desarrollo de BI sin conexión. El sistema utiliza una pila local con Docker, PostgreSQL y ClickHouse, vistas SQL visuales almacenadas como archivos JSON y control de versiones con Git. Esto permite crear consultas, experimentar con datos y documentar lógica sin depender de servidores remotos, eliminando tiempos de inactividad por conexiones a internet inestables.

El entorno local garantiza aislamiento de datos, experimentación segura y control de versiones. Los desarrolladores tienen total control sobre volúmenes de contenedores, CPU y asignación de memoria.

Ventajas de la pila local

El desarrollo local resuelve desafíos clave en la colaboración entre equipos:

Google AdInline article slot
  • Aislamiento de datos: Los volúmenes de Docker están protegidos contra cambios externos. Sin riesgo de perder tablas de prueba por migraciones o operaciones de limpieza.
  • Experimentación segura: JOINs pesados o vistas complejas afectan solo al contenedor local, no al clúster compartido.
  • Control de versiones con Git: Las vistas visuales se guardan como archivos JSON, permitiendo diferencias, revisiones de código y reversión de cambios.
  • Doble digital de la base de datos: Se pueden probar cambios en esquemas, tipos de datos y relaciones sin afectar el entorno de producción.

Configuración del entorno sin conexión

El proceso consta de tres pasos.

1. Clonar el proyecto desde Git

Descarga el proyecto en una carpeta local. La estructura sigue dominios empresariales: finanzas, ventas, etc. Los archivos de vistas y los archivos dbcopy-json se almacenan en el repositorio.

2. Iniciar la pila de BI mediante Docker Compose

Utiliza docker-compose.yml para ejecutar PostgreSQL y ClickHouse. Ejemplo de configuración:

Google AdInline article slot
services:
  asapbi-postgres:
    image: postgres:15-alpine
    container_name: asapbi-postgres
    restart: unless-stopped
    environment:
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: admin
      POSTGRES_DB: demo
      PGDATA: /var/lib/postgresql/data/pgdata
    ports:
      - "15432:5432"
    volumes:
      - postgres-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U admin -d demo"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 10s
    networks:
      - asapbi-net

  asapbi-clickhouse:
    image: clickhouse/clickhouse-server:24.8-alpine
    container_name: asapbi-clickhouse
    restart: unless-stopped
    environment:
      CLICKHOUSE_USER: admin
      CLICKHOUSE_PASSWORD: admin
      CLICKHOUSE_DB: analytics
    ports:
      - "18123:8123"   # HTTP
      - "19000:9000"   # Nativo
    volumes:
      - clickhouse-data:/var/lib/clickhouse
      - clickhouse-logs:/var/log/clickhouse-server
    healthcheck:
      test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:8123/ping || exit 1"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s
    networks:
      - asapbi-net

volumes:
  postgres-data:
    driver: local
  clickhouse-data:
    driver: local
  clickhouse-logs:
    driver: local

networks:
  asapbi-net:
    driver: bridge

Inicia el proceso desde la interfaz de asapBI o mediante CLI. Docker descargará automáticamente las imágenes necesarias.

3. Poblar la base de datos con datos de prueba

Utiliza archivos *.dbcopy-json para copiar conjuntos de datos de prueba. Ejemplo:

{
  "description": "Copia de clientes con preparación y limpieza",
  "beforeSQL": [
    "BEGIN;",
    "SET session_replication_role = replica;",
    "CREATE TEMP TABLE IF NOT EXISTS _copy_log (ts timestamptz, msg text);"
  ],
  "afterSQL": [
    "SET session_replication_role = DEFAULT;",
    "INSERT INTO _copy_log VALUES (now(), 'Copia completada');",
    "COMMIT;"
  ],
  "tables": [
    {
      "schema": "reference",
      "table": "clients",
      "where": "is_active = true AND created_at >= '2024-01-01'",
      "beforeSQL": [
        "DROP INDEX IF EXISTS idx_clients_region_id",
        "DELETE FROM reference.clients WHERE created_at >= '2024-01-01'"
      ],
      "afterSQL": [
        "CREATE INDEX IF NOT EXISTS idx_clients_region_id ON reference.clients (region_id)",
        "ANALYZE reference.clients"
      ]
    },
    {
      "schema": "sales",
      "table": "orders",
      "where": "order_date >= '2024-01-01'",
      "beforeSQL": "ALTER TABLE sales.orders DISABLE TRIGGER ALL",
      "afterSQL": "ALTER TABLE sales.orders ENABLE TRIGGER ALL"
    },
    {
      "schema": "analytics",
      "table": "user_sessions",
      "where": "",
      "beforeSQL": null,
      "afterSQL": null
    }
  ]
}

Selecciona bases de datos fuente y destino en la interfaz. Usa únicamente datos de prueba provenientes de servidores de desarrollo.

Google AdInline article slot

Vistas SQL visuales

Conéctate al servidor local ClickHouse y crea vistas visuales. Estos son archivos JSON con control de versiones y compatibilidad con revisiones de código. Las vistas están desacopladas de los paneles, asegurando una única fuente de verdad para los cálculos.

Beneficios:

  • Almacenamiento centralizado de la lógica de cálculo.
  • Reutilización en múltiples paneles.
  • Seguimiento de cambios mediante diff de Git.

Integración de documentación

Adjunta archivos de documentación (MD, draw.io) directamente en la misma carpeta que la vista. La documentación se actualiza automáticamente cuando cambia el modelo. Los archivos de texto son ideales para procesamiento por IA y generación automática de documentos.

Conclusiones clave

  • Una pila local con volúmenes persistentes garantiza aislamiento de datos y fiabilidad.
  • Las vistas visuales como archivos JSON permiten control de versiones con Git y revisión entre pares para trabajos analíticos.
  • Los archivos *.dbcopy-json automatizan la copia segura y repetible de datos de prueba.
  • Incorporar documentación (MD, draw.io) en la carpeta del proyecto mantiene la información siempre actualizada.
  • Entorno de sandbox completo para experimentar sin arriesgar la estabilidad de producción.

— Editorial Team

Advertisement 728x90

Leer después