
Drizzle ORM là gì?
Drizzle ORM là thư viện ORM (Object-Relational Mapping) kiểu headless cho TypeScript và JavaScript, tập trung vào hiệu năng cực cao và trọng lượng thấp. Khác với Prisma hay TypeORM — vốn tạo lớp trừu tượng nặng nề phía trên SQL — Drizzle giữ lại cú pháp SQL gần như nguyên bản, giúp developer hiểu rõ query thực thi dưới database. Bạn vẫn viết SQL, chỉ có điều được hỗ trợ type-safe hoàn toàn bởi TypeScript mà không cần reflection hay code generation tốn kém.
Drizzle ORM phù hợp nhất với ứng dụng serverless, edge function, và các dự án cần throughput lớn với overhead thấp. Nếu bạn đã từng bị Prisma chặn do reflection không hoạt động trên Vercel Edge Runtime, hoặc TypeORM chạy chậm trên dataset lớn, Drizzle chính là giải pháp thay thế đáng cân nhắc.

Tính năng cốt lõi
Drizzle xây dựng theo triết lý “nhẹ tay, tùy chọn”. Thư viện cốt lõi chỉ chứa query builder và type definitions; mọi công cụ phụ trợ đều là package riêng, bạn chỉ cài cái cần dùng.
- Headless architecture: Không generate client nặng, không cần build step đặc biệt. Query trực tiếp xuống driver database.
- SQL-like API: Cú pháp `db.select().from(users).where(eq(users.age, 28))` gần như đọc như SQL raw, giảm đường cong học.
- Relational Queries (RQB): API truy vấn lồng nhau giữa các bảng — ví dụ lấy user kèm posts — giúp tránh N+1 query mà không cần `join` thủ công phức tạp.
- Drizzle Kit: CLI quản lý migrations với lệnh `generate`, `migrate`, `push`, `pull`, `check`. Hỗ trợ đọc và ghi schema trực tiếp từ database.
- Drizzle Studio: Giao diện web quản lý database, xem table, chạy query, browse relations — tương tự Prisma Studio nhưng nhẹ hơn.
- Hỗ trợ validator: Tích hợp sẵn Zod, Valibot, Typebox, Arktype, Effect Schema để validate data trước khi insert/update.

So sánh với Prisma và TypeORM
Ba ORM phổ biến nhất trong ecosystem TypeScript hiện nay có triết lý khác biệt rõ rệt. Drizzle chọn con đường headless và SQL-native, trong khi Prisma chọn abstraction hoàn toàn, còn TypeORM theo truyền thống Active Record/Data Mapper với decorator.
| Tiêu chí | Drizzle ORM | Prisma | TypeORM |
|---|---|---|---|
| Schema | TypeScript-first | Prisma Schema Language | Decorator / Entity |
| Runtime overhead | Rất thấp (thin layer) | Cao (client generation + reflection) | Trung bình (metadata) |
| Type-safety | Hoàn toàn compile-time | Hoàn toàn (một số trường hợp) | Partial |
| Serverless-friendly | Có | Hạn chế (cần generate client) | Có nhưng chậm |
| Edge Runtime | Hỗ trợ | Không hỗ trợ | Hạn chế |
Prisma tạo client tĩnh từ schema — quá trình này tốn thời gian và tạo file nặng. TypeORM dùng decorator và reflection metadata, hoạt động tốt trên Node.js truyền thống nhưng gặp khó trên runtime không có metadata như Bun hay Edge. Drizzle bỏ qua tất cả cơ chế đó, query trực tiếp qua driver, nên nhẹ và nhanh hơn đáng kể.
Hiệu năng thực tế
Trang benchmark chính thức của Drizzle ghi nhận khoảng 4.600 req/s với p95 latency ~100ms trên cấu hình Lenovo M720q, Intel Core i3-9100T, 32GB RAM, PostgreSQL chứa 370.000 bản gĩ thương mại điện tử (~42MB). Công cụ đo dùng k6 load tester qua 1GB ethernet, 1 triệu prepared requests. So với Prisma, Drizzle nhanh hơn hàng trăm lần trên SQLite và vượt trội trên PostgreSQL nhờ không cần reflection hay client generation.
Điểm đáng chú ý: Drizzle dùng mitata — công cụ đo benchmark synthetic mới — để đảm bảo kết quả không bị ảnh hưởng bởi garbage collector hay JIT warm-up. Tất cả benchmark chạy trong container để cô lập môi trường.
Cài đặt và sử dụng cơ bản

Bắt đầu với Drizzle chỉ cần hai package: ORM core và Drizzle Kit CLI. Hỗ trợ npm, yarn, pnpm, và Bun.
npm install drizzle-orm
npm install -D drizzle-kit
Sau đó tạo file drizzle.config.ts để Drizzle Kit biết schema nằm đâu, dùng dialect nào, và connection string là gì. Schema được định nghĩa bằng TypeScript — bạn viết pgTable, mysqlTable, hay sqliteTable tùy database, mỗi cột có type rõ ràng.
Khi cần query phức tạp với nhiều bảng, Drizzle Relational Queries API cho phép viết db.query.users.findMany({ with: { posts: true } }) — framework tự join và tránh N+1. Khác Prisma, bạn không cần khai báo @@relation phức tạp; chỉ cần define relations object rồi truy vấn.
Khi nào nên chọn Drizzle ORM?
Drizzle là lựa chọn đúng khi bạn cần hiệu năng cao, hoạt động trên serverless/edge runtime, hoặc làm việc với dataset lớn mà không muốn chịu overhead của Prisma. Framework cũng phù hợp với team quen SQL — bạn không cần học ngôn ngữ schema mới, chỉ cần viết TypeScript có type hint.
Nếu dự án đơn giản dưới 100 concurrent users, FastAPI + SQLAlchemy hay Express + Prisma vẫn đủ. Drizzle phát huy ưu thế khi scale lên, khi cần structured output, hoặc khi deploy lên môi trường không hỗ trợ reflection. Hiện tại Drizzle đang trong giai đoạn release candidate cho v1.0, progress 98%, nên API đã rất ổn định cho production.
Tìm hiểu thêm tại trang chủ Drizzle ORM hoặc GitHub repository.
