
"Supabase vs Drizzle" diye arama yapıp bir kazanan bekliyorsanız, işte sürpriz: kazanan yok, çünkü Supabase bir Postgres backend (Backend-as-a-Service) ve Drizzle ise bir veritabanı bağlantısının üzerinde çalışan TypeScript ORM'u — Supabase bağlantısı dahil. Stack'inizin farklı katmanlarında yaşıyorlar, dolayısıyla gerçek anlamda rekabet etmiyorlar. Endişelenmeyin, bu göründüğünden çok daha basit.
Özet: Backend için Supabase kullanın (veritabanı, kimlik doğrulama, depolama, gerçek zamanlı). Ağır sorgularınızda tip güvenceli SQL istiyorsanız Drizzle ekleyin. Üretimdeki uygulamaların çoğu ikisini birden kullanıyor — "ev ya da alet çantası" değil, "ev ve alet çantası" ilişkisi.
Supabase vs Drizzle: tek bakışta karşılaştırma
Çoğu "vs" sayfasının atladığı yan yana karşılaştırma. Bu iki aracın ne kadar az örtüştüğüne dikkat edin — işin özü tam da bu.
| Boyut | Supabase | Drizzle |
|---|---|---|
| Ne olduğu | Postgres Backend-as-a-Service | TypeScript ORM / sorgu oluşturucu |
| Katman | Backend platformu | Veri erişim kütüphanesi |
| Veritabanı | Yönetilen Postgres | Herhangi bir Postgres'e bağlanır (Supabase dahil) |
| Kimlik Doğrulama / Depolama / Gerçek Zamanlı | Evet (dahili) | Hayır (kapsam dışı) |
| Tip güvenceli sorgular | Kısmen (üretilen tipler) | Evet (birinci sınıf, çıkarımlı) |
| Migrasyon | SQL editörü / CLI | drizzle-kit (kod olarak şema) |
| Edge / serverless | Edge Functions (Deno) | ~7.4 kb, edge-native |
| Fiyat | Ücretsiz / $25 / $599 | Ücretsiz (açık kaynak) |
| Gerçek rakipler | Firebase ve diğer BaaS'ler | Prisma ve diğer ORM'lar |
Satırların ne kadar az çakıştığını görüyor musunuz? Supabase "uygulamam nerede yaşar?" sorusunu yanıtlar; Drizzle ise "TypeScript'te nasıl sorgularım?" sorusunu yanıtlar. İster supabase vs drizzle ister drizzle vs supabase araması yapın, bu fark aşağıdaki her kararı şekillendirir.
Supabase aslında nedir?
Supabase, tipik bir uygulamanın ilk günden ihtiyaç duyduğu neredeyse her şeyi bir araya getiren yönetimli bir Postgres backend'idir. BaaS — Backend-as-a-Service — sunucularınızı kendiniz kurmadan gerçek bir backend (veritabanı artı servisler) elde ettiğiniz anlamına gelir. Buradaki kilit sözcük gerçek: arka planda gerçek bir PostgreSQL var, sonradan çıkamayacağınız tescilli bir soyutlama değil.
Kutudan çıktığı haliyle şunları elde edersiniz:
- Kimlik Doğrulama — e-posta/şifre, sihirli bağlantılar, sosyal girişler, SSO, şifresiz oturum açma.
- Depolama — S3 tabanlı dosya depolama, Satır Düzeyi Güvenlik politikaları ve görsel dönüşümleri.
- Gerçek Zamanlı — veritabanı değişikliklerini, hazır bulunuşluk durumunu ve yayın kanallarını dinleyin.
- Edge Functions — Deno üzerinde TypeScript fonksiyonları, küresel dağıtım.
- Otomatik REST API — PostgREST aracılığıyla (tablolarınızı anında REST API'ye dönüştürür) ve
pg_graphqlüzerinden GraphQL. - Vektör desteği — embedding'ler için, böylece yapay zeka özelliklerinin bir yuvası var.
Uygulamanızdan tüm bunlarla konuşmanın varsayılan yolu, resmi istemci kütüphanesi olan supabase-js'dir. Veritabanı okuma ve yazma işlemlerini (PostgREST üzerinden yönlendirilen), kimlik doğrulama oturumlarını, gerçek zamanlı abonelikleri ve dosya yüklemelerini yönetir — tüm platform için tek bir istemci. Backend seçimi aşamasındaysanız, Supabase vs Firebase karşılaştırması o kararın tüm ayrıntılarını ele alıyor.
Drizzle aslında nedir?
Drizzle, hafif bir TypeScript ORM'u ve sorgu oluşturucusudur. ORM (object-relational mapper), veritabanı sorgularını ham SQL dizileri yerine programlama dilinizde yazmanızı sağlayan bir kütüphanedir — ancak Drizzle SQL'e yakın bir yaklaşım benimser, böylece ağır bir soyutlamayla boğuşmazsınız.
Öne çıkan özellikleri:
- Küçük boyut — sıfır dış bağımlılıkla yaklaşık 7.4 kb min+gzip, bu da onu edge-native yapıyor.
drizzle-kit—generate,migratevepull(mevcut veritabanını TypeScript'e çeken) komutlarını işleyen CLI.- Drizzle Studio — yerel geliştirme için ücretsiz görsel veritabanı tarayıcısı.
- Tip çıkarımı — şemanızı bir kez TypeScript'te tanımlayın, sorgu sonuçları otomatik olarak tam tipli olur.
- Çoklu veritabanı — Postgres, MySQL, SQLite ve daha fazlasıyla çalışır.
- Tam açık kaynak — maliyeti $0.
Şimdi önemli kısım: Drizzle bir backend değildir — kimlik doğrulama yok, depolama yok, gerçek zamanlı yok, API sunucusu yok. Tek bir şey yapar: veritabanıyla tip güvenceli biçimde konuşur. Bunu "ORM" olarak nitelendirmek, yaygın "supabase orm" aramasını yanıtlar — Supabase kendi içinde ağır bir ORM sunmuyor, bu yüzden insanlar Drizzle'a (ya da Prisma'ya) başvuruyor.
supabase-js vs Drizzle: aynı sorgu, iki farklı yazım biçimi
supabase-js ile Drizzle arasındaki fark: supabase-js tam platform istemcisidir (PostgREST üzerinden veritabanı erişimi artı kimlik doğrulama, gerçek zamanlı ve depolama), Drizzle ise veritabanını sorgulamaktan başka hiçbir şey yapmayan, tip güvenceli bir Postgres ORM'udur. Bunu somutlaştırmak için aynı sorgu — "yazarıyla birlikte yayınlanmış gönderileri getir" — önce supabase-js ile, ardından Drizzle ile yazılmış halde:
Önce supabase-js (PostgREST) sürümü:
import { createClient } from "@supabase/supabase-js";
const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY);
// Yazarıyla birlikte yayınlanmış gönderileri getir
const { data, error } = await supabase
.from("posts")
.select("id, title, author:authors(name)")
.eq("published", true);
if (error) throw error;
// data: { id, title, author: { name } }[]Şimdi aynı sorgunun Drizzle sürümü:
import { drizzle } from "drizzle-orm/postgres-js";
import { eq } from "drizzle-orm";
import postgres from "postgres";
import { posts, authors } from "./schema";
const client = postgres(DATABASE_URL, { prepare: false });
const db = drizzle(client);
// Yazarıyla birlikte yayınlanmış gönderileri getir
const data = await db
.select({
id: posts.id,
title: posts.title,
authorName: authors.name,
})
.from(posts)
.innerJoin(authors, eq(posts.authorId, authors.id))
.where(eq(posts.published, true));
// data, şemanızdan tam olarak tiplendi — ayrı bir kod üretme adımı gerekmezİki yazım arasındaki his farkına dikkat edin. supabase-js PostgREST zincirleme yöntemiyle çalışıyor — .from().select().eq() — ve birleştirmeleri o iç içe author:authors(name) string söz dizimi üzerinden ifade ediyor; basit şekiller için güzel okunuyor. Drizzle ise TypeScript süper güçleriyle SQL gibi okuyor: açık birleştirmeler, açık koşullar ve sonuç tipi, ayrı bir tip üretme adımı olmaksızın doğrudan şemanızdan çıkarılıyor.
"Hangisi daha iyi" sorusunun boşlukta bir cevabı yok: supabase-js sorgusu daha kısa ve platform ile birlikte geliyor, Drizzle sorgusu ise birleşme üzerinde derleme zamanı güvencesi sunuyor ve sorgular karmaşıklaştıkça — üç birleşme, koşullu filtreler, toplamalar — giderek daha anlaşılır hale geliyor. Gerçek değiş tokuş budur.

