تخطَّ إلى المحتوى

Environment Merge

تتيح لك ميزة Environment Merge تطبيق تغييرات schema من بيئة (مصدر) إلى أخرى (هدف). هذه هي العملية الأساسية التي تنشر التغييرات الهيكلية — مثل الجداول والأعمدة والـ views والـ enums الجديدة — عبر دورة حياة التطوير.


تم تصميم عملية merge لتكون آمنة وقابلة للتنبؤ وشفافة:

  1. الاختيار: حدد بيئة مصدر (من أين نشأت التغييرات) وبيئة هدف (حيث تريد تطبيقها).
  2. التحليل: يقوم النظام بإجراء diff لتحديد جميع التغييرات الناقصة في البيئة المستهدفة.
  3. المراجعة و Cherry-pick: راجع التغييرات المكتشفة واختر انتقائيًا أيها لتطبيقه.
  4. النسخ الاحتياطي التلقائي: قبل تطبيق أي تغييرات، ينشئ Archie Core نسخة احتياطية كاملة لبيانات وبنية البيئة المستهدفة.
  5. التطبيق الذري: يتم تطبيق التغييرات المحددة كعملية واحدة. إذا فشل أي جزء من merge، يتم التراجع عن العملية بأكملها تلقائيًا.

يضمن Archie Core سلامة بيئات الإنتاج والـ staging أثناء merge:

  • تحديثات معاملاتية: يتم تطبيق جميع تغييرات schema ضمن معاملة واحدة. هذا يعني إما تطبيق جميع التغييرات المحددة بنجاح، أو لا شيء — مما يمنع قاعدة البيانات من الدخول في حالة ترحيل جزئي.
  • قفل البيئة: أثناء تقدم merge، يتم قفل البيئة المستهدفة لمنع تغييرات التكوين المتزامنة.
  • نسخ احتياطية تلقائية قبل merge: يتم دائمًا إنشاء نسخة احتياطية “شبكة أمان” فورًا قبل التنفيذ. إذا نجح merge ولكنك اكتشفت مشكلة لاحقًا، يمكنك الاستعادة إلى الحالة الدقيقة قبل merge باستخدام صفحة Backups.

تتيح واجهة merge تحكمًا دقيقًا على ما يتم نقله:

  • اختيار فردي: قم بتبديل تغييرات محددة (مثل إضافة عمود واحد أو فهرس جديد) دون دمج الفرع بالكامل.
  • إجراءات المجموعة: حدد أو ألغِ تحديد جميع التغييرات المتعلقة بجدول أو view معين بسرعة.
  • حماية التغييرات Breaking: العمليات التدميرية (مثل إسقاط عمود) غير محددة مسبقًا افتراضيًا. يجب الموافقة صراحةً على هذه التغييرات لمنع فقدان البيانات عن طريق الخطأ.

يتم تسجيل كل عملية merge في مسار تدقيق مركزي. تعرض صفحة السجل لبيئة:

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

إذا كنت بحاجة إلى التراجع عن merge، يجب استخدام صفحة Backups لاستعادة البيئة إلى حالتها “قبل merge”.

ملاحظة: على عكس التراجع البسيط، تعيد عملية الاستعادة كامل قاعدة البيانات إلى نقطة زمنية سابقة. نوصي بالتحقق من التغييرات في بيئة staging قبل merge إلى الإنتاج.


mutation MergeEnvironments($input: MergeEnvironmentInput!) {
mergeEnvironments(input: $input) {
success
message
migrationId
changesApplied
backupId
}
}
query MigrationHistory($projectId: ID!, $environment: String) {
migrationHistory(projectId: $projectId, environment: $environment) {
id
sourceEnvironment
targetEnvironment
status
appliedBy
appliedAt
changes {
changeType
objectName
sql
isBreaking
}
backupId
}
}