
1) 【一句话结论】:采用星型数据模型(事实表+维度表),数据采集采用Kafka(高吞吐、异步解耦),通过事务或CDC机制保证数据一致性,满足实时生产监控与预测需求。
2) 【原理/概念讲解】:星型模型是数据仓库的经典模型,事实表存储业务度量(如设备状态、生产进度),维度表存储上下文信息(设备、时间、生产线等)。类比:事实表像“订单表”记录交易,维度表像“客户表”“商品表”提供背景,方便查询。数据采集中,Kafka是分布式消息队列,支持高吞吐、持久化、多消费者,适合解耦数据源与数据仓库;Flume是流处理系统,用于日志聚合,但吞吐和扩展性不如Kafka。数据一致性保证需考虑事务(如数据库事务)或变更数据捕获(CDC),确保数据写入数据仓库的原子性。
3) 【对比与适用场景】:
| 特性 | Kafka | Flume |
|---|---|---|
| 定义 | 分布式消息队列,用于异步数据传输 | 数据收集系统,用于日志聚合与传输 |
| 特性 | 高吞吐、持久化、多消费者、容错 | 流处理、日志聚合、灵活通道 |
| 使用场景 | 实时数据流、解耦系统、消息传递 | 日志收集、数据聚合、流处理 |
| 注意点 | 需要管理消息保留时间、分区管理 | 适合日志类数据,对实时性要求高时可能瓶颈 |
4) 【示例】:事实表(ProductionSensorFact):设备ID(设备标识)、时间戳(时间)、设备状态(枚举:正常/故障)、生产进度(数值,如百分比)、生产线ID(关联生产线维度)。维度表:设备维度(设备ID、设备类型、位置)、时间维度(时间戳、星期、月份)、生产线维度(生产线ID、生产线名称)。数据采集:设备传感器数据通过Kafka生产者发送到主题(如sensor-data),消费者(如Spark Streaming或Flink)消费后,将数据写入数据仓库(如Hive表),使用事务确保数据一致性(如Hive的ACID事务或使用数据库的写操作事务)。
5) 【面试口播版答案】:面试官您好,针对实时数据仓库设计,我建议采用星型模型。事实表存储设备状态、生产进度等度量,维度表包含设备、时间、生产线等上下文信息,便于快速查询分析。数据采集选Kafka,因为它高吞吐、异步解耦,能处理大量传感器数据。通过Kafka生产者发送数据,消费者消费后写入数据仓库,用事务保证数据一致性。这样能实现实时监控和预测,比如通过进度数据预测生产周期。
6) 【追问清单】:
7) 【常见坑/雷区】: