GH GambleHub

数据完整性

1)什么是数据完整性

数据完整性是一组属性和控制,可确保数据在整个生命周期中正确、一致且一致:从源和转换到店面、API和导出。目的是使相同的陈述在重复时给出相同的答案,并且可以跟踪和验证任何更改。


2)完整性类型和居住地

实体(Entity):唯一的主键,没有重复。
参考(Referential):正确的FK链接;没有"挂起"链接。
域:有效的范围和格式(类型、长度、参考资料)。
业务规则:主题区域不变量(平衡≥ 0,布线总和=0等)。
时间:时间戳的单调性和一致性,正确的超时区域。
访问策略:RLS/CLS不会破坏可见数据的逻辑一致性。


3)数据和电路合同(真相来源)

我们为设置和事件设置正式合同;在入口处和每次转换之后应用它们。

示例(YAML,简化):
yaml dataset: payments primary_key: txn_id foreign_keys:
- fk: user_id -> users.user_id schema:
- {name: txn_id, type: string, unique: true}
- {name: user_id, type: string, not_null: true}
- {name: amount, type: decimal(18,2), min: 0}
- {name: currency, type: string, in: [USD,EUR,TRY,UAH]}
- {name: event_time, type: timestamp, tz: UTC}
dq_rules:
- "duplicates(txn_id)=0"
- "ref_integrity(user_id, users.user_id)=true"
- "sum(amount) >= 0"
evolution:
semver: [MAJOR, MINOR, PATCH]
breaking_changes_require: approval:data-governance

4)事务性保修和隔离性

用于OLTP的ACID:原子性,一致性,绝缘性,耐用性。
隔离级别:Read Committed/Repeatable Read/Serializable-选择"肮脏"/不可思议/幻影阅读的风险。
OLAP和lakehouse:具有兼容性控制的原子表commites(交易日志)、idempotent sink和schema-evolution。
KPI公式的一致性:语义层→报告和API的一个真理。


5)分布式系统: 顺序,重复,幂等

事件顺序:使用"event_time"+"ingested_at",watermarks和lateness公差;基于事件时间的聚合。
重新交付(at-least-once):全局"event_id",表格idempotency keys, upsert/merge on可持续密钥。

订单: 重新计算窗口,延迟策略,补偿.

Exactly-once的含义是:运输可能只是least-once,接收器是相等的。


6)每个层上的完整性验证(DQ)

我们在CI/CD和piplines rantime中包含完整性规则:
  • Freshness/Completeness/Uniqueness/Valid Values/Referential Integrity.
  • 异常:重复激增,时间中断,分布急剧变化。
  • KPI公式的控制:计算的忠实性和结果匹配测试(金集)。
  • 出口管制:禁止发放违规工具包(quarantine)。
示例(大扩展样式):
yaml expect_column_values_to_be_unique: {column: txn_id}
expect_column_values_to_not_be_null: {column: user_id}
expect_column_values_to_be_in_set: {column: currency, value_set: [USD,EUR,TRY,UAH]}

7)财务和运营诚信

双入账(双入账):资产负债表借记/信用;截断中的摘要对账。
总不变量:付款金额=注销金额+佣金+调整数。
操作不变式:SLA/guardrail度量不会打破业务规则(例如,自动维修不会创建重复数据)。


8)Lyneedge,审核和可重复性

线条:从源头到店面/相框;转型和业主的可见性。
审计步道:谁改变了什么,何时以及为什么;电路/公式/jobs版本。
Snepshots/检查点:能够重新计算和确认过去的报告。
Repro:相同切片上的相同请求→相同的结果(版本和图层)。


9)安全性和隐私而不会失去完整性

RLS/CLS:字符串/专栏过滤器不应违反不变量(例如,可见样本的总和必须与声明的总和匹配)。
掩蔽/令牌化:确定性策略,以保持假想和参考完整性。
加密:在信道中,压缩后在"磁盘上";密钥管理和访问审核。
DSAR/Retention:删除/匿名不会中断连通性(级联策略)。


10)自助服务和自动维修

Quarantine:隔离可疑的政党/战役;消费者是"干净"的分支。
Replay/Backfill:从未更改的raw日志重播窗口。
Reconcile:层和系统的对账(raw↔curated↔marts;istochnik↔DWH)。
Dedup/Compaction/Rebuild:索引/单元修复的系统过程。

