生产上跑着七个库|我把它们收进一个之后,账目变了

简介: 从一次梳理出七个数据组件、六条同步链路的经历切入,先用跨模型混合过滤讲透"拆开之后"的召回与拼装代价,给出五笔代价清单、四个收敛判断维度、该收敛与仍该独立的两类场景边界,再拆解多模同库的资源争抢与三层隔离手段,最后用收敛前后对比表和分步迁移的回退路径收束。

大家好,我是数据库小学妹👋 我踩过的坑,你别再踩。

我接手过一个系统,第一件事是数它到底用了多少个数据组件。数出来七个。关系库存交易,缓存存热点,搜索引擎做全文检索。还有一个向量库做推荐召回,一个时序库存监控指标。以及文档库存操作日志,对象存储放文件。

每个组件单拎出来都选得有道理。搜索引擎的倒排索引确实比通用库快,列存的压缩率确实高。问题是这七个东西之间,靠六条同步链路连着。

有一次业务要查一批用户。条件有三个,最近 30 天买过某类商品,给过好评,画像跟种子用户相似。这条需求跨了三个库。关系库出订单,搜索引擎出评价,向量库出相似度。三份结果拉回应用层求交集,代码写了一百多行。上线后发现分页不对。相似度排序没法下推到另外两个库。

那次之后我认真想过一件事。这些数据之间到底需不需要互相看。如果需要,把它们拆在七个地方,是不是反而给自己加了活。

我做过设计,这件事在设计系统里早吵过一轮。每个页面各搞一套按钮,做的时候都挺顺手。后来的结果是,没人能统一改任何一个东西。数据库的技术栈,是同一个故事。
01-拆开与收敛.png

先把话说在前面

我不否定专用库,免得被理解成"专用库都该砍掉"。

单一场景下,专用库确实强。向量索引的召回效率,通用库短时间追不上。列存的压缩比和扫描速度,行存结构比不了。倒排索引做全文检索,也是通用库的弱项。

所以这不是"能不能用"的问题。专用库在它的主场依然是最优解。要讨论的是另一件事。你这个场景,是不是真的需要把数据搬到一个独立的地方去。

判断的起点只有一个。这些数据之间,需不需要互相看。

拆开之后要付的五笔账

为每一种数据模型挂一个独立库,看着是各用各的长处。实际会开出五笔账。

代价 具体表现
同步链路 每多一个库就多一条 ETL,延迟、乱序、失败重放都要自己兜
跨库关联 跨模型的关联做不了,只能在应用层拼装,拼装次数随维度上升
运维体系 每个库一套备份、监控、扩缩容、升级路径
技能栈 团队要维护 N 套知识,招人、交接、故障找人都是成本
故障面 组件一多,任意一个挂掉都可能断链路,故障组合数成倍上升

第一笔账最容易低估。同步链路不是配一次就完了。源库改了表结构,同步任务要跟着改。网络抖一下可能产生乱序,要自己做幂等。链路断了要重放,重放期间两边的数据是不一致的。

跨库关联这笔,我用前面那个用户查询说透。收敛之后,标量过滤和向量召回可以在一条 SQL 里一起做。

-- 收敛后:标量条件和向量相似度在同一条 SQL 里完成混合过滤
SELECT id, title, embedding <-> :query_vec AS dist
FROM article
WHERE category = 'tech' AND publish_ts > :since
ORDER BY dist
LIMIT 20;

拆开之后,同一件事要分两步。

-- 拆开时:向量库先召回 Top 500,再回关系库过滤标量条件
-- 向量库不认识 category 和 publish_ts,关系库不认识相似度
-- 两次查询加应用层求交集,过滤后可能凑不满 20 条,只能加大召回量重查

这就是常说的先召回后过滤问题。过滤条件越苛刻,那 500 条越不够用。只能把召回量往上抬。召回量一抬,延迟跟着涨。省事的做法是让过滤和召回落在同一个执行计划里完成。

02-先召回后过滤.png

什么该收敛,什么该独立

同一个决策,落到不同的数据上,答案不一样。我一般看四个维度。

