Techsy
Liên hệ
Bắt đầu
Quay lại Blog
comparisons

Prisma vs Drizzle: Những thay đổi thực sự của Prisma 7

Viết bởi Mert Batur Gürbüz
Mar 22, 2026
26 phút đọc
Mục lục
Prisma vs Drizzle: Những thay đổi thực sự của Prisma 7

Cuộc tranh luận Prisma vs Drizzle đã thay đổi đáng kể khi Prisma 7 loại bỏ engine truy vấn Rust để chuyển sang pure TypeScript. Kích thước bundle giảm 90%, thời gian khởi động lạnh (cold starts) cải thiện khoảng 9 lần, và đột nhiên mọi so sánh trước năm 2026 đều trở nên lỗi thời. Vậy thì trận đấu prisma vs drizzle orm 2026 này vẫn nghiêng về Drizzle về mặt hiệu năng, hay Prisma đã thu hẹp khoảng cách?

Tóm tắt nhanh, Prisma vs Drizzle trong nháy mắt

Nếu bạn ít thời gian, đây là kết luận cốt lõi: chọn Drizzle khi bạn muốn một ORM TypeScript gọn nhẹ, native SQL, mang lại cảm giác như đang viết SQL với độ an toàn kiểu (type safety) đầy đủ. Chọn Prisma khi bạn muốn một hệ sinh thái trưởng thành, hỗ trợ nhiều loại cơ sở dữ liệu hơn và các công cụ migration mà bạn không cần phải suy nghĩ nhiều.

Tính năngPrisma (v7)DrizzleLợi thế
Triết lýƯu tiên Schema, trừu tượng hóaƯu tiên Code, native SQLHòa
Cách tiếp cận SchemaDSL riêng (file .prisma)TypeScript thuần túyDrizzle
Type SafetyTạo ra qua prisma generateSuy luận từ schema TSDrizzle (không cần build step)
Query APITrừu tượng (findMany, create)Giống SQL (select().from().where())Tùy sở thích
Cold Start (serverless)~80-150ms~50-100msDrizzle
Kích thước Bundle~1.6MB~57KBDrizzle
Phạm vi DB hỗ trợPostgreSQL, MySQL, SQLite, MongoDB, SQL Server, CockroachDBPostgreSQL, MySQL, SQLitePrisma
Công cụ MigrationPrisma Migrate (đã được kiểm chứng)Drizzle Kit (đang cải thiện nhanh)Prisma
Edge RuntimeĐược hỗ trợ (cần adapter)Native, không cần adapterDrizzle
Hệ sinh thái / Công cụPrisma Studio, Accelerate, PulseDrizzle Studio (mới hơn)Prisma
Giá cảOpen-core (trả phí cho Accelerate/Pulse)Hoàn toàn OSSDrizzle
Ổn định APIỔn định, sau phiên bản 1.0Trước phiên bản 1.0, đôi khi có breaking changesPrisma

Phần phân tích chi tiết sẽ trình bày ngay sau đây. Mỗi phần đều kết thúc bằng một nhận định để bạn có thể lướt nhanh đến những mục quan trọng đối với stack công nghệ của mình.

Những gì đã thay đổi trong Prisma 7 (Và tại sao nó quan trọng)

Hầu hết các so sánh Prisma vs Drizzle bạn tìm thấy trực tuyến đều mô tả một phiên bản Prisma không còn tồn tại. Nếu lần cuối bạn đánh giá Prisma vào năm 2024 hoặc đầu năm 2025, thì kiến trúc bên dưới đã thay đổi hoàn toàn.

Sự thay đổi kiến trúc: Loại bỏ Engine Rust, đưa TypeScript vào

Trước đây, Prisma đóng gói một engine truy vấn dựa trên Rust dưới dạng binary đi kèm với mã Node.js của bạn. Binary này rất mạnh mẽ nhưng kéo theo những gánh nặng nghiêm trọng: thêm ~14MB vào bundle của bạn, gây khó chịu cho cold starts trên môi trường serverless và không hỗ trợ native edge runtime. Như đội ngũ Prisma đã giải thích lý do, engine Rust tạo ra sự phức tạp khi triển khai, hạn chế đóng góp từ cộng đồng (ít lập trình viên Node.js viết Rust) và hoàn toàn chặn khả năng tương thích với edge.

Prisma 7 đã thay thế engine Rust đó bằng một triển khai pure TypeScript/WASM. Gói prisma vẫn sử dụng code generation và vẫn yêu cầu lệnh prisma generate, nhưng binary nặng nề kia đã biến mất.

Con số hiện tại trông như thế nào

Chỉ sốPrisma 5/6Prisma 7Drizzle
Kích thước Bundle~14MB~1.6MB~57KB
Cold Start (serverless)500ms-3s~80-150ms~50-100ms
Tốc độ truy vấnCơ sởNhanh hơn ~3.4 lầnNhanh nhất (abstraction mỏng)
Edge RuntimeKhông hỗ trợĐược hỗ trợ (Preview)Hỗ trợ Native

Khoảng cách hiệu năng đã hẹp hơn bao giờ hết, nhưng nó chưa biến mất. Bundle 57KB của Drizzle vẫn nhỏ hơn khoảng 28 lần so với 1.6MB của Prisma 7. Trên một hàm serverless Vercel với cold start, sự khác biệt đó chuyển thành độ trễ thực tế.

Prisma 7 thay đổi cuộc trò chuyện. Khoảng cách hiệu năng đã hẹp lại, nhưng Drizzle vẫn dẫn đầu về tốc độ thô và kích thước bundle. Nếu hiệu năng là lý do duy nhất khiến bạn tránh Prisma, thì đã đến lúc đánh giá lại. Nếu bạn đang triển khai lên các edge runtimes nơi mỗi kilobyte đều có giá trị, Drizzle vẫn là lựa chọn nhẹ nhàng hơn.

Định nghĩa Schema, Prisma Schema so với mã TypeScript

Cả hai ORM đều yêu cầu bạn định nghĩa schema cơ sở dữ liệu ở đâu đó. Cách tiếp cận của chúng khác biệt nhau hoàn toàn.

Ngôn ngữ Schema Prisma (PSL)

Prisma sử dụng DSL khai báo riêng của mình trong file schema.prisma:

prisma
model User {
  id        Int      @id @default(autoincrement())
  email     String   @unique
  name      String?
  posts     Post[]
  createdAt DateTime @default(now())
}

