51mee - AI智能招聘平台Logo
模拟面试题目大全招聘中心会员专区

设计船舶数字孪生系统的数据库,集成多源数据(设计参数、实时状态、历史数据),请说明数据模型设计、数据集成策略及数据仓库/数据湖架构。

中国船舶集团有限公司第七六〇研究所数据库与软件开发难度:困难

答案

1) 【一句话结论】:采用混合数据架构(数据湖+数据仓库),结合星型事实表(处理结构化分析数据)与文档型表(处理非结构化设计参数),通过ETL/ELT策略集成多源数据,实现实时状态与历史数据的分离存储与高效分析。

2) 【原理/概念讲解】:

  • 数据模型设计:
    • 星型模型:以事实表(如“船舶状态事实表”)为核心,围绕维度表(设计参数维度、时间维度、设备维度)构建,适合结构化数据的分析查询(类比:超市销售数据,事实表是销量,维度表是商品、时间、店铺,便于按维度分析)。
    • 文档型模型(JSON/NoSQL):用于存储设计参数等非结构化或半结构化数据(如船舶3D模型参数、设计文档),支持灵活的查询和扩展(类比:用户资料,用JSON存储,字段可动态添加)。
  • 数据集成策略:
    • ETL(Extract-Transform-Load):从源系统抽取数据,转换后加载到数据仓库(适合结构化数据,如实时状态数据从传感器通过ETL加载到数据仓库)。
    • ELT(Extract-Load-Transform):先加载原始数据到数据湖,再在数据湖中转换(适合大数据量,如历史数据,减少数据仓库的转换压力)。
  • 数据仓库与数据湖架构:
    • 数据湖:存储原始多源数据(设计参数、实时状态、历史数据),支持大数据量、非结构化数据,作为数据源(类比:水库,存储所有原始水,未处理)。
    • 数据仓库:从数据湖中抽取结构化数据,进行清洗、转换,按主题(如船舶状态、设计参数)组织,用于分析(类比:自来水厂,处理水库的水,生产干净的水供用户使用)。

3) 【对比与适用场景】:

架构类型定义特性使用场景注意点
数据湖存储原始多源数据(结构化/非结构化)原始、未处理,支持大数据历史数据、非结构化数据(如设计文档、传感器原始数据)需要后期处理,存储成本高
数据仓库按主题组织的结构化数据(清洗后)结构化、主题化,支持分析实时状态分析、历史趋势分析(如船舶运行状态、设计参数变更历史)需要ETL/ELT处理,查询效率高
星型模型事实表+维度表事实表存储度量值,维度表存储上下文结构化数据分析(如按设备、时间、参数分析状态)维度表过多可能影响性能
文档型模型JSON/NoSQL存储灵活,字段可动态扩展非结构化数据(如设计参数、3D模型参数)查询复杂,不适合复杂聚合

4) 【示例】:

  • 数据模型示例(伪代码):
    -- 事实表:船舶实时状态事实表
    CREATE TABLE ship_realtime_status (
        status_id BIGINT PRIMARY KEY,
        device_id VARCHAR(50),
        parameter_name VARCHAR(100),
        value DECIMAL(10,2),
        timestamp TIMESTAMP,
        source_id VARCHAR(50) -- 传感器ID
    );
    
    -- 维度表:设计参数维度表
    CREATE TABLE design_parameter_dim (
        param_id BIGINT PRIMARY KEY,
        param_name VARCHAR(100),
        value VARCHAR(200), -- 存储JSON或字符串
        description TEXT
    );
    
    -- 数据湖表(JSON存储设计参数)
    CREATE TABLE design_parameter_json (
        id BIGINT PRIMARY KEY,
        data JSONB -- 存储设计参数的JSON对象
    );
    
    -- 数据集成流程(ELT示例)
    -- 1. 从传感器(实时状态)抽取原始数据,加载到数据湖
    COPY ship_realtime_status_raw TO 's3://data-lake/raw/ship_status' FROM 'sensor_data';
    -- 2. 从数据湖加载到数据仓库(转换:清洗、关联维度表)
    INSERT INTO ship_realtime_status 
    SELECT 
        status_id,
        device_id,
        parameter_name,
        value,
        timestamp,
        source_id
    FROM ship_realtime_status_raw
    WHERE processed = FALSE
    UPDATE ship_realtime_status_raw SET processed = TRUE WHERE status_id = ship_realtime_status.status_id;
    

5) 【面试口播版答案】:
“面试官您好,针对船舶数字孪生系统的数据库设计,我建议采用混合架构:数据湖存储原始多源数据(设计参数、实时状态、历史数据),数据仓库按主题组织结构化数据用于分析。数据模型上,结合星型模型(事实表+维度表)处理结构化分析数据,文档型模型(JSON)存储非结构化设计参数。数据集成用ETL/ELT策略,实时状态从传感器用ELT加载到数据湖,再ETL到数据仓库;历史数据直接加载到数据湖。这样既能支持实时状态监控,又能通过数据仓库进行历史趋势分析,满足多源数据集成需求。”

6) 【追问清单】:

  • 问:为什么选择星型模型而非雪花模型?
    答:星型模型维度表少,查询效率高,适合分析型查询(如按设备、时间分析状态)。
  • 问:如何处理实时数据的高延迟?
    答:采用流处理(如Kafka+Flink),将实时数据快速加载到数据湖,再定期ETL到数据仓库,平衡实时性与存储成本。
  • 问:数据湖与数据仓库的边界如何划分?
    答:数据湖存储原始数据(如传感器原始数据、设计文档),数据仓库存储清洗后的结构化数据(如船舶状态事实表),确保分析数据的一致性和可用性。
  • 问:如何保证数据安全?
    答:对敏感数据(如设计参数)加密存储,访问控制(RBAC),审计日志记录操作。

7) 【常见坑/雷区】:

  • 只设计单一模型(如仅用星型模型,忽略非结构化设计参数的存储)。
  • 实时与历史数据混存(导致查询效率低,分析复杂)。
  • 数据集成策略错误(如仅用ETL处理大数据量历史数据,导致性能瓶颈)。
  • 架构未区分数据湖与仓库的用途(如数据湖存储分析数据,导致存储成本过高)。
  • 查询性能优化不足(如维度表过多导致星型模型查询慢)。
51mee.com致力于为招聘者提供最新、最全的招聘信息。AI智能解析岗位要求,聚合全网优质机会。
产品招聘中心面经会员专区简历解析Resume API
联系我们南京浅度求索科技有限公司admin@51mee.com
联系客服
51mee客服微信二维码 - 扫码添加客服获取帮助
© 2025 南京浅度求索科技有限公司. All rights reserved.
公安备案图标苏公网安备32010602012192号苏ICP备2025178433号-1