Data Quality checks vs reconciliation¶
Тип материала: инженерное сравнение. Выводы зависят от workload и failure model; схема и сценарии иллюстративные.
Проверка источников: 2026-11-02. Численные latency, throughput, cost и SLA не измерялись.
Критерии выбора¶
| Критерий | Data Quality | Reconciliation |
|---|---|---|
| Workload | Валидность значений и contract predicates | Соответствие независимым business evidence |
| Consistency | Проверяет доступный dataset snapshot | Требует одинаковых cuts и identity matching |
| Latency / throughput | Streaming validation либо batch scan | Key joins, totals и exception resolution |
| Cost / scalability | Predicate cost и cardinality profiles | Независимый expected dataset, indexing и ownership |
| Operational complexity | Owners, severity, false positives | Late arrivals, cut selection, compensating corrections |
Механизм и ограничения¶
Проверка amount integer и currency enum не увидит missing operation. Сверка суммы не увидит перестановку двух account IDs с одинаковыми amount. Оба механизма нужны: DQ предотвращает часть неверных effects, reconciliation обнаруживает потерю/дублирование и расхождение между системами.
Для FinTech expected берут из authoritative ledger/settlement evidence, а не из суммы target rows. Для betting event analytics нужен contract по revisions: latest-state keys нельзя сравнивать с raw event count. Выбор cut и правил коррекции — часть спецификации сверки.
Иллюстративная схема решения¶
flowchart TD
W[Workload and invariant] --> B[Define durable boundary]
B --> F[Compare failure and recovery obligations]
F --> L[Choose protocol for explicit scope]
L --> T[Fault test and reconciliation]
Failure и recovery¶
Если expected и actual вычислены из одного corrupted dataframe, оба checks могут быть green. Сохраните независимый source manifest, проверьте missing/extra keys и duplicate cardinality; восстановите только разрешённые операции и повторите oracle на том же cut.
Практическое упражнение¶
Исполните SQL reconciliation lab. Добавьте extra key с нулевой суммой и проверьте, что totals check не видит ошибку, а key-set check видит.
Связанные материалы и источники¶
- PostgreSQL isolation — 17.