model Post {
  id        Int      @id @default(autoincrement())
  title     String
  content   String?
  published Boolean  @default(false)
  author    User     @relation(fields: [authorId], references: [id])
  authorId  Int
}

Nó sạch sẽ và dễ đọc, ngay cả người chưa từng chạm vào TypeScript cũng có thể hiểu schema này. Đánh đổi là: đây là một ngôn ngữ riêng biệt. Bạn chạy prisma generate để tạo ra các kiểu TypeScript, và nếu quên bước đó, các kiểu của bạn sẽ bị lỗi thời.

Schema TypeScript của Drizzle

Drizzle định nghĩa cùng schema đó bằng TypeScript thuần túy sử dụng pgTable():

typescript
import { pgTable, serial, text, boolean, integer, timestamp } from 'drizzle-orm/pg-core';
import { relations } from 'drizzle-orm';

export const users = pgTable('users', {
  id: serial('id').primaryKey(),
  email: text('email').unique().notNull(),
  name: text('name'),
  createdAt: timestamp('created_at').defaultNow().notNull(),
});

export const posts = pgTable('posts', {
  id: serial('id').primaryKey(),
  title: text('title').notNull(),
  content: text('content'),
  published: boolean('published').default(false).notNull(),
  authorId: integer('author_id').references(() => users.id).notNull(),
});

export const usersRelations = relations(users, ({ many }) => ({
  posts: many(posts),
}));

export const postsRelations = relations(posts, ({ one }) => ({
  author: one(users, { fields: [posts.authorId], references: [users.id] }),
}));

Không có code generation, không có build step. Schema của bạn là TypeScript, vì vậy bạn nhận được tính năng refactor IDE, import/export và cập nhật kiểu tức thì. Cú pháp quan hệ (các lệnh gọi relations()) là thứ mà một vài hướng dẫn đối thủ bỏ qua, nhưng nó rất cần thiết cho API truy vấn quan hệ của Drizzle.

Cách tiếp cận nào mở rộng tốt hơn?

Đối với các đội nhóm đã chuyên sâu với TypeScript, cách tiếp cận của Drizzle cảm thấy tự nhiên hơn. Bạn refactor tên bảng với tính năng rename symbol của IDE, chia nhỏ schema across các file với import tiêu chuẩn và không bao giờ phải thắc mắc liệu các kiểu được tạo ra có cập nhật hay không.

DSL của Prisma thân thiện hơn với người mới bắt đầu và các thành viên nhóm không dùng TS. Nếu nhóm của bạn bao gồm quản trị viên cơ sở dữ liệu hoặc nhà phát triển backend từ các ngôn ngữ khác, file .prisma đọc giống như một định nghĩa cơ sở dữ liệu hơn là mã ứng dụng.

Nhận định: Drizzle thắng cho các đội nhóm TypeScript. DSL của Prisma dễ đọc hơn cho người mới, nhưng cách tiếp cận pure-TS của Drizzle có nghĩa là không cần build step, hỗ trợ IDE đầy đủ và dễ dàng refactor hơn. Đối với các đội nhóm đã chuyên sâu với TypeScript, Drizzle là lựa chọn tự nhiên hơn.

Query API, Giống SQL so với Trừu tượng hóa

Đây là nơi trải nghiệm nhà phát triển hàng ngày phân kỳ nhiều nhất. Triết lý query builder của mỗi ORM định hình cách bạn suy nghĩ về việc truy cập dữ liệu.

Các thao tác CRUD cơ bản

Dưới đây là một truy vấn cơ bản để tìm tất cả các bài đăng đã xuất bản cùng với tác giả của chúng, trong cả hai ORM:

typescript
// Prisma -- abstracted, reads like English
const posts = await prisma.post.findMany({
  where: { published: true },
  include: { author: true },
  orderBy: { createdAt: 'desc' },
  take: 10,
});
typescript
// Drizzle -- SQL-like, mirrors the query you'd write by hand
const posts = await db
  .select()
  .from(postsTable)
  .leftJoin(usersTable, eq(postsTable.authorId, usersTable.id))
  .where(eq(postsTable.published, true))
  .orderBy(desc(postsTable.createdAt))
  .limit(10);

API của Prisma ẩn đi SQL. API của Drizzle phản chiếu nó. Không cái nào tốt hơn một cách khách quan, nó phụ thuộc vào việc bạn tư duy bằng SQL hay thích sự trừu tượng.

Quan hệ và Joins

Nơi mọi thứ trở nên thú vị là một truy vấn phức tạp hơn, ví dụ, tìm những người dùng có hơn 5 bài đăng đã xuất bản trong 30 ngày qua:

typescript
// Prisma -- uses nested filtering
const activeAuthors = await prisma.user.findMany({
  where: {
    posts: {
      some: {
        published: true,
        createdAt: { gte: thirtyDaysAgo },
      },
    },
  },
  include: {
    _count: { select: { posts: { where: { published: true } } } },
  },
});
// Then filter in JS: activeAuthors.filter(u => u._count.posts > 5)
typescript
// Drizzle -- single SQL query with aggregation
const activeAuthors = await db
  .select({
    id: usersTable.id,
    email: usersTable.email,
    postCount: count(postsTable.id),
  })
  .from(usersTable)
  .leftJoin(postsTable, and(
    eq(postsTable.authorId, usersTable.id),
    eq(postsTable.published, true),
    gte(postsTable.createdAt, thirtyDaysAgo),
  ))
  .groupBy(usersTable.id, usersTable.email)
  .having(gt(count(postsTable.id), 5));

Drizzle tạo ra một câu lệnh SQL duy nhất. Prisma thường chạy nhiều sub-queries ngầm bên dưới, điều này đưa chúng ta đến câu hỏi N+1.

Câu hỏi N+1

Vấn đề N+1 là một cạm bẫy kinh điển của ORM. Drizzle né tránh nó bằng cách tạo ra các JOIN rõ ràng, bạn viết join, bạn thấy join, bạn kiểm soát truy vấn. include và select của Prisma chạy các truy vấn riêng biệt cho mỗi quan hệ theo mặc định. Nó không phải lúc nào cũng là vấn đề (query planner của Prisma rất thông minh), nhưng đối với các phép tổng hợp phức tạp, cách tiếp cận native SQL của Drizzle mang lại cho bạn nhiều quyền kiểm soát hơn.

