数仓开发规范,Go进阶依赖管理 | 青训营笔记

78 阅读2分钟

数仓开发规范,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

image.png

缺点:

  • 放弃了依赖重用,比较冗余度
  • 无法控制依赖的版本 更新项目可能出现依赖冲突 导致编译出错

依赖管理三要素


  • 配置文件 描述依赖 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这些基本原理都明白,但是整个实例的代码还需要明天接着消化