后端技术规范
涉及Java、Extjs、Oracle、Radis等后台开发文档。
最后更新:2019年3月26日
文档由研发中心 CTO @金震 提供。
温馨提示: 请使用Chrome、Firefox、Safari、IE9及以上版本进行浏览。
1. 大数据规范v1.0
1.1 表命名规范
- Kudu表:以kudu结尾,如project_tablename_kudu
- Impala表:正常表名,不需要用结尾作为标记,如 project_tablename
- 临时表:表名加tmp+加类型,如 project_tablename_tmp_kudu
- Csv文件导入表:表名加csv,(注意csv表就是impala表),如 md_item_csv
- 默认用esc作为分隔符
- 数据导入,处理完成后,就没有价值
- Kudu表的导入,如果数据量特别大,需要用csv表先导入,然后用insert语句插入kudu表,这样速度比用原生的kudu client插入要快100倍
- Csv接口表需要包含以下esb特殊字段
- esb_seq_no bigint 自增长序列号
- esb_timestamp string 导入时间戳
- esb_md5_id string 行唯一值
1.2 表类型选择标准
- Impala:数据不需要修改,每次新增或者删除都是按照分区进行操作
- 默认应该使用parquet作为impala存储格式
- Kudu:数据量5000w以下,经常需要修改
1.3 表分区标准
- Impala:查询里用得到的字段,且每个分区数据量不小于100m,或者数据行数不少于10w行,太小的分区会导致性能下降
- Kudu:分区为主键的一部分,是查询里用得到的字段,一般最多80个分区,如果数据量小于10w,则2个分区即可
1.4 字段类型选择
- 日期时间建议使用 string
- 其他的类型如 BigInt,Double
1.5 表备份原则
- Imapla表:不需要备份
- Kudu表,按照时间定期备份为impala表,一般最多保留最近2个月的数据,备份表命名规范为,kudu表名+_his,如 md_item_base_kudu_his
1.6 ESB调用脚本规范
- 存放hdfs 的目录为 /script/projectname,以sql为扩展名
- 一个文件里,如有多个脚本语句,以分号分隔
- 使用${}引用外部变量,外部变量需要调用方传数据传入