Nhận định: Phụ thuộc vào sự thoải mái với SQL của bạn. Prisma thắng cho các nhà phát triển thích sự trừu tượng và không muốn tư duy bằng SQL. Drizzle thắng cho các nhà phát triển muốn kiểm soát và đã tư duy bằng SQL. Nếu nhóm của bạn có kỹ năng SQL vững vàng, API của Drizzle sẽ cảm thấy như ở nhà.

Type Safety, Kiểu được tạo ra so với Kiểu được suy luận

Cả hai ORM đều hoàn toàn an toàn về kiểu (type-safe), nhưng cơ chế khác nhau, và sự đánh đổi tinh tế hơn nhiều so với những gì hầu hết các bài viết đề cập.

Prisma tạo ra các kiểu từ schema của bạn thông qua prisma generate. Các kiểu này nằm trong node_modules/.prisma/client và là các kiểu rõ ràng, cụ thể:

typescript
// Prisma -- generated types
import { User, Post } from '@prisma/client';

// Types are pre-built; autocomplete works immediately after prisma generate
const user: User = await prisma.user.findUniqueOrThrow({
  where: { id: 1 },
});
// user.email -- ✅ typed as string
// user.foo   -- ❌ compile error

Drizzle suy luận các kiểu trực tiếp từ schema TypeScript của bạn, không có bước tạo:

typescript
// Drizzle -- inferred types
import { InferSelectModel } from 'drizzle-orm';
import { users } from './schema';

type User = InferSelectModel<typeof users>;

// Or use $inferSelect directly on the table
type User = typeof users.$inferSelect;

const user: User = await db.select().from(users).where(eq(users.id, 1)).then(r => r[0]);
// user.email -- ✅ typed as string
// user.foo   -- ❌ compile error

Sự khác biệt thực tế: với Drizzle, thay đổi kiểu cột trong schema của bạn và các kiểu của bạn cập nhật tức thì. Với Prisma, bạn cần chạy prisma generate trước, một bước dễ bị quên.

Đây là sự tinh tế mà không ai nhắc đến: cách tiếp cận của Prisma thực sự kiểm tra kiểu nhanh hơn trong quá trình tsc. Các kiểu được tạo ra đơn giản hơn để trình biên dịch TypeScript xử lý. Việc suy luận kiểu sâu của Drizzle có thể làm chậm tsc trên các schema có hơn 50 bảng. Đối với hầu hết các dự án, điều này không quan trọng, nhưng đối với các schema rất lớn, đáng để biết.

Nhận định: Drizzle thắng về DX, Prisma thắng về sự đơn giản. Các kiểu không cần build step của Drizzle là một boost năng suất thực sự. Nhưng các kiểu được tạo ra của Prisma đơn giản hơn để lý giải và mở rộng tốt hơn cho các schema rất lớn.

Hiệu năng và Kích thước Bundle sau Prisma 7

Đây là phần mà các bài viết lỗi thời sai lầm nhiều nhất. Nếu bạn đang đọc dữ liệu benchmark từ trước cuối năm 2025, hãy vứt nó đi.

Benchmark Cold Start (Sau Prisma 7)

"Serverless Cold Start Time (ms)"

"Prisma 7 cut cold starts from ~1500ms to ~115ms, but Drizzle still leads at ~75ms -- a 13x improvement for Prisma versus the previous generation."
Bảng dữ liệu
"Serverless Cold Start Time (ms)"
"ORM Version""Cold Start"
"Prisma 5/6"1500
"Prisma 7"115
"Drizzle"75

Câu chuyện rất rõ ràng: Prisma 7 đã có một bước nhảy vọt khổng lồ. Cold starts chuyển từ "điểm chết trên serverless" thành "có thể cạnh tranh". Nhưng Drizzle vẫn nhỉnh hơn, đặc biệt khi bạn xếp chồng nhiều cold starts across các microservices hoặc edge functions.

Kích thước Bundle: Vẫn là một khoảng cách lớn

"Bundle Size Comparison (KB)"

"Prisma 7 reduced bundle size from 14MB to 1.6MB (90% reduction), but Drizzle remains 28x smaller at just 57KB."
Bảng dữ liệu
"Bundle Size Comparison (KB)"
"ORM Version""Bundle Size"
"Prisma 5/6"14000
"Prisma 7"1600
"Drizzle"57

Giảm 90% nghe có vẻ tuyệt vời, và đúng là như vậy. Nhưng 57KB của Drizzle so với 1.6MB của Prisma 7 vẫn là chênh lệch 28 lần. Trên một Cloudflare Worker với giới hạn 10MB, điều đó có ý nghĩa. Trên một máy chủ Express truyền thống với RAM 512MB+, nó không liên quan.

Các benchmark chính thức của Drizzle so với Prisma 7.1.0 cho thấy Drizzle đạt 4.6k yêu cầu/giây ở độ trễ p95 ~100ms trên tập dữ liệu PostgreSQL 370k bản ghi. Khoảng cách là có thật nhưng hẹp hơn so với kỷ nguyên trước v7.

Khi nào hiệu năng thực sự quan trọng?

Hãy trung thực với bản thân về nơi bạn đang triển khai:

  • Hàm serverless (Lambda, Vercel Functions): Cold starts quan trọng. Lợi thế của Drizzle là có thật nhưng Prisma 7 bây giờ là "ổn" cho hầu hết các trường hợp sử dụng.
  • Edge runtimes (Cloudflare Workers, Vercel Edge): Kích thước bundle là ràng buộc. Drizzle thắng rõ ràng.
  • Máy chủ truyền thống (Express, Fastify, chạy lâu dài): Cả cold starts lẫn kích thước bundle đều không quan trọng. Chọn dựa trên DX.
  • Quy trình CI/CD: Phụ thuộc nhỏ hơn = cài đặt và build nhanh hơn. Drizzle có lợi thế.

Nhận định: Drizzle vẫn thắng về hiệu năng thô, nhưng Prisma 7 đã làm cho nó trở nên gần gũi. Đối với serverless và edge, bundle ~57KB và cold start dưới 100ms của Drizzle rất khó để đánh bại. Đối với máy chủ truyền thống, sự khác biệt chỉ mang tính học thuật.

Serverless, Edge và Hỗ trợ Cơ sở dữ liệu

Bối cảnh triển khai thúc đẩy hầu hết các quyết định ORM trong thế giới thực. Đây là nơi mỗi bên tỏa sáng.

