Zurück zur Startseite

Offline BI in asapBI: Docker und ClickHouse

Der Artikel beschreibt das Einrichten der Offline-Entwicklung in asapBI mit einem lokalen Docker-Stack PostgreSQL und ClickHouse. Im Detail: Starten von Containern, Kopieren von Daten via dbcopy-json, Erstellen grafischer Views mit Git-Versionierung und Integration der Dokumentation.

asapBI offline: lokale Datenbanken und View ohne Netzwerk
Advertisement 728x90

Offline-BI-Entwicklung in asapBI: Lokaler Stack und visuelle Ansichten

asapBI bietet vollständige Offline-Unterstützung für die BI-Entwicklung. Das System nutzt einen lokalen Docker-Stack mit PostgreSQL und ClickHouse, visuelle SQL-Ansichten als JSON-Dateien und Git-Versionierung. So können Abfragen erstellt, Daten experimentell bearbeitet und Logik dokumentiert werden – alles ohne Abhängigkeit von Remote-Servern und damit ohne Ausfallzeiten durch instabile Internetverbindungen.

Die lokale Umgebung gewährleistet Datenisolation, sichere Experimente und Versionskontrolle. Entwickler haben volle Kontrolle über Container-Volumes, CPU und Speicherzuweisung.

Vorteile des lokalen Stacks

Der lokale Entwicklungsumzug löst zentrale Herausforderungen bei der Teamzusammenarbeit:

Google AdInline article slot
  • Datenisolation: Docker-Volumes sind vor externen Änderungen geschützt. Kein Risiko, Testtabellen durch Migrationen oder Bereinigungsaktionen zu verlieren.
  • Sichere Experimente: Aufwändige JOINs oder komplexe Ansichten wirken nur auf den lokalen Container, nicht auf den gemeinsam genutzten Cluster.
  • Git-Versionierung: Visuelle Ansichten werden als JSON-Dateien gespeichert und ermöglichen Diffs, Code-Reviews und Rückgängigmachungen.
  • Digitales Zwilling der Datenbank: Schema-Änderungen, Datentypen und Beziehungen können getestet werden, ohne die Produktion zu beeinträchtigen.

Einrichtung der Offline-Umgebung

Die Einrichtung erfolgt in drei Schritten.

1. Projekt aus Git klonen

Laden Sie das Projekt in einen lokalen Ordner herunter. Die Projektstruktur folgt Geschäftsdomänen wie Finanzen, Vertrieb usw. Ansichtsdateien und dbcopy-json-Dateien sind im Repository gespeichert.

2. BI-Stack über Docker Compose starten

Verwenden Sie docker-compose.yml, um PostgreSQL und ClickHouse zu starten. Beispielkonfiguration:

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"   # Native
    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

Starten Sie über die asapBI-Oberfläche oder CLI. Docker zieht die benötigten Images automatisch nach.

3. Datenbank mit Testdaten füllen

Verwenden Sie *.dbcopy-json-Dateien, um Testdatensätze zu kopieren. Beispiel:

{
  "description": "Kopieren von Kunden mit Vorbereitung und Aufräumen",
  "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(), 'Kopie abgeschlossen');",
    "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
    }
  ]
}

Wählen Sie Quell- und Ziel-Datenbank in der Oberfläche aus. Nutzen Sie ausschließlich Testdaten aus Dev-Servern.

Google AdInline article slot

Visuelle SQL-Ansichten

Stellen Sie eine Verbindung zum lokalen ClickHouse-Instanz her und erstellen Sie visuelle Ansichten. Diese sind JSON-Dateien mit Versionskontrolle und Unterstützung für Code-Reviews. Ansichten sind von Dashboards entkoppelt und garantieren eine einheitliche Quelle für Berechnungen.

Vorteile:

  • Zentralisierte Speicherung von Berechnungslogik.
  • Wiederverwendbarkeit über mehrere Dashboards hinweg.
  • Änderungstracking via Git-Diff.

Dokumentationsintegration

Hängen Sie Dokumentationsdateien (MD, draw.io) direkt im selben Ordner wie die Ansicht an. Dokumentation wird automatisch aktualisiert, wenn sich das Modell ändert. Textdateien eignen sich ideal für KI-Verarbeitung und automatisierte Dokumentenerstellung.

Schlüsselbotschaften

  • Ein lokaler Docker-Stack mit persistierenden Volumes sorgt für Datenisolation und Zuverlässigkeit.
  • Visuelle Ansichten als JSON-Dateien ermöglichen Git-Versionierung und Peer-Review für analytische Arbeit.
  • *.dbcopy-json automatisiert sichere, wiederholbare Kopien von Testdaten.
  • Dokumentation (MD, draw.io) im Projektordner hält sie aktuell.
  • Vollständiger Sandbox-Modus für Experimente ohne Risiko für die Produktivstabilität.

— Editorial Team

Advertisement 728x90

Weiterlesen