Environment Merge
تتيح لك ميزة Environment Merge تطبيق تغييرات schema من بيئة (مصدر) إلى أخرى (هدف). هذه هي العملية الأساسية التي تنشر التغييرات الهيكلية — مثل الجداول والأعمدة والـ views والـ enums الجديدة — عبر دورة حياة التطوير.
كيفية عمل Merge
Section titled “كيفية عمل Merge”تم تصميم عملية merge لتكون آمنة وقابلة للتنبؤ وشفافة:
- الاختيار: حدد بيئة مصدر (من أين نشأت التغييرات) وبيئة هدف (حيث تريد تطبيقها).
- التحليل: يقوم النظام بإجراء diff لتحديد جميع التغييرات الناقصة في البيئة المستهدفة.
- المراجعة و Cherry-pick: راجع التغييرات المكتشفة واختر انتقائيًا أيها لتطبيقه.
- النسخ الاحتياطي التلقائي: قبل تطبيق أي تغييرات، ينشئ Archie Core نسخة احتياطية كاملة لبيانات وبنية البيئة المستهدفة.
- التطبيق الذري: يتم تطبيق التغييرات المحددة كعملية واحدة. إذا فشل أي جزء من merge، يتم التراجع عن العملية بأكملها تلقائيًا.
الأمان والموثوقية
Section titled “الأمان والموثوقية”يضمن Archie Core سلامة بيئات الإنتاج والـ staging أثناء merge:
- تحديثات معاملاتية: يتم تطبيق جميع تغييرات schema ضمن معاملة واحدة. هذا يعني إما تطبيق جميع التغييرات المحددة بنجاح، أو لا شيء — مما يمنع قاعدة البيانات من الدخول في حالة ترحيل جزئي.
- قفل البيئة: أثناء تقدم merge، يتم قفل البيئة المستهدفة لمنع تغييرات التكوين المتزامنة.
- نسخ احتياطية تلقائية قبل merge: يتم دائمًا إنشاء نسخة احتياطية “شبكة أمان” فورًا قبل التنفيذ. إذا نجح merge ولكنك اكتشفت مشكلة لاحقًا، يمكنك الاستعادة إلى الحالة الدقيقة قبل merge باستخدام صفحة Backups.
اختيار Cherry-Pick
Section titled “اختيار Cherry-Pick”تتيح واجهة merge تحكمًا دقيقًا على ما يتم نقله:
- اختيار فردي: قم بتبديل تغييرات محددة (مثل إضافة عمود واحد أو فهرس جديد) دون دمج الفرع بالكامل.
- إجراءات المجموعة: حدد أو ألغِ تحديد جميع التغييرات المتعلقة بجدول أو view معين بسرعة.
- حماية التغييرات Breaking: العمليات التدميرية (مثل إسقاط عمود) غير محددة مسبقًا افتراضيًا. يجب الموافقة صراحةً على هذه التغييرات لمنع فقدان البيانات عن طريق الخطأ.
سجل الترحيل
Section titled “سجل الترحيل”يتم تسجيل كل عملية merge في مسار تدقيق مركزي. تعرض صفحة السجل لبيئة:
- سجل التدقيق: من بدأ merge، والبيئات المشاركة، ومتى حدث.
- ملخص التغييرات: تحليل واضح لما تم إنشاؤه أو تعديله أو إزالته.
- إمكانية التتبع: توثيق أوامر SQL المحددة المنفذة أثناء الترحيل.
- رابط النسخ الاحتياطي: وصول مباشر إلى النسخة الاحتياطية التلقائية المُنشأة خصيصًا لهذا الترحيل.
سياسة التراجع
Section titled “سياسة التراجع”إذا كنت بحاجة إلى التراجع عن merge، يجب استخدام صفحة Backups لاستعادة البيئة إلى حالتها “قبل merge”.
ملاحظة: على عكس التراجع البسيط، تعيد عملية الاستعادة كامل قاعدة البيانات إلى نقطة زمنية سابقة. نوصي بالتحقق من التغييرات في بيئة staging قبل merge إلى الإنتاج.
API المطور (GraphQL)
Section titled “API المطور (GraphQL)”Mutation: mergeEnvironments
Section titled “Mutation: mergeEnvironments”mutation MergeEnvironments($input: MergeEnvironmentInput!) { mergeEnvironments(input: $input) { success message migrationId changesApplied backupId }}Query: migrationHistory
Section titled “Query: migrationHistory”query MigrationHistory($projectId: ID!, $environment: String) { migrationHistory(projectId: $projectId, environment: $environment) { id sourceEnvironment targetEnvironment status appliedBy appliedAt changes { changeType objectName sql isBreaking } backupId }}