#### 1.1 普通实时计算与实时数仓比较
普通的实时计算优先考虑时效性,所以从数据源采集经过实时计算直接得到结果。如此做时效性更好,但是弊端是由于计算过程中的中间结果没有沉淀下来,所以当面对大量实时需求的时候,计算的复用性较差,开发成本随着需求增加直线上升。
实时数仓基于一定的数据仓库理念,对数据处理流程进行规划、分层,目的是提高数据的复用性。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210304222410187.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JpZ2RhdGFfd2FuZ3poZQ==,size_16,color_FFFFFF,t_70)
#### 1.2 实时电商数仓,项目分为以下几层
- ODS
原始数据,日志和业务数据
- DWD
根据数据对象为单位进行分流,比如订单、页面访问等等
- DIM
维度数据
- DWM
对于部分数据对象进行进一步加工,比如独立访问、跳出行为,也可以和维度进行关联,形成宽表,依旧是明细数据。
- DWS
根据某个主题将多个事实数据轻度聚合,形成主题宽表。
- ADS
把Clickhouse中的数据根据可视化需要进行筛选聚合
#### 实时需求应用场景
- 实时大屏
- 实时报表
- 实时推荐
- 实时预警
#### 5.2.1 MySQL主从复制过程
- Master主库将改变记录,写到二进制日志(binary log)中
- Slave从库向mysql master发送dump协议,将master主库的binary log events拷贝到它的中继日志(relay log);
- Slave从库读取并重做中继日志中的事件,将改变的数据同步到自己的数据库。
业务数据库数据采集
##### - cannal
**工作原理:** canal是用java开发的基于数据库增量日志解析,提供增量数据订阅&消费的中间件。目前,canal主要支持了MySQL的binlog解析,解析完成后才利用canal client来处理获得的相关数据。
##### - maxwell
**工作原理:** 把自己伪装成slave,假装从master复制数据
##### - debezium
##### - flinkx
### Maxwell与Cannal工具对比
- Maxwell 没有 Canal那种server+client模式,只有一个server把数据发送到消息队列或redis。
- Maxwell 有一个亮点功能,就是Canal只能抓取最新数据,对已存在的历史数据没有办法处理。而Maxwell有一个bootstrap功能,可以直接引导出完整的历史数据用于初始化,非常好用。
- Maxwell不能直接支持HA,但是它支持断点还原,即错误解决后重启继续上次点儿读取数据。
- Maxwell只支持json格式,而Canal如果用Server+client模式的话,可以自定义格式
- Maxwell比Canal更加轻量级。
- 当原始数据是数字类型时,maxwell会尊重原始数据的类型不增加双引,变为字符串。canal一律转换为字符串。
- canal数据中会带入表结构。maxwell更简洁。
**没写完(待补充)**