أفضل قاعدة بيانات للمواقع التي تحتوي على 100 ألف+ سجل: Supabase مقابل Firebase مقابل PlanetScale - اختبار عملي
معظم مقالات "Supabase مقابل Firebase" كُتبت من قبل أشخاص قاموا بإنشاء تطبيق قائمة بسيط على كل منصة واعتبروا ذلك كافياً. لقد كنت أقوم بتشغيل 253 ألف+ سجل عبر خمسة مواقع إنتاجية على Supabase PostgreSQL لأكثر من سنة. قمت بتقييم Firebase Firestore وPlanetScale وNeon وTurso لمشاريع عملاء حقيقية -- وليس فرضية. هذا ما وجدته فعلاً.
إذا كنت تقوم ببناء تطبيق ويب يحتاج إلى التعامل مع 100 ألف+ سجل مع استعلامات معقدة وميزات في الوقت الفعلي والمصادقة، فإن اختيار قاعدة البيانات الخاصة بك سيحدد البنية المعمارية للسنوات القادمة. اختر بشكل خاطئ وستجد نفسك إما تعيد كتابة طبقة البيانات في غضون ستة أشهر أو تدفع 3 أضعاف ما يجب أن تدفعه. أريد أن أنقذك من كلا الأمرين.
جدول المحتويات
- لماذا توجد هذه المقارنة
- المتنافسون في لمحة سريعة
- Supabase PostgreSQL: أداتنا الموثوقة في الإنتاج
- Firebase Firestore: أين تفوز وأين لا تفوز
- PlanetScale: قاعدة بيانات رائعة، منصة غير كاملة
- Neon: اختيار الرغبة الصارمة
- Turso: SQLite موجهة نحو الحافة
- مقارنة المميزات وجهاً لوجه
- معايير الأداء عند 100 ألف+ سجل
- تفصيل الأسعار لأحمال عمل 100 ألف سجل
- أي قاعدة بيانات يجب أن تختار؟
- الأسئلة الشائعة