Hỗ trợ Serverless và Edge Runtime

Drizzle chạy native trên mọi edge runtime mà không cần adapter. Cloudflare Workers, Vercel Edge Functions, Deno Deploy, nó hoạt động ngay lập tức. Tích hợp Cloudflare Durable Objects là một ví dụ tốt về cách Drizzle coi edge là mục tiêu hạng nhất.

Prisma 7 đã cải thiện đáng kể. Triển khai Edge hiện đã được hỗ trợ cho Cloudflare Workers và Vercel Edge, nhưng nó vẫn được đánh dấu là Preview và yêu cầu driver adapters cho một số runtime. Nó hoạt động, nhưng bạn sẽ gặp phải nhiều cấu hình hơn so với Drizzle.

Connection pooling là một cân nhắc khác. Prisma cung cấp Accelerate, một proxy connection pooling và caching trả phí ($0.10 cho mỗi 1.000 yêu cầu sau gói miễn phí). Drizzle để connection pooling cho bạn, sử dụng native driver pooling (ví dụ: pool pg, driver serverless của Neon, driver HTTP của PlanetScale, xem so sánh Neon vs PlanetScale vs Turso của chúng tôi để chọn DB serverless). Nhiều quyền kiểm soát hơn, ít tiện lợi hơn.

Ma trận hỗ trợ Cơ sở dữ liệu

Cơ sở dữ liệuPrismaDrizzleGhi chú
PostgreSQLCóCóCả hai đều xuất sắc
MySQLCóCóCả hai đều vững chắc
SQLiteCóCóCả hai đều hỗ trợ
MongoDBCóKhôngChỉ Prisma
SQL ServerCóKhôngChỉ Prisma
CockroachDBCóKhôngChỉ Prisma
Neon (Serverless PG)CóCóDrizzle có driver native
PlanetScaleCóCóCả hai qua driver HTTP
Turso (LibSQL)CóCóDrizzle có driver native
Cloudflare D1KhôngCóChỉ Drizzle
SupabaseCóCóCả hai qua PostgreSQL

Tích hợp Next.js

Cả hai ORM đều hoạt động tốt với Next.js App Router (vẫn đang chọn framework? Xem phân tích Next.js vs React + Vite của chúng tôi). Drizzle có một chút lợi thế cho edge middleware và Route Handlers chạy trên Edge Runtime nhờ bundle nhỏ hơn và hỗ trợ edge native. Prisma hoạt động hoàn hảo cho các API route tiêu chuẩn và Server Components. Nếu toàn bộ ứng dụng Next.js của bạn chạy trên Node.js runtime (mặc định), thì không có sự khác biệt đáng kể.

Nhận định: Drizzle thắng cho serverless/edge; Prisma thắng về phạm vi cơ sở dữ liệu. Nếu bạn cần MongoDB, SQL Server hoặc CockroachDB, Prisma là lựa chọn duy nhất. Nếu bạn đang triển khai lên edge runtimes, Drizzle là cược an toàn hơn.

Quy trình Migration, Prisma Migrate so với Drizzle Kit

Công cụ schema migration là nơi lợi thế trưởng thành của Prisma thể hiện rõ nhất.

Prisma Migrate đã được kiểm chứng qua chiến đấu. Bạn thay đổi schema.prisma, chạy một lệnh và nhận được file migration SQL:

bash
# Prisma -- change schema, generate migration
npx prisma migrate dev --name add_user_avatar

# Creates: prisma/migrations/20260322_add_user_avatar/migration.sql
# Applies to dev database automatically

Drizzle Kit tuân theo quy trình tương tự nhưng yêu cầu file cấu hình riêng:

bash
# Drizzle -- generate migration from schema changes
npx drizzle-kit generate

# Creates: drizzle/0001_add_user_avatar.sql
# Apply separately:
npx drizzle-kit migrate

Cả hai đều tạo ra các file migration SQL mà bạn có thể xem xét và commit. Sự khác biệt nằm ở các trường hợp biên:

  • Phát hiện đổi tên: Prisma Migrate phát hiện đáng tin cậy việc đổi tên cột và bảng. Drizzle Kit đã cải thiện ở điểm này nhưng vẫn có thể hiểu nhầm một lần đổi tên thành drop + create, điều này gây phá hủy dữ liệu production.
  • Data migrations: Prisma cho phép bạn viết SQL tùy chỉnh trong luồng migration. Drizzle Kit hỗ trợ custom SQL migrations nhưng quy trình ít được tài liệu hóa hơn.
  • Rollbacks: Không bên nào cung cấp rollback tự động. Dù bằng cách nào, bạn cũng sẽ phải viết down-migrations thủ công.

Nếu bạn đang cân nhắc chuyển từ ORM này sang ORM khác, cả hai dự án đều duy trì các hướng dẫn migration chính thức: hướng dẫn migrate-from-Prisma của Drizzle và hướng dẫn migrate-from-Drizzle của Prisma sẽ hướng dẫn quy trình từng bước.

Nhận định: Prisma thắng về migrations. Prisma Migrate trưởng thành hơn, xử lý các trường hợp biên tốt hơn và có nhiều năm được kiểm chứng. Drizzle Kit đang bắt kịp nhưng vẫn còn những góc cạnh thô ráp với việc phát hiện đổi tên và data migrations.

Hệ sinh thái và Công cụ, Studio, Accelerate và Mô hình kinh doanh

Bản thân ORM chỉ là một mảnh ghép. Những gì xung quanh nó quan trọng đối với các cam kết dài hạn.

Prisma Studio so với Drizzle Studio

Prisma Studio là một trình duyệt cơ sở dữ liệu trực quan đi kèm với Prisma CLI. Chạy npx prisma studio và bạn nhận được giao diện web để duyệt, lọc và chỉnh sửa các hàng trực tiếp. Nó thực sự hữu ích cho việc gỡ lỗi và kiểm tra dữ liệu trong quá trình phát triển.

Drizzle Studio mới hơn và dựa trên trình duyệt. Nó hoạt động được và đang cải thiện nhanh chóng, nhưng chưa sánh kịp sự bóng bẩy của Prisma Studio. Đối với các đội nhóm dựa vào trình duyệt dữ liệu trực quan, Prisma có ưu thế mạnh hơn hiện nay.

Hệ sinh thái trả phí của Prisma (Accelerate và Pulse)

