数据开发
数据开发的数据源
- 数据系统,一定要保存好数据源。最好有一个在线文档,把系统内各个功能用到的数据源记录下来。
否则人员变更,数据源丢失就非常麻烦了。
OLAP
OLAP系统,(on-Line Analytic Processing)。在线分析处理 , 就是用于数据分析处理的系统。
离线数据
数据产生之后,不会立即进行清洗,而是在固定的时间进行处理,比如,在当天的凌晨统计昨天的数据。
常见的有 T-1,T-2。
定时任务
定时任务,在固定的时间周期执行任务。可以定时执行 java类代码,ETL,Hive,Shell等。
ClickHouse
ClickHouse是 OLAP系统常用的数据库。
优点:
-
列式存储,非常适合聚合计算。
比如统计多个地区在各个时点的数量总和,
按行存储的聚合计算,一般是设计hour、count等字段,统计时,查询条件为hour=9,对count求和。
而列式存储,可以设计sum9,sum10等字段,需要统计时直接取 sum9字段的总和即可。 -
支持千万级别的数据存储、查询。
-
写入速度非常快
-
数据压缩空间大,减少io传输,但数据的解压缩需要消耗cpu。
-
索引是类似跳表结构,并不是mysql的b树结构,不需要满足最左原则。
缺点:
- 不支持事务
- 不支持更新。需要更新时可以添加版本号或日期字段,读最新的数据。
- 不支持高并发,官方建议qps为100
- 占用较多的CPU资源。采用了并行处理机制,即使一个查询,也会用服务器一半的CPU去执行,所以不能支持高并发场景,默认单查询也会使用CPU核数为服务器核数的一半。
Hive
数据仓库。
优点:可以存储千万级别的数据。
支持分区,比如常见的一天一个分区,查询数据时,只查对应的分区即可。
缺点:不支持数据更新。查询较慢。
详情见: https://blog.csdn.net/weixin_43740680/article/details/94963139
ETL
ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。
比如,将数据从mysql转换成 es。
实际运用,比如,定时任务执行ETL,从其他部门的Hive表查数据,通过ETL抽取自己需要的字段,进行转换,最后插入到自己项目的表。
数据同步
- 全量同步、增量同步。
- 数据同步时的主键冲突处理:替换原有数据、保留原有数据
实时数据
常用技术:Flink、Kafka、Es
可以用 Flink 从 Kafka拉数据,再插入到 Es (或者 ClickHouse)。
数据系统对接
数据系统之间对接字段时,切记,不要盲目从中间系统接数据。
下游的系统,最好从生成字段的最上游系统去接数据,不要从中间系统去拿这些字段。
中间系统往往会对字段进行加工,如果下游系统出现问题要排查非常困难,难以弄清到底是上游系统出问题,还是中间系统出问题。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了