الترحيلات والبذور
الترحيلات والبذور
في التطوير، تُحدّث synchronize: true مخطّطك تلقائيًا — مريح لكن خطير. في الإنتاج تحتاج الترحيلات: سكربتات مُؤرَّخة وقابلة للمراجعة تُغيّر مخطّط قاعدة البيانات بأمان وبقابلية للتراجع. ومقترنةً بـ البذر (تعبئة بيانات مرجعية أو اختبارية)، تمنحك تحكّمًا كاملًا في حالة قاعدة بياناتك.
لماذا الترحيلات؟
- آمنة — تغييرات صريحة، بلا حذف أعمدة مفاجئ.
- مُؤرَّخة — كل تغيير مخطّط يُودَع في إدارة المصادر.
- قابلة للتراجع — لكل ترحيل
up(تطبيق) وdown(تراجع). - قابلة للتكرار — يعمل التسلسل نفسه بشكل متطابق على كل بيئة.
تشريح ترحيل
الترحيل صنف بدالّتين. تُقدّم up() المخطّط؛ وتتراجع down() عنه:
توليد الترحيلات وتشغيلها
يستطيع TypeORM توليد ترحيل بمقارنة كياناتك بقاعدة البيانات الحالية — ثم تراجعه قبل التطبيق:
up() وdown()، خصوصًا لأي شيء يحذف أو يعيد التسمية.
بذر البيانات
يعبّئ البذر قاعدة البيانات ببيانات أولية: جداول مرجعية (الأدوار، الفئات)، أو مستخدم مدير، أو بيانات عيّنة للاختبار. نهج نظيف هو سكربت مستقلّ يستخدم سياق التطبيق من درس دورة الحياة:
الترحيلات مقابل البذر
أبقِهما منفصلين: الترحيلات تُغيّر المخطّط (البنية)، والبذور تُدرِج البيانات (المحتوى). خلط إدراج البيانات في ترحيلات المخطّط يجعل كليهما أصعب فهمًا وتراجعًا.
الخلاصة
استخدم الترحيلات — سكربتات up/down مُؤرَّخة — لكل تغييرات مخطّط الإنتاج بدل synchronize. ولّدها من فروقات الكيانات، لكن راجِع دائمًا قبل التشغيل. ابذُر البيانات الأولية والمرجعية بسكربتات idempotent، ويُفضَّل عبر سياق التطبيق المستقلّ. أبقِ اهتمامات المخطّط (الترحيلات) والبيانات (البذور) منفصلة. تاليًا: المعاملات، للتغييرات التي يجب أن تنجح كلّها أو تفشل كلّها.