策略即代码: "什么异常→什么动作→阈值→升级。"


11)建模和存储实践

稳定键:代替PK(UUID/ULID),参考书中的不变自然键。
Normalizatsiya↔denormalizatsiya:源中的FK链接,带有逻辑版本控制的非规范化店面。
SCD1/SCD2:用于测量的托管历史。
排序/聚类:改进RLE/zone-maps,简化对账。
哈希和校验和:检查文件/批次的完整性。


12)时间和报告的完整性

公式版本:2025年1月的报告应复制公式 X。
切断和"关闭期":冻结店面和存档切片。
后期修饰事实:给药和重新计算机制与报告的版本标记。
记录重新定义:手动调整-仅进行审核。


13)集成和API

API合同:模式,类型,强制性字段,错误代码;(v1/v2)。
入口处的验证:reject不好的薪水,不要"默默地修补"。

等效开机自检: 等效钥匙,重复是安全的.

导出到文件:批次、哈希、签名的一致性。


14)反模式

Prod Questions和Vewhs中的SELECT-在MINOR演化中破裂。
FK"言语":没有真正的链接验证。
无审计和报告的无声数据修复。
将TZ和时间格式混合在一个集合中。
将KPI重新定义为没有版本和日志的"手柄"。
唯一没有冗余策略的重复数据消除密钥。
在DSAR上删除而不进行级联链接检查。


15)实施路线图

1.概况与关键性:集合/事件映射,所有者,风险,不变性。
2.合同和方桉:正式化类型/限制/FK, CI兼容性检查。
3.管道中的DQ:Freshness/Completeness/Uniqueness/RI,quarantine,Alertes。
4.交易基础:atomic-sink,upsert/merge,SCD历史,公式忠诚度。
5.在线和审核:目录,跟踪,更改日志,访问日志。

6.维修策略: replay/backfill/dedup/reconcile作为代码;runbook’и и SLO MTTR-data.

7.安全/priv: RLS/CLS、掩码、加密、DSAR流程。
8.报告:切断,自由切片,KPI版本控制。


16)套装/店面发布前的支票清单

  • PK/FK和域限制设置并通过测试。
  • 包括电路/公式的转换;schema-diff绿色。
  • DQ规则(新鲜/完整/唯一性/范围/RI)为绿色。
  • 等效记录:upsert/merge,等效键(用于事件)。
  • 时间:"event_time"和"ingested_at",TZ=UTC;数据延迟策略。
  • Lyneedge和审计是可见的;包括quarantine和alertes。
  • RLS/CLS/掩码不会违反不变量和 RI。
  • DSAR/Retention测试;切断/存档就绪。

17)迷你模板

SQL: 参考完整性检查

sql select count() as orphans from fact_payments f left join dim_users u on f.user_id = u.user_id where u.user_id is null;
-- ожидаем orphans = 0

Quarantine/修复政策(伪YAML)

yaml policy: payments_integrity detect:
- rule: duplicates(txn_id) > 0
- rule: ref_integrity(user_id, users.user_id) = false auto_actions:
- quarantine_partition: {date: today}
- trigger_replay: {window: "last_2h"}
escalate_if:
- condition: violations_persist>30m page: "oncall-data"

测量SCD2图

sql
-- dim_user_status (SCD2)
user_id, status, valid_from, valid_to, is_current

18)结果

数据完整性不是单个验证,而是端到端的保证系统:正式合同和限制,事务和分布式不变式,维修验证和自动化,在线和审计,隐私和权利。当这些元素一起工作时,数据成为决策的可靠基础,事件是罕见的,短暂的和可预测的。

Contact

联系我们

如需任何咨询或支持,请随时联系我们。我们随时准备提供帮助!

开始集成

Email — 必填。Telegram 或 WhatsApp — 可选

您的姓名 可选
Email 可选
主题 可选
消息内容 可选
Telegram 可选
@
如果填写 Telegram,我们也会在 Telegram 回复您。
WhatsApp 可选
格式:+国家代码 + 号码(例如:+86XXXXXXXXX)。

点击按钮即表示您同意数据处理。