Mô hình kinh doanh của Prisma mở rộng ra ngoài ORM open-source:

  • Prisma Accelerate: Connection pooling và global edge caching. Có gói miễn phí, sau đó là $0.10 cho mỗi 1.000 yêu cầu. Hữu ích cho các triển khai serverless nơi bạn không thể duy trì các kết nối cơ sở dữ liệu liên tục.
  • Prisma Pulse: Đăng ký thay đổi cơ sở dữ liệu thời gian thực. Kiến trúc hướng sự kiện được xây dựng trên cơ sở dữ liệu PostgreSQL của bạn.

Đây là những sản phẩm thực sự hữu ích, nhưng chúng tạo ra mối lo ngại: lộ trình của Prisma bị thúc đẩy bao nhiêu bởi việc đẩy các nhà phát triển hướng tới các dịch vụ trả phí?

Câu hỏi về Mô hình kinh doanh Open-Source

Prisma được VC tài trợ và kiếm tiền thông qua Accelerate và Pulse. Core ORM là open-source và được cấp phép thoáng, nhưng các sản phẩm thương mại tạo ra lực hấp dẫn hướng về nền tảng của Prisma.

Drizzle hoàn toàn open-source và không có gói trả phí (chưa). Theo npm trends, Prisma giữ ~4.7 triệu lượt tải xuống hàng tuần so với ~3 triệu của Drizzle, nhưng Drizzle đang tăng trưởng nhanh hơn về mặt tương đối. Câu hỏi đối với Drizzle là tính bền vững: một dự án thuần OSS có thể duy trì tốc độ phát triển mà không có hậu thuẫn thương mại không?

Đối với CTO và nhà sáng lập startup, điều này quan trọng. Hệ sinh thái trả phí của Prisma đồng nghĩa với rủi ro vendor lock-in. Việc thiếu hậu thuẫn thương mại của Drizzle đồng nghĩa với rủi ro về tính bền vững. Hãy chọn liều thuốc của bạn.

Nhận định: Prisma thắng về độ trưởng thành của hệ sinh thái; Drizzle thắng về sự cởi mở. Hệ sinh thái công cụ của Prisma phong phú và bóng bẩy hơn. Các nhà phát triển coi trọng các stack hoàn toàn mở, không vendor lock-in sẽ thích cách tiếp cận của Drizzle.

Cách tiếp cận Hybrid, Prisma Migrations + Drizzle Queries

Đây là một chiến lược mà chỉ một vài bài viết đề cập và không bài nào thực sự minh họa: sử dụng Prisma cho quản lý schema và migrations nhưng Drizzle cho các truy vấn runtime.

Tại sao bạn lại làm điều này? Prisma Migrate trưởng thành hơn và xử lý việc phát hiện đổi tên và các thay đổi schema phức tạp tốt hơn. Nhưng API truy vấn của Drizzle gọn nhẹ hơn và nhanh hơn tại runtime, đặc biệt là trên edge. Bạn nhận được điều tốt nhất của cả hai.

typescript
// 1. Keep your schema.prisma for migrations
// Run: npx prisma migrate dev (as usual)

// 2. Define a parallel Drizzle schema for queries
// drizzle/schema.ts
import { pgTable, serial, text, boolean, integer } from 'drizzle-orm/pg-core';

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

// 3. Use Drizzle for all runtime queries
import { drizzle } from 'drizzle-orm/neon-http';
import { neon } from '@neondatabase/serverless';

const sql = neon(process.env.DATABASE_URL!);
const db = drizzle(sql, { schema: { users } });

// Fast, edge-compatible queries via Drizzle
const activeUsers = await db.select().from(users).where(isNotNull(users.name));

Lưu ý hiển nhiên: bạn duy trì hai định nghĩa schema. Mọi thay đổi bảng đều yêu cầu cập nhật cả schema.prisma và các file schema Drizzle của bạn. Chi phí này có thể quản lý được cho các đội nhóm đang di chuyển dần dần từ Prisma sang Drizzle, nhưng đối với các dự án mới hoàn toàn (greenfield), hãy chọn một cái và cam kết.

Nhận định: Ngách nhưng mạnh mẽ. Cách tiếp cận hybrid hoạt động tốt cho các đội nhóm đang di chuyển từ Prisma sang Drizzle một cách dần dần. Đối với các dự án greenfield, hãy chọn một cái và cam kết.

Trạng thái Pre-1.0 của Drizzle có phải là vấn đề không?

Không ai trong top kết quả tìm kiếm nói về điều này, nhưng đó là mối quan tâm thực sự mà các nhà phát triển nêu ra trên Reddit liên tục: Drizzle ORM vẫn đang ở trạng thái pre-1.0.

Điều đó có nghĩa là gì trong thực tế?

  • Breaking changes giữa các phiên bản. Drizzle đã tung ra các breaking changes trong các bản phát hành minor. Nếu bạn đang ở 0.33 và nâng cấp lên 0.34, bạn có thể cần cập nhật đường dẫn import hoặc thay đổi các lệnh gọi API. Đội ngũ Drizzle giao tiếp những thay đổi này tốt, nhưng nó vẫn là công việc thêm.
  • Hệ sinh thái nhỏ hơn. Ít hướng dẫn hơn, ít câu trả lời Stack Overflow hơn, ít plugin cộng đồng hơn. Khi bạn gặp phải một trường hợp biên, bạn có khả năng phải đọc source code hơn là tìm một bài blog về nó.
  • Tốc độ lặp lại nhanh hơn. Mặt trái của pre-1.0 là đội ngũ Drizzle tung ra các tính năng và bản sửa lỗi cực kỳ nhanh. Bản beta v1.0 đang nằm trong lộ trình và API đang ổn định.

Drizzle đã sẵn sàng cho production chưa? Có, nhiều công ty đang chạy nó trong production. Nó có ổn định cho production như Prisma không? Chưa hẳn. Bạn nên mong đợi theo dõi các bản phát hành chặt chẽ hơn và kiểm tra các bản nâng cấp trước khi triển khai.

Nhận định: Drizzle đã sẵn sàng cho production nhưng không ổn định cho production theo cách giống như Prisma. Nếu ổn định API quan trọng hơn hiệu năng, Prisma là lựa chọn an toàn hơn. Nếu bạn thoải mái theo dõi các cập nhật, DX của Drizzle xứng đáng.

Mẫu kiểm thử, Mocking mỗi ORM

