Skip to content
Databases in Practice

What is D1 vs Postgres Choice?

Choosing edge SQLite (D1) for globally distributed reads and zero-ops scale versus Postgres for rich types, extensions, and heavy relational workloads. BYOB generates D1-first apps and reaches for Supabase Postgres when measurements demand it.

Example

A content-heavy marketing app ships on BYOB DB with Drizzle queries through the native binding; when full-text search and row policies dominate the roadmap, the team promotes the data layer to Supabase Postgres.

What people get wrong

Choosing by hype instead of workload. Model reads, writes, transactions, and extensions first; both engines win somewhere, neither wins everywhere.

Frequently asked questions

Can a project start on D1 and move later?

Yes. Drizzle schemas port cleanly, and BYOB promotes the data layer to Supabase Postgres when workload measurements justify the move.

What pushes a workload toward Postgres?

Full-text search depth, complex joins across large tables, extensions, and per-user row policies at scale all favor Postgres over edge SQLite.

Sources

Browse all Databases in Practice terms →