Drizzle ORM
Drizzle ORM is a headless TypeScript ORM with a head.
It looks and feels simple, performs on day 1000 of your project,
lets you do things your way and helps when you need help.
Drizzle is a good friend who's there for you when necessary and doesn't bother when you need some space
It is the only ORM with both relational and SQL-like query APIs providing you best of both worlds when it comes to accessing your relational data. Drizzle is lightweight, performant, typesafe, non lactose, gluten-free, flexible and serverless-ready by design.
Headless ORM?
First and foremost Drizzle is a library and a set of complementary opt-in tools. ORM stands for object relational mapping and developers tend to call Django-like or Spring-like tools an ORM. We trully believe it's a misconception based on legacy and we call them Data Frameworks.
With data frameworks you have to build projects around them and not with them.
Drizzle lets you build your project the way you want or need, lets you be productive and does not interfere.
It lets you solve SQL problems with SQL toolkit and provide you a variety of opt in tools
to take your developer experience through the roof.
Drizzle lets you define and manage database schema in typescript, lets you access your data in SQL-like or relational way, has a massive variety of opt-in tools which makes Drizzle an ultimate tool for managing and accessing your SQL data.
Why SQL-like?
If you know SQL - you know Drizzle.
SQL has been here for 49 years, it aint going anywhere and only gets better
Other ORMs and data frameworks tend to deviate/abstract you away from SQL which leads to a double learning curve - you will need to know both SQL and the framework API.
Drizzle is the opposite. We embrace SQL and built Drizzle to be SQL-like by default at its core, so you can have zero to none learning curve and access to the full power of SQL.
All the familiar SQL schema, queries, automatic migrations and one more thing.
// Access your data
await db
.select()
.from(countries)
.leftJoin(cities, eq(cities.countryId, countries.id))
.where(eq(countries.id, 10))
Why not SQL-like?
At Drizzle we're never settled and striving for a perfectly balanced solution and while SQL-like does cover 100% of the needs, there're certain common scenarious when you can query data in a better way.
We've build Queries API for you, so you can fetch relational nested data from database in the most convenient and performant way and never think about joins and data mapping.
It always generates exactly 1 SQL, feel free to use it with serverless databases and never worry about performance
const result = await db.query.users.findMany({
with: {
posts: true
},
});
Serverless?
Best part is no part - Drizzle has exactly 0 dependencies
Drizzle ORM is dialect specific, slim, performant and serverless ready by design.
We've spent a lot of time to make sure you have best in class SQL dialects support, so you can have Postgres or MySQL or other dialect-specific stuff support.
Drizzle is operating natively through industry standard database drivers.
We support all major PostgreSQL,
MySQL or SQLite drivers out there
and we're adding new ones really fast (opens in a new tab).
Welcome on board
Drizzle is not just a library, it's an experience.
More and more companies adopt Drizzle into their production projects experiencing immense benefits in both DX and performance and we're always there to help!
Don't hesitate to reach us out - we'll gladly assist you in your Drizzle journey!
We have an outstanding Discord community (opens in a new tab) and welcome to our Twitter (opens in a new tab)
Now go build something awesome with Drizzle and your PostgreSQL, MySQL or SQLite!