Supabase ile gerçekten Drizzle'a ihtiyacınız var mı? (karar çerçevesi)
Hayır, genellikle Supabase ile birlikte Drizzle'a ihtiyacınız yok — supabase-js çoğu uygulamayı üretime tek başına taşır. Drizzle'ı yalnızca karmaşık sorgularda derleme zamanı tip güvencesi istediğinizde ya da daha küçük bir edge paketi gerektiğinde ekleyin. Bir bağımlılık eklemeden önce şu dürüst karar matrisini gözden geçirin.
supabase-js** ile devam edin:**
- Gerçek zamanlı abonelikler, dosya/depolama işlemleri veya kimlik doğrulama akışlarına güveniyorsanız.
- Sorgularınız çoğunlukla düz CRUD ise.
- Tüm uygulama için tek bir istemci istiyorsanız.
- Prototip aşamasındaysanız ve maksimum hız istiyorsanız.
Drizzle ekleyin:
- PostgREST söz diziminde giderek beceriksizleşen karmaşık birleşimleriniz veya toplamalarınız varsa.
- Ham SQL'e yakın sorgularda derleme zamanı tip güvencesi istiyorsanız.
- Edge veya serverless çalışma zamanlarına gönderdiğiniz için paket boyutu önemliyse.
- Pull request'te inceleyebileceğiniz, kod olarak migrasyon yönetimini tercih ediyorsanız.
Her ikisini birden kullanın (en yaygın sonuç):
- Kimlik doğrulama, depolama ve gerçek zamanlı için
supabase-js, ağır veri sorguları için Drizzle istiyorsanız.
| İhtiyacınız | Tercihiniz |
|---|---|
| Gerçek zamanlı, depolama, hızlı CRUD, kimlik doğrulama | supabase-js |
| Karmaşık birleşimler, tip güvenceli SQL, edge paket boyutu | Drizzle |
| Tipik bir üretim SaaS uygulaması | Her ikisi |
İpucu:
supabase-jsile başlayın. Bir sorgu gerçekten rahatsız etmeye başladığında Drizzle'a geçin — daha önce değil. Erken ORM ekleme gerçek bir sorundur; henüz ihtiyacınız olmayan kurulum karmaşıklığı ekler.
Tüm stack'i planlamak yerine tek bir sorguya odaklanıyorsanız, doğru SaaS teknoloji yığını seçimi backend ve ORM kararının büyük resme nasıl oturduğunu açıklıyor.

