ڊيٽا لڏپلاڻ سسٽم جي مقابلي ۽ چونڊ

ڊيٽا لڏپلاڻ سسٽم جي مقابلي ۽ چونڊ

ڊيٽا لڏپلاڻ سسٽم جي مقابلي ۽ چونڊ

ڊيٽا ماڊل ترقي جي عمل دوران تبديل ٿيڻ جي ڪوشش ڪندو آهي، ۽ ڪجهه نقطي تي اهو هاڻي ڊيٽابيس سان لاڳاپيل ناهي. يقينن، ڊيٽابيس کي ختم ڪري سگهجي ٿو، ۽ پوء ORM هڪ نئون نسخو ٺاهيندو جيڪو ماڊل سان ملندو، پر اهو طريقو موجوده ڊيٽا کي نقصان پهچائيندو. اهڙيء طرح، لڏپلاڻ واري نظام جي فنڪشن کي يقيني بڻائڻ آهي ته، هڪ اسڪيما تبديلي جي نتيجي ۾، موجوده ڊيٽا کي وڃائڻ کان سواء ايپليڪيشن ۾ ڊيٽا ماڊل سان هم وقت سازي ڪئي وئي آهي.

هن آرٽيڪل ۾، اسان ڊيٽابيس لڏپلاڻ کي منظم ڪرڻ لاء مختلف اوزار ڏسڻ چاهيندا. اسان کي اميد آهي ته هي جائزو ڊولپرز لاءِ ڪارآمد ثابت ٿيندو جيڪي ساڳي پسند سان منهن ڏيڻ وارا آهن.

مقصد

اسان جي ڪمپني هن وقت فعال طور تي پيداوار جي ايندڙ نسل کي ترقي ڪري رهي آهي - Docs Security Suite (DSS). سرور جو حصو .Net Core ۾ لکيل آھي، ۽ Entity Framework Core کي DBMS طور استعمال ڪيو ويندو آھي. جڏهن هڪ ايپليڪيشن ٺاهيندي، اسان ڪوڊ پهريون طريقو استعمال ڪندا آهيون.

ايپليڪيشن ڊومين ماڊل هڪ ئي وقت ڪيترن ئي ڊولپرز پاران ٺاهي وئي آهي - هر هڪ سسٽم جي پنهنجي منطقي حصي لاء ذميوار آهي.

DSS جي پوئين نسل کي استعمال ڪيو کلاسک اينٽيٽي فريم ورڪ لڏپلاڻ (EF 6) جيئن لڏپلاڻ مينيجمينٽ سسٽم. بهرحال، ڪجهه شڪايتون ان جي خلاف گڏ ڪيون ويون آهن، بنيادي طور تي اهو آهي ته EF نسخن جي تڪرار کي حل ڪرڻ لاء هڪ سمجهه وارو طريقو ناهي. اها حقيقت اڃا تائين اسان کي پريشان ڪري ٿي جڏهن مدد جي حصي طور ڪيچ کي درست ڪرڻ، تنهنڪري اسان متبادل اختيارن تي غور ڪرڻ جو فيصلو ڪيو.

