← EP21 Internal Docs EP21 Backup Engine
ADR · ADR-0006 · v1.0.0

SQL-Based Logical Fingerprint (fingerprint.sql_v1)

accepted v1.0.0 Authors: david.sorf Created: 2026-02-24 Updated: 2026-04-09
fingerprint change-detection sha256 postgresql metadata
Doplňkový SQL-based logical fingerprint (fingerprint.sql_v1) detekuje skutečné logické změny obsahu databáze nezávisle na binárním SHA256. Řeší false positives způsobené pg_dump version bumpy nebo formátovacími změnami bez změny dat.
Related docs:

Kontext

SHA256 binárního dump souboru (ADR-0005) není dostatečný pro spolehlivou detekci logických změn:

Potřebujeme detekci změn na úrovni logického obsahu databáze — nezávislou na binární reprezentaci dumpu.

Zvažované alternativy:

A) Pouze SHA256 — rychlé, ale false positives při pg_dump změnách

B) Přímé SQL dotazy na row counts a checksums (zvoleno) — logická úroveň, odolná vůči formátovacím změnám

C) Plný diff obsahu tabulek — příliš pomalé a náročné na storage pro velké DB

Rozhodnutí

✓ Chosen: B — SQL-based logical fingerprint přes row counts a checksums klíčových tabulek

fingerprint.sql_v1 je hash odvozený ze série SQL dotazů spuštěných přímo na databázi před/po dumpu:

  • SELECT COUNT(*) FROM <table> pro každou tabulku
  • SELECT MD5(CAST(SUM(HASHTEXT(t::text)) AS text)) FROM <table> t nebo ekvivalent pro checksum obsahu
  • Výsledky jsou serializovány a hashovaný do jediného fingerprint stringu

Použití v pipeline:

  • run.changed a run.changed_reason kombinují SHA i fingerprint logiku
  • Pokud SHA je stejné → skip (ADR-0005)
  • Pokud SHA je jiné ale fingerprint stejný → pg_dump formátovací změna, není datová změna
  • Pokud fingerprint je jiný → skutečná logická změna

Report: zobrazuje zkrácený fingerprint (logical_fp) pro rychlou vizuální kontrolu.

Důsledky

Pozitivní:

Negativní:

TODO: Definovat přesný SQL algoritmus pro sql_v1 v samostatné DS nebo technické specifikaci — aktuálně je implementace v kódu bez formální specifikace.

Changelog

VersionDateAuthorNote
1.0.02026-04-09david.sorf + claude-sonnet-4-6

Migrace z doc/ADR/ADR-0006-sql-logical-fingerprint.md do DAK JSON formátu. Rozšířeno o alternativy, kombinační logiku SHA+fingerprint, konkrétní SQL přístup a TODO pro formální specifikaci algoritmu.