ربط Directus بقواعد البيانات الحالية لإنشاء لوحة تحكم وواجهات برمجة تطبيقات (API) فوراً

Computing/Software8분 읽기

TuBrief 편집팀 원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다. 원본 영상: هذه الأداة تحول قاعدة بيانات SQL إلى خلفية برمجية فوراً (Directus) · Better Stack

بالنسبة للشركات الناشئة في مراحلها الأولى التي تواجه صعوبة في توظيف المطورين أو تتحمل تكاليف تطوير خارجية باهظة، يمثل بناء الواجهة الخلفية (Backend) حاجزاً كبيراً. Directus هو أداة تتيح لك الإبقاء على قاعدة بيانات SQL الحالية كما هي، مع تركيب واجهة مستخدم للإدارة وطبقة API فوقها مباشرة. قمنا بتلخيص طرق تصميم محددة لإنشاء بيئة تدير البيانات التشغيلية بأمان وتتكامل مع الخدمات الخارجية دون كتابة سطر برمج واحد.

التحكم في الحقول وإعدادات الصلاحيات لحماية البيانات الأصلية

يقوم Directus بقراءة مخطط (Schema) قاعدة البيانات في الوقت الفعلي، لكنه لا يغير الهيكل الأصلي قسراً. وللحفاظ على سلامة قاعدة البيانات قيد التشغيل مع زيادة سهولة الإدارة، يجب استخدام الحقول الافتراضية (Virtual Fields) التي تعمل فقط في واجهة المستخدم ولا توجد في الجداول الفعلية. على سبيل المثال، يمكن معالجة العلاقات المعقدة والمتشابكة بين عدة جداول لتظهر كقائمة منسدلة بسيطة في واجهة المستخدم.

ولمنع تسرب البيانات، يجب تطبيق التحكم في الوصول القائم على الأدوار (RBAC) بدقة على مستوى الأعمدة. القيم مثل هاش كلمات مرور العملاء أو منطق التسوية المالية الداخلي يتم إخفاؤها تماماً حتى عن شاشة المسؤول ما لم تكن لديه صلاحيات محددة. أما البيانات التي لا يجب تغييرها بمجرد تسجيلها، مثل تاريخ الاشتراك أو مبالغ الدفع، فيتم قفلها كـ "للقراءة فقط" لمنع تزوير البيانات عن طريق الخطأ.

من الممكن أيضاً إعداد صلاحيات مشروطة بناءً على قواعد العمل:

  • اختر سياسة الصلاحيات لعمود معين من قائمة إعدادات الأدوار.
  • في تبويب الشروط، أضف قاعدة مثل "إذا كانت حالة الطلب: قيد الشحن".
  • قم بإعداد سحب صلاحية التعديل لعمود السعر عندما يتحقق هذا الشرط.

بهذه الإعدادات، يمكنك منع وقوع حوادث يقوم فيها موظفو الدعم أو التشغيل بتغيير سعر منتج هو بالفعل في مرحلة الشحن.

تنفيذ منطق العمل والأتمتة بدون كود

بعيداً عن مجرد إدخال وإخراج البيانات، يمكن تصميم المنطق الذي يعمل فقط في ظروف معينة بصرياً باستخدام ميزة Flows. وفقاً لدراسة أجرتها شركة Forrester Consulting عام 2022، يمكن أن يؤدي اعتماد أتمتة الـ Low-code هذه إلى تقليل التكاليف التشغيلية بنسبة تصل إلى 30%. وبدون الحاجة لإنشاء وظائف بدون خادم (Serverless functions) بشكل منفصل، يمكنك ضمان استقرار المعاملات من خلال ربط العقد (Nodes) بشكل بديهي.

لمنع إدخال الطلبات عند نفاذ المخزون، يتم استخدام مشغل تصفية (Filter Trigger) يعمل مباشرة قبل كتابة البيانات في قاعدة البيانات. إذا قمت بالتحقق من المخزون الحالي في عقدة النص البرمجي (Script Node) وأثارت خطأً في حالة النقص، فسيتم إلغاء العملية برمتها ولن تبقى أي بيانات خاطئة.

إليك ترتيب تكوين تدفق الأتمتة:

  • قم بإنشاء تدفق جديد من قائمة Flows واختر المشغل كـ Filter (Blocking).
  • أضف عقدة شرطية لإنشاء نقاط تفرع بناءً على مستوى العميل أو حالة الدفع.
  • اربط عقدة نص برمجية لكتابة منطق معقد لحساب الخصومات أو التحقق من المخزون باستخدام JavaScript.

التكامل مع واجهات برمجة التطبيقات الخارجية وإدارة الأمن