بحث جي نتيجي ۾، لڏپلاڻ مينيجمينٽ سسٽم لاء هيٺيون گهرجون ٺاهيا ويا:

  1. مختلف DBMSs لاءِ سپورٽ. MS SQL سرور، PostgreSQL، Oracle گھربل آھن، پر اھو ممڪن آھي ٻين کي استعمال ڪرڻ لاءِ
  2. ORM سان ڪم ڪرڻ. شروعات ۾، اهو EF ڪور استعمال ڪرڻ جي رٿابندي ڪئي وئي، پر ڊزائن اسٽيج تي اسان ٻين ORMs تي غور ڪرڻ لاء تيار آهيون.
  3. لڏپلاڻ جو خودڪار نسل. ڪوڊ فرسٽ جي ترقي کي نظر ۾ رکندي، مان "هٿ سان لکڻ" جي لڏپلاڻ جي ضرورت کان بچڻ چاهيندس
  4. نسخو تضاد. ورهايل ترقياتي ماحول ۾، جڏهن ضم ٿيڻ، اي ايف ڪور تڪرار کان متاثر ٿي سگهي ٿو. اهو هڪ اهم مسئلو بڻجي ٿو ڇاڪاڻ ته ايپليڪيشن جا مختلف حصا مختلف ڊولپرز پاران ٺاهيا ويا آهن، تنهنڪري توهان کي هر هڪ تي گهڻو وقت خرچ ڪرڻو پوندو.
  5. ترقي يافته دستاويز ۽ حمايت. هتي، اهو اسان کي لڳي ٿو، ڪنهن به وضاحت جي ضرورت ناهي
  6. واندو. معيار مشروط آهي، ڇاڪاڻ ته سسٽم تمام قيمتي يا قيمتي نه آهن، پر سهولت ۾ مثالي، اسان پڻ غور ڪرڻ لاء تيار آهيون.

ٿورڙي تحقيق جي نتيجي ۾، هيٺيان اختيار مليا ويا ۽ غور ڪرڻ لاء گهربل مليا:

  1. EF ڪور لڏپلاڻ
  2. ڊي بيپ
  3. گول هائوس اي
  4. ThinkingHome.مهاجر
  5. روانگي لڏپلاڻ ڪندڙ

۽ هاڻي ٿورو وڌيڪ تفصيل

ڊيٽا لڏپلاڻ سسٽم جي مقابلي ۽ چونڊ
EntityFramework ڪور لڏپلاڻ

قدرتي طور، هي چونڊڻ لاء پهريون ۽ مکيه اختيار هو. هڪ ديسي اوزار جيڪو دٻي جي ٻاهران ڪم ڪري ٿو بغير ڪنهن دٻڙ جي دٻي سان. دستاويزن جو هڪ وڏو مقدار، سرڪاري ۽ ائين نه، سادگي، وغيره. جڏهن ته، کلاسک EF بابت شڪايتون پڻ EF ڪور لاءِ ڪافي لاڳاپيل آهن.

اهڙيء طرح، EF ڪور جي فائدن کي نمايان ڪيو ويو آهي:

  • Microsoft سپورٽ، دستاويز، بشمول روسي، وڏي ڪميونٽي ۾
  • CodeFirst جي بنياد تي لڏپلاڻ جو خودڪار نسل
  • EF 6 جي مقابلي ۾، EF ڪور هاڻي ڊيٽابيس جي سنيپ شاٽ کي ذخيرو نٿو ڪري. جڏهن ڪوڊ فرسٽ ۾ اي ايف ڪور سان ڪم ڪندي، اهو هاڻي ضروري ناهي ته ڊيٽابيس کي ترتيب ڏيڻ لاء
  • جيئن ته اسان ڪوڊ فرسٽ کان ناچ ڪري رهيا آهيون، اهو ممڪن آهي ته هڪ لڏپلاڻ سڀني گهربل ڊيٽا جي رسائي فراهم ڪندڙن ڏانهن
  • مهيا ڪندڙن جي حوالي سان، PostgreSQL سپورٽ ڪئي وئي آهي، Oracle سپورٽ ڪئي وئي آهي، وغيره وغيره، ۽ حتي MS SQL سرور 

۽ پڻ نقصانات:

  • تڪرار جو حل ساڳئي سطح تي رهيو. لڏپلاڻ کي ترتيب ڏيڻ ۽ ڊيٽابيس سنيپ شاٽ کي اپڊيٽ ڪرڻ ضروري آهي
  • ماڊلز تي انحصار جن تي لڏپلاڻ پيدا ڪئي وئي آهي

ڊي بي اپ

ڊيٽا لڏپلاڻ سسٽم جي مقابلي ۽ چونڊ
dbup.github.io