Supabase ve Drizzle'ı birlikte nasıl kullanırsınız (doğru kurulum)
Evet, Supabase ve Drizzle'ı birlikte kullanabilirsiniz — üretimdeki ekiplerin çoğu bunu yapıyor. Kimlik doğrulama, depolama ve gerçek zamanlı için supabase-js'i koruyun, ardından Drizzle'ı tip güvenceli veri sorguları için aynı Supabase Postgres bağlantısına yönlendirin. Ancak birkaç doğruluk detayı insanları tökezletiyor, bu yüzden hepsini bir arada ele alalım.
Kurulum ve bağlantı (postgres-js sürücüsü)
İhtiyacınız olan üç paketi kurun:
npm install drizzle-orm postgres
npm install -D drizzle-kitArdından postgres-js sürücüsünü kullanarak bağlanın ve istemciyi Drizzle'a verin:
import { drizzle } from "drizzle-orm/postgres-js";
import postgres from "postgres";
// prepare: false, Supabase'in transaction pooler'ı ile ZORUNLUDUR
const client = postgres(process.env.DATABASE_URL!, { prepare: false });
export const db = drizzle(client);O prepare: false bayrağı isteğe bağlı değil — okumaya devam edin, çünkü Supabase + Drizzle kurulumunun bozulmasının en yaygın tek nedeni budur.
Havuz mu yoksa doğrudan bağlantı mı: hangi string'i kullanmalısınız?
Supabase size iki bağlantı dizesi sunar ve doğru olanı çalışma zamanınıza göre değişir:
- Havuz (port 6543, transaction modu) — serverless ve edge fonksiyonlar için kullanın. Her çağrı kısa ömürlüdür, bu nedenle işlem başına dağıtılan havuzlu bir bağlantı istiyorsunuz.
- Doğrudan bağlantı (port 5432) — bağlantıyı açık tutan uzun ömürlü sunucular için kullanın.
Yanlış olanı seçerseniz ya bağlantıları tüketirsiniz (serverless üzerinde doğrudan bağlantı) ya da gereksiz yük eklersiniz. Havuz aynı zamanda bir sonraki tuzağı zorunlu kılan şeydir.
prepare: false tuzağı
prepare: false gereklidir çünkü Supabase'in transaction-mode havuzu, Drizzle'ın postgres-js sürücüsünün varsayılan olarak kullandığı hazırlanmış ifadeleri desteklemiyor. Bu iki gerçeği bir araya getirdiğinizde, bayrak olmadan sorgularınız havuz üzerinden her çalıştıklarında hata fırlatır — serverless'ta bu her zaman demektir.
Üretimdeki can sıkıcı durum şudur: her şey doğrudan bağlantıyla yerel olarak çalışır, ardından Vercel'e veya bir Supabase Edge Function'a dağıtıldıktan sonra her sorgu başarısız olur. Düzeltme tek bir bayrak:
const client = postgres(DATABASE_URL, { prepare: false });Dikkat: Drizzle sorgularınız yerel ortamda çalışıyor ama dağıtımda bozuluyorsa, önce bu bayrağı kontrol edin. On kez dokuzunda sorun budur.
RLS'yi korumak
Satır Düzeyi Güvenlik (RLS), Supabase'in en iyi özelliklerinden biridir ve Drizzle kullanmak için bundan vazgeçmeniz gerekmez — ancak bilinçli olmanız gerekir. İki tür istemci vardır:
- Hizmet rolü anahtarını kullanan yönetici istemcisi — RLS'yi tamamen atlar. Güçlü ve tehlikelidir — kesinlikle yalnızca sunucu tarafında tutun, tarayıcıya yaklaştırmayın.
- RLS'ye uyan istemci — her sorguyu, mevcut kullanıcının rolünü ve taleplerini ayarlayan Postgres kimlik doğrulama yapılandırmasını belirleyen bir transaction içinde sarar; böylece mevcut RLS politikalarınız
supabase-jsüzerinden tam olarak uygulanır.
RLS'ye uyan bir sorgunun şekli şöyle — kimlik doğrulama bağlamını ayarlayın, ardından Drizzle sorgunuzu aynı transaction içinde çalıştırın:
import { sql } from "drizzle-orm";
async function rlsQuery(userJwtClaims: { sub: string; role: string }) {
return db.transaction(async (tx) => {
// Postgres'e kimin sorduğunu bildirin, böylece RLS politikaları devreye girer
await tx.execute(
sql`select set_config('request.jwt.claims', ${JSON.stringify(
userJwtClaims
)}, true)`
);
await tx.execute(sql`set local role authenticated`);
// Bu sorgu artık kullanıcının RLS politikaları altında çalışır
return tx.select().from(posts);
});
}Drizzle ayrıca yerel bir RLS API'si ve Supabase'in önceden tanımlanmış rolleriyle (authenticated, anon) şema-olarak-kod politikalarını daha temiz hale getiren bir drizzle-orm/supabase import'u sunuyor. Özet: Supabase'de RLS'yi açık tutun ve RLS'ye uyan Drizzle istemcinizin buna saygı göstermesini sağlayın.
Data API / PostgREST'i kapatmalı mısınız?
Yalnızca Drizzle üzerinden sorgu yapıyorsanız kapatabilirsiniz. Supabase, API Ayarları'nda Data API'yi (PostgREST) devre dışı bırakmanıza izin verir; bu, saldırı yüzeyinizi küçültür. Ancak uygulamanızın herhangi bir bölümü gerçek zamanlı veya hızlı okumalar için hâlâ supabase-js kullanıyorsa — ki çoğunlukla kullanır — PostgREST'i açık bırakın. Açık tutmanın herhangi bir cezası yok.
Uygulamanız Next.js'te yaşıyorsa (burada çok yaygın bir eşleşme), Next.js çerçeve kurulumu seçimi bu veri katmanını saran yönlendirme ve render tarafını ele alıyor.
Drizzle + Supabase'i RLS ve bağlantı havuzlamasıyla doğru şekilde kurmak birçok ekibin tökezlediği nokta. Backend'iniz için ikinci bir görüşe mi ihtiyacınız var? Ücretsiz danışmanlık alın →
Edge ve serverless: Drizzle'ın öne geçtiği yer
Edge'e dağıtım yapıyorsanız, Drizzle burada hakkını kanıtlar. Sıfır native binary ile yaklaşık 7.4 kb boyutunda olduğundan, daha ağır ORM'ların zorlandığı kısıtlı çalışma zamanlarına sığar — Cloudflare Workers, Vercel Edge, AWS Lambda ve hatta Deno üzerindeki Supabase Edge Functions.
Boyut neden bu kadar önemli? Edge fonksiyonları soğuk başlatmalar ve paket sınırlarıyla cezalandırılır; bu nedenle yalın, bağımlılıksız bir kütüphane daha hızlı soğuk başlatmalar ve gerçekten sığan paketler anlamına gelir. supabase-js de edge'de çalışır, ancak ham veri erişimi için Drizzle'ın ayak izi eşleştirmek güçtür.
Edge'de göz önünde bulundurulması gereken birkaç nokta:
- Transaction-mode havuz bağlantı dizesini kullanın (
prepare: falseile). - Sorgu mantığınızı yalın tutun, böylece fonksiyon küçük ve hızlı kalır.
Dağıtım yaptığınız çalışma zamanı bu kararı da şekillendirir — edge fonksiyonlarınızı nereye dağıtacağınız platformları karşılaştırarak veri katmanınızı doğru ana bilgisayarla eşleştirmenizi sağlıyor.
Yeniden yazmadan supabase-js'ten Drizzle'a geçiş
supabase-js ile yayına geçtiniz ve şimdi birkaç karmaşık sorgu için Drizzle istiyorsunuz? İyi haber: büyük çaplı bir yeniden yazma yapmanıza gerek yok. Her ikisini aynı dosyada çalıştırabilirsiniz. Ekiplerin gerçekte kullandığı kademeli yol şöyle:
supabase-js****'i tam olarak olduğu yerde tutun — kimlik doğrulama, depolama, gerçek zamanlı ve hâlihazırda iyi yönettiği basit CRUD. Dokunmayın.- Mevcut şemanızı TypeScript'e çekin, böylece Drizzle tablolarınızı tanır (ihtiyaç duyuyorsanız
authşema referansı dahil):
npx drizzle-kit pull- Drizzle istemcisini mevcut Supabase istemcinizin yanına ekleyin — aynı veritabanı, ikinci bağlantı, baştan beri
prepare: falsedahil. - Ağır sorguları birer birer taşıyın. En zahmetli birleşimi veya toplamayı seçin, yalnızca onu Drizzle'da yeniden yazın ve yayına alın.
- Geri kalanı
supabase-js'te bırakın. Zaten sorunsuz çalışan sorguları dönüştürmek için bir ödül yok.
Merak etmeyin:
supabase-jsve Drizzle'ı aynı fonksiyonda çağırabilirsiniz. Hiçbir şey sizi global düzeyde bir tercih yapmaya zorlamıyor — mantıklı olan hızda geçiş yapın.
Sorguları elle yeniden yazmak yavaş kısım; bu tam olarak hız kazandıran yapay zeka kodlama araçlarının iyi yönettiği mekanik iş türü — birini bir PostgREST sorgusuna yönlendirin ve sizin incelemeniz için Drizzle karşılığını taslak halinde hazırlamasını isteyin.
2026'da fiyatlar: her biri gerçekte ne kadar?
Drizzle ücretsizdir — tam açık kaynaklıdır, yani $0. Supabase'in ücretsiz bir katmanı var, ardından 2026'da $25/ay (Pro) ve $599/ay (Team) ücretli planlar geliyor. Bu yüzden bu yığın için ödeyeceğiniz tek fatura Supabase'e ait; Drizzle eklemek size hiçbir şeye mal olmaz.
| Katman | Supabase | Drizzle |
|---|---|---|
| Ücretsiz | $0 (500 MB DB, 50k MAU; 1 hafta hareketsizlikte duraklar, 2 proje sınırı) | $0 — tam açık kaynak |
| Pro | $25/ay + kullanım (8 GB DB, 100k MAU, $10 hesaplama kredisi) | — (ücretsiz) |
| Team | $599/ay (SOC2/ISO, 14 günlük yedeklemeler, öncelikli destek) | — (ücretsiz) |
| Kurumsal | Özel (HIPAA, kendi bulutunu getir) | — (Stüdyo'nun gömülebilir B2B sürümü tek ücretli bileşen) |
Drizzle $0 ve tam açık kaynaklıdır (Drizzle Studio dahil), dolayısıyla tek veri katmanı faturanız Supabase'e ait — ORM ücretsiz geliyor.
Bir uyarı: Supabase Ücretsiz katmanı bir hafta hareketsizlikten sonra projeleri duraklatır ve sizi iki projeyle sınırlar — prototipler için harika, ancak gerçek bir şey için Pro isteyeceksiniz. Maliyet bilincindeyseniz ve yalın geliştirme yapıyorsanız, startuplar için gerçekten değer veren araçlar rehberimiz aynı pragmatik bakış açısını koruyor.
Prisma'ya ne dersiniz?
Doğal takip sorusu: bir ORM istiyorsanız, neden Drizzle ve Prisma değil? Her ikisi de Supabase ile mükemmel çalışır, bu yüzden bu adil bir savaş — Supabase vs Drizzle'ın aksine.
- Drizzle — ~7.4 kb, edge-native, SQL benzeri söz dizimi, genç ama hızla büyüyen (haftada yaklaşık 900k npm indirmesi). Paket boyutu ve edge çalışma zamanları önemli olduğunda harika.
- Prisma — daha ağır, ancak meşhur şekilde akıcı geliştirici deneyimi ve daha geniş benimseme (haftada yaklaşık 2,5M indirme). Paketin bir kısıtlama olmadığı geleneksel uzun ömürlü sunucularda harika.
(Bu sayıları yaklaşık kabul edin — sürekli değişiyor.) Dürüst özet: edge/paket boyutu için Drizzle, normal sunucularda ergonomi için Prisma. Her ikisi de Supabase Postgres bağlantısına sorunsuz bağlanır.
Techsy bu konuya nasıl yaklaşıyor?
Techsy olarak Supabase, Next.js ve PostgreSQL üzerinde her gün üretim testinden geçmiş uygulamalar yayına alıyoruz; bu yüzden bu dokümana dayalı bir görüş değil. Varsayılan yaklaşımımız: platform özellikleri (kimlik doğrulama, depolama, gerçek zamanlı) için supabase-js ve tip güvencesinin ve karmaşık birleşimlerin karşılığını verdiği veri yoğun yollar için Drizzle — RLS açık, prepare: false en baştan dahil.
Ve dürüstçe? Yayına aldığımız projelerin birçoğu hiç Drizzle gerektirmiyor. Eğer bir uygulama çoğunlukla gerçek zamanlı ile CRUD'dan oluşuyorsa, tek başına supabase-js daha temiz yanıt — ve bunu salt bir bağımlılık eklemek için değil, gerçekten gerektiğinde söyleriz.
Supabase backend'iniz hakkında ikinci bir görüş mü istiyorsunuz — şema, RLS ve bağlantı kurulumu dahil? Ekibimizle konuşun →
Sık sorulan sorular
Drizzle, Supabase'in yerine geçer mi?
Hayır. Farklı katmanlarda yaşıyorlar — Supabase backend'inizdir (veritabanı, kimlik doğrulama, depolama, gerçek zamanlı), Drizzle ise yalnızca bir veritabanı sorgulayan bir ORM'dur. Birini diğeriyle değiştirmezsiniz; aksine Drizzle, Supabase'in barındırdığı Postgres veritabanını sorgular.
Zaten Supabase kullanıyorsam Drizzle'a ihtiyacım var mı?
Hayır — tamamen isteğe bağlı. supabase-js çoğu uygulamayı mükemmel biçimde yönetir. Karmaşık sorgularda derleme zamanı tip güvencesi istediğinizde ya da paket boyutunun önemli olduğu edge çalışma zamanlarına gönderim yapıyorsanız Drizzle ekleyin.
Supabase ve Drizzle'ı birlikte kullanabilir miyim?
Evet, uygulamada en yaygın kurulum budur. Kimlik doğrulama, depolama ve gerçek zamanlı için supabase-js'i koruyun, ardından Drizzle'ı veri sorgularınız için aynı Supabase Postgres bağlantısına yönlendirin. Aynı kod tabanında birlikte mutlu şekilde bir arada bulunurlar.
supabase-js ile Drizzle arasındaki fark nedir?
supabase-js tam bir istemcidir — PostgREST üzerinden veritabanı erişimi artı kimlik doğrulama, gerçek zamanlı ve depolama. Drizzle, kimlik doğrulama veya gerçek zamanlı olmaksızın doğrudan, tip güvenceli bir Postgres ORM'udur; yalnızca SQL'i TypeScript'te yapar. Biri tüm platformun istemcisi, diğeri saf bir sorgu katmanı.
Drizzle, Supabase Satır Düzeyi Güvenliği (RLS) ile çalışır mı?
Evet. RLS'yi açık tutun ve her sorguyu Postgres kimlik doğrulama bağlamını ayarlayan bir transaction içinde saran, RLS'ye uyan bir istemci kullanın. Hizmet rolü yönetici istemcisi RLS'yi atlar, bu nedenle onu yalnızca sunucu tarafında kullanın ve tarayıcıya hiçbir zaman göstermeyin.
Supabase ve Drizzle ile neden prepare: false kullanmam gerekiyor?
Supabase'in transaction-mode bağlantı havuzu, Drizzle'ın postgres-js sürücüsünün varsayılan olarak kullandığı hazırlanmış ifadeleri desteklemiyor. prepare: false ayarı ortaya çıkan hataların önüne geçer. Atlarsan sorgularınız havuzlu veya serverless kurulumlarda bozulur — çoğu zaman yalnızca dağıtımdan sonra.
Havuz mu yoksa doğrudan bağlantı dizesi mi kullanmalıyım?
Serverless ve edge fonksiyonlar için havuzu (transaction modu, port 6543) kullanın; uzun ömürlü sunucular için doğrudan bağlantıyı (port 5432) kullanın. Havuz aynı zamanda prepare: false'ı zorunlu kılan şeydir, dolayısıyla iki tercih el ele gider.
Drizzle ücretsiz mi? Supabase ücretsiz mi?
Drizzle tamamen açık kaynaklıdır — yerel geliştirme için Drizzle Studio dahil $0. Supabase'in ücretsiz bir katmanı var, ardından Pro $25/ay ve Team $599/ay (2026 fiyatlandırması). Kısacası: tek faturanız Supabase'e ait, Drizzle buna hiçbir şey eklemez.
Supabase için Drizzle mi yoksa Prisma mı — hangi ORM'u seçmeliyim?
Her ikisi de Supabase ile çalışır, bu yüzden çok yanlış gitemezsiniz. Drizzle daha hafif (~7.4 kb) ve edge-native; Prisma daha olgun bir geliştirici deneyimine ve daha geniş benimsemeye sahip. Edge ve paket boyutu için Drizzle'ı, geleneksel sunucularda ergonomi için Prisma'yı seçin.
Sonuç
Supabase vs Drizzle? Bu hiçbir zaman gerçek bir yarışma değildi. İşte çıkarmanız gerekenler:
- Rakip değiller. Supabase backend'inizdir; Drizzle, onun üzerinde oturan isteğe bağlı bir tip güvenceli ORM'dur.
- Her ikisini birden kullanmak yaygın yanıttır — kimlik doğrulama/depolama/gerçek zamanlı için
supabase-js, ağır veri sorguları için Drizzle. - Doğruluk detaylarını doğru yapın:
prepare: false, doğru bağlantı dizesi ve RLS'ye uyan bir istemci. Bunlar ekipleri üretimde tökezleten şeyler. - Drizzle ücretsizdir, eklemenin maliyeti yoktur — tek faturanız Supabase'e aittir.
- Basit başlayın. Bir sorgu gerçekten acı vermeye başladığında Drizzle'a başvurun, daha önce değil.

Stack'iniz için supabase-js, Drizzle veya her ikisi arasında karar vermekte zorlanıyor musunuz? Ücretsiz backend danışmanlığı alın →