判断维度 倾向收敛 倾向独立
要不要跨模型关联 经常一起查 从来不 join
一致性要求 要在事务内一致 能接受最终一致
延迟预算 紧,省一次往返有意义 松
团队规模 小,维护不起多套 大,有人分头管

按这四个维度过一遍,我遇到过的场景大致分两类。

该收敛的,是那些跟业务标量数据绑在一起用的模型。向量最典型,检索时几乎总要带业务过滤条件,前面那个例子就是。文档也是,订单里嵌一段 JSON。改状态和改明细要在一个事务里,拆出去就没法保证。时序如果要做设备指标、台账和位置信息的联合分析,也一样。KV 里那些会话和配置,生命周期跟主数据绑定,放同库能省一条同步。

仍该独立的,是两类。一类是极致规模的检索,几亿文档的倒排,专用引擎的分片和压缩压得过通用库。另一类是已经有成熟生态、确实没有关联需求的。团队跑得稳,数据也从来不跟别的东西 join,那就没必要动它。

这类能力在通用数据库里已经不算新鲜。现在不少国产库一个内核就能同时承载关系、文档、时序、向量和 KV,金仓是其中一家。所以真正要判断的,不是引擎有没有,而是你的数据之间要不要互相看。

同库多模的代价,别默认它没问题

收敛不是免费的。把多个模型塞进一个内核,会带来两样东西。

一样是资源争抢。多模同库共用一套缓冲池和 IO。一条分析型的大查询,能把缓冲池占满,把交易查询的命中率拉下来。交易那边的 P99 会跟着抖。这种抖在数据库层面看不出明显异常,得对比两个负载的曲线才发现。

另一样是执行引擎的差异。同一份数据,走交易路径和走分析路径,隔离级别和可见性语义要理清楚。数据在长事务里改了,只读路径什么时候能看到,这个口径要提前定。

隔离手段有三层,都要提前配。资源组把 CPU 和 IO 的配额分开。只读副本把分析流量引过去。连接池分层,交易和分析各走各的池,互相限流。等分析查询把交易打慢再回头加,代价高得多。

收敛前后,账目差在哪

对比维度 拆开(一事一库) 收敛(同库多模)
一次跨模型查询 多次查询加应用层拼装 一条 SQL
端到端延迟 多一次往返与拼装开销 少一次往返
同步链路 六条要维护 不需要
组件数 七个 三个
一致性 最终一致,受 ETL 延迟影响 事务内一致
运维体系 每库一套 一套
隔离要求 天然隔离 必须手工做资源隔离

最后一行是收敛的代价所在。拆开的时候,隔离是免费的,因为本来就分着。收进来之后,隔离要自己搭。

避坑清单

多模同库一定要提前做资源隔离。别等分析查询把交易打慢,才回头去加资源组和只读副本。隔离这件事,事前配置的成本和事后补的成本差好几倍。

别为了收敛把本来无关的数据硬塞进一个库。收敛的前提是数据之间有关系。两份从来不一起查的数据放一起,等于把两个问题合成了一个。

最后一条是我自己搞错的。我第一次做收敛,想着长痛不如短痛,挑了个周末把搜索和向量一起切了进去。周一早高峰就出事了。一条画像分析查询把缓冲池占满,交易那边的 P99 直接翻倍。回退的时候更麻烦,那两天两边都写过,得先把差异补齐才能切回去。后来我改成一次只迁一个模型。迁完观察一个完整的业务周期,隔离和性能都稳了,再动下一个。

写在最后

选型的第一步不是比功能,是先数一遍这些数据之间需不需要互相看。需要互相看,就不该拆开。确认真不需要,独立部署才成立。

收敛是一个方向,不是一个动作。它值不值得做,取决于你的数据之间的关系有多密。关系密的,收进来省事。关系松的,硬收只是给自己找麻烦。

所以我现在看技术栈,先画一张数据关系图,再决定哪个库该留、哪个该并。顺序反了,收完还得拆。

你手上的系统,跑着几个数据组件?评论区聊聊。

