
إن كنت قد بحثت عن "supabase vs drizzle" متوقعاً إعلان فائز، فإليك المفاجأة: لا يوجد فائز، لأن Supabase هو خلفية Postgres كاملة (Backend-as-a-Service)، بينما Drizzle هو ORM بلغة TypeScript يعمل فوق اتصال قاعدة البيانات — بما في ذلك اتصال Supabase. إنهما يعيشان في طبقتين مختلفتين من مكدسك البرمجي، فلا تنافس حقيقي بينهما. ولا تقلق، الأمر أبسط مما يبدو.
الخلاصة السريعة: استخدم Supabase للخلفية (قاعدة البيانات، والمصادقة، والتخزين، والبث المباشر). أضف Drizzle إذا أردت استعلامات SQL آمنة النوع على استعلاماتك الأثقل. معظم تطبيقات الإنتاج تنتهي باستخدام الاثنين معاً — فكّر في الأمر على أنه "المنزل والصندوق"، لا "المنزل أو الصندوق".
Supabase مقابل Drizzle في لمحة سريعة
إليك المقارنة الجانبية التي تتجاهلها معظم صفحات "مقابل". لاحظ مدى ضآلة التداخل بين الاثنين — هذه هي النقطة الجوهرية.
| المعيار | Supabase | Drizzle |
|---|---|---|
| ما هو | خلفية Postgres كخدمة (BaaS) | ORM / بانٍ استعلامات TypeScript |
| الطبقة | منصة خلفية | مكتبة وصول للبيانات |
| قاعدة البيانات | Postgres مُدارة | يتصل بأي Postgres (بما فيها Supabase) |
| المصادقة / التخزين / البث المباشر | نعم (مدمجة) | لا (خارج النطاق) |
| استعلامات آمنة النوع | جزئياً (أنواع مُولَّدة) | نعم (أساسية، مستنتجة) |
| التهجير | محرر SQL / CLI | drizzle-kit (المخطط ككود) |
| الحافة / Serverless | Edge Functions (Deno) | ~7.4 كيلوبايت، مثالي للحافة |
| التسعير | مجاني / 25$ / 599$ | مجاني (مفتوح المصدر) |
| المنافسون الحقيقيون | مقابل Firebase وخدمات BaaS الأخرى | مقابل Prisma وORMs الأخرى |
لاحظ كيف تتداخل الصفوف بالكاد؟ Supabase يجيب على سؤال "أين يعيش تطبيقي؟"؛ Drizzle يجيب على سؤال "كيف أستعلم منه بـ TypeScript؟" سواء بحثت عن supabase vs drizzle أو drizzle vs supabase، هذا الفرق يُشكّل كل قرار أدناه.
ما هو Supabase فعلاً
Supabase هو خلفية Postgres مُدارة تجمع كل ما يحتاجه التطبيق النموذجي منذ اليوم الأول. BaaS — أي Backend-as-a-Service — يعني أنك تحصل على خلفية حقيقية (قاعدة بيانات بالإضافة إلى خدمات) دون الحاجة لإعداد خوادم بنفسك. والكلمة المفتاحية هي حقيقية: تحت الغطاء، إنه PostgreSQL أصيل، وليس تجريداً مملوكاً لا يمكنك الإفلات منه لاحقاً.
إليك ما تحصل عليه فوراً:
- المصادقة — بريد إلكتروني/كلمة مرور، روابط سحرية، تسجيل دخول اجتماعي، SSO، بلا كلمات مرور.
- التخزين — تخزين ملفات مدعوم بـ S3 مع سياسات أمان على مستوى الصف وتحويلات الصور.
- البث المباشر — الاستماع لتغييرات قاعدة البيانات، والحضور، وقنوات البث.
- Edge Functions — دوال TypeScript على Deno، موزعة عالمياً.
- REST API تلقائي عبر PostgREST (يحوّل جداولك إلى REST API فوري) بالإضافة إلى GraphQL عبر
pg_graphql. - دعم المتجهات لتضمينات الذكاء الاصطناعي، حتى تجد ميزات الذكاء الاصطناعي مكاناً لها.
الطريقة الافتراضية للتحدث مع كل هذا من تطبيقك هي supabase-js، مكتبة العميل الرسمية. تتولى قراءات وكتابات قاعدة البيانات (عبر PostgREST)، وجلسات المصادقة، واشتراكات البث، ورفع الملفات — عميل واحد للمنصة بأكملها. إذا كنت تقارن الخلفيات أساساً، فإن مقارنتنا الكاملة بين Supabase و Firebase تغطي ذلك الجانب من القرار بالتفصيل.
ما هو Drizzle فعلاً
Drizzle هو ORM وبانٍ استعلامات TypeScript خفيف الوزن. ORM (محوّل علاقات الكائنات) هو ببساطة مكتبة تتيح لك كتابة استعلامات قاعدة البيانات بلغة البرمجة الخاصة بك بدلاً من سلاسل SQL خام — لكن Drizzle يبقى قريباً بشكل منعش من SQL، لذلك لن تجد نفسك محارباً لتجريد ثقيل أبداً.
ما يميّزه:
- حجم صغير — حوالي 7.4 كيلوبايت بعد الضغط وبدون تبعيات خارجية، مما يجعله مثالياً لبيئة الحافة.
drizzle-kit— واجهة سطر الأوامر التي تتولىgenerateوmigrateوpull(استخراج قاعدة بيانات موجودة إلى TypeScript).- Drizzle Studio — متصفح قاعدة بيانات مرئي مجاني للتطوير المحلي.
- استنتاج الأنواع — عرّف مخططك مرة واحدة بـ TypeScript ونتائج استعلاماتك ستكون مكتوبة بالكامل تلقائياً.
- متعدد قواعد البيانات — يعمل مع Postgres وMySQL وSQLite والمزيد.
- مفتوح المصدر بالكامل — يكلّف صفراً دولاراً.
الآن الجزء المهم: Drizzle ليس خلفية — لا مصادقة، لا تخزين، لا بث مباشر، لا خادم API. يقوم بشيء واحد بالضبط: التحدث إلى قاعدة البيانات بطريقة آمنة النوع. تسميته "ORM" يجيب على بحث شائع "supabase orm" — Supabase لا يشحن بـ ORM ثقيل خاص به، لذلك يلجأ الناس إلى Drizzle (أو Prisma) عندما يريدون واحداً.
supabase-js مقابل Drizzle: نفس الاستعلام بطريقتين
الفرق بين supabase-js و Drizzle: supabase-js هو عميل المنصة الكامل (قاعدة البيانات عبر PostgREST، بالإضافة إلى المصادقة والبث والتخزين)، بينما Drizzle هو ORM Postgres مباشر وآمن النوع لا يفعل شيئاً سوى الاستعلام من قاعدة البيانات. لتجسيد ذلك، إليك نفس الاستعلام تماماً — "الحصول على المنشورات المنشورة مع مؤلفيها" — مكتوباً أولاً بـ supabase-js، ثم بـ Drizzle.
أولاً، الإصدار بـ supabase-js (PostgREST):
import { createClient } from "@supabase/supabase-js";
const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY);
// Get published posts with their author
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 } }[]الآن إصدار Drizzle من الاستعلام المطابق:
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);
// Get published posts with their author
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 is fully typed from your schema — no codegen stepلاحظ الفرق في الأسلوب؟ supabase-js يستخدم تسلسل PostgREST — .from().select().eq() — ويعبّر عن الربط عبر بناء الجملة النصي author:authors(name) المتداخل، الذي يُقرأ بسلاسة للأشكال البسيطة. Drizzle يشبه SQL مع قوى TypeScript الخارقة: ربط صريح، شروط صريحة، ونوع النتيجة مستنتج مباشرة من مخططك دون خطوة تحضير أنواع منفصلة.
لا أيٌّ منهما "أفضل" بشكل مطلق: استعلام supabase-js أقصر ويأتي مع المنصة، بينما يمنحك استعلام Drizzle أماناً في وقت الترجمة على الربط ويصبح أوضح كلما تعقدت الاستعلامات — ثلاثة روابط، فلاتر شرطية، تجميعات. هذا هو المقايضة الحقيقية.

