4 دقیقه مطالعه
مهاجرتی که نمیتوانی برگردانی
هر تغییر مخرب اسکیما، تصمیمی است که یکبار گرفته میشود و بارها هزینهاش پرداخت میشود. این سیاههٔ بررسی من پیش از اجرای آن است.
- databases
- migrations
- operations
حذف یک ستون، ارزانترین خط SQL است که از آن پشیمان خواهی شد.
چرا بازگشتپذیری از درستی مهمتر است
مهاجرت درستی که قابل بازگشت نباشد همچنان یک قمار است، چون درستی نسبت به فرضهای آن لحظه سنجیده میشود؛ اما بازگشتپذیری نسبت به واقعیت.
سیاههٔ بررسی
۱. آیا میتوان آن را بهجای یک انتشار، در دو مرحله انجام داد؟ ساختار جدید را اضافه کن، داده را پر کن، خوانندهها را جابهجا کن و تنها آنگاه ساختار قدیمی را بردار. ۲. آیا نسخهای از داده بیرون از این تراکنش وجود دارد؟ یک دامپ پنجدقیقهای راهبرد پشتیبانگیری نیست، اما از هیچ بهتر است. ۳. چه چیزی این ستون را میخواند که از آن بیخبرم؟ پاسخ معمول: جابهای تحلیلی و داشبوردهای داخلی. ۴. از کجا بفهمم کار کرده است؟ کوئری راستیآزمایی را پیش از مهاجرت بنویس، نه بعد از آن.
آنچه در عمل انجام میدهم
هر DROP یا ALTER ... TYPE را یک فرایند دوهفتهای میدانم، نه یک انتشار. ستون بدون استفاده میماند تا یک دورهٔ کامل صورتحساب هیچ ارجاعی به آن نباشد. چند مگابایت هزینه دارد و بیش از چند شب را برایم نجات داده است.