库与 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,说明库名参数化没做到位。
生产库的写权限尽量只授予调度平台的执行账号,人工账号只保留读权限;需要修数时走平台重跑入口,这样每一次写操作都会留下执行记录。