← [ BACK_TO_NOTES ]

Drizzle ORM

Drizzle ORM 是 TypeScript 优先、贴近 SQL 的数据库访问工具,使用代码声明 Schema、类型化查询与 Drizzle Kit 管理迁移,但不会替代关系建模、SQL 和连接管理。

#resource #growing #backend #database #typescript

[!info] related notes

  • 相关主题:
  • 相关 MOC:
  • 相关 howto:

Drizzle ORM

定位

Drizzle ORM 是 TypeScript 生态中的数据库访问工具。它强调:

TypeScript schema
+ SQL-like query builder
+ inferred types
+ migration tooling

它不像 Active Record 风格 ORM 那样把数据库隐藏成“对象世界”,而是尽量保留表、列、JOIN、约束和 SQL 的可见性。

核心组成

Drizzle ORM
├─ schema declarations
├─ typed query / SQL builder
├─ relations query API
├─ transaction API
└─ driver integration

Drizzle Kit
├─ generate migrations
├─ migrate
├─ push / introspect 等 schema 工具
└─ migration metadata

要区分:运行时查询库是 drizzle-orm,schema 演进工具主要由 Drizzle Kit 负责。

Schema 是什么

以 PostgreSQL 为例,代码可以声明表、列、约束和索引:

export const users = pgTable('users', {
  id: serial('id').primaryKey(),
  email: text('email').notNull().unique(),
})

这里 TypeScript 定义既服务于:

  • 查询时的类型推导
  • migration diff / generation
  • 代码中的表列引用

但真正的数据合法性最终仍依赖数据库中实际存在的 constraint。

Query 风格

Drizzle 支持两类常见表达:

SQL-like select / join / where
→ 明确表达关系查询

Relational Query API
→ 按已声明 relation 读取嵌套对象

两者最终都应根据生成 SQL、索引和查询计划评估,而不是因为 TypeScript 类型安全就默认高效。

Driver 不是 Drizzle 自己发明的数据库连接

Drizzle 可以接不同 PostgreSQL driver,例如 pg、postgres.js 或适配 serverless 环境的 driver。

因此:

Drizzle
→ query/schema abstraction

Driver
→ protocol / connection implementation

Connection pool / platform
→ runtime resource management

不要把这三层混成一个东西。

与 Prisma 的直觉差异

可以先用一个非常粗的学习模型:

Prisma
→ 更强的独立 schema / generated client 心智

Drizzle
→ TypeScript schema + 更贴近 SQL 的 API

两者都不是“有 ORM 就不用懂 SQL”。复杂查询、索引、事务、N+1、migration compatibility 仍然是数据库知识。

在 Next.js 中的位置

Server Component
Server Action
Route Handler
      ↓
server-only data / repository
      ↓
Drizzle
      ↓
PostgreSQL driver
      ↓
Database

Drizzle 不应该进入 Client Component bundle,也不应该成为绕过 owning backend 的理由。

Query Logging

开发阶段应保留观察实际 SQL 的能力:

ORM call
→ generated SQL
→ params
→ query count / duration

它用于发现:

  • N+1
  • 多余 query
  • JOIN 错误
  • 没有命中预期索引
  • ORM projection 过宽

ORM 的类型安全和数据库性能是两个独立维度。

最短记忆

Drizzle = typed SQL-oriented data access
Drizzle Kit = schema/migration tooling
Schema type safety ≠ database constraint disappears
ORM convenience ≠ SQL knowledge disappears
Drizzle ≠ connection pool
创建于 2026/9/16 更新于 2026/9/16
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本