
1) 【一句话结论】采用关系型数据库存储结构化数据(实验参数、模拟结果、代码版本),结合对象存储(如MinIO)管理非结构化数据(PDF、视频),通过元数据表关联结构化与非结构化数据,确保数据强一致性、可追溯性与高效检索。
2) 【原理/概念讲解】老师口吻,解释结构化数据(如实验参数、模拟结果)的特点:字段固定、关系明确,适合关系型数据库(如MySQL、PostgreSQL),因为其强事务支持、复杂查询能力(类比:整理好的文件夹,每个文件有固定标签,如实验ID、参数值,便于按标签检索)。非结构化数据(如PDF、视频)格式复杂、无固定结构,用文件系统或对象存储(如MinIO)存储,因其高扩展性、高可用性(类比:大型仓库,物品按类别分区存放,便于扩容)。元数据表作为桥梁,记录非结构化数据的路径、类型、关联实验ID,实现结构化与非结构化数据的关联。
3) 【对比与适用场景】
| 类别 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 实验数据表 | 存储实验基本信息(如ID、参数、时间、结果) | 主键唯一,字段包括实验ID、参数(结构化/JSON)、时间、结果(数值/文件路径) | 实验记录管理 | 参数复杂时需优化JSON查询 |
| 模拟结果表 | 存储数值模拟结果(如网格信息、计算结果) | 主键+模拟ID,字段包括网格分辨率、计算结果(JSON) | 模拟结果分析 | 结果量大时按时间/实验ID分表 |
| 代码版本表 | 记录代码提交信息(如版本号、提交时间、作者、路径) | 版本号+提交时间+作者+代码路径 | 代码追溯 | 路径需绝对路径,避免相对路径问题 |
| 非结构化数据存储 | 存储PDF、视频等文件 | 文件存储+元数据表 | 报告、视频管理 | 文件路径需安全,避免权限问题 |
| 本地文件系统 | 本地磁盘存储 | 读写速度快,成本低,适合小数据量 | 实验室内部小规模数据 | 扩展性差,高可用性低 |
| 对象存储(如MinIO) | 云对象存储服务 | 高扩展性、高可用性、按需付费 | 大规模非结构化数据 | 读写延迟略高,需网络传输 |
4) 【示例】
实验数据表(优化JSON参数存储):
CREATE TABLE experiment_data (
experiment_id INT PRIMARY KEY AUTO_INCREMENT,
experiment_name VARCHAR(100) NOT NULL,
wind_speed DECIMAL(5, 2), -- 常用参数拆为结构化字段
temperature DECIMAL(5, 2),
experiment_time DATETIME NOT NULL,
result_value DECIMAL(10, 2),
result_file_path VARCHAR(255), -- 非结构化数据文件路径
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
模拟结果表(按时间分区):
CREATE TABLE simulation_results (
simulation_id INT PRIMARY KEY AUTO_INCREMENT,
experiment_id INT,
grid_resolution VARCHAR(50),
calculation_results JSON,
partition_by experiment_time -- 按时间分区
);
代码版本表:
CREATE TABLE code_versions (
version_id INT PRIMARY KEY AUTO_INCREMENT,
version_number VARCHAR(20) NOT NULL,
commit_time DATETIME NOT NULL,
author VARCHAR(50),
code_path VARCHAR(255) NOT NULL,
commit_message TEXT
);
非结构化元数据表:
CREATE TABLE unstructured_metadata (
file_id INT PRIMARY KEY AUTO_INCREMENT,
file_name VARCHAR(255) NOT NULL,
file_path VARCHAR(255) NOT NULL,
file_type VARCHAR(20), -- pdf, video等
upload_time DATETIME NOT NULL,
associated_experiment_id INT,
FOREIGN KEY (associated_experiment_id) REFERENCES experiment_data(experiment_id)
);
5) 【面试口播版答案】
面试官您好,针对空气动力学研究数据的存储需求,我设计了一个混合方案:用关系型数据库(如PostgreSQL)管理结构化数据(实验参数、模拟结果、代码版本),用对象存储(如MinIO)管理非结构化数据(PDF、视频),并通过元数据表关联两者。具体来说,实验数据表包含实验ID、常用参数(拆为结构化字段,减少JSON解析开销)、结果(数值或文件路径),模拟结果表按时间分区存储计算结果,代码版本表记录提交信息。非结构化数据通过元数据表记录文件路径、类型、关联实验ID,方便检索。这样既保证结构化数据的强一致性、事务支持,又能高效管理非结构化数据,确保数据可追溯与可重复性。
6) 【追问清单】
7) 【常见坑/雷区】