数仓开发规范,Go进阶依赖管理 | 数仓开发规范,横向设计四个
分层规范
ODS: 贴源层,原始数据不做变化或者仅做最简单的补全后存入。 数据域划分,依据是数据源。
DWD: 对数据源做清洗、转换、补全、编码转换后加载到明细数据层。
DWS: 汇总数据层 + 主题宽表。 数据域划分,依据参考下边的纵向分域。
ADS: 应用层,面向最终应用。 主题域划分,依据是最终应用。生命周期也与应用同步。
Go
面向过程,有结构体
var s T
s.a = 1
s.b = 2
type people struct {
name string
age int
}
func main() {
ming := new(people)
ming.name = "xiao ming"
ming.age = 18 }
GOPATH 模式
GOPATH为环境变量 包含bin、pkg、src三部分
- src:项目源代码
- bin:项目编译的二进制文件 可执行程序
- pkg:项目编译的中间产物 加速编译 第三方依赖包
Go Vender
缺点:
- 放弃了依赖重用,比较冗余度
- 无法控制依赖的版本 更新项目可能出现依赖冲突 导致编译出错
依赖管理三要素
- 配置文件 描述依赖
go.mod - 中心仓库管理依赖库
Proxy - 本地工具
go get/mod
go mod命令
go mod download 下载依赖的module到本地cache(默认为$GOPATH/pkg/mod目录)
go mod edit 编辑go.mod文件
go mod graph 打印模块依赖图
go mod init 初始化当前文件夹, 创建go.mod文件
go mod tidy 增加缺少的module,删除无用的module
go mod vendor 将依赖复制到vendor下
go mod verify 校验依赖
go mod why 解释为什么需要依赖
一个应用程序可以包含不同的包
-
package [包名] 来指明这些文件都属于 * 包。
-
所有的包名都应该使用小写字母。
-
实例1:简单的语言应用算法题
-
实例2:http请求实现(自己是弄懂了原理,但是网页的开发者工具作为小白的我还真没用过,需要下来自己再找资料学一学)
-
实例3:socket5代理(类似于redis代理),代理、tcp这些基本原理都明白,但是整个实例的代码还需要明天接着消化