يصبح Directus مركزاً لتبادل البيانات مع الخدمات الخارجية مثل رسائل الإشعارات أو وحدات الدفع. وللأمان، لا يتم وضع مفاتيح API في الكود المصدري، بل يتم تسجيلها وإدارتها في متغيرات بيئة Directus. هذا يمنع حوادث خلط مفاتيح التطوير مع مفاتيح التشغيل الفعلي عن طريق الخطأ.

عند إعداد Webhook لاستقبال إشارات اكتمال الدفع، يكون التحقق الأمني هو الأساس. إذا لم تقم بمطابقة قيم الرأس السري (Secret Header) المرسلة من Toss Payments أو Stripe، فقد يرسل شخص ما إشارة دفع مزيفة لإتمام الطلب بنجاح. أيضاً، يجب تفعيل الإعدادات غير المتزامنة (Asynchronous) لتقديم استجابة فورية للخدمة الخارجية ومعالجة المنطق الداخلي في الخلفية لتقليل الحمل على النظام.

طريقة بناء نظام تكامل الدفع:

  • أنشئ مشغل Webhook لفتح نقطة نهاية (Endpoint) وفعّل الخيار غير المتزامن.
  • في عقدة الشرط، تحقق مما إذا كان الرأس السري المرسل من الخدمة الخارجية يتطابق مع متغيرات البيئة الخاصة بك.
  • اربط عقدة تحديث العناصر (Item Update) لتعكس معرف الطلب القادم من الخارج في عمود حالة الطلب بقاعدة بياناتك.

التخزين المؤقت وتحسين الأداء استعداداً لزيادة حركة المرور

إذا زاد عدد المستخدمين وأصبحت استجابة API بطيئة، يجب ضبط إعدادات البنية التحتية. يمتلك Directus آلية تخزين مؤقت (Caching) قوية بداخله. بالنسبة للإعلانات أو فئات المنتجات التي لا تتغير كثيراً، فإن ضبط وقت صلاحية الكاش لمدة ساعة واحدة فقط يمكن أن يقلل سرعة الاستجابة إلى أجزاء من الثانية.

ما يحدد سرعة الاستعلام في النهاية هو الفهارس (Indexes). بدءاً من Directus v11، يمكنك إضافة فهارس قاعدة البيانات مباشرة من شاشة المسؤول. مجرد وضع فهرس على الأعمدة التي تُستخدم بكثرة في البحث أو الفرز يقلل الحمل على قاعدة البيانات بشكل كبير.

خطوات تنفيذ تحسين الأداء:

  • فعّل الكاش في ملف متغيرات البيئة وامنح وقتاً للصلاحية للبيانات التي يكثر طلبها.
  • في إعدادات نموذج البيانات، أنشئ فهارس للأعمدة التي تخضع للتصفية المتكررة.
  • اربط قاعدة بيانات نسخة احتياطية للقراءة فقط (Read-only Replica) لتوزيع ومعالجة طلبات الاستعلام بشكل منفصل.

النسخ الاحتياطي التلقائي وتتبع السجلات للتعافي من الكوارث

يتم تتبع المشكلات التي تحدث أثناء التشغيل من خلال السجلات (Logs). يسجل Directus جميع سجلات تغيير البيانات، لذا يمكنك معرفة من قام بتغيير أي قيمة وفي أي وقت بنظرة واحدة. ومع ذلك، إذا تراكمت السجلات بشكل كبير، فقد تشغل مساحة قاعدة البيانات، لذا يفضل تحديد فترة احتفاظ وفقاً لسياسات العمل.

ولمواجهة الحالات التي يتوقف فيها النظام بالكامل، يجب توفير نظام نسخ احتياطي تلقائي. أضف حاوية (Container) مخصصة للنسخ الاحتياطي في إعدادات Docker Compose لإرسال لقطة (Snapshot) من قاعدة البيانات يومياً في الفجر إلى مخزن سحابي خارجي.

طريقة بناء النسخ الاحتياطي التلقائي:

  • أضف خدمة صورة النسخ الاحتياطي إلى ملف Docker Compose.
  • استخدم تعبير Cron لجدولتها في وقت تقل فيه حركة المرور، مثل الساعة 2 فجراً يومياً.
  • اربط معلومات AWS S3 Bucket ومفاتيح الوصول لتخزين النسخ الاحتياطية بشكل معزول في مخزن خارجي.

بوجود هذا الهيكل، حتى لو حدث عطل في الأجهزة أو تم حذف البيانات عن طريق الخطأ، يمكنك استعادة النظام واستئناف العمل في غضون ساعة واحدة. من خلال استثمار الجهد في تصميم التشغيل، يكسب المؤسس وقتاً للتركيز أكثر على قيمة العملاء بدلاً من الصراع مع الكود.

관련 영상

هذه الأداة تحول قاعدة بيانات SQL إلى خلفية برمجية فوراً (Directus)

Better Stack7:49

커뮤니티의 다른 글

댓글

로그인하고 댓글을 남겨 보세요.

아직 댓글이 없습니다.