رفتن به محتوای اصلی

دسترسی زودهنگام 123Coder: برای استفاده از نسخهٔ فعلی درخواست بدهید؛ پس از بررسی، نتیجه برای شما ارسال می‌شود.

درخواست دسترسی
بازگشت به مقاله‌ها
برنامه‌نویسی با هوش مصنوعی5 دقیقه مطالعه

بازبینی migration تولیدشده با هوش مصنوعی؛ حفظ داده و مسیر بازیابی

خلاصهٔ پاسخ

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

مهندس پایگاه دادهٔ ایرانی در حال بررسی دو دستگاه ذخیره‌سازی در سناریوی انتقال مرحله‌ای
TelegramWhatsAppLinkedIn

در این مقاله
  1. چهار سؤال پیش از تولید migration
  2. مثال: جایگزینی تدریجی یک ستون
  3. مرحلهٔ اول: گسترش بدون حذف
  4. مرحلهٔ دوم: انتقال و راستی‌آزمایی داده
  5. مرحلهٔ سوم: تغییر خواندن و حذف دیرهنگام
  6. از عامل چه خروجی‌ای بخواهیم؟
  7. ماتریس آزمون پیش از انتشار
  8. rollback با بازیابی داده یکی نیست
نوشتهٔپوریا افضلی

migration تولیدشده با هوش مصنوعی را یک پیشنهاد تغییر داده و ساختار بدانید. پیش از انتشار، SQL واقعی، اثر روی رکوردهای موجود، سازگاری نسخه‌های برنامه و روش بازیابی را بررسی کنید. پاس‌شدن build یا داشتن متد Down ثابت نمی‌کند داده حفظ می‌شود یا بازگشت امن است.

چهار سؤال پیش از تولید migration

  1. چه نسخه‌هایی از برنامه هم‌زمان فعال می‌مانند و هرکدام کدام ستون‌ها را می‌خوانند یا می‌نویسند؟
  2. دادهٔ موجود چه nullها، تکرارها و مقادیر نامعتبری دارد؟ حجم و الگوی نوشتن آن چیست؟
  3. موتور پایگاه داده و نسخهٔ آن چیست و عملیات پیشنهادی چه قفل یا بازسازی جدولی ایجاد می‌کند؟
  4. اگر اجرا وسط کار قطع شود، مالک بازیابی با چه شواهدی تصمیم به ادامه، اصلاح رو به جلو یا بازگردانی می‌گیرد؟

پاسخ نامشخص را با حدس عامل پر نکنید. از دادهٔ مصنوعی نماینده یا نسخهٔ مجاز و پاک‌سازی‌شده استفاده کنید؛ برای تحلیل 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 مسیر آماده‌سازی پروژه را توضیح می‌دهد. اجرای تغییر در محیط عملیاتی باید از مسیر انتشار و اختیارهای مصوب تیم انجام شود.

بازبینی منابع: ۱ اکتبر ۲۰۲۶. نمونهٔ ستون‌ها آموزشی است؛ جلد تولیدشده با هوش مصنوعی نمای واقعی زیرساخت یک مشتری نیست.

پوریا افضلی

دربارهٔ نویسنده

پوریا افضلی

پوریا افضلی، بنیان‌گذار 123Coder، بیش از ۱۵ سال است که در دنیای توسعه نرم‌افزار، معماری سیستم‌ها و ساخت محصولات تکنولوژی فعالیت می‌کند. تمرکز فعلی او روی AI Coding، AI Agents و آینده توسعه نرم‌افزار است؛ جایی که هوش مصنوعی از یک ابزار کمکی، به بخشی واقعی از تیم مهندسی تبدیل می‌شود.

گفت‌وگو

تجربه‌تان را بنویسید یا سؤال بپرسید. نظرات پس از تأیید مدیر منتشر می‌شوند.

در حال بارگذاری…

برای ادامهٔ مطالعه

دستیار کدنویسی، عامل کدنویسی و تکمیل خودکار چه تفاوتی دارند؟

تکمیل خودکار پیشنهاد کوتاه می‌دهد، دستیار در گفت‌وگو و بررسی کد کمک می‌کند و عامل می‌تواند یک فرایند چندمرحله‌ای را با ابزارها پیش ببرد؛ تفاوت اصلی در دامنه اختیار است.

پوریا افضلی · 7 دقیقه مطالعه

مطالعه مقاله

دستیار برنامه‌نویسی هوش مصنوعی چیست و کجا واقعاً مفید است؟

دستیار برنامه‌نویسی هوش مصنوعی با درک مسئله، کد و ابزارهای پروژه به توسعه‌دهنده کمک می‌کند؛ اما کیفیت نتیجه به محدوده کار، زمینه کافی و بازبینی انسانی وابسته است.

پوریا افضلی · 8 دقیقه مطالعه

مطالعه مقاله