هل تحتاج Drizzle مع Supabase فعلاً؟ (إطار القرار)
لا، في الغالب لا تحتاج Drizzle مع Supabase — supabase-js يُوصل معظم التطبيقات إلى الإنتاج بمفرده. أضف Drizzle فقط عندما تريد أماناً في وقت الترجمة على الاستعلامات المعقدة أو حزمة أصغر للحافة. قبل إضافة أي تبعية، مرّ على مصفوفة القرار الصادقة هذه.
ابقَ مع supabase-js عندما:
- تعتمد على اشتراكات البث المباشر، أو عمليات الملفات/التخزين، أو تدفقات المصادقة.
- استعلاماتك في معظمها CRUD بسيطة.
- تريد عميلاً واحداً لكامل التطبيق.
- أنت في مرحلة النماذج الأولية وتريد أقصى سرعة.
أضف Drizzle عندما:
- لديك روابط معقدة أو تجميعات باتت محرجة في بناء جملة PostgREST.
- تريد أماناً في وقت الترجمة على SQL قريب من الخام.
- حجم الحزمة مهم لأنك تنشر في بيئات الحافة أو Serverless.
- تفضّل تهجيرات المخطط ككود يمكنك مراجعتها في pull request.
استخدم الاثنين معاً (النتيجة الأكثر شيوعاً) عندما:
- تريد
supabase-jsللمصادقة والتخزين والبث المباشر، بالإضافة إلى Drizzle لاستعلامات البيانات الثقيلة.
| احتياجك | الأداة المناسبة |
|---|---|
| البث المباشر، التخزين، CRUD السريع، المصادقة | supabase-js |
| روابط معقدة، SQL آمن النوع، حجم حزمة للحافة | Drizzle |
| SaaS إنتاجي نموذجي | كلاهما |
نصيحة احترافية: ابدأ بـ
supabase-js. الجأ إلى Drizzle عندما يصبح الاستعلام مؤلماً فعلاً — لا قبل ذلك. إضافة ORM مبكراً أمر حقيقي، وهو يضيف إعداداً لا تحتاجه بعد.
إذا كنت ترسم مكدساً بأكمله وليس استعلاماً واحداً، فإن اختيار مكدس SaaS التقني المناسب يستعرض كيف يتناسب قرار الخلفية وORM مع الصورة الأكبر.

