حلّت الحوسبة بدون خادم مشكلة «لا خوادم لإدارتها» بالنسبة لكود التطبيق، لكن قواعد البيانات ظلّت الاستثناء المُحرج. كان بإمكانك تشغيل Worker على الحافة في أجزاء من الثانية، ثم مشاهدته ينتظر قاعدة بيانات موجودة في منطقة واحدة بعيدة. وتسدّ Cloudflare D1 تلك الفجوة: إنها قاعدة بيانات SQL حقيقية، مبنية على SQLite، تعيش على شبكة Cloudflare وترتبط مباشرةً بـ Workers الخاصة بك. تكتب SQL عاديًا، ولا تُحتسب عليك إلا الاستعلامات التي تشغّلها فعليًا.
يشرح هذا الدليل ما هي D1، وكم تكلّف، وكيف تستعلم منها من Worker، ومتى تلجأ إليها بدلًا من KV أو قاعدة بيانات Postgres تقليدية.
باختصار
- D1 قاعدة بيانات SQL بدون خادم مبنية على SQLite، مرتبطة مباشرةً بـ Cloudflare Workers
- الخطة المجانية سخية: 5 ملايين صف مقروء و100,000 صف مكتوب يوميًا، إضافةً إلى 5 GB تخزين
- تُحتسب عليك الصفوف المقروءة والمكتوبة، لا وقت التشغيل: قواعد البيانات الخاملة لا تكلّف شيئًا
- تستخدم SQL مألوفًا مع عبارات مُعدّة مسبقًا، فلا يوجد تقريبًا أي منحنى تعلّم
- تتكامل مع بقية المنصة، Workers AI وR2 وKV، لبناء تطبيقات كاملة
- أدِر قواعد بياناتك بصريًا بتطبيق سطح المكتب المجاني Easy Cloudflare D1
ما هي Cloudflare D1
Cloudflare D1 قاعدة بيانات مُدارة وبدون خادم: مخزن SQL علائقي مبني على SQLite، أحد أكثر محرّكات قواعد البيانات اختبارًا في العالم. وتعني «بدون خادم» هنا أنك لا تُجهّز مطلقًا نسخة، ولا تختار حجمًا، ولا تُبقي شيئًا قيد التشغيل. تنشئ قاعدة بيانات، وتربطها بـ Worker، وتشغّل SQL. وتتولّى Cloudflare التخزين والمتانة وتوسيع النطاق.
ولأنها تتحدث SQL القياسي، تبدو D1 مألوفة فورًا لأي شخص استخدم قاعدة بيانات علائقية. تعرّف الجداول، وتكتب عبارات SELECT وINSERT وUPDATE وDELETE، وتنشئ الفهارس، وتستخدم المعاملات. الفرق تشغيلي: لا يوجد تجمّع اتصالات للضبط، ولا خادم للترقيع، ولا تكلفة في الخمول.
أسعار Cloudflare D1 والخطة المجانية
نموذج فوترة D1 غير معتاد بأفضل طريقة: تدفع مقابل الاستعلامات، مُقاسةً بالصفوف المقروءة والمكتوبة، لا مقابل الوقت. قاعدة البيانات الخاملة لا تكلّف شيئًا لأنه لا توجد نسخة قيد التشغيل. ومن أسعار D1 الرسمية لعام 2026:
خطة Workers المجانية
| المورد | الحد اليومي |
|---|---|
| الصفوف المقروءة | 5 ملايين يوميًا |
| الصفوف المكتوبة | 100,000 يوميًا |
| التخزين | 5 GB إجمالًا |
خطة Workers المدفوعة
| المورد | مُضمَّن، ثم |
|---|---|
| الصفوف المقروءة | أول 25 مليار / شهريًا، ثم 0.001 دولار لكل مليون |
| الصفوف المكتوبة | أول 50 مليون / شهريًا، ثم 1.00 دولار لكل مليون |
| التخزين | أول 5 GB، ثم 0.75 دولار لكل GB-شهر |
لا توجد رسوم نقل بيانات أو خروج. تفصيل مفيد للتحسين: يمكن للفهارس أن تقلّل بشكل كبير قراءات الصفوف القابلة للفوترة بجعل الاستعلامات تمسح صفوفًا أقل، مقابل زيادة طفيفة في حجم الكتابة. وبالنسبة لأعباء العمل كثيرة القراءة، تُبقي الفهرسة الجيدة كلًّا من زمن استجابتك وفاتورتك منخفضًا.
الاستعلام من D1 من Worker
تربط قاعدة بيانات D1 في wrangler.toml، ثم تصل إليها عبر env.DB. تستخدم D1 عبارات مُعدّة مسبقًا، تحافظ على استعلاماتك آمنة من حقن SQL بفصل نص الاستعلام عن القيم.
1export default {
2 async fetch(request, env) {
3 // Read with a parameterised query
4 const { results } = await env.DB
5 .prepare("SELECT id, title FROM posts WHERE published = ? ORDER BY created_at DESC LIMIT 10")
6 .bind(1)
7 .all();
8
9 return Response.json(results);
10 },
11};
يتبع إدراج البيانات النمط نفسه:
1await env.DB
2 .prepare("INSERT INTO posts (title, body, published) VALUES (?, ?, ?)")
3 .bind("Hello D1", "My first edge database post", 1)
4 .run();
يمكنك أيضًا تجميع عدة عبارات لتشغيلها بكفاءة في جولة واحدة ذهابًا وإيابًا، وهو النهج الموصى به عندما يكون لديك عدة عمليات كتابة مترابطة.
Cloudflare D1 مقابل KV مقابل Postgres
اختيار البدائية التخزينية الصحيحة مهم. وإليك كيف تُقارن D1 بالاثنتين اللتين يُوازَن بهما الأكثر.
| الحاجة | الخيار الأفضل | لماذا |
|---|---|---|
| بيانات علائقية، استعلامات، عمليات ربط | D1 | SQL حقيقي مع جداول وفهارس ومعاملات |
| عمليات بحث مفتاح-قيمة بسيطة، تهيئة، تخزين مؤقت | KV | مُحسَّن لقراءات سريعة لمفتاح واحد على الحافة |
| عبء عمل علائقي كبير قائم، امتدادات معقدة | Postgres (مثلًا عبر Hyperdrive) | محرّك ناضج لأعباء العمل الثقيلة والغنية بالميزات |
باختصار: استخدم KV عندما تحتاج فقط إلى جلب قيمة بمفتاح بأسرع ما يمكن. استخدم D1 عندما تكون بياناتك علائقية وتريد الاستعلام عنها بـ SQL. والجأ إلى قاعدة بيانات Postgres كاملة (التي يمكن لـ Workers الاتصال بها، مُسرَّعة بـ Hyperdrive) عندما يكون لديك عبء عمل علائقي كبير وراسخ أو تحتاج إلى ميزات خاصة بـ Postgres لا يوفّرها SQLite.
متى تكون Cloudflare D1 الخيار الصحيح
تُعدّ D1 ملائمة بامتياز عندما:
- تكون بياناتك علائقية وتستفيد من استعلامات SQL وعمليات الربط والفهارس
- تبني على Workers وتريد قاعدة بياناتك على المنصة نفسها
- يكون عبء عملك متقطعًا أو من منخفض إلى معتدل، فيتفوّق الدفع لكل استعلام على نسخة تعمل دائمًا
- تريد صفر عبء تشغيلي: لا تجهيز ولا ترقيع ولا تجميع اتصالات
- تكتفي بمجموعة ميزات SQLite، التي تغطّي الغالبية العظمى من احتياجات التطبيقات
وهي أقل ملاءمة لمجموعات البيانات الضخمة جدًا التي تتجاوز حدودها، أو لأعباء العمل التي تعتمد على امتدادات خاصة بـ Postgres. لتلك، اربط بدلًا من ذلك قاعدة بيانات مخصّصة من Worker الخاص بك.
حالة استخدام واقعية
تطبيق D1 نموذجي: مدوّنة أو خلفية SaaS صغيرة حيث يخدم Worker الطلبات، ويستعلم عن المنشورات أو سجلّات المستخدمين من D1، ويخزّن الملفات والصور المرفوعة في R2 ، ويخزّن القيم الساخنة مؤقتًا في KV، ويستدعي اختياريًا Workers AI لميزة مثل التلخيص. كل شيء يعمل على منصة واحدة، على الحافة، بلا خوادم وبفاتورة تتوسّع مع الاستخدام الفعلي. وهذا هو نمط البنية نفسه وراء نظام مستخدمي Cloudflare Pages الذي بنيته.
إدارة D1 بصريًا
تشغيل عمليات الترحيل وفحص البيانات عبر سطر الأوامر أمر مقبول، لكن العميل الرسومي يجعل العمل اليومي أسرع. يتيح لك تطبيق سطح المكتب المجاني Easy Cloudflare D1 تصفّح قواعد البيانات والجداول، وتشغيل الاستعلامات، وإدارة بيانات D1 من واجهة نظيفة على Windows وmacOS وLinux، مع تشفير بيانات اعتمادك محليًا على جهازك الخاص. وإذا كانت حزمتك تقرن D1 بـ KV للتخزين المؤقت، فإن تطبيقي المجاني Easy Cloudflare KV يقدّم الشيء نفسه لمساحات أسماء المفتاح-القيمة الخاصة بك.
أهم النقاط
- D1 قاعدة بيانات SQL بدون خادم مبنية على SQLite، مرتبطة مباشرةً بـ Cloudflare Workers
- تغطّي الخطة المجانية 5 ملايين قراءة و100,000 كتابة يوميًا مع 5 GB تخزين
- الفوترة لكل صف مقروء ومكتوب، لا لكل ساعة؛ قواعد البيانات الخاملة لا تكلّف شيئًا
- تستخدم SQL قياسيًا مع عبارات مُعدّة مسبقًا آمنة، فمنحنى التعلّم ضئيل
- استخدم KV لعمليات البحث مفتاح-قيمة، وD1 لـ SQL العلائقي، وPostgres مخصّصًا لأعباء العمل الثقيلة أو الخاصة بالامتدادات
- تتحد D1 مع R2 وKV وWorkers AI لبناء تطبيقات حافة كاملة
الأسئلة الشائعة
ما هي Cloudflare D1؟ D1 قاعدة بيانات SQL بدون خادم مبنية على SQLite تعمل على شبكة Cloudflare وترتبط مباشرةً بـ Workers. تكتب SQL قياسيًا ولا تُجهّز مطلقًا خادمًا أو تديره. وتتولّى Cloudflare التخزين والمتانة وتوسيع النطاق.
هل Cloudflare D1 مجانية؟ توجد خطة مجانية ضمن خطة Workers المجانية: 5 ملايين صف مقروء و100,000 صف مكتوب يوميًا، مع 5 GB تخزين. تعمل كثير من التطبيقات الصغيرة بالكامل ضمن هذه الحدود. وترفع خطة Workers المدفوعة الكميات المُضمَّنة بشكل كبير.
كيف تُسعَّر D1؟ تدفع مقابل الصفوف المقروءة والمكتوبة، لا مقابل وقت التشغيل. في الخطة المدفوعة، تكون أول 25 مليار صف مقروء و50 مليون صف مكتوب شهريًا مُضمَّنة، ثم تصبح 0.001 دولار لكل مليون قراءة و1.00 دولار لكل مليون كتابة، مع التخزين بسعر 0.75 دولار لكل GB-شهر بعد أول 5 GB. لا توجد رسوم خروج.
ما الفرق بين D1 وKV؟ KV مخزن مفتاح-قيمة مُحسَّن لقراءات سريعة لمفتاح واحد، مثالي للتخزين المؤقت والتهيئة. وD1 قاعدة بيانات SQL علائقية للبيانات المنظَّمة التي تريد الاستعلام عنها بعمليات الربط والفهارس والمعاملات. استخدم KV للبحث بالمفتاح، وD1 للاستعلامات العلائقية.
هل يمكن لـ D1 أن تحلّ محل Postgres؟ بالنسبة لكثير من التطبيقات الصغيرة إلى المتوسطة، نعم، لأن SQLite تغطّي الاحتياجات العلائقية الشائعة. أما لمجموعات البيانات الضخمة جدًا، أو أعباء الكتابة المتزامنة الثقيلة، أو الامتدادات الخاصة بـ Postgres، فإن قاعدة بيانات Postgres مخصّصة مُتصلة من Worker الخاص بك (مُسرَّعة بـ Hyperdrive) هي الخيار الأفضل.
كيف أستعلم من D1 من Worker؟ اربط قاعدة البيانات في تهيئة wrangler الخاصة بك وصِل إليها عبر env.DB. استخدم عبارات مُعدّة مسبقًا بمعاملات مربوطة، مثل env.DB.prepare(“SELECT … WHERE id = ?”).bind(id).all()، ما يحافظ على الاستعلامات آمنة من حقن SQL.
التعليقات