Cách bạn kiểm thử lớp dữ liệu là một mối quan tâm thực tế mà không so sánh Prisma vs Drizzle nào khác đề cập. Đây là phiên bản nhanh.

Prisma yêu cầu mocking client hoặc sử dụng cơ sở dữ liệu kiểm thử. Cách tiếp cận phổ biến nhất sử dụng jest-mock-extended hoặc các tiện ích mock tích hợp sẵn của Prisma:

typescript
// Prisma -- mock the client
import { mockDeep } from 'jest-mock-extended';
import { PrismaClient } from '@prisma/client';

const prismaMock = mockDeep<PrismaClient>();

prismaMock.user.findMany.mockResolvedValue([
  { id: 1, email: '[email protected]', name: 'Test', createdAt: new Date() },
]);

// Use prismaMock in place of your real client
const users = await prismaMock.user.findMany();

Drizzle nhẹ hơn để mock vì các truy vấn chỉ là các lệnh gọi hàm. Bạn có thể hoán đổi driver cơ sở dữ liệu cho một instance SQLite trong bộ nhớ hoặc mock ở cấp độ hàm:

typescript
// Drizzle -- swap to a test database
import { drizzle } from 'drizzle-orm/better-sqlite3';
import Database from 'better-sqlite3';
import { users } from './schema';

const testDb = drizzle(new Database(':memory:'));
// Run migrations against in-memory DB, then test against it

// Or mock at the query level
const mockDb = {
  select: vi.fn().mockReturnValue({
    from: vi.fn().mockResolvedValue([{ id: 1, email: '[email protected]' }]),
  }),
};

Đối với kiểm thử tích hợp với cơ sở dữ liệu thực, prisma migrate deploy của Prisma giúp thiết lập cơ sở dữ liệu kiểm thử dễ dàng hơn một chút. Đối với kiểm thử đơn vị, API hàm của Drizzle đơn giản hơn để mock mà không cần thư viện bổ sung.

Nhận định: Drizzle dễ kiểm thử đơn vị hơn; Prisma có công cụ kiểm thử tích hợp tốt hơn.

ORM nào phù hợp với Stack của bạn? Khung ra quyết định

Lời khuyên chung chung như "sử dụng Drizzle cho serverless" không đủ hành động. Dưới đây là các khuyến nghị cụ thể cho từng stack:

StackLựa chọn tốt nhấtTại sao
Next.js + Vercel + NeonDrizzleNative edge, bundle nhỏ, driver serverless của Neon hoạt động hoàn hảo
Next.js + Vercel + SupabaseEitherCả hai đều hoạt động tốt; Drizzle nếu bạn dùng Edge Functions
Hono/Elysia + Cloudflare Workers + D1/TursoDrizzleCác stack edge-first cần hỗ trợ edge native của Drizzle
Express/Fastify + máy chủ truyền thống + PostgreSQLEitherKhoảng cách hiệu năng không đáng kể; chọn dựa trên sở thích DX
Node.js Doanh nghiệp + nhóm 10+ người + nhiều DBPrismaỔn định migration, hỗ trợ MongoDB, hệ sinh thái lớn hơn
Dev solo / MVP startupDrizzleLặp lại nhanh hơn, không cần build step, hoàn toàn miễn phí

Và một ma trận quyết định nhanh để quét:

Nếu bạn cần...ChọnVì
Hỗ trợ MongoDB hoặc SQL ServerPrismaDrizzle chỉ hỗ trợ SQL
Cold start dưới 100ms trên edgeDrizzleBundle 57KB, không cần adapter
Công cụ migration đã được kiểm chứngPrismaPrisma Migrate trưởng thành hơn
Không có bước tạo mãDrizzleCác kiểu được suy luận, không tạo ra
Trình duyệt cơ sở dữ liệu trực quanPrismaPrisma Studio bóng bẩy hơn
Kiểm soát SQL tối đaDrizzleAPI phản chiếu trực tiếp SQL
Hỗ trợ trả phí và công cụ doanh nghiệpPrismaAccelerate, Pulse, các gói trả phí
Hoàn toàn open-source không vendor lock-inDrizzleKhông có gói trả phí, không phụ thuộc thương mại

Cả hai đều là lựa chọn tuyệt vời. Lựa chọn sai sẽ không phá hỏng dự án của bạn, nhưng lựa chọn đúng sẽ tiết kiệm cho bạn sự ma sát trong tương lai. Đánh giá mục tiêu triển khai, yêu cầu cơ sở dữ liệu và mức độ thoải mái với SQL của nhóm, sau đó hãy cam kết.

Techsy tiếp cận việc lựa chọn ORM như thế nào

Chúng tôi đã giúp hàng chục đội nhóm TypeScript đưa ra quyết định Prisma-vs-Drizzle, và chúng tôi đã học được rằng lựa chọn hiếm khi chỉ dựa vào các benchmark. Đây là khung đánh giá chúng tôi sử dụng:

  1. Ánh xạ độ phức tạp của mô hình dữ liệu. Nếu bạn có 5-10 bảng với các quan hệ đơn giản, ORM nào cũng hoạt động. Nếu bạn có hơn 50 bảng, các join phức tạp và partial indexes, công cụ migration quan trọng hơn, và Prisma có lợi thế.
  2. Xác định mục tiêu triển khai. Serverless hoặc edge? Drizzle. Máy chủ truyền thống hoặc container? Either. Câu hỏi duy nhất này loại bỏ một nửa cuộc tranh luận.
  3. Đánh giá sự thoải mái với SQL của nhóm. Các nhóm có nền tảng SQL vững vàng sẽ tự nhiên bị thu hút bởi Drizzle. Các nhóm thích sự trừu tượng sẽ hạnh phúc hơn với Prisma.
  4. Lên kế hoạch dài hạn. Chuyển đổi ORM giữa chừng dự án tốn 2-4 tuần thời gian kỹ sư trên một codebase trung bình. Chúng tôi đã chứng kiến điều này xảy ra, và nó luôn đắt đỏ hơn dự kiến. Đưa ra quyết định đúng ngay từ đầu sẽ tự bù đắp chi phí.

Chúng tôi làm việc với Next.js, PostgreSQL, Supabase và các backend Node.js hàng ngày. Cả hai ORM đều xuất sắc, lựa chọn đúng phụ thuộc hoàn toàn vào bối cảnh của bạn.