DbUp هڪ .NET لائبريري آهي جيڪا NuGet پاران نصب ڪئي وئي آهي ۽ SQL سرور ۾ تبديلين کي وڌائڻ ۾ مدد ڪري ٿي. اهو ٽريڪ رکي ٿو ته ڪهڙيون تبديليون اسڪرپٽ اڳ ۾ ئي عمل ڪيا ويا آهن ۽ انهن کي هلائي ٿو جيڪي ڊيٽابيس کي اپڊيٽ ڪرڻ لاء ضروري آهن. لائبريري ASP.NET تي اوپن سورس بلاگنگ انجڻ لاءِ پروجيڪٽ مان وڌي وئي ۽ هڪ MIT لائسنس تحت موجود آهي، ۽ ڪوڊ GitHub تي آهي. لڏپلاڻ T-SQL استعمال ڪندي بيان ڪئي وئي آهي.

ڪهڙا فائدا آهن:

  • DBMS جي وڏي تعداد لاءِ سپورٽ (MS SQL Server, PstgreSQL, MySQL)
  • جيئن ته اسڪرپٽ T-SQL ۾ لکيل آهن، اهي بلڪل سادو نظر اچن ٿا
  • SQL استعمال ڪندي تڪرار پڻ حل ڪيا ويا آھن

۽ نقصان:

  • سپورٽ ٿيل ڊي بي ايم ايس جي سڀني قسمن سان، Oracle انهن مان هڪ ناهي
  • ORM سان رابطو نٿو ڪري
  • هٿ سان T-SQL اسڪرپٽ لکڻ اهو ناهي جيڪو اسان جو مقصد هو
  • دستاويز ۽ ڪميونٽي تمام گهڻيون آهن، جيتوڻيڪ SQL اسڪرپٽ لکڻ جي لحاظ کان اهي ضروري نه هوندا.

گول هائوس اي

ڊيٽا لڏپلاڻ سسٽم جي مقابلي ۽ چونڊ
github.com/chucknorris/roundhouse

هي لڏپلاڻ مينيجمينٽ ٽول، Apache 2.0 لائسنس تحت ورهايل، اڳئين وانگر، T-SQL لڏپلاڻ انجڻ تي هلندو آهي. ظاهري طور تي، ڊولپرز ڊي بي ايم ايس سپورٽ جي حوالي سان ٽيڪنيڪل مسئلا حل ڪرڻ کي ترجيح ڏني، بجاءِ هڪ آرامده ترقياتي عمل ٺاهڻ جي.

پرو:

  • ضروري DBMS کي سپورٽ ڪري ٿو (Oracle سميت)

ڪن

  • Oracle (انهي سان گڏوگڏ رسائي، جيڪا اسان لاءِ غير لاڳاپيل آهي) .NET ڪور تي سپورٽ نه ڪئي وئي آهي، صرف .NET مڪمل فريم ورڪ تي
  • ORM سان ڪم نٿو ڪري
  • پوئين اوزار جي ڀيٽ ۾ اڃا به گهٽ دستاويز آهي
  • ٻيهر - لڏپلاڻ اسڪرپٽ طرفان لکيل آهن

ThinkingHome.مهاجر

ڊيٽا لڏپلاڻ سسٽم جي مقابلي ۽ چونڊ

.NET ڪور پليٽ فارم ڏانهن ورزن ٿيل ڊيٽابيس اسڪيما لڏپلاڻ لاءِ هڪ اوزار، MIT لائسنس تحت ورهايل. ڊولپر پاڻ تقريبا هڪ سال اڳ ان جي تازي ورزن بابت لکيو.

پرو:

  • .NET ڪور لاء ٺهيل
  • لڏپلاڻ جي برانچنگ تسلسل کي لاڳو ڪيو
  • لاڳو ٿيل لڏپلاڻ لاگنگ

