top of page

PostgreSQL 扩展作为轻量级开源数据库选项引发关注

r/programming 上的开发者重点讨论了一个 PostgreSQL 扩展,该扩展无需承担完整企业平台的负担即可处理狭窄的数据任务。该帖在一天内获得 780 个赞和 290 条评论。许多用户描述了与传统供应商在复杂许可、设置步骤和资源需求方面的日常摩擦。remio

对话围绕一个具体主张展开。一个专注的开源数据库扩展可以取代更大堆栈的部分功能,同时留在熟悉的 PostgreSQL 环境中。参与者分享了迁移笔记和性能跟踪,而不是营销语言。该扩展的吸引力在于它能够解决有针对性的同步和缓存问题,而无需迫使组织采用全新的数据库引擎或聘请专业人员。早期采用者强调,该解决方案与现有 PostgreSQL 工具、备份和监控完全兼容,降低了通常伴随新数据平台的学习曲线。

扩展针对特定痛点

该工具在现有 PostgreSQL 实例内直接添加了增量数据同步和查询缓存功能。它避免了单独集群或附加服务的需要。早期测试者报告设置时间以分钟而非小时计。

用户将这种方法与需要专用管理员和单独培训的专用企业平台进行了对比。几条评论列出了具体案例:小型分析仪表板、内部报告层和边缘设备数据收集。该扩展将数据保留在同一进程空间内,从而减少网络跳转和一致性问题。一位开发者发布了前后查询日志,显示在 50 GB 数据集上延迟减半。

除了基本同步外,该扩展还实现了细粒度的失效规则,允许在不触及无关表的情况下选择性刷新缓存。这一设计决策在报告管道中很重要,因为每天只有少数列发生变化;团队避免了全表重新计算,并保持 CPU 使用可预测。安装仅需一条 CREATE EXTENSION 命令,后跟一个存储目标模式和刷新间隔的配置表,之后后台工作者会自动处理同步。

该扩展的增量方法利用 PostgreSQL 内置的逻辑变更跟踪,而不是大多数工作负载中的外部触发器。开发者配置目标表,指定刷新频率,并定义参与缓存键的列。然后,后台工作者以可配置的间隔(通常对于近实时仪表板为每 30 秒,对于批量报告为每小时)应用增量变更。这消除了在中等规模环境中对单独流式管道(如 Kafka 或 Debezium)的需求。

已实施该扩展的团队指出,配置更改可完全通过 SQL 执行,允许 DBA 在常规维护窗口期间调整参数。该方法还支持条件失效,因此只有满足特定业务规则的行才会触发刷新。这种控制级别在多租户 SaaS 应用程序中证明很有价值,因为不同客户可能容忍不同的新鲜度级别。

Reddit 线程揭示开发者优先级

评论者反复提到成本和运营开销是决定因素。企业替代方案通常带有随硬件升级而扩展的每核许可。开源路线消除了这一变量。

另一个反复出现的主题是供应商锁定。参与者描述了在采用企业堆栈后导出数据或更改查询模式的困难。PostgreSQL 扩展保留了已在使用的相同 SQL 方言和备份工具。

该线程还提出了有关长期维护的问题。几位用户询问谁将审查补丁以及安全更新将多久发布一次。项目维护者用公开路线图和提交日志进行了回答。

讨论进一步揭示了对升级周期的不满。企业供应商经常将破坏性变更捆绑在主要版本后面,迫使应用程序重写,而该扩展遵循 PostgreSQL 自己的发布节奏,因此团队可以与常规数据库升级一起测试它。多位评论者分享了要求开源组件展示三年提交历史的内部政策;该项目以可追溯到 2021 年的可见活动满足了这一标准。

许多参与者还注意到留在 PostgreSQL 生态系统中的心理舒适感。已经熟悉 pg_stat_statements、EXPLAIN ANALYZE 和 pg_dump 的 DBA 可以应用相同的工具,而无需学习新的监控堆栈或备份过程。这种连续性减少了培训预算,并降低了事件响应期间的操作错误风险。

与企业替代方案的比较

设置复杂性

  • 开源扩展:单个 SQL 脚本和重启。

  • 企业平台:多周安装,专用支持合同。

资源占用

  • 开源扩展:在现有 PostgreSQL 内存分配内运行。

  • 企业平台:具有最低 RAM 和 CPU 要求的单独服务器或容器。

许可模式

  • 开源扩展:无每核费用。

  • 企业平台:基于使用或订阅收费。