Đang xây dựng một dự án TypeScript mới và không chắc ORM nào phù hợp? Nhận tư vấn kiến trúc miễn phí.

Câu hỏi thường gặp

Drizzle có tốt hơn Prisma không?

Không cái nào tốt hơn một cách phổ quát. Drizzle thắng về hiệu năng, kích thước bundle và API giống SQL. Prisma thắng về độ trưởng thành của hệ sinh thái, công cụ migration và phạm vi cơ sở dữ liệu. Prisma 7 đã thu hẹp đáng kể khoảng cách hiệu năng, vì vậy quyết định bây giờ dựa nhiều hơn vào sở thích DX và mục tiêu triển khai hơn là tốc độ thô.

Drizzle ORM đã sẵn sàng cho production chưa?

Có, nhiều công ty đang chạy Drizzle trong production thành công. Tuy nhiên, nó vẫn ở trạng thái pre-1.0, có nghĩa là bạn nên mong đợi các breaking changes thỉnh thoảng giữa các phiên bản minor. Hãy đánh giá khả năng chịu đựng của nhóm bạn đối với sự thay đổi API trước khi cam kết.

Cái nào tốt hơn cho Next.js, Prisma hay Drizzle?

Cả hai đều hoạt động tốt với Next.js. Drizzle có lợi thế cho Edge Functions và các triển khai serverless nhờ kích thước bundle nhỏ hơn và hỗ trợ edge runtime native. Prisma là lựa chọn tốt hơn nếu bạn cần MongoDB, coi trọng độ trưởng thành của công cụ migration hoặc thích API truy vấn trừu tượng.

Drizzle có hỗ trợ MongoDB không?

Không. Drizzle chỉ hỗ trợ SQL, bao gồm PostgreSQL, MySQL và SQLite. Nếu bạn cần MongoDB, các lựa chọn của bạn là Prisma hoặc Mongoose.

Prisma vẫn là ORM tốt nhất trong năm 2026 chứ?

Prisma vẫn là ORM TypeScript phổ biến nhất theo số lượt tải xuống và có hỗ trợ cơ sở dữ liệu rộng rãi nhất. Prisma 7 đã giải quyết nhiều mối lo ngại về hiệu năng. Liệu nó có "tốt nhất" hay không phụ thuộc vào ưu tiên của bạn, Drizzle là một lựa chọn thay thế mạnh mẽ cho các đội nhóm tập trung vào hiệu năng và edge-first.

Sự khác biệt giữa schema của Prisma và Drizzle là gì?

Prisma sử dụng DSL riêng của nó (file .prisma), một ngôn ngữ riêng biệt yêu cầu tạo mã qua prisma generate. Drizzle sử dụng TypeScript tiêu chuẩn với các hàm như pgTable(), có nghĩa là không cần build step và hỗ trợ IDE đầy đủ cho việc refactor.

Drizzle ORM có nhanh hơn Prisma không?

Có, Drizzle vẫn nhanh hơn trong cold starts (~50-100ms so với ~80-150ms) và có bundle nhỏ hơn nhiều (57KB so với 1.6MB). Nhưng Prisma 7 đã thu hẹp khoảng cách khoảng 70%. Đối với các triển khai máy chủ truyền thống nơi cold starts không quan trọng, sự khác biệt về hiệu năng là không đáng kể.

Nhược điểm của Drizzle ORM là gì?

Sự bất ổn định API pre-1.0, không hỗ trợ MongoDB hoặc SQL Server, hệ sinh thái nhỏ hơn với ít hướng dẫn và plugin hơn, công cụ migration kém trưởng thành hơn Prisma Migrate, và ít câu trả lời Stack Overflow hơn khi bạn gặp các trường hợp biên.

Prisma 7 có thu hẹp khoảng cách hiệu năng với Drizzle không?

Một phần. Cold starts cải thiện khoảng 9 lần và kích thước bundle giảm 90%. Drizzle vẫn dẫn đầu về các con số thô, nhưng khoảng cách bây giờ đủ nhỏ để hiệu năng đơn thuần không nên là yếu tố quyết định cho hầu hết các dự án. Thay vào đó, hãy tập trung vào DX, yêu cầu cơ sở dữ liệu và mục tiêu triển khai.

Làm thế nào để di chuyển từ Prisma sang Drizzle?

Tạo các file schema Drizzle khớp với schema Prisma hiện có của bạn, thiết lập kết nối cơ sở dữ liệu Drizzle bên cạnh Prisma, sau đó hoán đổi các lệnh gọi truy vấn dần dần, module by module. Giữ các migration Prisma chạy cho đến khi bạn di chuyển hoàn toàn. Lên kế hoạch cho 2-4 tuần nỗ lực cho một dự án cỡ trung bình. Hướng dẫn migration chính thức của Drizzle sẽ hướng dẫn quy trình.

Nhận định cuối cùng

Danh mụcNgười thắngLý do chính
Định nghĩa SchemaDrizzlePure TypeScript, không tạo mã
Query APIHòaPrisma cho sự trừu tượng, Drizzle cho kiểm soát SQL
Type SafetyDrizzleKhông cần build step, cập nhật kiểu tức thì
Cold StartsDrizzle~50-100ms so với ~80-150ms
Kích thước BundleDrizzle57KB so với 1.6MB
Hỗ trợ Cơ sở dữ liệuPrismaMongoDB, SQL Server, CockroachDB
MigrationsPrismaTrưởng thành hơn, phát hiện đổi tên tốt hơn
Edge RuntimeDrizzleHỗ trợ native, không cần adapter
Hệ sinh thái / Công cụPrismaStudio, Accelerate, Pulse
Ổn định APIPrismaSau phiên bản 1.0, các bản phát hành có thể dự đoán
Độ thuần khiết Open-SourceDrizzleHoàn toàn OSS, không có gói trả phí

Drizzle dẫn đầu ở 6 danh mục. Prisma dẫn đầu ở 4. Một hòa.

Nhưng số lượng danh mục không đưa ra quyết định, bối cảnh dự án của bạn mới làm điều đó. Nếu bạn đang xây dựng một ứng dụng Next.js edge-first trên Neon hoặc Turso, Drizzle là sự phù hợp tự nhiên. Nếu bạn đang chạy một dịch vụ Node.js doanh nghiệp với MongoDB và một nhóm lớn, độ trưởng thành và phạm vi của Prisma rất khó để đánh bại.