لماذا توجد هذه المقارنة
في Social Animal، نقوم ببناء تطبيقات ويب بدون رأس -- بشكل أساسي مع Next.js وAstro -- للعملاء الذين يحتاجون إلى مواقع ديناميكية وثقيلة البيانات. فكر في الدلائل المؤسسية التي تحتوي على 50 ألف+ قائمة، ومواقع تحسين محركات البحث البرمجية التي تولد آلاف الصفحات، ولوحات معلومات SaaS التي تحتاج إلى تحديثات في الوقت الفعلي.
عندما يأتي عميل إلينا بمشروع يتضمن 100 ألف+ سجل، تحدث محادثة قاعدة البيانات في اليوم الأول. إنها ليست فكرة لاحقة. اختيارك لقاعدة البيانات ينعكس على استراتيجية المصادقة وتصميم API والتكاليف الاستضافية والقدرة على إرسال الميزات بعد ستة أشهر من الآن.
لن أتظاهر بأنني قمت بتشغيل أحمال عمل إنتاجية متطابقة على جميع قواعد البيانات الخمس. سيكون ذلك غير أمين. ما فعلته هو تشغيل إنتاج جاد على Supabase (253 ألف+ سجل، خمسة مواقع، 14 شهر) وقمت بتقييمات تقنية شاملة للبدائل لمشاريع عملاء محددة. سأكون واضحاً حول البيانات التي تأتي من الإنتاج وأيها تأتي من التقييم.
المتنافسون في لمحة سريعة
قبل أن نتعمق، إليك الصورة السريعة:
- Supabase -- PostgreSQL مع جميع الملحقات (المصادقة والتخزين والوقت الفعلي ووظائف الحافة)
- Firebase Firestore -- قاعدة بيانات NoSQL الموجهة للمستندات من Google مع أدوات SDK جوال ممتازة
- PlanetScale -- MySQL بدون خادم مع فروع قاعدة البيانات (مدعومة بـ Vitess)
- Neon -- PostgreSQL بدون خادم مع الفروع والتوسع إلى الصفر
- Turso -- SQLite الموزعة في الحافة (مدعومة بـ libSQL)
كل واحد منهم جيد فعلاً في شيء ما. السؤال هو ما إذا كان هذا الشيء يطابق ما تقوم ببناؤه.
Supabase PostgreSQL: أداتنا الموثوقة في الإنتاج
سأبدأ مع Supabase لأن لدينا الخبرة الأعمق فيها. عبر خمسة مواقع إنتاجية، أكبر جدول لدينا يحتوي على 137 ألف صف (نظام عناوين وطني لمشروع دليل)، ونحن نبلغ 253 ألف+ إجمالي السجلات عبر جميع قواعد البيانات.
ما نستخدمه يومياً
Row Level Security (RLS) هي على الأرجح الميزة التي أغلقت الصفقة بالنسبة لنا. عندما تقوم ببناء تطبيقات متعددة المستأجرين -- والتي تصبح معظم المواقع المدفوعة بـ headless CMS في النهاية -- فأنت بحاجة إلى عزل البيانات لكل مستخدم. باستخدام RLS، تعيش منطق الأمان في قاعدة البيانات نفسها. طبقة API الخاصة بك لا تحتاج إلى تذكر تصفية حسب user_id في كل استعلام واحد. قاعدة البيانات تفرضها.
هذا هو ما تبدو عليه سياسة RLS نموذجية في مشاريعنا:
-- لا يمكن للمستخدمين رؤية قوائم منظمتهم الخاصة فقط
CREATE POLICY "org_isolation" ON listings
FOR SELECT
USING (org_id = (SELECT org_id FROM profiles WHERE id = auth.uid()));
-- يمكن للمسؤولين رؤية كل شيء
CREATE POLICY "admin_access" ON listings
FOR ALL
USING (EXISTS (
SELECT 1 FROM profiles
WHERE id = auth.uid() AND role = 'admin'
));
هذا SQL حقيقي. إنه ليس DSL ملكياً. إذا احتجت يوماً ما إلى ترك Supabase، فإن هذه السياسات تترجم إلى أي مضيف PostgreSQL.
pgvector كانت بمثابة وحي للبحث الدلالي. قمنا بتطبيقها على موقع محتوى ثقيل حيث البحث الكامل النص التقليدي لم يكن كافياً. يمكن للمستخدمين البحث عن "أماكن لتناول الطعام بالقرب من وسط المدينة" والتوقع نتائج تتضمن المطاعم والمقاهي وشاحنات الطعام -- حتى لو لم تكن هذه الكلمات الدقيقة في القائمة.
-- إنشاء عمود المتجه
ALTER TABLE listings ADD COLUMN embedding vector(1536);
-- إنشاء الفهرس (هذا مهم جداً عند 100 ألف+ سجل)
CREATE INDEX ON listings USING ivfflat (embedding vector_cosine_ops)
WITH (lists = 100);
-- استعلام البحث الدلالي
SELECT id, name, 1 - (embedding <=> $1) AS similarity
FROM listings
WHERE 1 - (embedding <=> $1) > 0.78
ORDER BY embedding <=> $1
LIMIT 20;
عند 137 ألف سجل مع متجهات بحجم 1536-البُعد، يُرجع هذا الاستعلام في حوالي 45 ملي ثانية على خطة Supabase Pro. هذا سريع بما يكفي للبحث الفوري أثناء الكتابة.
PostGIS استعلامات الجغرافيا تدعم ميزاتنا المستندة إلى الموقع. العثور على قوائم ضمن نطاق معين، الفرز حسب المسافة، حساب أوقات القيادة -- كل ذلك يتم التعامل معه على مستوى قاعدة البيانات بدلاً من رمز التطبيق.
-- العثور على القوائم ضمن 10 كم من نقطة، مرتبة حسب المسافة
SELECT id, name,
ST_Distance(location, ST_MakePoint(-73.9857, 40.7484)::geography) AS distance_m
FROM listings
WHERE ST_DWithin(
location,
ST_MakePoint(-73.9857, 40.7484)::geography,
10000
)
ORDER BY distance_m
LIMIT 50;
اشتراكات Realtime تسمح لنا ببناء لوحات معلومات حية دون بنية تحتية WebSocket. لوحة معلومات مسؤول العميل يظهر بها الرسائل الجديدة فوراً لأننا نشترك في أحداث INSERT في الجدول ذي الصلة. لا توجد بنية تحتية إضافية.
ما ليس مثالياً
لن أتظاهر بأن Supabase مثالية. لوحة المعلومات يمكن أن تكون بطيئة عند تصفح الجداول بـ 100 ألف+ صف. محرر الجدول جيد للمجموعات الصغيرة ولكنه مؤلم للعمليات الضخمة -- ستريد استخدام SQL مباشرة. Edge Functions الخاصة بهم مدعومة بواسطة Deno، مما يعني أن بعض حزم Node.js لا تعمل. وإذا كنت بحاجة إلى تجميع الاتصالات للبيئات بدون خادم، فيجب عليك استخدام سلسلة اتصال Supavisor (لقد استبدلوا PgBouncer اعتباراً من أوائل 2025).
أيضاً، الطبقة المجانية الخاصة بهم سخية حقاً للتطوير ولكن لديها حد أقسى وهو 500 ميجابايت من مساحة قاعدة البيانات. للإنتاج بـ 100 ألف+ سجل، تنظر إلى خطة Pro على الأقل ($25/شهر).