我是数据库小学妹,帮你少走弯路少踩坑,咱们下篇见👋

相关文章
|
9天前
|
人工智能 JSON API
全网刷屏的 Jev 模型正式开放!一手实战测评 + 保姆级教程
全网爆火的 Jev 模型是什么?有什么用?怎么使用?怎么接入 AI 编程工具?效果真的好么?傻子可懂的 Jev 保姆级实战教程 + 项目实战测评来啦
7686 13
|
7天前
|
人工智能 测试技术 API
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
Jev是TypeSafe AI推出的“系统一模型”,不生成文本,专做毫秒级结构化决策:Choice(多选)、Score(打分)、Noul(是非概率)。响应快193倍、成本低444倍,适合工单路由、内容审核、测试定级等高频判断场景。
1645 4
最近全网爆火的 Jev 到底是什么?适合干什么、怎么用,一篇讲透!
|
4天前
|
人工智能 JavaScript 芯片
DeepSeek 官方偷偷上传 Harness 桌面端安装包,我已经用上了。。附最新下载地址
DeepSeek Harness 官方的桌面端安装包被网友扒出来了,2 分钟讲明白如何使用,体验如何,适合作为 AI 编程工具么?附最新 Windows 和 Mac 双端的下载地址
1411 1
|
8天前
|
人工智能 并行计算 PyTorch
秋叶 ComfyUI 2026 整合包 v3.2 完整部署教程:Python 3.13 + Torch 2.13 全栈升级
秋叶aaaki ComfyUI 2026年8月整合包v3.2正式发布!全面升级Python 3.13.11、PyTorch 2.13.0+cu130及ComfyUI v0.30.2,原生支持MiniMax H3、Wan 2.2、Qwen-Image-2.1等2026主流音视频/图像模型,解压即用,无需环境配置。
1192 9
|
21天前
|
人工智能 自然语言处理 安全
阿里云千问办公 QwenWork详细介绍:产品核心能力、典型场景、价格及常见问题解答
千问办公是阿里云推出的一站式AI办公平台,主打"不止于对话,更注重交付",依托通义千问旗舰大模型,用户一句话即可完成数据分析、PPT生成、视频剪辑等复杂任务,直接输出可用成果。产品深度打通钉钉生态与企业OA,覆盖桌面端、网页端,提供企业标准版198元/人/月等多档订阅方案,新用户注册即赠2000积分,适配工程师、HR、财务等多职业办公场景,成为能动手干活的"全能AI同事"。
3671 10
|
5天前
|
编解码 缓存 PyTorch
16G 显卡能跑 Qwen-Image 2.1 吗?
9月20日,阿里Qwen开源Qwen-Image-2.1:7B DiT图像模型+8B文本编码器+VAE,单模型支持文生图与图像编辑,原生输出2K PNG(含Alpha通道),支持10张参考图。在自建Qwen-Image-Bench达60.28分(开源模型第一),GenAI Showdown文生图排名7/15。16G显存可跑1024×1024(需INT8量化+ComfyUI优化),但2K需24G以上。注意其Qwen Research License限非商业用途。
610 1
|
6天前
|
人工智能 编解码 并行计算
MiniMax-H3 一键整合包技术文档:8G 显存运行 AI 漫剧制作 —— 角色替换 / 动作迁移 / 文图生视频部署与调参指南
MiniMax H3 是 MiniMax 开源的全模态视频生成模型,支持文/图/音/视多条件输入,输出最高2K、15秒带双声道音频视频。本文档详述其Int8量化版在8GB显存下的本地一键部署、三段式工作流(EDIT/REPLACE/CONTINUE)、参数调优及常见问题排查。(239字)
|
16天前
|
缓存 IDE Java
【保姆级】Android Studio下载、安装和汉化教程(2026最新)
Android Studio 是 Google 官方推出的免费 Android 应用开发集成环境,基于 IntelliJ IDEA,内置模拟器、调试器、性能分析及 Compose 界面工具,功能全面,文档丰富,是安卓开发首选工具。(239字)
1725 1