بازبینی migration تولیدشده با هوش مصنوعی؛ حفظ داده و مسیر بازیابی
خلاصهٔ پاسخ
مهاجرت را روی دادهٔ موجود و نسخههای همزمان برنامه بسنجید. SQL، backfill، قفلها و بازیابی باید پیش از انتشار بررسی شوند؛ بیلد سبز کافی نیست.

در این مقاله
migration تولیدشده با هوش مصنوعی را یک پیشنهاد تغییر داده و ساختار بدانید. پیش از انتشار، SQL واقعی، اثر روی رکوردهای موجود، سازگاری نسخههای برنامه و روش بازیابی را بررسی کنید. پاسشدن build یا داشتن متد Down ثابت نمیکند داده حفظ میشود یا بازگشت امن است.
چهار سؤال پیش از تولید migration
- چه نسخههایی از برنامه همزمان فعال میمانند و هرکدام کدام ستونها را میخوانند یا مینویسند؟
- دادهٔ موجود چه nullها، تکرارها و مقادیر نامعتبری دارد؟ حجم و الگوی نوشتن آن چیست؟
- موتور پایگاه داده و نسخهٔ آن چیست و عملیات پیشنهادی چه قفل یا بازسازی جدولی ایجاد میکند؟
- اگر اجرا وسط کار قطع شود، مالک بازیابی با چه شواهدی تصمیم به ادامه، اصلاح رو به جلو یا بازگردانی میگیرد؟
پاسخ نامشخص را با حدس عامل پر نکنید. از دادهٔ مصنوعی نماینده یا نسخهٔ مجاز و پاکسازیشده استفاده کنید؛ برای تحلیل schema نیازی به ارسال اطلاعات واقعی مشتری نیست.
مثال: جایگزینی تدریجی یک ستون
فرض آموزشی: برنامهٔ قدیمی ستون display_name را میخواند و نسخهٔ جدید میخواهد public_name داشته باشد. حذف فوری ستون قدیمی، همزیستی دو نسخه را میشکند. الگوی زیر یک طرح بازبینی است، نه دستور آمادهٔ اجرا برای هر دیتابیس.
مرحلهٔ اول: گسترش بدون حذف
ستون جدید را با قاعدهٔ nullable/default مناسب اضافه کنید و مسیر سازگار نوشتن را آماده کنید. مشخص کنید در دورهٔ گذار، کدام مسیر مسئول هماهنگ نگهداشتن دو ستون است. اگر نسخهٔ قدیمی فقط ستون قبلی را مینویسد، صرف dual-write در نسخهٔ جدید همهٔ تغییرها را پوشش نمیدهد؛ به راهکار هماهنگسازی یا محدودیت انتشار نیاز دارید.
مرحلهٔ دوم: انتقال و راستیآزمایی داده
backfill را در دستههای محدود با مرز قابلثبت اجرا و وضعیت رکوردهای منتقلشده را بررسی کنید. قاعدهٔ اجرای دوباره، ترتیب کلیدها، دادههای همزمان و مقدار ازپیشموجود ستون جدید را مشخص کنید. اجرای دوباره نباید مقدار معتبر جدید را با نسخهٔ قدیمی جایگزین کند.
مرحلهٔ سوم: تغییر خواندن و حذف دیرهنگام
پس از اثبات همگامی داده، خواندن نسخهٔ جدید را منتقل کنید. حذف ستون قدیمی فقط وقتی مجاز است که مصرفکنندهٔ قدیمی باقی نمانده و پنجرهٔ بازگشت مصوب بسته شده باشد. این مرحله باید تغییر جداگانه و قابلبازبینی باشد.
از عامل چه خروجیای بخواهیم؟
از دستیار بخواهید فهرست عملیات schema، فرضهای داده، SQL پیشنهادی، نسخههای سازگار و نقاط توقف را جدا ارائه کند. برای هر حذف ستون، کاهش طول، تغییر نوع یا افزودن قید، اثر روی دادهٔ موجود را توضیح دهد. اگر ORM احتمال از دسترفتن داده را هشدار میدهد، متن هشدار باید در بازبینی باقی بماند.
راهنمای رسمی EF Core تولید و بررسی اسکریپت پیش از اعمال را توضیح میدهد و دربارهٔ از دسترفتن داده هشدار میدهد. برای پروژهای که واقعاً از EF Core استفاده میکند، نمونهٔ زیر اسکریپت بین دو migration را تولید میکند؛ نامها، پروژهٔ startup، provider و تنظیمات design-time باید ابتدا بررسی شوند:
dotnet ef migrations script PreviousMigration TargetMigration --output migration-review.sql
این فرمان با update پایگاه داده متفاوت است، اما ابزار برای ساخت DbContext کد برنامه را بارگذاری میکند؛ تنظیمات محیط طراحی را هم بازبینی کنید. حالت idempotent نیز پشتیبانی یکسانی در همهٔ providerها ندارد؛ برای نمونه SQLite از تولید اسکریپت idempotent پشتیبانی نمیکند. «یک بار اجرا شده» هم بهتنهایی ایمنی backfill سفارشی را ثابت نمیکند.
ماتریس آزمون پیش از انتشار
| وضعیت آزمایشی | شاهد لازم |
|---|---|
| پایگاه دادهٔ خالی | ساخت ساختار و شروع نسخهٔ جدید |
| دادهٔ موجود با null و تکرار | اعمال قید یا گزارش روشن دادهٔ ناسازگار |
| نسخهٔ قدیمی روی ساختار گسترشیافته | ادامهٔ خواندن و نوشتن موردانتظار |
| نوشتن همزمان با backfill | نبود overwrite و تطابق قواعد همگامی |
| قطع اجرای انتقال | تشخیص پیشرفت و ادامهٔ کنترلشده |
| بازیابی نسخهٔ پشتیبان در محیط جدا | سلامت داده و زمان واقعی بازیابی |
تعداد رکورد کافی نیست. قواعد کسبوکار، مجموعهای مرتبط و نمونههای مرزی را هم بسنجید. بار و قفل را با دادهٔ نماینده در محیط آزمایشی بررسی کنید؛ پایگاه دادهٔ کوچک و خالی زمان توقف محیط واقعی را پیشبینی نمیکند.
rollback با بازیابی داده یکی نیست
بازگرداندن برنامه میتواند با schema گسترشیافته سازگار باشد؛ بازگرداندن ساختار ممکن است دادهٔ جدید را حذف کند. نسخهٔ پشتیبان نیز بدون تمرین restore یک فرض است. پیش از انتشار، مالک تصمیم و معیار توقف را تعیین کنید: مثلاً رشد خطا، طول قفل یا اختلاف داده بر اساس حدود مصوب همان سامانه، نه اعداد حدسی عمومی.
برای بازبینی diff از چکلیست کد تولیدشده با AI و برای طراحی موارد مرزی از راهنمای تستنویسی استفاده کنید. این دو، آزمون migration روی provider واقعی را جایگزین نمیکنند.
یک شروع مناسب، تهیهٔ طرح تغییر و تست در مخزن آزمایشی است. راهنمای شروع 123Coder مسیر آمادهسازی پروژه را توضیح میدهد. اجرای تغییر در محیط عملیاتی باید از مسیر انتشار و اختیارهای مصوب تیم انجام شود.
بازبینی منابع: ۱ اکتبر ۲۰۲۶. نمونهٔ ستونها آموزشی است؛ جلد تولیدشده با هوش مصنوعی نمای واقعی زیرساخت یک مشتری نیست.
گفتوگو
تجربهتان را بنویسید یا سؤال بپرسید. نظرات پس از تأیید مدیر منتشر میشوند.
در حال بارگذاری…
برای ادامهٔ مطالعه
گردشکار قابلاعتماد تستنویسی با هوش مصنوعی
تست خوب از قرارداد رفتار و ریسک میآید، نه از تبدیل خطبهخط پیادهسازی به assertion.
پوریا افضلی · 8 دقیقه مطالعه
مطالعه مقالهچکلیست بازبینی کد تولیدشده با هوش مصنوعی
بازبینی را از نیت تغییر و محدوده diff شروع کنید، سپس رفتار، امنیت، وابستگیها و امکان بازگشت را با شواهد بررسی کنید.
پوریا افضلی · 8 دقیقه مطالعه
مطالعه مقالهکار موازی عاملهای کدنویسی با Git Worktree؛ جداسازی و ادغام قابلبررسی
برای هر کار مستقل، شاخه و پوشهٔ جدا بسازید؛ اما پورت، پایگاه داده و دسترسی را جداگانه مدیریت کنید. Worktree بهتنهایی sandbox امنیتی نیست.
پوریا افضلی · 5 دقیقه مطالعه
مطالعه مقالهچطور کانتکست مخزن را برای عامل کدنویسی آماده کنیم؟
یک بستهٔ کوچک شامل هدف، مسیرهای معتبر، نسخهٔ مبنا، محدودیتها و شواهد تست بسازید؛ سپس با هر تغییر مهم، اعتبار زمینه را دوباره بررسی کنید.
پوریا افضلی · 5 دقیقه مطالعه
مطالعه مقالهدستیار کدنویسی، عامل کدنویسی و تکمیل خودکار چه تفاوتی دارند؟
تکمیل خودکار پیشنهاد کوتاه میدهد، دستیار در گفتوگو و بررسی کد کمک میکند و عامل میتواند یک فرایند چندمرحلهای را با ابزارها پیش ببرد؛ تفاوت اصلی در دامنه اختیار است.
پوریا افضلی · 7 دقیقه مطالعه
مطالعه مقالهدستیار برنامهنویسی هوش مصنوعی چیست و کجا واقعاً مفید است؟
دستیار برنامهنویسی هوش مصنوعی با درک مسئله، کد و ابزارهای پروژه به توسعهدهنده کمک میکند؛ اما کیفیت نتیجه به محدوده کار، زمینه کافی و بازبینی انسانی وابسته است.
پوریا افضلی · 8 دقیقه مطالعه
مطالعه مقاله