ڪن

  • آخري ڀيرو هڪ سال اڳ اپڊيٽ ڪيو ويو. ظاهري طور تي پروجيڪٽ جي حمايت نه ڪئي وئي آهي
  • Oracle پاران سهڪار نه ڪيو ويو آهي (مضمون ۾ چيو ويو آهي ته اهو .NET ڪور لاء مستحڪم عمل درآمد نه هجڻ جي ڪري آهي - پر اهو هڪ سال اڳ آهي)
  • لڏپلاڻ جو ڪوبه خودڪار نسل ناهي

مجموعي طور تي، پروجيڪٽ واعدو نظر اچي ٿو، خاص طور تي جيڪڏهن اهو ترقي ڪرڻ هو، پر اسان کي هتي ۽ هاڻي فيصلو ڪرڻو پوندو.

روانگي لڏپلاڻ ڪندڙ

ڊيٽا لڏپلاڻ سسٽم جي مقابلي ۽ چونڊ
github.com/fluentmigrator/fluentmigrator

سڀ کان وڌيڪ مشهور لڏپلاڻ وارو اوزار مداحن جي وڏي فوج سان. Apache 2.0 لائسنس تحت ورهايو ويو. جيئن بيان ڪيو ويو آهي، اهو .NET لاء هڪ لڏپلاڻ وارو فريم ورڪ آهي، جهڙوڪ Ruby on Rails Migrations. ڊيٽابيس اسڪيما ۾ تبديليون C# طبقن ۾ بيان ڪيون ويون آهن.

هتي فائدا آهن:

  • گهربل DBMS لاءِ سپورٽ
  • .NET ڪور سپورٽ
  • وڏي ترقي يافته ڪميونٽي
  • لڏپلاڻ جي وچ ۾ تڪرار ترتيب سان حل ڪيا ويا آهن- لڏپلاڻ جي عمل جو حڪم بيان ڪيو ويو آهي. ان کان علاوه، جيڪڏهن ڪو تڪرار هڪ اداري جي چوڌاري پيدا ٿئي ٿي، جڏهن ڪوڊ کي ملائي، اهو ساڳيو طريقي سان حل ڪيو ويندو آهي باقي ڪوڊ ۾
  • اهڙا پروفائيل آهن جيڪي ڪامياب لڏپلاڻ کانپوءِ جاري ڪيا ويا آهن. ۽ اهي خدمت جا ڪم ڪري سگهن ٿا آخري تازه ڪاري هڪ مهينو اڳ هئي، اهو آهي، پروجيڪٽ زنده آهي

جيئن ته مائنس لاء، اهي هتي آهن:

  • لڏپلاڻ جو ڪوبه خودڪار نسل ناهي
  • EF ماڊلز سان ڪوبه واسطو نه آهي
  • ڪوبه ڊيٽابيس سنيپ شاٽ

اسان جي پسند ڇا هئي؟

ڊيٽا لڏپلاڻ سسٽم جي مقابلي ۽ چونڊ

گرم بحث مباحثا ٻن پيرا ميٽرن جي چوڌاري ڦري ويا - لڏپلاڻ جو خودڪار نسل ۽ تڪرار جو صحيح حل. ٻيا عنصر تمام گهٽ خوفناڪ هئا. نتيجي طور، بحث جي نتيجن جي بنياد تي، ٽيم فيصلو ڪيو ته نئين منصوبي ۾ Fluent Migrator استعمال ڪرڻ. ڇو ته مستقبل ۾ تڪرارن کي حل ڪرڻ سان تمام گهڻو فائدو ٿيندو.

پهچڻ

يقينا، ڪو به ڀرپور اوزار نه آهن. تنهن ڪري اسان کي ترجيح ڏيڻي هئي اسان جي ”چاهيون“ چونڊڻ لاءِ. جڏهن ته، ٻين ٽيمن ۽ ٻين ڪمن لاء، ٻيا عنصر شايد فيصلا ڪن. اسان کي اميد آهي ته هي مضمون توهان کي چونڊڻ ۾ مدد ڪندي.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو