Drizzle ORM

Drizzle ORM 是一个有“头”的无头 TypeScript ORM。🐲

Drizzle 是你的好朋友,在必要时为你提供帮助,在你需要空间时也不会打扰你。

它看起来和用起来都很简单,在你的项目运行到第 1000 天时依然表现出色,
让你按照自己的方式行事,并在你需要时提供支持。

它是唯一一个同时拥有关系型类 SQL 查询 API 的 ORM,在访问关系型数据时为你提供两全其美的方案。Drizzle 轻量、高性能、类型安全、不含乳糖、无麸质、稳定、灵活,并且设计上即支持无服务器环境。Drizzle 不仅仅是一个库,更是一种体验。🤩

Drizzle bestofjs

无头 ORM?

首先,Drizzle 是一个库,也是一系列可选的补充工具的集合。

ORM 代表对象关系映射,开发者倾向于将类似 Django 或 Spring 的工具称为 ORM。我们坚信这是一种基于传统命名的误解,我们称它们为数据框架

警告

使用数据框架时,你必须围绕它们构建项目,而不是与它们协同构建项目。

Drizzle 让你按照自己喜欢的方式构建项目,而不会干扰你的项目或结构。

使用 Drizzle,你可以在 TypeScript 中定义和管理数据库 Schema,以类 SQL 或关系型方式访问数据,并利用可选工具将你的开发者体验提升到极致。🤯

为什么是类 SQL?

如果你了解 SQL,那么你就了解 Drizzle。

其他 ORM 和数据框架倾向于让你偏离/抽象化 SQL,这导致了双重学习曲线:既要了解 SQL,又要了解框架的 API。

Drizzle 则恰恰相反。我们拥抱 SQL,并以类 SQL 为核心构建 Drizzle,因此你可以几乎没有学习曲线,并能充分利用 SQL 的全部功能。

我们带来了所有熟悉的 SQL Schema查询自动迁移更多功能。✨

index.ts
schema.ts
migration.sql
// Access your data
await db
	.select()
	.from(countries)
	.leftJoin(cities, eq(cities.countryId, countries.id))
	.where(eq(countries.id, 10))

为什么不是类 SQL?

我们始终追求完美的平衡解决方案,虽然类 SQL 可以满足 100% 的需求,但在某些常见场景下,你可以以更好的方式查询数据。

我们为你构建了 查询 API,因此你可以以最便捷和高性能的方式从数据库中获取关系型嵌套数据,而无需考虑联接和数据映射。

Drizzle 总是精确输出 1 个 SQL 查询。 尽情将其用于无服务器数据库,无需担心性能或往返成本!

const result = await db.query.users.findMany({
	with: {
		posts: true
	},
});

无服务器?

最好的部分就是没有多余的部分。Drizzle 没有任何依赖项!

Drizzle is slim an Serverless ready

Drizzle ORM 是特定于方言的、轻量级、高性能的,并且设计上即支持无服务器环境

我们投入了大量时间,确保为你提供一流的 SQL 方言支持,包括 Postgres、MySQL 等。

Drizzle 通过行业标准数据库驱动程序原生运行。我们支持所有主要的 PostgreSQLMySQLSQLiteSingleStore 驱动程序,并且我们正在非常快速地添加新的驱动程序。

欢迎加入!

越来越多的公司在生产环境中采用 Drizzle,在开发体验和性能方面都获得了巨大的收益。

我们随时乐意提供帮助,请不要犹豫与我们联系。我们将很乐意协助您的 Drizzle 之旅!

我们拥有一个杰出的 Discord 社区,并欢迎所有开发者加入我们的 Twitter

现在,使用 Drizzle 和您的 PostgreSQLMySQLSQLite 数据库去构建一些很棒的东西吧。🚀

视频展示