Offline rozwój BI w asapBI: lokalny stos i graficzne widoki
W asapBI zaimplementowano pełną obsługę pracy offline dla tworzenia analiz BI. System wykorzystuje lokalny stos Docker z PostgreSQL i ClickHouse, graficzne widoki SQL w formacie JSON oraz kontrolę wersji przez Git. Pozwala to tworzyć zapytania, eksperymentować z danymi i dokumentować logikę bez dostępu do zdalnych serwerów, unikając przestojów spowodowanych niestabilnym połączeniem internetowym.
Środowisko lokalne zapewnia izolację danych, bezpieczeństwo eksperymentów oraz kontrolę wersji. Deweloper ma pełną kontrolę nad objętościami (volumes), procesorem i pamięcią kontenerów.
Zalety lokalnego stosu
Praca lokalna rozwiązuje kluczowe problemy współpracy zespołowej:
- Izolacja danych: Volumes w Docker są chronione przed zewnętrznymi zmianami. Brak ryzyka utraty testowych tabel z powodu migracji lub czyszczenia.
- Bezpieczne eksperymenty: Ciężkie JOIN lub widoki obciążają tylko lokalny kontener, nie wpływając na główny klaster.
- Kontrola wersji przez Git: Graficzne widoki są zapisywane jako pliki JSON. Obsługiwane są porównania różnic, recenzje kodu i cofanie zmian.
- Cyfrowy dwójnik bazy danych: Zmiany schematu, typów danych i relacji można wprowadzać bez obciążenia środowiska produkcyjnego.
Konfiguracja środowiska offline
Przygotowanie zajmuje trzy etapy.
1. Klonowanie projektu z Git
Pobierz projekt do lokalnego folderu. Struktura projektu odpowiada kierunkom: finanse, sprzedaż itp. Pliki widoków i dbcopy-json przechowywane są w repozytorium.
2. Uruchomienie stosu BI przez Docker Compose
Użyj pliku docker-compose.yml do PostgreSQL i ClickHouse. Przykładowa konfiguracja:
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
Uruchomienie poprzez interfejs asapBI lub CLI. Docker automatycznie pobierze obrazy.
3. Wypełnienie bazą danych
Wykorzystaj pliki *.dbcopy-json do kopiowania danych testowych. Przykład:
{
"description": "Kopiowanie klientów z przygotowaniem i czyszczeniem",
"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(), 'Copy completed');",
"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
}
]
}
Wybierz źródło i docelowy system w interfejsie. Używaj wyłącznie danych testowych z serwerów deweloperskich.
Graficzne widoki SQL
Połącz się z lokalnym ClickHouse i stwórz graficzny widok. Jest to plik JSON z kontrolą wersji i możliwością recenzji kodu. Widok jest wyodrębniony z dashboardów, zapewniając jedno jedyne źródło prawdy dla obliczeń.
Zalety:
- Nagromadzenie algorytmów obliczeniowych.
- Możliwość ponownego wykorzystania w różnych dashboardach.
- Śledzenie zmian za pomocą diff Git.
Integracja dokumentacji
Do widoków możesz dołączać pliki w tej samej folderze: MD, draw.io. Dokumentacja aktualizuje się automatycznie przy zmianach modelu. Pliki tekstowe są idealne do przetwarzania przez AI i automatycznego budowania dokumentacji.
Co warto pamiętać
- Lokalny stos Docker z volumenami zapewnia izolację i trwałość danych.
- Graficzne widoki jako pliki JSON wspierają kontrolę wersji przez Git i recenzję kodu dla analizy danych.
- Pliki *.dbcopy-json automatyzują bezpieczne kopiowanie danych testowych.
- Integracja dokumentacji (MD, draw.io) w folderze projektowym gwarantuje jej aktualność.
- Pełna piaskownica do eksperymentów bez ryzyka dla środowiska produkcyjnego.
— Editorial Team
Brak komentarzy.