كيفية استخدام Supabase وDrizzle معاً (الإعداد الصحيح)
نعم، يمكنك استخدام Supabase وDrizzle معاً — وهو ما تفعله معظم فرق الإنتاج. أبقِ supabase-js للمصادقة والتخزين والبث المباشر، ثم وجّه Drizzle إلى نفس اتصال Supabase Postgres لاستعلامات البيانات الآمنة النوع. بعض تفاصيل الصحة تُعثر الناس، لذا لنتناول كلها في مكان واحد.
التثبيت والاتصال (مشغّل postgres-js)
ثبّت الحزم الثلاث التي تحتاجها:
npm install drizzle-orm postgres
npm install -D drizzle-kitثم تواصل باستخدام مشغّل postgres-js وسلّم العميل إلى Drizzle:
import { drizzle } from "drizzle-orm/postgres-js";
import postgres from "postgres";
// prepare: false is REQUIRED with Supabase's transaction pooler
const client = postgres(process.env.DATABASE_URL!, { prepare: false });
export const db = drizzle(client);علامة prepare: false ليست اختيارية — استمر في القراءة، لأنها السبب الأكثر شيوعاً لفشل إعداد Supabase + Drizzle.
موزّع الاتصالات مقابل الاتصال المباشر: أي سلسلة تستخدم؟
Supabase يمنحك سلسلتَي اتصال، والاختيار الصحيح يعتمد على بيئة التشغيل:
- الموزّع (المنفذ 6543، وضع المعاملات) — استخدم هذا لدوال Serverless والحافة. كل استدعاء قصير الأمد، لذا تريد اتصالاً موزّعاً يُسلَّم لكل معاملة.
- الاتصال المباشر (المنفذ 5432) — استخدم هذا للـخوادم طويلة الأمد التي تحتفظ باتصال مفتوح.
اختر الخطأ وستستنزف إما الاتصالات (المباشر في Serverless) أو تضيف عبئاً غير ضروري. الموزّع هو أيضاً ما يجعل الملاحظة التالية ضرورية.
خدعة prepare: false
تحتاج prepare: false لأن موزّع وضع المعاملات في Supabase لا يدعم الجمل المُعدّة، التي يستخدمها مشغّل postgres-js الخاص بـ Drizzle بشكل افتراضي. اجمع هذين الواقعين وبدون العلامة، ستطرح استعلاماتك أخطاء فور مرورها عبر الموزّع — وهو في Serverless، دائماً كذلك.
في الإنتاج، هذا هو السطر الذي يلدغ الناس: كل شيء يعمل ضد اتصال مباشر محلياً، ثم كل استعلام يفشل بعد النشر على Vercel أو Supabase Edge Function. الحل علامة واحدة:
const client = postgres(DATABASE_URL, { prepare: false });تنبيه: إذا كانت استعلامات Drizzle تعمل محلياً لكنها تفشل في النشر، ابحث في هذه العلامة أولاً. تسعة من عشرة، هذا هو السبب.
الحفاظ على RLS سليماً
أمان على مستوى الصف (RLS) هو أحد أفضل ميزات Supabase، ولا يجب أن تتخلى عنه لاستخدام Drizzle — لكنك تحتاج إلى التعامل بوعي. هناك نوعان من العملاء:
- عميل المشرف الذي يستخدم مفتاح دور الخدمة يتجاوز RLS كلياً. إنه قوي وخطير — احتفظ به على جانب الخادم فقط، لا يقترب من المتصفح.
- عميل يحترم RLS يغلّف كل استعلام في معاملة تُعيّن سياق مصادقة Postgres (دور المستخدم الحالي ومطالباته) بحيث تُطبَّق سياسات RLS الموجودة لديك تماماً كما ستفعل عبر
supabase-js.
إليك شكل استعلام يحترم RLS — عيّن سياق المصادقة، ثم نفّذ استعلام Drizzle في نفس المعاملة:
import { sql } from "drizzle-orm";
async function rlsQuery(userJwtClaims: { sub: string; role: string }) {
return db.transaction(async (tx) => {
// Tell Postgres who's asking, so RLS policies kick in
await tx.execute(
sql`select set_config('request.jwt.claims', ${JSON.stringify(
userJwtClaims
)}, true)`
);
await tx.execute(sql`set local role authenticated`);
// This query now runs under the user's RLS policies
return tx.select().from(posts);
});
}يشحن Drizzle أيضاً بـ API أصلية لـ RLS واستيراد drizzle-orm/supabase بأدوار Supabase المحددة مسبقاً (authenticated وanon)، مما يجعل سياسات المخطط ككود أنظف. الخلاصة: أبقِ RLS مفعّلاً في Supabase، ودع عميل Drizzle الذي يحترم RLS يُكرّمه.
هل يجب إيقاف Data API / PostgREST؟
فقط إذا كنت تستعلم حصراً عبر Drizzle. يسمح Supabase بتعطيل Data API (PostgREST) في إعدادات API، مما يُصغّر سطح الهجوم. لكن إذا كان أي جزء من تطبيقك لا يزال يستخدم supabase-js للبيانات — وهو في الغالب كذلك، للبث المباشر أو القراءات السريعة — فاترك PostgREST مفعّلاً. لا ضرر من إبقائه.
إذا كان تطبيقك في Next.js (اقتران شائع جداً هنا)، اختيار إعداد إطار Next.js يغطي جانب التوجيه والعرض الذي يلتف حول طبقة البيانات هذه.
ربط Drizzle + Supabase مع RLS والتجميع بشكل صحيح يُعثر الكثير من الفرق. هل تحتاج رأياً ثانياً على خلفيتك؟ احصل على استشارة مجانية ←
الحافة وServerless: أين يتميّز Drizzle
إذا كنت تنشر في الحافة، هنا يُثبت Drizzle قيمته. بحجم حوالي 7.4 كيلوبايت وبدون ثنائيات أصلية، يتسلل إلى بيئات التشغيل المقيّدة التي تعاني منها ORMs الأثقل — Cloudflare Workers وVercel Edge وAWS Lambda وحتى Supabase Edge Functions على Deno.
لماذا يهم الحجم كثيراً هنا؟ دوال الحافة تُعاقَب ببدايات باردة وحدود الحزمة، لذا فإن مكتبة هزيلة وبلا تبعيات تعني بدايات باردة أسرع وحزماً تتناسب فعلاً. supabase-js يعمل في الحافة أيضاً، لكن للوصول الخام للبيانات، يصعب التغلب على حجم Drizzle.
بعض الأمور التي يجب مراعاتها في الحافة:
- استخدم سلسلة اتصال الموزّع في وضع المعاملات (مع
prepare: false). - أبقِ منطق الاستعلام هزيلاً حتى تبقى الدالة صغيرة وسريعة.
بيئة التشغيل التي تنشر إليها تُشكّل هذا أيضاً — مقارنة Vercel و Netlify كمنصتَي نشر تقارن المنصات حتى تُطابق طبقة البيانات مع المضيف المناسب.
الانتقال من supabase-js إلى Drizzle دون إعادة كتابة كاملة
نشرت بالفعل على supabase-js وتريد الآن Drizzle لبعض الاستعلامات المعقدة؟ خبر جيد: لا تحتاج إعادة كتابة كاملة. يمكنك تشغيل الاثنين في نفس الملف. إليك المسار التدريجي الذي تتبعه الفرق فعلياً.
- أبقِ
supabase-jsكما هو — المصادقة والتخزين والبث المباشر وCRUD البسيط الذي يتولاه بشكل جيد بالفعل. لا تلمسه. - استخرج مخططك الموجود إلى TypeScript حتى يعرف Drizzle جداولك (بما فيها مرجع مخطط
authإذا احتجته):
npx drizzle-kit pull- أضف عميل Drizzle بجانب عميل Supabase الموجود — نفس قاعدة البيانات، اتصال ثانٍ، مع
prepare: falseمدمج. - انقل استعلاماً ثقيلاً واحداً في كل مرة. اختر أصعب ربط أو تجميع لديك، أعد كتابته في Drizzle، وانشره.
- اترك كل شيء آخر على
supabase-js. لا جائزة لتحويل استعلامات كانت تعمل بشكل جيد بالفعل.
لا تقلق: يمكنك استدعاء
supabase-jsوDrizzle في نفس الدالة. لا شيء يجبرك على الاختيار عالمياً — انتقل بالوتيرة التي تنطبق على وضعك.
إعادة كتابة الاستعلامات يدوياً هي الجزء البطيء، وهو بالضبط نوع العمل الميكانيكي الذي تُتقنه وكلاء الترميز بالذكاء الاصطناعي — وجّه أحدها إلى استعلام PostgREST واطلب منه صياغة المكافئ بـ Drizzle لتراجعه.
التسعير في 2026: ما الذي يكلّف كل منهما فعلاً
Drizzle مجاني — إنه مفتوح المصدر بالكامل، لذا يكلّف $0. Supabase له مستوى مجاني، ثم خطط مدفوعة بـ $25/شهر (Pro) و$599/شهر (Team) في 2026. إذن فاتورتك الوحيدة لهذا المكدس هي Supabase؛ إضافة Drizzle لا تكلف شيئاً.
| المستوى | Supabase | Drizzle |
|---|---|---|
| مجاني | $0 (قاعدة بيانات 500 ميغابايت، 50 ألف مستخدم شهري؛ يتوقف بعد أسبوع من عدم النشاط، سقف مشروعَين) | $0 — مفتوح المصدر بالكامل |
| Pro | $25/شهر + استخدام (قاعدة بيانات 8 غيغابايت، 100 ألف مستخدم، رصيد حوسبة $10) | — (مجاني) |
| Team | $599/شهر (SOC2/ISO، نسخ احتياطية لـ 14 يوماً، دعم أولوية) | — (مجاني) |
| Enterprise | مخصص (HIPAA، سحابة خاصة) | — (الإصدار المضمّن B2B من Studio هو الجزء المدفوع الوحيد) |
Drizzle بـ $0 ومفتوح المصدر بالكامل (Drizzle Studio مشمول)، لذا فاتورة طبقة البيانات الوحيدة لديك هي Supabase — ORM يركب معك مجاناً.
تحفظ واحد: المستوى المجاني من Supabase يوقف المشاريع بعد أسبوع من عدم النشاط ويحدّك بمشروعين — رائع للنماذج الأولية، لكنك ستريد Pro لأي شيء حقيقي. إذا كنت واعياً بالتكلفة وتبني بشكل هزيل، فإن استعراضنا للأدوات التي تستحق الاستثمار للشركات الناشئة يحافظ على نفس المنظور العملي.
ماذا عن Prisma؟
المتابعة الطبيعية: إذا أردت ORM، فلماذا Drizzle وليس Prisma؟ كلاهما يعمل بشكل جيد مع Supabase، لذا هذه مواجهة عادلة — على عكس Supabase مقابل Drizzle.
- Drizzle — ~7.4 كيلوبايت، مثالي للحافة، بناء جملة يشبه SQL، أحدث لكنه ينمو بسرعة (حوالي 900 ألف تنزيل أسبوعي على npm). رائع عندما يهم حجم الحزمة وبيئات الحافة.
- Prisma — أثقل، لكن تجربة مطوّر سلسة بشهرة واسعة وانتشار أوسع (حوالي 2.5 مليون تنزيل أسبوعي). رائع على الخوادم التقليدية طويلة الأمد حيث لا يُعدّ حجم الحزمة قيداً.
(عامل تلك الأرقام تقريبية — إنها تتغير باستمرار.) الخلاصة الصادقة: اختر Drizzle للحافة وحجم الحزمة، اختر Prisma لبيئة العمل المريحة على خادم عادي. أيٌّ منهما يتصل بـ Supabase Postgres دون مشاكل.
كيف تتعامل Techsy مع هذا
في Techsy ننشر تطبيقات مُختبرة في الإنتاج على Supabase وNext.js وPostgreSQL يومياً، لذا هذا ليس رأياً مبنياً على قراءة الوثائق فحسب. نهجنا الافتراضي: supabase-js** لميزات المنصة** (المصادقة والتخزين والبث المباشر) وDrizzle في مسارات البيانات الثقيلة حيث يُجدي الأمان النوعي والروابط المعقدة — مع RLS مفعّل وprepare: false مدمج منذ السطر الأول.
وبصدق؟ كثير من المشاريع التي ننشرها لا تحتاج Drizzle أصلاً. إذا كان التطبيق في معظمه CRUD مع بث مباشر، فـsupabase-js وحده هو الإجابة الأنظف — وسنخبرك بذلك بدلاً من إضافة تبعية لمجرد إضافتها.
هل تريد رأياً ثانياً على خلفية Supabase الخاصة بك — المخطط وRLS وإعداد الاتصالات؟ تحدّث مع فريقنا ←
أسئلة متكررة
هل Drizzle بديل لـ Supabase؟
لا. إنهما في طبقتين مختلفتين — Supabase هو خلفيتك (قاعدة البيانات والمصادقة والتخزين والبث المباشر)، بينما Drizzle هو مجرد ORM يستعلم قاعدة بيانات. لا تستبدل أحدهما بالآخر؛ إذا كان هناك شيء، Drizzle يستعلم قاعدة بيانات Postgres التي تستضيفها Supabase.
هل أحتاج Drizzle إذا كنت أستخدم Supabase بالفعل؟
لا — إنه اختياري تماماً. supabase-js يتولى معظم التطبيقات بشكل مثالي. أضف Drizzle عندما تريد أماناً في وقت الترجمة على الاستعلامات المعقدة أو تنشر في بيئات الحافة حيث يهم حجم الحزمة.
هل يمكنني استخدام Supabase وDrizzle معاً؟
نعم، وهو الإعداد الأكثر شيوعاً في الواقع. أبقِ supabase-js للمصادقة والتخزين والبث المباشر، ثم وجّه Drizzle إلى نفس اتصال Supabase Postgres لاستعلامات بياناتك. يتعايشان بسعادة في نفس قاعدة الكود.
ما الفرق بين supabase-js وDrizzle؟
supabase-js هو عميل كامل — وصول قاعدة البيانات عبر PostgREST بالإضافة إلى المصادقة والبث والتخزين. Drizzle هو ORM Postgres مباشر وآمن النوع بلا مصادقة أو بث؛ يقوم بـ SQL في TypeScript فحسب. أحدهما عميل المنصة بأكملها، والآخر طبقة استعلام بحتة.
هل يعمل Drizzle مع أمان الصف (RLS) في Supabase؟
نعم. أبقِ RLS مفعّلاً واستخدم عميلاً يحترم RLS يُغلّف الاستعلامات في معاملة تُعيّن سياق مصادقة Postgres. عميل المشرف بمفتاح دور الخدمة يتجاوز RLS، لذا استخدمه على الخادم فحسب ولا تكشفه أمام المتصفح.
لماذا أحتاج prepare: false مع Supabase وDrizzle؟
موزّع الاتصالات في وضع المعاملات بـ Supabase لا يدعم الجمل المُعدّة، التي يستخدمها مشغّل postgres-js الخاص بـ Drizzle بشكل افتراضي. ضبط prepare: false يتجنب الأخطاء الناتجة. أغفله وستنكسر استعلاماتك في الإعدادات الموزّعة أو Serverless — في الغالب بعد النشر فقط.
هل أستخدم الموزّع أم الاتصال المباشر؟
استخدم الموزّع (وضع المعاملات، المنفذ 6543) لدوال Serverless والحافة، والاتصال المباشر (المنفذ 5432) للخوادم طويلة الأمد. الموزّع هو أيضاً ما يجعل prepare: false ضرورياً، لذا يسيران جنباً إلى جنب.
هل Drizzle مجاني؟ هل Supabase مجاني؟
Drizzle مفتوح المصدر بالكامل — $0، بما فيها Drizzle Studio للتطوير المحلي. Supabase له مستوى مجاني، ثم Pro بـ $25/شهر وTeam بـ $599/شهر (تسعير 2026). باختصار: فاتورتك الوحيدة هي Supabase، وDrizzle لا يضيف شيئاً عليها.
Drizzle مقابل Prisma لـ Supabase — أي ORM أختار؟
كلاهما يعمل مع Supabase، فلا خيار خاطئ بشكل صارخ. Drizzle أخف (~7.4 كيلوبايت) ومثالي للحافة؛ Prisma له تجربة مطوّر أكثر نضجاً وانتشاراً أوسع. اختر Drizzle للحافة وحجم الحزمة، واختر Prisma لبيئة العمل المريحة على الخوادم التقليدية.
الخلاصة النهائية
إذن، Supabase مقابل Drizzle؟ لم تكن منافسة حقيقية قط. إليك ما تأخذه معك:
- ليسا منافسَين. Supabase هو خلفيتك؛ Drizzle هو ORM آمن النوع اختياري يجلس فوقها.
- استخدامهما معاً هو الإجابة الشائعة —
supabase-jsللمصادقة/التخزين/البث، Drizzle لاستعلامات البيانات الثقيلة. - احصل على تفاصيل الصحة صحيحة:
prepare: falseوسلسلة الاتصال الصحيحة وعميل يحترم RLS. هذه ما يُعثر الفرق في الإنتاج. - Drizzle مجاني، لذا إضافته لا تكلف شيئاً — فاتورتك الوحيدة هي Supabase.
- ابدأ بسيطاً. الجأ إلى Drizzle عندما يؤلم استعلام فعلاً، لا قبل ذلك.

هل أنت عالق في الاختيار بين supabase-js وDrizzle أو كليهما لمكدسك؟ احصل على استشارة خلفية مجانية ←