首页/数据/数仓建模速查/库与 Schema 命名:环境隔离
分层与规范64 条

库与 Schema 命名:环境隔离

生产与测试库分开:corp_dw 与 corp_dw_test、corp_dw_dev;不同环境同名表便于脚本参数化切换,禁止开发直连生产库写入。

数仓建模速查数据更新于 2026-10-13

库与 Schema 命名:环境隔离

库(数据库或 Schema)的命名用于环境隔离:生产用 corp_dw,测试用 corp_dw_test,开发用 corp_dw_dev。同名表在不同环境保持相同结构,脚本通过变量注入库名,做到一套脚本跑三套环境。核心纪律只有一条:禁止开发直接连生产库写入。

基本信息

生产库corp_dw
测试库corp_dw_test
开发库corp_dw_dev
切换方式脚本用变量指定库名
纪律禁止开发直连生产写入

典型使用场景

  • 上线前在测试库跑全链路:结构同生产、数据不同,便于结果对比
  • 调度脚本参数化:库名由参数注入,同一份 SQL 在多环境复用
  • 权限隔离:开发账号只授 dev 读写,生产写入仅在调度平台执行
  • 权限回收:人员岗位变更时同步回收生产库权限
  • 命名评审:环境体现在库名上,业务线体现在表名前缀上

切换库

切换库
-- 调度里用变量指定库名,SQL 主体保持不变
USE corp_dw;                    -- 生产写 corp_dw,测试写 corp_dw_test
SELECT count(1) AS cnt
FROM dwd_trade_order_di
WHERE dt = '${bizdate}';
-- 禁止:开发账号直接对 corp_dw 执行 INSERT / UPDATE / DELETE
-- 需要临时验证时,在 dev 库建同名表跑同样的脚本

环境与命名

环境库名示例用途
生产corp_dw正式调度与对外报表
测试corp_dw_test上线前全链路验证
开发corp_dw_dev开发自测与调试
测试库要与生产保持完全一致的表结构(字段、分区、类型),只在小批量数据上有差异,这样对账脚本可以直接复用,验证结论才可信。
开发直连生产库写入的典型后果是误覆盖分区:生产数据被尚未完成的脚本改动,多数场景无法回滚,只能靠上游补数。
上线流程建议固定为「dev 自测、test 全链路验证、prod 切换」,三个环境用同一份脚本与参数模板;如果生产切换时还要改 SQL,说明库名参数化没做到位。
生产库的写权限尽量只授予调度平台的执行账号,人工账号只保留读权限;需要修数时走平台重跑入口,这样每一次写操作都会留下执行记录。

易错点

  • 开发直连生产库写入:误覆盖分区,破坏生产数据且难以回滚
  • 库名不体现环境:测试与生产数据混在一处,报表口径混乱
  • SQL 里硬编码库名:切环境要逐条改脚本,改动面大且容易漏
  • 测试库结构长期落后于生产:上线前验证通过,上线后因结构差异失败

数据来源与参考

  • DAMA-DMBOK 第2版
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