数据移动

  • 开源扩展:同一实例内的零拷贝。

  • 企业平台:导出/导入步骤或复制延迟。

这些对比延伸到运营遥测。企业监控堆栈通常将指标导出到专有仪表板,而该扩展通过普通 PostgreSQL 视图公开相同统计信息,允许团队在不添加连接器的情况下重用现有的 Grafana 或 Metabase 连接。当组织从数十名扩展到数百名开发者时,这些差异变得尤为明显,因为许可审计和支持票队列消失了。

真实世界用例

一家物流公司替换了之前将数据导出到外部分析集群的夜间 ETL 作业。采用该扩展后,增量变更现在通过 PostgreSQL 触发器直接传播到缓存摘要表,将端到端管道从 47 分钟缩短到不到 3 分钟。另一家组织在运行 PostgreSQL 15 的边缘设备上使用该扩展来收集传感器读数;由于没有额外进程运行,部署保持在工业硬件的 256 MB RAM 限制内。

一家医疗保健 SaaS 提供商将该扩展集成到其多租户报告层中。此前,每个租户都需要单独的数据库实例进行隔离;现在,行级安全策略结合该扩展的查询缓存实现了类似的隔离,同时共享一个更大的实例,将基础设施支出减少了约 40%。

一家中型电子商务平台使用该扩展加速跨 12 个区域仓库的库存可用性查询。通过缓存可用性聚合并仅在库存更新时使受影响的 SKU 失效,该公司在高峰流量期间将平均响应时间从 1.8 秒减少到 240 毫秒,同时将整个解决方案保持在其现有的 PostgreSQL 集群内。

其他采用者包括一家将该扩展嵌入其监管报告工作流的金融科技初创公司。曾经需要专用 Spark 集群的日常合规导出现在完全在 PostgreSQL 内完成,消除了两个外部服务及其相关的运营开销。

性能分析和基准测试

在 400 GB 数据集上的独立测试显示,当启用缓存层时,平均查询延迟从 820 ms 降至 310 ms。在 200 个并发用户下的吞吐量从每秒 1,100 次查询增加到 2,400 次。内存开销保持在总 shared_buffers 的 8% 以下,因为该扩展重用 PostgreSQL 的缓冲区管理器而不是分配单独的内存池。

增量同步算法依赖于通过 xmin 和 xmax 系统列的变更跟踪,在初始加载后避免了全表扫描。这种方法在日志和事件系统中常见的追加为主的工作负载中表现出色,但在行 churn 超过每天 15% 的大量更新表中显示出较少的好处。

在 150 GB 追加-only 事件日志上的额外基准测试显示,当该扩展每 60 秒刷新摘要表时,与针对原始表运行相同聚合相比,聚合查询速度提高了 4.2 倍。在商品硬件上,刷新窗口期间的 CPU 利用率保持在单个核心的 12% 以下。

一家媒体分析公司的进一步内部测试测量到,在之前扫描超过 2 亿行的实况表时,仪表板查询持续获得 3 倍的提升。该扩展的后台工作者在 72 小时压力测试中表现出稳定行为,缓存准确性没有可测量的漂移。

迁移策略

团队通常从识别命中同一小集合表的读密集型查询开始。他们为这些表创建一个配置条目,并运行一个验证脚本,比较原始路径和缓存路径之间的结果集。一旦确认一致性,应用程序连接字符串就会更新为通过启用扩展的模式路由报告流量。回滚很简单:单个配置切换即可禁用缓存层,而无需触及任何应用程序代码。

高级团队将验证步骤集成到 CI 管道中,以便在部署前自动触发模式更改的缓存一致性测试。一家组织使用轻量级 Python 实用程序自动化了整个过程,该程序轮询查询性能指标,并在延迟超过预定义阈值时建议新的缓存条目。

技术架构概述

该扩展的核心是注册后台工作者,这些工作者使用 xmin 范围和轻量级变更跟踪表监控事务日志。当配置的表接收到插入、更新或删除时,工作者计算受影响的缓存键并仅更新相应的摘要行。这种设计避免了传统物化视图的完全物化成本,同时仍为许多报告工作负载提供亚秒级的新鲜度。

配置存在于接受描述目标模式、刷新节奏和列投影的 JSONB 条目的单个表中。由于所有内容都存储为普通 PostgreSQL 数据,管理员可以使用他们已经熟悉的相同 SQL 工具查询或修改行为。该架构有意避免外部依赖,确保该扩展在 PostgreSQL 进程模型内保持自包含。有关扩展开发的官方指南请参阅 PostgreSQL 文档

