almessadi.
العودة إلى الفهرس

توسيع وتقلص هو كيف تغير المخططات دون كسر الكود العامل_

الهجرات بدون توقف عادة ما تحتاج إلى مرحلة تجريبية: قم بتوسيع المخطط، ثم مليء البيانات، ثم قم بتبديل الكود، وفقط بعد ذلك قم بإزالة الشكل القديم.

تاريخ النشر5 ديسمبر 2024
وقت القراءة6 min read

الهجرة الخطيرة ليست تلك التي تغير المخطط. بل هي تلك التي تفترض أن كل حالة تطبيق عاملة، وعامل مهام، ومستهلك في الخلفية سيتغير توقعاته في نفس اللحظة بالضبط.

هذا الافتراض غير آمن تقريبًا في بيئة الإنتاج.

ماذا يعني توسيع وتقلص

يعمل النمط لأنه يقبل التداخل بين العالم القديم والعالم الجديد:

  1. توسيع المخطط
  2. الحفاظ على الكود القديم قيد العمل
  3. مليء البيانات أو الكتابة المزدوجة
  4. تبديل القراءة والكتابة
  5. إزالة الشكل القديم لاحقًا

على سبيل المثال، الانتقال من full_name إلى first_name و last_name يبدأ عادةً بالتوسيع:

ALTER TABLE users ADD COLUMN first_name TEXT;
ALTER TABLE users ADD COLUMN last_name TEXT;

ثم تقوم بملء البيانات:

UPDATE users
SET first_name = split_part(full_name, ' ', 1),
    last_name = substring(full_name from position(' ' in full_name) + 1);

فقط بعد أن تقرأ التطبيق الأعمدة الجديدة بأمان يمكنك إزالة full_name.

لماذا يستحق هذا النمط الجهود الإضافية

توسيع وتقلص أبطأ من الهجرة المفاجئة التي تتسبب في كسر، لكنه يتعامل بشكل أفضل مع الظروف الحقيقية للإنتاج:

  • نشر متدرج
  • مهام خلفية على الإصدارات القديمة
  • إعادة المحاولة مع إصدارات تطبيق مختلطة
  • ملء جزئي يحتاج إلى مراقبة

الخطوات الإضافية ليست مجرد طقوس. بل هي ما تضمن لك التوافق أثناء التغيير.

المساومات

التكلفة هي تعقيد مؤقت:

  • المزيد من مسارات الكود لفترة
  • محاسبة الهجرة
  • أعمال تنظيف لاحقًا

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

قراءة إضافية