Thay đổi quan trọng nhất: Prisma 7 đã biến đây thành một lựa chọn thực sự một lần nữa. Trước Prisma 7, khoảng cách hiệu năng quá lớn khiến Drizzle trở thành lựa chọn hiển nhiên cho bất cứ thứ gì serverless. Điều đó không còn đúng nữa. Hãy đánh giá cả hai với con mắt mới, chọn cái phù hợp với stack và nhóm của bạn, và bắt đầu xây dựng.

Nguồn

  • Thông báo phát hành Prisma 7
  • Thay đổi kiến trúc Prisma: Từ Rust sang TypeScript
  • Benchmark hiệu năng Prisma (Sau khi loại bỏ Rust)
  • Tại sao Prisma kiểm tra kiểu nhanh hơn Drizzle
  • Benchmark chính thức của Drizzle ORM
  • Hướng dẫn Di chuyển từ Prisma của Drizzle

Thẻ

prisma vs drizzletypescript ormdrizzle ormprisma 7serverless ormedge runtimeschema migrationtype safety

Chia sẻ bài viết này

Bài viết liên quan

Thêm từ chuyên mục comparisons

comparisons
Jul 21, 2026

RPA so với AI so với Hybrid: Giải pháp tự động hóa nào chiến thắng cho quy trình doanh nghiệp năm 2026?

RPA tuân theo quy tắc, AI đưa ra phán đoán, và vào năm 2026, giải pháp tự động hóa quy trình kinh doanh thông minh nhất là sự kết hợp của cả hai. Hướng dẫn trung lập này cung cấp cho bạn khung ra quyết định 3 chiều, chi phí Năm 1 so với Năm 3, và dữ liệu xây dựng thực tế để lựa chọn RPA, AI hoặc hybrid.

11 min read phút đọc
Đọc
comparisons
Apr 20, 2026

Vercel Bị Hack (Tháng 4/2026): Quy Trình Khẩn Cấp 60 Phút Mà Mọi Developer Cần Thực Hiện Ngay

Vercel xác nhận vụ vi phạm vào ngày 19/4/2026 — các biến môi trường không được đánh dấu là 'nhạy cảm' đã bị lộ. Dưới đây là chính xác những gì cần làm trong 60 phút tới, kèm danh sách kiểm tra xoay vòng theo cấp độ và lệnh quét bí mật.

9 min read phút đọc
Đọc
comparisons
Apr 1, 2026

Langfuse so với LangSmith: Phán quyết độc lập

So sánh khách quan giữa Langfuse và LangSmith với mức giá thực tế ở ba quy mô, ví dụ mã song song và các kết luận rõ ràng theo từng hạng mục. Không thiên vị nhà cung cấp -- chúng tôi không bán công cụ quan sát.

16 min read phút đọc
Đọc
Xem tất cả bài viết
Khởi động dự án của bạn

Sẵn sàng tạo nên điều gì đó đột phá?

Hãy biến tầm nhìn của bạn thành hiện thực. Đội ngũ của chúng tôi sẵn sàng đồng hành cùng bạn tạo ra phần mềm tạo nên sự khác biệt.

Đặt lịch gọi ý tưởng 30 phútXem dự án của chúng tôi

Công cụ hot trong kho

Claude Skills

Xem tất cả
  • New Post

    Full SEO blog pipeline: research, brief, write, validate, image, translate, publish to Sanity. Autonomous from start to finish.

  • Content Refresh

    Audit a stale post, find decay drivers, and ship a SERP-aligned refresh without losing existing rankings.

  • SEO Audit

    Site-wide SEO audit with prioritized fix list: technical, on-page, and EEAT signals.

Tự động hoá AI

Xem tất cả
  • Security Auditor

    Weekly SCA + IaC scan with prioritized fix PRs.

  • Cold Email Writer

    Generates first-touch emails grounded in one specific public detail.

  • Lead Research Agent

    Enrich an email into a profile, score fit, alert in Slack.

Công cụ hot trong kho

Claude Skills

Xem tất cả
  • New Post

    Full SEO blog pipeline: research, brief, write, validate, image, translate, publish to Sanity. Autonomous from start to finish.

  • Content Refresh

    Audit a stale post, find decay drivers, and ship a SERP-aligned refresh without losing existing rankings.

  • SEO Audit

    Site-wide SEO audit with prioritized fix list: technical, on-page, and EEAT signals.

Tự động hoá AI

Xem tất cả
  • Security Auditor

    Weekly SCA + IaC scan with prioritized fix PRs.

  • Cold Email Writer

    Generates first-touch emails grounded in one specific public detail.

  • Lead Research Agent

    Enrich an email into a profile, score fit, alert in Slack.

Dịch vụ

  • Giải pháp doanh nghiệp
  • Ứng dụng di động
  • Ứng dụng web

Giải pháp

  • Hệ thống CRM
  • Tích hợp AI
  • Giải pháp ERP
  • Voice Agent
  • Tự động hóa quy trình
  • Bảo mật thông tin

Thư viện

  • Blog
  • Dự án

Cộng đồng

  • Tự động hoá AI
  • Claude Skills

Công cụ

  • Tính phí làm ứng dụng mobile
  • Tính phí dùng OpenAI / LLM API
  • Tính phí làm MVP
  • Tính phí làm Voice AI Agent

Công ty

  • Giới thiệu
  • Cộng sự
  • Liên hệ

Pháp lý

  • Chính sách quyền riêng tư
  • Điều khoản dịch vụ
  • Chính sách cookie

Dịch vụ

  • Giải pháp doanh nghiệp
  • Ứng dụng di động
  • Ứng dụng web

Giải pháp

  • Hệ thống CRM
  • Tích hợp AI
  • Giải pháp ERP
  • Voice Agent
  • Tự động hóa quy trình
  • Bảo mật thông tin

Thư viện

  • Blog
  • Dự án

Cộng đồng

  • Tự động hoá AI
  • Claude Skills

Công cụ

  • Tính phí làm ứng dụng mobile
  • Tính phí dùng OpenAI / LLM API
  • Tính phí làm MVP
  • Tính phí làm Voice AI Agent

Công ty

  • Giới thiệu
  • Cộng sự
  • Liên hệ
Pháp lýChính sách quyền riêng tưĐiều khoản dịch vụChính sách cookie
TECHSY
© 2026 Techsy. Bảo lưu mọi quyền.