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:
- 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:
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.
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
Aún no hay comentarios.