node-postgres (pg)، وتُشغّله محليًا باستخدام wrangler dev، وأخيرًا تنشره على workers.dev.
المتطلبات الأساسية
- حساب Cloudflare. تتوفر خدمة Hyperdrive ضمن خطتَي Workers المجانية والمدفوعة.
- Node.js الإصدار 20 أو أحدث. اختُبر هذا الدليل باستخدام Node.js 24.21.0 وWrangler 4.145.0 و
create-cloudflare2.73.1 وpg8.23.1 وPostgres 18. - حساب ClickHouse Cloud.
psql، لإنشاء قاعدة البيانات والجدول. ويمكنك أيضًا تنفيذ عبارات SQL من خلال SQL console.
إنشاء خدمة ClickHouse Managed Postgres
في وحدة تحكم ClickHouse Cloud، انقر على New service ثم اختر Postgres. سيكون المثيل جاهزًا في غضون دقائق قليلة. للاطلاع على شرح مفصّل للخطوات، راجع دليل البدء السريع.الحصول على بيانات الاتصال
انقر على Connect في الشريط الجانبي الأيسر لخدمتك. أبقِ الخيار Directly محددًا وفعّل Use SSL. سينتهي عنوان URL عندئذٍ بـsslmode=verify-full&sslrootcert=<service-name>-ca-certificate.pem. انقر على Download CA certificate لتنزيل شهادة CA الخاصة بالمثيل. ويمكنك أيضًا تنزيلها من Settings → CA Certificate.
يوجّه هذا الدليل Hyperdrive إلى الاتصال المباشر على المنفذ 5432، لا إلى PgBouncer المدمج على المنفذ 6432، وذلك للأسباب التالية:
- Hyperdrive هو في حد ذاته أداة لتجميع الاتصالات تعمل في وضع المعاملات؛ إذ يحتفظ بمجمّع صغير من الاتصالات طويلة الأمد بقاعدة البيانات ويتشاركها بين جميع طلبات Worker، وهي المهمة التي كان PgBouncer سيتولاها في غير هذه الحالة. وتوصي Cloudflare بتزويد Hyperdrive بسلسلة اتصال مباشرة بدلًا من سلسلة اتصال عبر مجمّع.
- يمكن أيضًا توجيه Hyperdrive إلى المنفذ
6432، غير أن ربط أداتَي تجميع تعملان في وضع المعاملات على التوالي يضيف قفزة شبكية وموضعًا ثانيًا لضبط أحجام المجمّعات، دون أن يزيد السعة. - يفتح Hyperdrive ما يصل إلى نحو 20 اتصالًا لكل تهيئة في خطة Workers Free، ونحو 100 اتصال في الخطة المدفوعة، وهو ما يقع ضمن القيمة الافتراضية لـ
max_connectionsالبالغة 500. وإذا كانت لديك عدة تهيئات لـ Hyperdrive أو عملاء آخرون على المثيل نفسه، فاجمع عدد اتصالاتهم، واضبطmax_connectionsفي الإعدادات أو حد اتصالات المصدر في Hyperdrive عند الحاجة.
إذا كنت تستخدم قائمة الوصول حسب عناوين IP، فاحرص على السماح بـ نطاقات عناوين IP الخاصة بـ Cloudflare، لأن Hyperdrive يتصل منها.
إنشاء قاعدة البيانات
أعد تسمية الشهادة التي نزّلتها إلىca-certificate.pem، ثم أنشئ قاعدة بيانات وجدولًا باسم notes. استبدل <PASSWORD> والمضيف بالقيم المعروضة في نافذة Connect:
إنشاء مشروع Worker
أنشئ Worker بلغة TypeScript من القالب “Hello World” باستخدامcreate-cloudflare، ثم ثبّت pg:
ca-certificate.pem إلى دليل مشروعك. وإذا لم يسبق لك استخدام Wrangler، فشغّل npx wrangler login لمنحه صلاحية الوصول إلى حسابك في Cloudflare.
إنشاء تهيئة Hyperdrive
يشفّر Hyperdrive الاتصال بقاعدة بياناتك دائمًا، لكنه افتراضيًا لا يتحقق من الشهادة مقابل الـ CA الخاص بالمثيل. وللحصول على سلوك مكافئ لـsslmode=verify-full، حمّل أولًا شهادة الـ CA إلى حسابك على Cloudflare:
ID الواردة في الإخراج لإنشاء تهيئة Hyperdrive. تستخدم سلسلة الاتصال المنفذ 5432 وقاعدة البيانات guide_cloudflare، دون أي معلمات SSL؛ إذ يتولى الخياران --sslmode و--ca-certificate-id تهيئة TLS عوضاً عنها:
--sslmode verify-full، يتحقق من أن شهادة الخادم موقّعة من قِبل الـ CA الذي رفعته، ومن أنها تطابق اسم المضيف. وإذا فشل أيٌّ من هذين الفحصين، يفشل الأمر ويعرض خطأً مثل cert verification failed - unable to get local issuer certificate، ولا تُنشأ أي تهيئة. تُخزَّن كلمة المرور في تهيئة Hyperdrive ضمن حسابك على Cloudflare، لا في مشروعك.
يضيف الخياران --binding HYPERDRIVE --update-config التهيئة إلى wrangler.jsonc، ليتمكن الـ Worker الخاص بك من الوصول إليها عبر env.HYPERDRIVE. أما إذا كان مشروعك يستخدم wrangler.toml، فلن يعدّل Wrangler الملف؛ وعليك بدلاً من ذلك لصق مقتطف [[hyperdrive]] الذي يطبعه الأمر فيه يدوياً.
تهيئة الـ Worker
تحتاج مكتبةpg إلى طبقة التوافق مع Node.js. افتح الملف wrangler.jsonc وأضف العلامة nodejs_compat إلى جانب compatibility_date، ليصبح الجزء المعني من الملف على النحو التالي:
wrangler.jsonc
wrangler.toml، فأضف compatibility_flags = ["nodejs_compat"] أسفل compatibility_date. وإذا كان الملف يحتوي أصلاً على compatibility_flags، فأضف nodejs_compat إلى القائمة.
أعد توليد أنواع TypeScript ليصبح نوع env.HYPERDRIVE معرَّفاً صراحةً:
@cloudflare/workers-types، فسيعرض الأمر wrangler types كيفية الانتقال إلى الأنواع المُولَّدة.
الاستعلام عن قاعدة البيانات
استبدل محتوىsrc/index.ts بـ Worker يُنشئ ملاحظة عند استقبال POST /notes ويستعرض جميع الملاحظات عند استقبال GET /notes. أما إذا كان لديك Worker قائم، فأضف بدلًا من ذلك المعالجة نفسها للمسار /notes إلى معالج fetch الخاص بك:
src/index.ts
env.HYPERDRIVE.connectionString إلى Hyperdrive، لا إلى المثيل الخاص بك. يظل الاتصال بين Worker وHyperdrive داخل شبكة Cloudflare، ولذلك لا يحتاج إلى معلمات SSL. أما اتصال TLS الموثَّق مع Postgres فيتولاه Hyperdrive.
يعمل Hyperdrive في وضع المعاملات (transaction mode)، على غرار PgBouncer، أي أن كل معاملة قد تستخدم اتصالًا مختلفًا مع Postgres. وتعمل جميع الاستعلامات ذات المعلمات والمعاملات والعبارات المُعدّة مسبقًا المُسمّاة من
pg دون مشكلات. لا تعتمد على حالة الجلسة، مثل SET على مستوى الجلسة، بين استعلام وآخر، بل استخدم SET LOCAL داخل معاملة.التشغيل محليًا
يشغّل الأمرwrangler dev الـ Worker على جهازك. أما في البيئة المحلية، فلا يستخدم Hyperdrive مجمّع اتصالات، بل يتصل الربط (binding) مباشرةً بقاعدة البيانات المحددة في CLOUDFLARE_HYPERDRIVE_LOCAL_CONNECTION_STRING_<BINDING>. اضبط هذا المتغير على سلسلة الاتصال المباشر مع sslmode=verify-full ومسار شهادة CA، ثم شغّل الـ Worker:
sslrootcert نسبةً إلى الدليل الذي تشغّل منه الأمر wrangler dev.
في نافذة طرفية ثانية، أنشئ ملاحظة:
pg الأعمدة من النوع bigint في صورة سلاسل نصية، لذا تكون قيمة id هي "1" وليست 1.
النشر
انشر العامل:workers.dev. أنشئ ملاحظة باستخدام الـ Worker الذي نشرته:
https://hyperdrive-notes.<your-subdomain>.workers.dev/notes في متصفحك لعرض الملاحظتين. ستظهر الاستجابة على النحو التالي:
التحقق في وحدة التحكم
افتح SQL console من الشريط الجانبي الأيسر لخدمتك، ووسّعguide_cloudflare ثم public، ثم انقر على جدول notes. ستظهر الملاحظتان كلتاهما:
التنظيف
لإزالة ما أنشأته في حسابك على Cloudflare، احذف الـ Worker وتهيئة Hyperdrive وشهادة CA:wrangler cert delete رسالة الخطأ Certificate cannot be deleted while in use، فانتظر دقيقة بعد حذف تهيئة Hyperdrive، ثم أعِد تشغيله.
الخطوات التالية
- الاتصال: سلاسل الاتصال، وPgBouncer، وTLS
- الإعدادات: معلمات Postgres مثل
max_connections - النسخ المتماثلة للقراءة: توسيع نطاق حركة مرور القراءة
- وثائق Hyperdrive: التخزين المؤقت للاستعلامات، وضبط مجمّع الاتصالات، وإمكانية المراقبة