同振支持V1.0

后端技术规范

涉及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为扩展名
  • 一个文件里,如有多个脚本语句,以分号分隔
  • 使用${}引用外部变量,外部变量需要调用方传数据传入