在准备环境前提交次全部更改。

This commit is contained in:
Neo
2026-02-19 08:35:13 +08:00
parent ded6dfb9d8
commit 4eac07da47
1387 changed files with 6107191 additions and 33002 deletions

View File

@@ -0,0 +1,6 @@
- [P20260217-003557] 2026-02-17 00:35:57 +0800
- summary: 2、优化方案方案 0决策基线推荐保留 ODS 多版本追加PK = (id, content_hash)),但把“无意义重复版本”压掉、把“取最新版本”跑快、把 spec 误导项清理掉。方案 1清理 spec 中“误导/无效配置”(…
- prompt:
```text
2、优化方案方案 0决策基线推荐保留 ODS 多版本追加PK = (id, content_hash)),但把“无意义重复版本”压掉、把“取最新版本”跑快、把 spec 误导项清理掉。方案 1清理 spec 中“误导/无效配置”(纯重构,不改运行语义)删除 conflict_columns_override运行时不生效冲突列来自 DDL保留只会误导新人以为它决定去重逻辑。PK 信息应只有一个权威来源DDL。更新数据库与DDL.软删除策略字段标准化:用枚举替代组合字段把 snapshot_full_table + snapshot_window_columns 合并成一个枚举外加可选时间列NONE不做软删除FULL_TABLE全表快照 diffWINDOW窗口快照 diff需要时间列好处配置更可读__post_init__ 校验更清晰减少“组合状态爆炸”。删除全局恒定的冗余字段include_site_column/include_page_no/include_page_size 全部 False → 直接硬编码include_source_endpoint 少数 True → 保留但默认 False以上属于“让 spec 说人话”,不改表结构不改数据,只减少误解成本。方案 2减少“无意义版本”——默认开启 skip unchanged轻度改行为但更符合多版本语义把 enable_content_hash_dedup 改名成更直观的 skip_unchanged或保留原名但改注释并考虑默认改为 True强烈建议逻辑内容没变就不新增版本内容变了依然会插入新行多版本语义不受影响这能直接解决你们最烦的“版本膨胀里混了很多无变化重复”的问题。方案 3给“取最新版本”提供索引与标准写法性能关键每张 ODS 表加复合索引:(business_id, fetched_at DESC)business_id 指各表主业务主键列)。目标查询模式通常是:“每个 id 取最新一行”“按时间增量抽取 + 每 id 最新”没索引会导致排序/去重代价大;有索引后能极大减少扫描与排序成本。业务下游是需要“最新且未删除”,所以:维护一个 latest 视图/物化视图(例如 ods_x_latest统一封装 DISTINCT ON / window function 逻辑。或者在 DWD 落地时统一做“latest 快照表”,让业务查询不直接扫 ODS 多版本表解决的不是多版问题,而是“没有为最新版本访问模式建索引”问题。方案 4软删除语义在多版本下的“规约”已经指出多版本下软删除会出现“多行一起标删”的复杂性。但我认为删除也使更新的一种应该是新增一行记录为改ID的最新记录本记录的is_delete = 1ODS 层语义:业务实体被删 → 该id的最新版本 is_delete=1 合理。下游取数规约(给 DWD/数仓同事一个确定的规则):先按 id 取 latest按 fetched_at再过滤 is_delete=0或者反过来但要统一此举会带来一个问题Hash不能单纯计算Payload,还需要把综合判断后的is_delete判断进去。方案 5中长期治理冷数据归档例如保留最近 90/180 天的历史版本更早版本移到归档表或冷存储如果合规允许。目的不是省磁盘是减少索引膨胀、vacuum 压力、备份恢复时间。版本保留策略(按表分级)维度表:可能只需要少量版本(比如仅保留变更点)流水/事实:可能需要更长版本链可以按任务 spec 增加 retention_days / retain_versions 之类,但这是后话,先把现有的跑稳。--------------以上表达是否有问题?
```