D07 · 论文单题页
数据与数据库架构
分片 · 多模型 · 云原生数据库 · 向量——四道真题收敛成一个 PostgreSQL 18 数据平台
四道真题,一个主题
「数据」是 9 年里出现 7 次、且 2023 起连续 4 年必考的主题(docs/真题分析.md),
归到 D7 / D4。近四年的四道题分别从分片、多模型、云原生、向量四个侧面切入,本页把它们收敛成同一套数据架构语言。
请围绕"论多模型数据库及应用"论题,依次从以下三个方面进行论述。
1. 概要叙述你参与管理和开发的软件项目以及你在其中所承担的主要工作。
2. 详细论述多模型数据库支持的主要数据模型类型及其特点,说明多模型数据库相比传统单一模型数据库的优势。
3. 结合你具体参与的项目,说明是如何选型和应用多模型数据库的,遇到了哪些问题以及如何解决的。
请围绕"论基于云原生数据库的企业信息系统架构设计"论题,依次从以下三个方面进行论述:
1. 概要叙述你参与管理和开发的企业信息系统项目以及你在其中所担任的主要工作。
2. 详细论述云原生数据库的核心技术优势,以及架构设计中如何体现云原生数据库的技术特性。
3. 结合你具体参与的项目,说明基于云原生数据库的架构选型依据、落地过程中的关键难点及应对措施,以及最终架构的实施效果。
2. 简要概述向量数据库的特点和原理,以及向量数据库的优缺点。
3. 结合你的项目,阐述你如何在项目中使用向量数据库。
1. 概要叙述你参与管理和开发软件的项目以及承担的工作。
2. Hash分片、一致性Hash分片和按照数据范围分片是三种常用的数据分片方式,请简要叙述这三种分片方式的基本原理。
3. 具体阐述你参与管理和开发的项目,且采用了哪些分片方式,并且具体说明其实现过程和应用效果。
TL;DR
同一张表,三种查法,差五个数量级
数据类题目年年换说法,落到工程上其实是同一道题:一次查询要扫多少行。 下面把电子存证表的一次「查某会员最近记录」放进模拟器,用三个开关看扫描量怎么坍塌。
分区裁剪 + 联合索引 + 读写分离
数据总量可调;开关分别控制"按月 Range 分区""member_id 联合索引""只读备库"
模拟器怎么算的(模型与常量)
模型只有三行,且对应真实机制:
// ① 按月 Range 分区:查最近数据时优化器只打开目标分区(分区裁剪)
候选行数 = 分区开启 ? 全表行数 / 12 : 全表行数
// ② 联合索引:B-tree 下降 + 命中行,替代分区内全扫
扫描行数 = 索引开启 ? 命中行(60) + ceil(log2(候选行数)) : 候选行数
// ③ 只读备库:读请求路由到副本,主库只留写与强一致读
主库读 QPS = 备库开启 ? 800 × (1 − 0.8) : 800
常量说明:分区数 12(按月);命中行 60(一个会员 30 天内的存证条数,模型假设); 扫描耗时常量 12 ms/百万行(教学估算,见下方"数字纪律")。
这是教学模拟,不是实测。本主题没有实验场数据,页面所有数字要么是模型推算、 要么来自官方文档的机制说明;实测值一律不编。
不这么做会怎样
VACUUM、索引重建、备份恢复的窗口都被同一个大表拖长,
一次误操作的回滚代价成倍放大。
由此引出三个约束:查询延迟、维护窗口、故障恢复时间——它们全都跟单表规模耦合, 所以分区是数据架构的第一刀,索引是第二刀,读写分离是第三刀。
一个库,四种数据形态
| 数据形态 | 承载模块 | PostgreSQL 机制 | 取舍 |
|---|---|---|---|
| 关系数据 | 会员 / 报名 / 订单 | 标准关系表 + 事务 + 外键 | 牺牲分区灵活性换事务一致性 |
| 文档数据 | 电子存证元数据 / 表单配置 | JSONB + GIN 索引 | 只放结构不固定的附属信息,可过滤字段仍进关系列 |
| 向量数据 | 法律智能咨询 RAG | pgvector + HNSW 索引 | HNSW 换召回率,构建成本与内存换取检索速度 |
| 全文数据 | 信息发布检索 | tsvector + GIN 索引 | 不引入专用检索组件 |
规模与并发的三刀:电子存证表按月 Range 分区控制单表规模;
在分区上建 member_id 与时间戳的联合索引支撑高频查询;
社交系统信息流的读请求走流复制只读备库,主库只承担写入与强一致读。
所有慢查询先看 EXPLAIN ANALYZE 执行计划,确认是否命中分区裁剪与索引,再决定调参。
六段全文
摘要 300–330 字 · 正文合计 2000–2500 字(纯汉字口径)
摘要310 字
一、项目背景459 字 · 定稿
河南省法律咨询协会成立于2004年,现有理事119名、法学专家62名、律师团成员78名、讲师团成员69名,承担法制宣传、法律培训、法律咨询、调解仲裁等职能。协会原有官网仅能发布新闻,会员管理、法律咨询、电子存证依赖线下和微信群,数据分散、效率低下。协会服务对象中有大量基层群众和中小微企业,法律术语看不懂、流程搞不清、律师咨询门槛高,维权成本居高不下。
2025年3月,协会理事会决定建设数字平台,并给予充分资源支持。我作为协会唯一的全栈架构师,承担从需求分析、架构设计、编码实现到部署运维的全部技术职责。平台以"fazi协会数字平台"为中心,涵盖信息发布、社交系统、电子存证、培训报名、法律智能咨询五大模块。前端采用 Nuxt 4 SSR + Vue 3.5 + Tailwind 4,后端采用 Go 1.26 + Gin + pgx 手写 SQL,数据库 PostgreSQL 18,部署在云托管容器服务上。平台常用用户500人,未来半年潜在用户3000人,峰值QPS约800。
技术选型上,我基于"一人全栈、生产级标准"原则做了三个关键决策:一是采用云托管服务替代自建中间件,把运维精力留给业务;二是以 PostgreSQL 18 + pgvector 作为统一数据平台,同时承载关系数据、向量检索、JSONB 文档和全文检索;三是引入 Claude Code / Vibe Coding 辅助开发,提升一人开发效率。协会在法律知识库、律师资源、经费预算上给予全力支持,使我能够专注于架构决策和业务实现。
二、理论概述433 字
三、实践一:统一数据平台选型434 字
四、实践二:分区、索引与读写分离436 字
五、实践三:典型问题与解决402 字
六、总结展望262 字
每段写什么
| 段 | 作用 | 字数 | 要点 |
|---|---|---|---|
| 摘要 | 总述 | 310 | 模板套用,只换【论文主题】与效果句主题词 |
| 一、项目背景 | 回题干第 1 问 | 459 | 逐字抄定稿,交代规模、技术栈、三个关键决策 |
| 二、理论概述 | 回题干第 2 问 | 433 | 六类数据模型及特点 + 向量原理与优缺点 + 三种分片 + 云原生优势与架构体现 |
| 三、实践一 | 回题干第 3 问(选型) | 434 | 两条路线对比 → 统一数据平台 → 三类数据落地 → 取舍 |
| 四、实践二 | 回题干第 3 问(实现) | 436 | 分区 → 索引 → 读写分离 → 云原生效果,层层递进 |
| 五、实践三 | 回题干第 3 问(问题) | 402 | 四个真实问题 + 对应措施,收在方法论上 |
| 六、总结展望 | 收尾 | 262 | 定稿 + 换【主题相关展望】句 |
三问对应 + 加分扣分
主攻 · 2025 上 · 论多模型数据库及应用
第 1 问「概要叙述你参与管理和开发的软件项目以及你在其中所承担的主要工作。」→ 第一段(项目背景)。
第 2 问「详细论述多模型数据库支持的主要数据模型类型及其特点,说明多模型数据库相比传统单一模型数据库的优势。」→ 第二段(六类模型及特点 + 多模型省同步与一致性成本、代价是单点性能)。
第 3 问「结合你具体参与的项目,说明是如何选型和应用多模型数据库的,遇到了哪些问题以及如何解决的。」→ 第三段(选型与应用)、第五段(问题与解决)。
2025 下 · 论基于云原生数据库的企业信息系统架构
覆盖:第 1 问「概要叙述你参与管理和开发的企业信息系统项目以及你在其中所担任的主要工作。」→ 第一段;
第 2 问「详细论述云原生数据库的核心技术优势,以及架构设计中如何体现云原生数据库的技术特性。」→ 第二段(存储计算分离的优势 + 在云托管容器上计算节点与共享存储独立扩缩的架构体现);
第 3 问「结合你具体参与的项目,说明基于云原生数据库的架构选型依据、落地过程中的关键难点及应对措施,以及最终架构的实施效果。」→ 第三段(选型依据)、第五段(难点与应对)、第四段末(云原生架构效果)。
覆盖不到:容器编排与网格的调度细节——本平台只有云托管容器一层,写不出编排层。
2026 上 · 论向量数据库在项目中的应用
覆盖:第 1 问「概要叙述你参与管理和开发的软件项目以及你在其中所承担的主要工作。」→ 第一段;
第 2 问「简要概述向量数据库的特点和原理,以及向量数据库的优缺点。」→ 第二段(嵌入高维向量、余弦相似度、HNSW / IVFFlat 索引、维度与召回 / 时延 / 内存的权衡 + 优缺点);
第 3 问「结合你的项目,阐述你如何在项目中使用向量数据库。」→ 第三段(pgvector 落地)、第四段(HNSW 参数)、第五段(增量重建)。
覆盖不到:独立向量数据库产品的集群与运维特性——本平台是 pgvector 扩展,非专用组件。
2020 · 论数据分片技术及其应用
覆盖:第 1 问「概要叙述你参与管理和开发软件的项目以及承担的工作。」→ 第一段;
第 2 问「Hash分片、一致性Hash分片和按照数据范围分片是三种常用的数据分片方式,请简要叙述这三种分片方式的基本原理。」→ 第二段;
第 3 问「具体阐述你参与管理和开发的项目,且采用了哪些分片方式,并且具体说明其实现过程和应用效果。」→ 第四段(范围分片按月实现过程 + 扫描量效果)。
覆盖不到:本平台只用范围分片,第 3 问「采用了哪些分片方式」只能答一种;Hash 与一致性 Hash 仅停在第二段的原理层。
- 开篇给出量化背景:500 会员、3000 潜在用户、峰值 QPS 800——让阅卷人立刻知道你面对什么量级。
- 技术栈写全:Nuxt 4 SSR + Vue 3.5 + Tailwind 4 / Go 1.26 + Gin + pgx 手写 SQL / PostgreSQL 18 + pgvector。
- 分片讲原理时点出三者区别:Hash 均匀但 rehash、一致性 Hash 迁移最小、范围分片便于裁剪。
- 处理论题"多模型":一库承载关系 + JSONB + 向量 + 全文,正好回答"如何在一个引擎支持多模型"。
- 写清问题——原因——措施——效果四链,每个问题都配一个动作(软删除 + REINDEX、schema 边界、同库事务)。
- 性能与运维数字呼应摘要:可用性 99.95%、MTTR 45 分钟降至 8 分钟。
- 2025 下云原生题:第 2 问「架构中如何体现」落在第二段末(云托管容器 + 计算与共享存储独立扩缩),第 3 问实施效果落在第四段末。
- 2026 上向量题:第 2 问所需的特点、原理(嵌入 + 余弦相似度 + HNSW / IVFFlat)与优缺点已在第二段写全。
- 写"引入独立缓存组件""引入独立检索组件""引入消息队列削峰"——技术栈红线,一写就露馅。
- 把向量数据库写成独立组件选型,而非 pgvector 扩展——与本平台统一数据平台的叙事矛盾。
- 只罗列"用了分区、用了索引",不写分区键、不写索引列、不写执行计划——显得背的。
- 正文不足 2000 或超 2500 字;摘要不在 300–330 字——直接扣分。
带走这几句
- 数据架构三刀:分区控规模、索引控定位、读写分离控并发。
- 数据模型六类:关系、文档、键值、图、时序、向量;多模型库 = 一引擎收敛多模型,省同步与一致性成本,代价是单点性能。
- 三种分片:Hash(均匀但 rehash)、一致性 Hash(迁移最小)、范围分片(便于分区裁剪)。
- 我们以 PostgreSQL 18 + pgvector 为统一数据平台,一库承载关系、JSONB、向量、全文四种形态。
- 电子存证表按月 Range 分区,分区上建 member_id + 时间戳联合 B-tree 索引。
- 向量检索用 pgvector HNSW,靠 m 与 ef_construction 在召回率与构建成本间权衡。
- 社交信息流读多写少,流复制只读备库分走读流量,主库只留写与强一致读。
- 落地四问题:HNSW 增量重建、多模型边界、跨模型一致性、迁移与备份。
哪些是真值,哪些是固化取值
| 数据 | 来源 | 口径 |
|---|---|---|
| 可用性 99.95%、MTTR 45 分钟→8 分钟 | essay-common.md 定稿 | 固化取值 |
| Recall@20 0.92、P95 380 ms、缓存命中率 92% | essay-common.md 定稿(摘要已承诺) | 固化取值 |
| 500 常用会员 / 3000 潜在用户 / 峰值 QPS 800 | essay-common.md 定稿 | 固化取值 |
| 分区裁剪、B-tree 下降、流复制、HNSW 机制 | PostgreSQL 18 / pgvector 官方文档 | 机制说明,非实测 |
| HNSW 的 m / ef_construction | pgvector 官方参数名 | 官方默认,本平台未实测 |
| 模拟器里的扫描行数、估算耗时 | 本页教学模型推算 | 教学模拟,非实测 |
demoN-*/docs/experiments.md),
因此页面不出现任何"实测"技术指标。模拟器是机制演示;论文里的运营指标来自定稿的固化取值;
机制与参数来自官方文档。三者绝不混用。