Lobsters | 原文链接 | 2026-09-07 收录

超越 ORM:直接和数据库对话,告别 ActiveRecord 的笨重抽象

来源: noteflakes.com — 2026-09-05

概述

Ruby 开发者 Sharon(noteflakes)解释自己为何逐渐放弃 ActiveRecord、回归用原生 SQL 直接与数据库对话,并为此创建了轻量 SQLite 库 Extralite。他批评 ORM 的抽象是错的:它围绕「单个记录即实体」建模,却忽略了标签、事件日志、时间序列、乃至把关系库当 KV store 和任务队列的常见用法;ORM 层带来数万行代码的依赖、性能开销,还天然不支持窗口函数、CTE、RETURNING 子句。他展示一个删除+返回的 RETURNING 单查询如何取代 ActiveRecord 的 N+1 循环,并戳穿「DSL 万能」的陷阱——真实应用里每张表的查询种类通常不过十几种。

核心要点

金句

ActiveRecord provides the wrong abstraction for relational data.
返回 Lobsters 首页