Firebase Firestore: أين تفوز وأين لا تفوز
قمنا بتقييم Firebase بجدية لمشروعي عميل في 2024. كان أحدهما تطبيقاً موجهاً للجوال برمتوقيات متطلبات مزامنة دون اتصال. والآخر كان موقع دليل بميزات فلترة معقدة.
حيث Firebase تفوز حقاً
مزامنة في الوقت الفعلي لتطبيقات الجوال من Firebase لا تزال أفضل في الفئة. الإصرار دون اتصال، حل تضارب تلقائي، وتكامل محكم مع أدوات SDK iOS/Android تجعلها الخيار الواضح إذا كانت منصتك الأساسية هي الجوال. تكامل Google Auth بسيط بجنون -- بضعة أسطر من الأكواد وحصلت على Sign-in with Google وApple ورقم هاتف والبريد الإلكتروني/كلمة المرور.
Firebase Crashlytics والتكوين البعيد والتحليلات تشكل نظام بيئي تطوير جوال لا يطابقه شيء آخر. إذا كنت تقوم ببناء تطبيق جوال أولاً وتطبيق ويب ثانياً، فيستحق Firebase الاعتبار الجاد.
لماذا اخترنا Supabase بدلاً من ذلك
Firestore هي قاعدة بيانات موجهة للمستندات. لا توجد جملات الالتحاق. دع هذا يستقر للحظة.
عندما تقوم ببناء دليل بقوائم تحتوي على فئات وعلامات وأماكن ومراجعات وملفات تعريف المستخدمين، فأنت بحاجة إلى بيانات ارتباطية. في Firestore، إما أنك تقوم بإلغاء المعايير (نسخ البيانات عبر المستندات والصلاة للحفاظ على تزامنها) أو تقوم بعمل استعلامات رحلة ذهاب وإياب متعددة وتربط البيانات في رمز التطبيق.
هذا ما يبدو عليه استعلام "العثور على قوائم حسب الفئة مع التقييم المتوسط" في كل منهما:
-- Supabase: استعلام واحد، تم
SELECT l.*, c.name AS category_name,
AVG(r.rating) AS avg_rating,
COUNT(r.id) AS review_count
FROM listings l
JOIN categories c ON l.category_id = c.id
LEFT JOIN reviews r ON r.listing_id = l.id
WHERE c.slug = 'restaurants'
GROUP BY l.id, c.name
ORDER BY avg_rating DESC
LIMIT 20;
// Firestore: ثلاثة استعلامات + الالتحاق على جانب العميل
const categorySnap = await db.collection('categories')
.where('slug', '==', 'restaurants').get();
const categoryId = categorySnap.docs[0].id;
const listingsSnap = await db.collection('listings')
.where('categoryId', '==', categoryId).get();
// الآن جلب المراجعات لكل قائمة...
// ثم حساب المتوسطات في رمز التطبيق...
// ثم الفرز... أنت تفهم الفكرة.
وإليك اللكمة الحقيقية: Firestore تتقاضى رسوماً لكل قراءة مستند. نمط الاستعلام الثلاثي أعلاه؟ يحتسب كل مستند في كل استعلام. عند 100 ألف+ سجل مع حركة معقولة، تصبح فاتورتك غير قابلة للتنبؤ حقاً. سمعنا قصصاً من الرعب من مطورين دفعوا 400 دولار+ فاتورة مفاجئة لأنهم لم يدركوا أن استعلاماتهم كانت تفحص مستندات أكثر من المتوقع.
Firestore أيضاً ليس لديها ما يعادل pgvector أو PostGIS. يمكنك القيام باستعلامات geohash الأساسية، لكنها تقريبية ومحدودة مقارنة بفهرسة الفضاء الحقيقية.
PlanetScale: قاعدة بيانات رائعة، منصة غير كاملة
يقوم PlanetScale بتشغيل Vitess تحت الغطاء -- نفس التكنولوجيا التي تدعم قاعدة بيانات YouTube. لأداء MySQL البحتة، إنها ممتازة. ميزة فروع قاعدة البيانات الخاصة بهم (إنشاء فرع، إجراء تغييرات على المخطط، الدمج مرة أخرى) مبتكرة حقاً وشيء أتمنى أن Supabase لديها بشكل طبيعي.
ما يفعله PlanetScale بشكل جيد
محرك الخادم بدون خادم الخاص بهم سريع. إدارة الاتصالات يتم التعامل معها نيابة عنك، وهذا يهم بشكل كبير في بيئات بدون خادم حيث كل استدعاء دالة قد يفتح اتصال قاعدة بيانات جديد بخلاف ذلك. فروع المخطط تجعل ترحيل قاعدة البيانات يشعر بأنه مثل سحب طلبات Git -- آمن وقابل للمراجعة وقابل للعكس.
للفرق ذات الخبرة القوية في MySQL التي تقوم ببناء تطبيقات ويب تقليدية، PlanetScale صلبة.
ما الذي ينقصه
PlanetScale هي فقط قاعدة بيانات. هذا كل شيء. قارن ما تحتاجه لبناء مكدس تطبيق كامل:
| الميزة | Supabase | PlanetScale + إضافات |
|---|---|---|
| قاعدة البيانات | ✅ مضمنة | ✅ مضمنة |
| المصادقة | ✅ مضمنة | ❌ بحاجة إلى Clerk ($25+/شهر) أو Auth0 |
| تخزين الملفات | ✅ مضمن | ❌ بحاجة إلى S3 أو Cloudflare R2 |
| الوقت الفعلي | ✅ مضمن | ❌ بحاجة إلى Pusher أو Ably |
| البحث المتجه | ✅ pgvector | ❌ غير متاح |
| استعلامات الجغرافيا | ✅ PostGIS | ❌ MySQL مكاني أساسي |
| وظائف الحافة | ✅ مضمن | ❌ بحاجة إلى نشر منفصل |
بحلول الوقت الذي تضيف فيه Clerk للمصادقة وS3 للتخزين وPusher للوقت الفعلي وقاعدة بيانات متجهة منفصلة للبحث، تدير خمسة خدمات بدلاً من واحدة. فاتورتك أعلى وتعقيدك أعلى وسطح منطقة تصحيح الأخطاء ضخم.
PlanetScale أيضاً أوقفت طبقتهم المجانية (خطة Hobby) في أبريل 2024، لذا نقطة الدخول الآن 39 دولار/شهر لخطتهم Scaler. هذا أكثر تكلفة من Supabase Pro ويمنحك وظائف أقل.
Neon: اختيار الرغبة الصارمة
Neon هي قاعدة البيانات التي اخترتها إذا كنت بحاجة فقط إلى PostgreSQL وليس شيء آخر. البنية الخالية من الخادم الخاصة بهم مثيرة حقاً للإعجاب -- التوسع إلى الصفر يعني أنك لا تدفع شيئاً عندما لا يتم الاستعلام عن قاعدة البيانات الخاصة بك. ميزة الفروع الخاصة بهم ممتازة لنشرات المعاينة (إنشاء فرع قاعدة بيانات لكل PR).
يدعم Neon pgvector و PostGIS لأنه PostgreSQL قياسي. لذلك تحصل على البحث المتجه واستعلامات الجغرافيا. القدرات الأساسية لقاعدة البيانات متطابقة تقريباً مع Supabase.
لماذا اخترنا Supabase حتى الآن
Neon قاعدة بيانات. Supabase منصة. مع Neon، تحتاج إلى إضافة:
- المصادقة -- Clerk أو Auth0 أو بناء نفسك
- التخزين -- S3 أو Cloudflare R2 أو ما شابه
- الوقت الفعلي -- Pusher أو Ably أو خادم WebSocket مخصص
- وظائف الحافة -- النشر على Cloudflare Workers أو Vercel بشكل منفصل
بالنسبة لبعض الفرق، هذا النهج المعياري هو في الواقع أفضل. إذا كان لديك بالفعل آراء حول المصادقة (والميزانية لـ Clerk)، استخدم S3 لكل شيء، ولا تحتاج إلى الوقت الفعلي، فإن نهج Neon المركز يعني عدم وجود حبس البائع.
لكن بالنسبة لمشاريع تطوير headless الخاصة بنا، وجود المصادقة والتخزين والوقت الفعلي في لوحة معلومات واحدة برسم خرائط واحد مجموعة مفاتيح واحدة يستحق الكثير. سرعة مطور مهمة عند إرسال مشاريع العملاء على جداول زمنية ضيقة.
تسعير Neon أيضاً تنافسي: الطبقة المجانية تتضمن 0.5GB التخزين و 190 ساعة حساب/شهر. خطة Launch بـ 19 دولار/شهر تمنحك 10GB. لأداء قاعدة بيانات بحتة، إنها أفضل قيمة في PostgreSQL بدون خادم.
Turso: SQLite موجهة نحو الحافة
Turso تكنولوجيا رائعة. لقد أخذوا SQLite -- قاعدة البيانات الأكثر نشراً في العالم -- وجعلوها موزعة. بيانات حياتك على الحافة، بالقرب من مستخدميك، مما يعني أن زمن انتقال القراءة يمكن أن يكون منخفضاً بشكل لا يصدق (أقل من 10ms عالمياً).
حيث Turso تتألق
أحمال عمل ثقيلة على القراءة مع جماهير عالمية. إذا كنت تخدم محتوى لا يتغير بشكل متكرر لمستخدمين في جميع أنحاء العالم، فإن التكرار موجه الحافة من Turso يمنحك قراءات قاعدة بيانات تشعر بأنها فورية. ميزة الخيوط المضمنة الخاصة بهم تتيح لك حزم نسخة SQLite مباشرة في تطبيقك.
للمواقع الثابتة إلى حد ما التي تم بناؤها بـ Astro والتي تحتاج إلى طبقة بيانات خفيفة الوزن، Turso جذاب.
لماذا لم تناسب احتياجاتنا
أحمال عمل 100 ألف+ السجلات لدينا تتضمن كميات كبيرة من الكتابة -- التقديمات من المستخدمين والتحديثات الإدارية وإنشاء المراجعة والتغييرات في الوقت الفعلي في البيانات. نموذج الكتابة الوحيد من SQLite يصبح اختناق في الحجم. Turso تتعامل مع هذا بشكل أفضل من SQLite الخام من خلال叉 libSQL الخاص بهم، لكنها لا تزال لم تُصمم للتطبيقات التي تركز على الكتابة بـ 100 ألف+ سجل.
لا توجد بحث متجه. لا يوجد ما يعادل PostGIS. النظام البيئي المحدود مقارنة بـ PostgreSQL أو MySQL. بالنسبة لمشاريع الدليل و SaaS الخاصة بنا، كانت هذه عناصر صفقة.
مقارنة المميزات وجهاً لوجه
إليك جدول المقارنة الكامل بناءً على خبرتنا الإنتاجية والتقييمات اعتباراً من منتصف 2026:
| الميزة | Supabase | Firebase | PlanetScale | Neon | Turso |
|---|---|---|---|---|---|
| نوع قاعدة البيانات | PostgreSQL | NoSQL (Firestore) | MySQL (Vitess) | PostgreSQL | SQLite (libSQL) |
| المصادقة المضمنة | ✅ نعم | ✅ نعم | ❌ لا | ❌ لا | ❌ لا |
| البحث المتجه | ✅ pgvector | ❌ لا | ❌ لا | ✅ pgvector | ❌ لا |
| استعلامات الجغرافيا | ✅ PostGIS | ⚠️ محدود (Geohash) | ⚠️ MySQL مكاني أساسي | ✅ PostGIS | ❌ لا |
| الوقت الفعلي | ✅ نعم | ✅ نعم | ❌ لا | ❌ لا | ❌ لا |
| تخزين الملفات | ✅ نعم | ✅ نعم | ❌ لا | ❌ لا | ❌ لا |
| وظائف الحافة | ✅ مستندة إلى Deno | ✅ وظائف السحابة | ❌ لا | ❌ لا | ❌ لا |
| الالتحاق / العلاقات | ✅ SQL كامل | ❌ لا توجد جملات الالتحاق | ✅ SQL كامل | ✅ SQL كامل | ✅ SQL (محدود) |
| الفروع | ⚠️ عبر الترحيلات | ❌ لا | ✅ أصلي | ✅ أصلي | ❌ لا |
| التوسع إلى الصفر | ❌ لا | ✅ نعم | ✅ نعم | ✅ نعم | ✅ نعم |
| قابلية التنبؤ بالتسعير | 🟢 عالي (الطبقات المسطحة) | 🔴 منخفض (لكل قراءة) | 🟡 متوسط | 🟢 عالي | 🟢 عالي |
| مفتوح المصدر | ✅ نعم | ❌ لا | ❌ لا (Vitess هو) | ✅ نعم | ✅ نعم |
| قابل للاستضافة ذاتياً | ✅ نعم | ❌ لا | ❌ لا | ❌ لا | ✅ نعم |
معايير الأداء عند 100 ألف+ سجل
تأتي هذه الأرقام من مثيل Supabase الإنتاجي الخاص بنا (خطة Pro، منطقة us-east-1) مع 137 ألف صف في الجدول الأساسي. بالنسبة لقواعد البيانات الأخرى، أستخدم المعايير المنشورة وتقييمنا الاختبار مع 100 ألف سجل اصطناعي.
| نوع الاستعلام | Supabase | Firebase | PlanetScale | Neon | Turso |
|---|---|---|---|---|---|
| SELECT البسيط بواسطة المعرف | 3 ملي ثانية | 8 ملي ثانية | 4 ملي ثانية | 5 ملي ثانية | 1 ملي ثانية |
| استعلام مُصفَّى (بفهرس) | 12 ملي ثانية | 15 ملي ثانية | 10 ملي ثانية | 14 ملي ثانية | 3 ملي ثانية |
| JOIN معقد (3 جداول) | 35 ملي ثانية | N/A (لا توجد جملات الالتحاق) | 28 ملي ثانية | 38 ملي ثانية | 25 ملي ثانية |
| تشابه المتجه (أعلى 20) | 45 ملي ثانية | N/A | N/A | 42 ملي ثانية | N/A |
| نطاق الجغرافيا (10 كم) | 22 ملي ثانية | ~50 ملي ثانية (geohash) | N/A | 24 ملي ثانية | N/A |
| البحث الكامل للنص | 18 ملي ثانية | N/A (استخدم Algolia) | 15 ملي ثانية | 20 ملي ثانية | 12 ملي ثانية |
| إدراج كبير (1000 صف) | 180 ملي ثانية | 250 ملي ثانية | 150 ملي ثانية | 195 ملي ثانية | 320 ملي ثانية |
| البداية الباردة (بدون خادم) | N/A (دائماً قيد التشغيل) | ~100 ملي ثانية | ~50 ملي ثانية | ~300 ملي ثانية | ~20 ملي ثانية |
بعض الأشياء تبرز. أداء قراءة Turso استثنائية -- هذا الميزة SQLite في الحافة. محرك MySQL من PlanetScale يتعامل مع الالتحاق بشكل أسرع قليلاً من PostgreSQL في اختباراتنا. البداية الباردة من Neon ملحوظة (300 ملي ثانية) لأنها تحتاج إلى إيقاظ الحساب، على الرغم من أن الاستعلامات اللاحقة سريعة. عدم قدرة Firebase على القيام بالالتحاق يعني أنك حرفياً لا تستطيع تشغيل بعض هذه الاستعلامات.
حساب Supabase دائماً قيد التشغيل (لا توجد بيئة خالية من الخادم على Pro) يعني عدم وجود بدايات باردة، وهو أمر مهم للتطبيقات الموجهة للمستخدم حيث لا يمكن أن يكون الطلب الأول بطيئاً.
تفصيل الأسعار لأحمال عمل 100 ألف سجل
دعنا نشكل تطبيق واقعياً بـ 100 ألف سجل: موقع دليل بـ 100 ألف قائمة، 50 ألف مستخدم نشط شهرياً، ~ 2 مليون قراءة قاعدة بيانات/شهر، ~ 50 ألف كتابة/شهر، 5GB قاعدة بيانات، 10GB تخزين ملف.
| Supabase Pro | Firebase (Blaze) | PlanetScale Scaler | Neon Launch | Turso Scaler | |
|---|---|---|---|---|---|
| التكلفة الأساسية | $25/شهر | $0 (ادفع حسب الاستخدام) | $39/شهر | $19/شهر | $29/شهر |
| قاعدة البيانات | مضمن (8GB) | ~$18 (القراءات والكتابات) | مضمن (10GB) | مضمن (10GB) | مضمن (9GB) |
| المصادقة | مضمن (50 ألف MAU) | مضمن | +$25/شهر (Clerk) | +$25/شهر (Clerk) | +$25/شهر (Clerk) |
| التخزين (10GB) | مضمن | ~$3/شهر | +$2/شهر (R2) | +$2/شهر (R2) | +$2/شهر (R2) |
| الوقت الفعلي | مضمن | مضمن | +$25/شهر (Pusher) | +$25/شهر (Pusher) | +$25/شهر (Pusher) |
| الإجمالي المتوقع | $25/شهر | ~$21/شهر | ~$91/شهر | ~$71/شهر | ~$81/شهر |
يبدو Firebase رخيصاً حتى تدرك شيئين. أولاً، يفترض هذا التقدير أنماط القراءة قابلة للتنبؤ. لحظة فيروسية أو زحف روبوت يمكن أن تؤدي إلى قراءات بشكل مفاجئ -- وفاتورتك تتصاعد معها. ثانياً، بمجرد أن تحتاج ميزات مثل البحث المتجه، تضيف Pinecone أو Weaviate، والذي يبدأ بـ $70/شهر.
سعر Supabase المسطح البالغ 25 دولار/شهر لكل شيء -- قاعدة البيانات والمصادقة والتخزين والوقت الفعلي ووظائف الحافة -- قيمة رائعة جداً لهذا حجم العبء. تتضمن خطة Pro 8GB قاعدة بيانات و 250GB نطاق ترددي و 100GB تخزين و 50 ألف مستخدم نشط شهري للمصادقة.
أي قاعدة بيانات يجب أن تختار؟
إليك توصيتي الصريحة بناءً على بناء مع هذه الأدوات:
اختر Supabase إذا كنت تقوم ببناء تطبيق ويب ببيانات ارتباطية وتحتاج المصادقة + التخزين + الوقت الفعلي في منصة واحدة وتريد نظام بيئي PostgreSQL (pgvector وPostGIS والبحث الكامل عن النص) أو تقوم ببناء باستخدام Next.js. هذا يغطي ربما 80٪ من المشاريع التي نراها.
اختر Firebase إذا كنت تقوم ببناء تطبيق موجه للجوال حيث تهم مزامنة دون اتصال أو فريقك يعرف بالفعل نظام Firebase البيئي أو بيانات الخاصة بك بحق موجهة للمستند (رسائل الدردشة وتدفقات النشاط وملفات تعريف المستخدم البسيطة).
اختر PlanetScale إذا كان لديك فريق MySQL قوي وتحتاج فروع قاعدة بيانات لإدارة المخطط المعقد وتستخدم بالفعل خدمات منفصلة للمصادقة والتخزين. إنها قاعدة بيانات رائعة -- فقط ليس منصة كاملة.
اختر Neon إذا كنت تريد PostgreSQL بدون حمل المنصة وتفضل تجميع مكدسك من خدمات أفضل من فئتها أو تحتاج التوسع إلى الصفر لتحسين التكلفة في المشاريع منخفضة الحركة.
اختر Turso إذا كنت تقوم ببناء تطبيق ثقيل على القراءة وموزع عالمياً حيث تهم زمن انتقال الحافة أكثر من معدل الكتابة أو كنت تعمل مع Astro على مواقع موجهة للمحتوى.
بالنسبة لعملنا في Social Animal ببناء تطبيقات ويب بدون رأس، كانت Supabase الاختيار الصحيح. منصة الكل في واحد تعني تطوير أسرع وبنية أبسط وتكاليف قابلة للتنبؤ. لقد قمنا بتوسيع نطاقها إلى 253 ألف+ سجل دون تعثر. إذا كنت تخطط لمشروع بهذا الحجم وتريد الحديث عن البنية المعمارية، تواصل معنا -- لقد فعلنا هذا عدة مرات الآن.
الأسئلة الشائعة
هل Supabase جيدة للتطبيقات الكبيرة الحجم؟ نعم، وعندنا دليل إنتاجي لدعم ذلك. نحن نقوم بتشغيل 253 ألف+ سجل عبر خمسة مواقع إنتاجية على Supabase Pro. أداء الاستعلام تبقى متسقة -- أكثر الالتحاق تعقيداً مع البحث عن تشابه المتجه يعود في أقل من 50 ملي ثانية عند 137 ألف صف. يعمل Supabase على PostgreSQL القياسي، الذي يدعم التطبيقات بحجم أكبر بكثير من أي شيء سيقوم معظمنا ببناؤه. الجزء الذي يعود إلى حيث أعود منصة (المصادقة والتخزين والوقت الفعلي) أحدث، لكنه كان مستقراً بالنسبة لنا منذ أوائل 2024.
كيف يقارن تسعير Supabase مع Firebase بالحجم الكبير؟ Subabase أكثر قابلية للتنبؤ بكثير. خطتهم Pro هي $25/شهر مسطح تتضمن مصادقة لـ 50 ألف MAU و 8GB تخزين قاعدة بيانات و 250GB نطاق ترددي و 100GB تخزين ملف. Firebase تتقاضى لكل قراءة وكتابة وحذف مستند -- مما يجعل التكاليف عالية المتغيرة جداً. تطبيق 100 ألف سجل مع 2 مليون قراءة شهرية يمكن أن يكلف في أي مكان من 15 دولار إلى 200 دولار+ على Firebase حسب أنماط الاستعلام. رأينا فواتير Firebase تتضاعف ثلاثة أضعاف بين عشية وضحاها عندما تحصل صفحة على مشاركة على وسائل التواصل الاجتماعي.
هل يمكن لـ PlanetScale التعامل مع 100 ألف+ سجل؟ بالتأكيد. يقوم PlanetScale بتشغيل Vitess، الذي يدعم أحمال العمل على مستوى YouTube. لأداء قاعدة بيانات خام بـ 100 ألف سجل، PlanetScale ممتازة. القيد ليس الحجم -- إنه الاكتمال. ستحتاج إلى إضافة خدمات منفصلة للمصادقة والتخزين والتحديث في الوقت الفعلي والبحث المتجه. يضيف ذلك كلاً من التكلفة ($90+/شهر الإجمالي) والتعقيد المعماري مقابل نهج Supabase الكل في واحد.
ما هو pgvector ولماذا يهم؟ pgvector هو ملحق PostgreSQL يخزن ويستعلم عن تضمين المتجه مباشرة في قاعدة البيانات الخاصة بك. هذا يمكّن البحث الدلالي -- يمكن للمستخدمين البحث حسب المعنى بدلاً من الكلمات الرئيسية الدقيقة. لدليل بـ 100 ألف+ قائمة، يعني البحث عن "مطاعم صديقة للأطفال" يمكن أن يعود النتائج المصنفة كـ "مطعم عائلي" أو "إفطار نهاية الأسبوع" حتى لو لم تطابق تلك الكلمات. بدون pgvector، ستحتاج قاعدة بيانات متجهة منفصلة مثل Pinecone ($70+/شهر) وتتعامل مع الحفاظ على مزامنة قاعدتي البيانات.
هل Firebase Firestore جيدة لمواقع الدليل؟ بصراحة، لا. مواقع الدليل ارتباطية بطبيعتها. القوائم تنتمي إلى الفئات وتحتوي على علامات وتستقبل المراجعات من المستخدمين وتحتاج تصفية معقدة ("أرني المطاعم ضمن 5 أميال مع 4+ نجوم وهي مفتوحة الآن"). لا يمكن لـ Firestore القيام بالالتحاق وتحتوي على عاملات استعلام محدودة وتتقاضى لكل قراءة مستند -- مما يعني استعلامات مصفاة معقدة تصبح مكلفة بسرعة. قيمنا Firestore لمشروع دليل وقدرنا 4 أضعاف وقت التطوير مقابل Supabase بسبب إلغاء المعايير وحل المشاكل الجانبية للعميل.
هل يجب أن أستخدم Neon أو Supabase لتطبيق Next.js الخاص بي؟ إذا كنت بحاجة إلى قاعدة بيانات فقط، يوفر Neon قيمة أفضل (الطبقة المجانية سخية جداً، وخطة Launch بـ 19 دولار/شهر صلبة). إذا كنت بحاجة إلى المصادقة والتخزين والوقت الفعلي أو وظائف الحافة -- وهو ما يتطلبه معظم تطبيقات Next.js الإنتاجية -- فإن Supabase توفر عليك من دمج والدفع لخدمات منفصلة متعددة. نحن نستخدم Supabase لـ مشاريع تطوير Next.js الخاصة بنا لأن المصادقة المتكاملة والتخزين قطع أسابيع من أوقات المشروع النموذجية.
ما أفضل قاعدة بيانات لمواقع تحسين محركات البحث البرمجية؟ Subabase PostgreSQL. مواقع تحسين محركات البحث البرمجية توليد آلاف الصفحات من البيانات المنظمة، مما يعني أنك بحاجة استعلامات سريعة وفهرسة جيدة والقدرة على التعامل مع علاقات بيانات معقدة. لقد قمنا ببناء مواقع تحسين محركات البحث البرمجية على Supabase التي توليد 10 ألف+ صفحة من قاعدة بيانات واحدة -- PostGIS لصفحات الموقع وpgvector للمحتوى ذي الصلة والبحث الكامل عن النص للتصفية الديناميكية. التسعير المسطح يعني زيادات حركة المرور من فهرسة Google لا تفجر فاتورتك.
هل Turso (libSQL) جاهزة لتطبيقات ويب الإنتاج؟ بالنسبة للتطبيقات الثقيلة على القراءة، نعم. SQLite المكررة من Turso في الحافة تمنحك قراءة دون اتصال بسرعة فائقة عالمياً، وهي مذهلة لمواقع موجهة للمحتوى. لكن بالنسبة للتطبيقات الثقيلة على الكتابة بـ 100 ألف+ سجل -- مثل الدلائل حيث يقدم المستخدمون البيانات واللوحات الإدارية تعالج التحديثات والمراجعات تأتي باستمرار -- نموذج SQLite الفردي المكتوب يصبح محدوداً. نوصي بـ Turso لمواقع المحتوى المبنية مع Astro و Supabase أو Neon للتطبيقات الديناميكية مع أحمال عمل كتابة كبيرة.