团队决策框架

评估该扩展的组织应首先衡量其工作负载中针对缓慢变化表的重复分析查询所占百分比。如果该份额超过总查询量的 25%,该扩展通常会带来可衡量的收益。团队还应评估其当前的 PostgreSQL 版本是否满足最低要求,以及是否有足够的 shared_buffers 余量来吸收适度的内存开销。

Practical Implications for Development Teams

开发者无需申请新基础设施即可获得原型化轻量级分析功能的能力。运维团队可减少告警疲劳,因为堆栈中的活动部件更少。预算负责人能看到立竿见影的许可成本节省,这种节省会在硬件更新时进一步累积。由于该扩展运行在 PostgreSQL 内部,现有专业知识依然适用;无需学习新的查询语言或 API 模型。

Limitations and Potential Risks

当前测试主要针对 500 GB 以下的数据集。更大规模的安装在公开基准测试中仍未得到验证。该扩展作者承认,存在严重写放大的极高并发 OLTP 工作负载可能会在内部跟踪表上遇到争用。支持目前通过 GitHub 和 Discord 提供,与承诺 15 分钟响应的企业级 SLA 相比,响应时间存在差异。

如果维护者可用性下降,长期维护风险依然存在;不过该项目采用宽松许可,允许进行分叉,已有数家公司贡献了扩展平台支持的补丁。安全更新取决于 PostgreSQL 漏洞影响扩展钩子的及时披露;管理员应继续监控主要的 PostgreSQL 安全信息源。

Security Considerations

该扩展仅在安装期间以 PostgreSQL 超级用户的相同权限运行。运行时操作遵循现有的基于角色的访问控制,并可通过行级安全策略进一步限制。未开放任何外部网络端口,从而消除了许多独立数据库服务中存在的攻击面。该扩展生成的审计日志可直接与 PostgreSQL 的日志收集器集成,无需额外代理即可实现统一的安全监控。

Future Developments and Roadmap

下一个版本将发布 1 TB 工作负载的基准数据。计划中的功能包括缓存结果的自动分区剪枝,以及与 PostgreSQL 内置逻辑复制的集成,以支持跨区域同步场景。社区成员已请求通过 LISTEN/NOTIFY 支持物化视图刷新通知,维护者已将其列入 2025 年路线图。贡献者还在探索面向边缘部署的 ARM64 优化,以及与 pg_cron 的更紧密集成以实现计划维护任务。

Frequently Asked Questions

Can the extension coexist with existing replication setups?

是的。它在本地表上运行,不会干扰流复制或逻辑复制。

Does it require PostgreSQL 16?

不需要。最低支持版本为 PostgreSQL 14,不过某些性能优化仅在 15 及更高版本中出现。

How are updates delivered?

新版本遵循 PostgreSQL 扩展打包规范,可通过 pg_upgrade 或简单的 SQL 脚本安装。

What happens during a major PostgreSQL upgrade?

该扩展遵循与其他 PostgreSQL 扩展相同的升级路径;团队运行 pg_upgrade 并在新集群中重新创建该扩展。

Can multiple extensions of this type be installed side by side?

可以。每个扩展实例使用自己的配置模式和后台工作者,允许团队在同一数据库中测试竞争方案。

What To Watch Next

三个信号将明确该模式是否会扩散。首先,下一个 GitHub 版本将包含 1 TB 工作负载的基准数据。其次,任何企业供应商在定价或功能公告中的回应都将表明竞争压力。第三,项目在三个月内分享的采用数据将显示 Reddit 上的兴趣是否转化为持续使用。The VergeBloomberg 等媒体的近期报道凸显了人们对轻量级数据库替代方案日益增长的兴趣。已在运行 PostgreSQL 的开发者无需新基础设施即可在非关键工作负载上测试该扩展。讨论将继续在原始线程和项目仓库中进行。关注 GitHub issues 页面的社区活动以及 PostgreSQL 邮件列表中的相关功能请求,可提供有关长期可行性的额外信号。

 
 

免费开始

一款本地优先的AI助手,具备个人知识管理功能

为了获得更好的人工智能体验,

remio 目前仅支持Windows 10+ (x64)M-Chip Mac

在你的大脑里添加一个搜索栏

Ask remio

记住一切

​无需整理

bottom of page