
1) 【一句话结论】采用“关系型数据库(PostgreSQL)+NoSQL数据库(MongoDB)混合架构”,通过字段级国密SM4加密(密钥存硬件安全模块HSM并每3个月轮换)、RAID5+集群高可用(PostgreSQL流复制+MongoDB分片复制多副本)、增量+全量加密备份(离线磁带+物理安全)、分布式事务(两阶段提交)+乐观锁(版本控制)保证多源数据一致性,满足军工数据保密性、高可靠性、快速访问需求。
2) 【原理/概念讲解】老师口吻,解释核心需求:军工AI数据集存储需同时满足三重关键需求——数据保密性(涉及国家秘密,必须防止未授权访问)、高可靠性(数据不能因故障丢失,需冗余保障)、快速访问(AI训练需频繁读取数据,要求低延迟响应)。针对这些需求,设计混合数据库架构:
数据保密性设计:军工场景需避免表级加密(影响查询效率),采用字段级加密——对敏感字段(如数据所有者身份、密钥字段、标签值)使用国密SM4算法加密(密钥长度256位,符合军工国密标准)。加密过程在数据库内部完成,查询时自动解密,不影响业务查询性能;加密密钥存储在硬件安全模块(HSM),定期(每3个月)通过HSM自动轮换,确保密钥安全。
高可靠性设计:采用本地冗余+分布式冗余的高可用方案。本地存储用RAID5(数据+奇偶校验,单盘故障不影响数据),数据库集群用PostgreSQL的流复制(主从同步,主库故障时从库切换)+MongoDB的分片复制(数据分片到多节点,单节点故障不影响整体)。
备份与恢复策略:军工数据需平衡性能与恢复效率,采用增量备份+全量备份:每周执行一次全量备份(完整备份所有数据),每日执行增量备份(仅备份自上次备份以来新增或修改的数据),恢复时先恢复全量备份,再应用增量备份(既保证数据恢复的准确性,又避免全量备份对系统性能的影响);备份文件采用AES-256加密(与国密SM4加密互补),存储在离线加密磁带库(如LTO磁带库),磁带库位于安全机房,通过门禁、监控等物理措施防止备份介质泄露。
多源数据同步一致性:军工数据可能来自多个数据源(如不同实验室、不同设备上传的数据),需保证多源数据同步的一致性。采用分布式事务(两阶段提交)结合乐观锁(版本控制):分布式事务通过两阶段提交协议(准备阶段、提交阶段)确保多源操作要么全部成功,要么全部失败(避免部分成功导致数据不一致);乐观锁通过记录数据版本号,在并发更新时检查版本是否冲突(若冲突则回滚重试,避免数据不一致)。
3) 【对比与适用场景】
| 方案/组件 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 关系型数据库(PostgreSQL) | 基于关系模型,支持ACID事务 | 强一致性、事务完整性、结构化查询优化 | 结构化数据(标签、元数据) | 扩展性有限(垂直扩展为主),复杂查询性能可能下降 |
| NoSQL数据库(MongoDB) | 文档模型,灵活Schema | 高扩展性(水平分片)、低延迟、最终一致性 | 非结构化数据(图像、视频) | 一致性较弱(最终一致性),不适合强事务场景 |
| 字段级加密(国密SM4) | 敏感字段单独加密 | 查询时自动解密,不影响性能 | 保密性要求高的字段(身份、密钥) | 密钥管理复杂(需HSM) |
| RAID5+集群 | 本地冗余+分布式冗余 | 数据冗余,故障恢复快 | 高可靠性需求 | 成本较高,配置复杂 |
| 增量+全量备份 | 每周全量+每日增量 | 恢复效率高,数据覆盖全 | 数据恢复 | 备份介质需物理安全 |
| 分布式事务(两阶段提交) | 多源操作全局一致 | 确保操作全部成功 | 多源数据同步 | 事务开销大,不适合高并发小事务 |
4) 【示例】
-- 创建角色
CREATE ROLE admin LOGIN PASSWORD 'admin_pwd' SUPERUSER;
CREATE ROLE researcher LOGIN PASSWORD 'researcher_pwd';
CREATE ROLE visitor LOGIN PASSWORD 'visitor_pwd';
-- 分配权限
GRANT SELECT, INSERT, UPDATE, DELETE ON dataset_labels TO researcher;
GRANT ALL PRIVILEGES ON dataset_labels TO admin;
GRANT SELECT ON dataset_labels TO visitor;
# 每月1日执行密钥轮换
hsm_keygen --generate --algorithm SM4 --key-length 256 --output /etc/hsm/keys/new_key.bin
# 分发新密钥到数据库(通过HSM接口)
hsm_keyload --load /etc/hsm/keys/new_key.bin --database postgres
# 回滚旧密钥(禁用旧密钥)
hsm_keydisable --disable /etc/hsm/keys/old_key.bin
# 全量备份(每周)
pg_dump -U admin -F c -b -v dataset_db > dataset_full_backup_20240501.tar
# 加密全量备份
openssl enc -aes-256-cbc -salt -in dataset_full_backup_20240501.tar -out dataset_full_backup_20240501.tar.enc -pass pass:hsm_password
# 恢复(假设故障后)
mt -f /dev/st0 rewind
mt -f /dev/st0 read dataset_full_backup_20240501.tar.enc
openssl enc -d -aes-256-cbc -salt -in dataset_full_backup_20240501.tar.enc -out dataset_full_backup_20240501.tar -pass pass:hsm_password
pg_restore -U admin -d dataset_db dataset_full_backup_20240501.tar
5) 【面试口播版答案】
面试官您好,针对军工AI数据集存储需求,我设计的方案是混合架构,结合PostgreSQL(结构化数据)和MongoDB(非结构化数据)。首先,数据保密性方面,采用字段级国密SM4加密,敏感字段(如身份、密钥)加密,密钥存HSM并每3个月轮换;高可靠性用RAID5+集群(PostgreSQL流复制+MongoDB分片,多副本保障);备份策略是增量+全量,每周全量备份,每日增量,加密后存离线磁带(物理安全);多源数据同步用分布式事务(两阶段提交)+乐观锁,确保数据一致性。这样满足保密性、高可靠性和快速访问需求。
6) 【追问清单】
7) 【常见坑/雷区】