Skalierung: Full-Inventory-Sync durch Delta-Sync ersetzen #74

Closed
opened 2026-05-16 23:42:25 +00:00 by jreinemann-euris · 0 comments
jreinemann-euris commented 2026-05-16 23:42:25 +00:00 (Migrated from github.com)

Bestandsaufnahme

Die aktuelle Sync-Architektur überträgt bei GET /api/inventory und PUT /api/inventory das gesamte Inventar (alle Items, Categories, Locations, Settings) in einem Request.

Aktueller Ablauf

  1. Pull-Sync (downloadInventory): Server sendet komplettes Inventar als InventoryDto
  2. Push-Sync (uploadInventory): Client sendet komplettes Inventar an Server
  3. Einzel-Patch: Nur PATCH /api/inventory/items/{id} arbeitet auf Einzelitems

Problem bei wachsendem Inventar

  • Bei 100+ Items: Request-Payload wird mehrere KB groß
  • Bei 1000+ Items: Spürbare Latenz, Bandbreitenverbrauch auf Mobilfunk
  • Jeder Full-Sync überträgt auch unveränderte Daten
  • Besonders problematisch bei häufigen Sync-Zyklen (WebSocket-Trigger)

Betroffene Stellen

  • SyncServiceImpl.downloadInventory() / uploadInventory()
  • Server: GET /api/inventory, PUT /api/inventory in Routing.kt
  • InventoryDto als Transport-Container

Zu klären

  • Ab welcher Inventargröße wird der Full-Sync zum spürbaren Problem?
  • Delta-Sync-Strategie: Timestamp-basiert? Versionsnummer? Change-Log auf Server?
  • Ist der Full-Sync als Fallback weiterhin nötig (z.B. bei fullSyncRequired-Event)?
## Bestandsaufnahme Die aktuelle Sync-Architektur überträgt bei `GET /api/inventory` und `PUT /api/inventory` das **gesamte Inventar** (alle Items, Categories, Locations, Settings) in einem Request. ### Aktueller Ablauf 1. **Pull-Sync** (`downloadInventory`): Server sendet komplettes Inventar als `InventoryDto` 2. **Push-Sync** (`uploadInventory`): Client sendet komplettes Inventar an Server 3. **Einzel-Patch**: Nur `PATCH /api/inventory/items/{id}` arbeitet auf Einzelitems ### Problem bei wachsendem Inventar - Bei 100+ Items: Request-Payload wird mehrere KB groß - Bei 1000+ Items: Spürbare Latenz, Bandbreitenverbrauch auf Mobilfunk - Jeder Full-Sync überträgt auch unveränderte Daten - Besonders problematisch bei häufigen Sync-Zyklen (WebSocket-Trigger) ### Betroffene Stellen - `SyncServiceImpl.downloadInventory()` / `uploadInventory()` - Server: `GET /api/inventory`, `PUT /api/inventory` in Routing.kt - `InventoryDto` als Transport-Container ### Zu klären - Ab welcher Inventargröße wird der Full-Sync zum spürbaren Problem? - Delta-Sync-Strategie: Timestamp-basiert? Versionsnummer? Change-Log auf Server? - Ist der Full-Sync als Fallback weiterhin nötig (z.B. bei `fullSyncRequired`-Event)?
Sign in to join this conversation.
No description provided.