Brandur Blog

RSS: https://brandur.org/articles.atom
Brandur 的技术博客,关于软件工程、基础设施与分布式系统。

还有人不用 PgBouncer 跑 Postgres 吗?

Brandur 盘点所有主流托管 Postgres 服务商的连接池支持情况,发现几乎 100% 都内置了 PgBouncer 或类似方案。他认为 Postgres 应该像 MySQL 和 MongoDB 一样原生内置连接池,而不是让每个服务商各自重复造轮子,这是运维改进中投入产出比最高的方向之一。
评论点赞收藏3 天前

River binaries will get 10 kB lighter

With v0.43, Go binaries linking River will get 10 kB lighter. This is good, except they never should’ve had the extra weight in the first place. River has a test-oriented package called testsignal tha...
评论点赞收藏10 天前

Atom #hdu5a72

Published fragment River binaries will get 10 kB lighter, on removing accidental test-only transitive dependencies that added about 10 kB to every Go binary built with River.
评论点赞收藏10 天前

pgtestdb 模板克隆:PostgreSQL 测试库极速搭建方案

pgtestdb 用 PostgreSQL 模板数据库克隆测试库,单次建库约 100ms,与 schema 迁移速度相当。实测 River 项目 466 个测试用例,pgtestdb 克隆方案总耗时 51s,schema 复用方案 14.5s,后者快约 3.5 倍。核心差异不在建库速度而在测试间复用——schema 池化复用可将单次 setup 压到 10-20ms。
评论点赞收藏14 天前

Atom #hdprxc2

River v0.41 now supports Turso, a ground-up rewrite of SQLite in Rust that aims for full SQLite compatibility.
评论点赞收藏16 天前

pgtestdb's template cloning approach to testing is fast

pgtestdb 用 PostgreSQL 模板数据库克隆测试库,单次建库约 100ms,与 schema 迁移速度相当。实测 River 项目 466 个测试用例,pgtestdb 克隆方案总耗时 51s,schema 复用方案 14.5s,后者快约 3.5 倍。核心差异不在建库速度而在测试间复用——schema 池化复用可将单次 setup 压到 10-20ms。
评论点赞收藏18 天前

Atom #hdotot2

Published fragment pgtestdb’s template cloning approach to testing is fast, on how Postgres template databases enable database-per-test isolation in around 100 ms, within spitting distance of River’s ...
评论点赞收藏18 天前

我过去手动添加链接

作者用 LLM 自动化博客维护,替代了手动添加链接、生成片段和更新 Now 页面的工作流。 Codex 能理解本地 TOML 文件结构和自定义 atom 格式,自然语言取代了 Rails generate 的复杂命令。 过去需要 cp 文件、写 alt text、查子命令,现在只需一句话指令。这是技术范式转移的时间胶囊记录。
评论点赞收藏18 天前

Atom #hdom6tc:LLM 接管博客手动编辑工作

LLM 正在取代博客作者大量手动编辑工作,驱动内容生产流程。Brandur Blog 通过 Atom 片段展示这一转变,反映自动化写作工具对创作者日常工作的深度介入。
评论点赞收藏18 天前

The paradox of free time

An odd effect I’ve noticed over the years is that when I have a whole day free to do something versus a tight two hours before I have to go somewhere and/or meet someone and/or tend to some other resp...
评论点赞收藏20 天前

PostgreSQL 事务原子性底层原理解析

深入解析 PostgreSQL 事务原子性的底层实现机制。文章从 MVCC 并发控制讲起,详细拆解了事务 ID(xid)、元组可见性(xmin/xmax)以及快照(snapshot)的数据结构和工作原理。进一步剖析了事务开始、提交时的源码逻辑,特别是预写日志(WAL)和提交日志(CLOG)如何协同工作以确保数据持久性和崩溃恢复。适合希望理解数据库内核原理、提升底层工程能力的开发者阅读。
评论点赞收藏35 天前

疯狂之路:为何大型软件项目的开发循环速度决定生死

文章通过对比Oracle数据库和PostgreSQL的开发体验,探讨了大型软件项目中“编辑-编译-运行”循环速度对生产力的决定性影响。作者指出,Oracle因历史包袱和缺乏类型系统,导致测试极慢,开发者不得不依赖复杂的云端并行化和选择性测试等“补丁”,反而陷入恶性循环。相比之下,PostgreSQL和Go语言通过快速编译、原生并行测试和缓存机制,保持了极高的开发效率。核心观点是:不要为了短期便利而牺牲长期开发体验,应从根本上解决测试慢的问题,而非打补丁。
评论点赞收藏55 天前

111 — 拖鞋兰

这是一篇与科技完全无关的自然观察随笔,主要描述在加拿大Wagner自然保护区拍摄拖鞋兰的经历以及被蚊子叮咬的痛苦。内容缺乏任何技术讨论价值,无法引起科技读者的兴趣。
评论点赞收藏57 天前

瓦格纳自然保护区的杓兰与蚊虫大战

作者分享了在加拿大瓦格纳自然保护区拍摄杓兰(Ladyslippers)的经历。虽然看到了数百株美丽的兰花,但遭遇了严重的蚊虫困扰,作者自述击杀了数百只蚊子,自己也被叮咬了数十口。这是一篇典型的个人生活随笔,记录了自然美景与糟糕体验的反差。
评论点赞收藏57 天前

第110篇:布克克里克山丘的徒步与毁掉的旧靴子

作者回忆在加拿大阿尔伯塔省 Bull Creek Hills 徒步的经历。虽然风景优美,但他在半路遭遇了25年旧登山鞋的灾难性损坏。这是一个关于户外装备耐用性与个人徒步体验的真实故事,能引起户外爱好者对装备选择的共鸣和讨论。
评论点赞收藏58 天前

徒步途中25年旧靴子彻底报废的个人随笔

作者Brandur在加拿大阿尔伯塔省徒步时,穿着使用了25年的旧登山靴遭遇了灾难性的损坏。这是一篇典型的个人生活随笔(Atom),主要记录了徒步经历和装备故障,缺乏技术深度或广泛的社会讨论价值,适合对个人经历感兴趣的少量读者。
评论点赞收藏58 天前

109 — 单体建筑

作者分享了对柏林 Marie-Elisabeth-Lüders-Haus 大楼的个人喜爱,称其为宏伟的单体建筑,具有典型的柏林风格。内容仅为简短的建筑外观与氛围描述,无技术深度或行业洞察。
评论点赞收藏59 天前

登录芦苇

登录后关注作者、收藏内容和参与讨论。