د ډیټا مهاجرت سیسټمونو پرتله کول او انتخاب
د ډیټا ماډل د پراختیا پروسې په جریان کې بدلون ته اړتیا لري، او په ځینو وختونو کې دا نور د ډیټابیس سره مطابقت نلري. البته، ډیټابیس حذف کیدی شي، او بیا به ORM یو نوی نسخه رامینځته کړي چې د ماډل سره سمون ولري، مګر دا کړنلاره به د موجوده معلوماتو له لاسه ورکولو المل شي. پدې توګه ، د مهاجرت سیسټم دنده دا ده چې ډاډ ترلاسه کړي چې د سکیما بدلون په پایله کې ، دا د موجوده ډیټا له لاسه ورکولو پرته په غوښتنلیک کې د ډیټا ماډل سره همغږي کیږي.
پدې مقاله کې، موږ غواړو د ډیټابیس مهاجرت اداره کولو لپاره مختلف وسایل وګورو. موږ امید لرو چې دا بیاکتنه به د پراختیا کونکو لپاره ګټور وي چې ورته انتخاب سره مخ دي.
موخه
زموږ شرکت اوس مهال په فعاله توګه د راتلونکي نسل محصول تولیدوي - د Docs Security Suite (DSS). د سرور برخه په .Net Core کې لیکل شوې، او د ادارې چوکاټ کور د DBMS په توګه کارول کیږي. کله چې یو غوښتنلیک ډیزاین کړئ، موږ د کوډ لومړۍ طریقه کاروو.
د غوښتنلیک ډومین ماډل په ورته وخت کې د ډیری پراختیا کونکو لخوا رامینځته شوی - هر یو د سیسټم د خپل منطقي برخې لپاره مسؤل دی.
د DSS پخوانی نسل د کلاسیک وجود چوکاټ مهاجرت (EF 6) د مهاجرت مدیریت سیسټم په توګه کارولی. په هرصورت، ځینې شکایتونه د دې په وړاندې راټول شوي، چې اصلي یې دا دی چې EF د نسخې شخړو د حل لپاره د سالم چلند نه لري. دا حقیقت لاهم موږ ته خپه کوي کله چې د ملاتړ برخې په توګه د بګ فکس کول ، نو موږ پریکړه وکړه چې بدیل اختیارونه په پام کې ونیسو.
د بحث په پایله کې، د مهاجرت مدیریت سیسټم لپاره لاندې اړتیاوې رامینځته شوې:
- د مختلف DBMSs لپاره ملاتړ. د MS SQL سرور، PostgreSQL، Oracle اړین دي، مګر دا د نورو کارولو لپاره احتمالي امکان لري
- د ORM سره کار کول. په پیل کې، دا پالن شوی و چې د EF کور کارولو لپاره، مګر د ډیزاین په مرحله کې موږ چمتو یو چې نور ORMs په پام کې ونیسو.
- د مهاجرت اتومات نسل. د لومړي کوډ پراختیا په پام کې نیولو سره، زه غواړم د "لاسي لیکلو" مهاجرت اړتیا څخه مخنیوی وکړم
- نسخه شخړه. په ویشل شوي پراختیایي چاپیریال کې، کله چې یوځای کیږي، د EF کور کولی شي د شخړو سره مخ شي. دا د پام وړ ستونزه کیږي ځکه چې د غوښتنلیک مختلف برخې د مختلف پراختیا کونکو لخوا رامینځته شوي ، نو تاسو باید په هر یو کې ډیر وخت مصرف کړئ.
- پرمختللي اسناد او ملاتړ. دلته، موږ ته داسې ښکاري چې هیڅ وضاحت ته اړتیا نشته
- وړيا. معیار مشروط دی ، ځکه چې سیسټمونه خورا ګران یا ګران ندي ، مګر په اسانتیا کې مثالي دي ، موږ هم غور کولو ته چمتو یو.
د لږې څیړنې په پایله کې، لاندې اختیارونه وموندل شول او د غور لپاره د پام وړ وموندل شول:
- د EF اصلي مهاجرتونه
- د DBup پاڼې اړوند نور معلومات په فسبوک کې اوګورئ
- RoundhouseE
- ThinkingHome.مهاجر
- روان مهاجر
او اوس یو څه نور تفصیل
په طبیعي توګه، دا د غوره کولو لپاره لومړی او اصلي انتخاب و. یو اصلي وسیله چې د بکس څخه بهر کار کوي پرته له دې چې د تیمبورین شاوخوا شاوخوا ګرځي. د اسنادو لوی مقدار، رسمي او داسې نه، سادگي، او داسې نور. په هرصورت، د کلاسیک EF په اړه شوي شکایتونه د EF کور لپاره هم خورا اړین دي.
په دې توګه، د EF کور ګټې په ګوته شوي:
- د مایکروسافټ ملاتړ، اسناد، په شمول په روسیه کې، لویه ټولنه
- د کوډ فرسټ پراساس د مهاجرت اتومات تولید
- د EF 6 په پرتله، د EF کور نور د ډیټابیس سنیپ شاټ نه ذخیره کوي. کله چې په لومړي کوډ کې د EF کور سره کار کول ، نو نور اړین ندي چې ډیټابیس ځای په ځای کړئ
- څرنګه چې موږ د لومړي کوډ څخه نڅا کوو، دا ممکنه ده چې د ټولو اړین معلوماتو لاسرسي چمتو کونکو ته یو مهاجرت ترسره کړو
- د چمتو کونکو په اړه ، PostgreSQL ملاتړ کیږي ، اوریکل ملاتړ کیږي ، او داسې نور ، او حتی د MS SQL سرور
او همدارنګه زیانونه:
- د شخړې حل په ورته کچه پاتې شو. دا اړینه ده چې مهاجرتونه ترتیب کړئ او د ډیټابیس سنیپ شاټونه تازه کړئ
- په هغه موډلونو تکیه چې مهاجرتونه رامینځته کیږي
DbUp
DbUp یو .NET کتابتون دی چې د NuGet لخوا نصب شوی او د SQL سرور ته د بدلونونو فشار ورکولو کې مرسته کوي. دا تعقیبوي چې کوم بدلون سکریپټونه دمخه اجرا شوي او هغه چلوي چې د ډیټابیس تازه کولو لپاره اړین دي. کتابتون په ASP.NET کې د خلاصې سرچینې بلاګینګ انجن لپاره د پروژې څخه وده کړې او د MIT جواز لاندې شتون لري ، او کوډ په GitHub کې دی. مهاجرتونه د T-SQL په کارولو سره تشریح شوي.
ګټې څه دي:
- د لوی شمیر DBMS لپاره ملاتړ (MS SQL Server, PstgreSQL, MySQL)
- څرنګه چې سکریپټونه په T-SQL کې لیکل شوي، دوی خورا ساده ښکاري
- شخړې هم د SQL په کارولو سره حل کیږي
او زیانونه:
- د ټولو ملاتړ شوي DBMSs ډولونو سره ، اوریکل یو له دوی څخه ندي
- د ORM سره متقابل عمل نه کوي
- د لاس په واسطه د T-SQL سکریپټونو لیکل هغه څه ندي چې موږ یې هدف درلود
- اسناد او ټولنه داسې ده، که څه هم د SQL سکریپټونو لیکلو شرایطو کې دوی ممکن اړین نه وي.
RoundhouseE
د مهاجرت مدیریت دا وسیله، د اپاچي 2.0 جواز لاندې ویشل شوې، لکه د تیر په څیر، د T-SQL مهاجرت انجن پرمخ ځي. په ښکاره ډول، پراختیا کونکو د آرامۍ پراختیا پروسې رامینځته کولو پرځای د DBMS ملاتړ په اړه تخنیکي ستونزو حل کولو ته لومړیتوب ورکړی.
پرو:
- د اړین DBMS ملاتړ کوي (د اوریکل په شمول)
ضمیمه:
- اوریکل (همدارنګه لاسرسی، کوم چې زموږ لپاره غیر مناسب دی) په .NET کور کې ملاتړ نه کوي، یوازې په .NET بشپړ چوکاټ کې
- د ORM سره کار نه کوي
- د پخوانۍ وسیلې په پرتله حتی لږ اسناد شتون لري
- یوځل بیا - مهاجرتونه د سکریپټونو لخوا لیکل شوي
ThinkingHome.مهاجر
د .NET کور پلیټ فارم ته د نسخې ډیټابیس سکیما مهاجرت لپاره یوه وسیله، د MIT جواز لاندې ویشل شوې.
پرو:
- د .NET کور لپاره ډیزاین شوی
- د مهاجرت د شاخي لړۍ پلي کول
- د مهاجرت د ننوتلو پلي کول
ضمیمه:
- وروستی یو کال دمخه تازه شوی. په ښکاره ډول پروژه نه ملاتړ کیږي
- د اوریکل لخوا نه ملاتړ کیږي (مقاله لیکي چې دا د .NET کور لپاره د باثباته پلي کولو نشتوالي له امله دی - مګر دا یو کال دمخه دی)
- د مهاجرت اتوماتیک نسل نشته
په ټوله کې، پروژه هیله مند ښکاري، په ځانګړې توګه که دا د پراختیا لپاره وي، مګر موږ اړتیا درلوده چې دلته او اوس پریکړه وکړو.
روان مهاجر
د مینه والو لوی اردو سره د مهاجرت خورا مشهور وسیله. د اپاچی 2.0 جواز لاندې توزیع شوی. لکه څنګه چې په تفصیل کې ویل شوي، دا د .NET لپاره د مهاجرت چوکاټ دی، د ریل مهاجرت پر روبي ته ورته دی. د ډیټابیس سکیما کې بدلونونه په C# ټولګیو کې تشریح شوي.
دلته ګټې شتون لري:
- د اړتیا وړ DBMS لپاره ملاتړ
- د .NET کور ملاتړ
- لویه پرمختللې ټولنه
- د مهاجرتونو ترمنځ شخړې په ترتیب سره حل کیږي - د مهاجرتونو د اجرا کولو ترتیب مشخص شوی. سربیره پردې ، که چیرې د یوې ادارې په شاوخوا کې شخړه رامینځته شي ، کله چې کوډ ضمیمه شي ، دا په ورته ډول حل کیږي لکه په پاتې کوډ کې.
- داسې پروفایلونه شتون لري چې د بریالي مهاجرت وروسته اجرا کیږي. او دوی کولی شي د خدماتو دندې ترسره کړي وروستی تازه معلومات یوه میاشت دمخه و، دا پروژه ژوندۍ ده
د نیمګړتیاوو لپاره، دوی دلته دي:
- د مهاجرت اتوماتیک نسل نشته
- د EF ماډلونو سره هیڅ تړاو نلري
- هیڅ ډیټابیس عکسونه نشته
زموږ انتخاب څه وو؟
ګرمې بحثونه د دوو پیرامیټونو په شاوخوا کې راوتلي - د مهاجرت اتوماتیک نسل او د شخړو هوښیار حل. نور عوامل خورا لږ ډارونکي وو. د پایلې په توګه، د بحث د پایلو پر بنسټ، ټیم پریکړه وکړه چې په نوې پروژه کې د روان مهاجرت څخه کار واخلي. ځکه چې په راتلونکي کې د شخړو حل کول به ډیرې ګټې راوړي.
موندنو
البته، هیڅ بشپړ وسایل شتون نلري. نو موږ باید د انتخاب کولو لپاره خپلو "غوښتنو" ته لومړیتوب ورکړو. په هرصورت، د نورو ټیمونو او نورو دندو لپاره، نور عوامل ممکن پریکړه کونکي وي. موږ امید لرو چې دا مقاله به تاسو سره د انتخاب کولو کې مرسته وکړي.
سرچینه: www.habr.com