☰
数据库全局唯一存储方案
2026/10/14 4:50:04 网站建设 项目流程

问题本质

PipeStandardStore:是把三张原始表缓存、并且做关联组装后的业务聚合模型。
现状:每次用都 new + Rebuild();多处调用就要重复构建;数据库配置运行期基本不变,但现在生命周期完全由调用方控制,容易出现:重复加载、多处实例不一致、忘记Rebuild拿到空数据、多地方各自持有副本内存浪费。

前提:管线标准模板库,运行时绝大部分时间只读;只有切换标准库/修改sqlite模板文件时才需要重新加载。

下面给你几种可选方案,按适用场景对比,不写代码,只讲设计思路、优缺点、适用场景。

方案1:单例模式(全局唯一实例)

思路:PipeStandardStore做成单例,全局只有一份聚合数据。

  • 初始化时机:程序启动/插件Initialize阶段执行一次Load+Rebuild;
  • 各处业务直接拿单例实例,不用new;
  • 提供一个手动刷新入口,当切换标准库文件、修改sqlite模板时,手动调用刷新,重新读取三张表重建内存模型。

优点

  1. 全项目各处拿到同一份数据,不会出现A处刷新了B处还是旧数据;
  2. 只做一次全表读取组装,性能最好;
  3. 使用最简单,业务代码不用关心构建过程。

缺点&风险

  1. 全局状态;如果未来要同时打开多个不同标准库(多sqlite库并行),原生单例就直接废掉,只能存一套标准;
  2. 插件场景要注意生命周期:插件卸载时要清空缓存,防止内存泄漏;
  3. 单元测试不太友好,单例很难mock替换数据。
<

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询