ڈیٹا منتقلی کے نظام کا موازنہ اور انتخاب

ڈیٹا منتقلی کے نظام کا موازنہ اور انتخاب

ڈیٹا منتقلی کے نظام کا موازنہ اور انتخاب

ڈیٹا ماڈل ترقی کے عمل کے دوران تبدیل ہوتا رہتا ہے، اور کسی وقت یہ ڈیٹا بیس سے مطابقت نہیں رکھتا۔ یقیناً، ڈیٹا بیس کو حذف کیا جا سکتا ہے، اور پھر ORM ایک نیا ورژن بنائے گا جو ماڈل سے مماثل ہو گا، لیکن یہ طریقہ کار موجودہ ڈیٹا کے ضائع ہونے کا باعث بنے گا۔ اس طرح، مائیگریشن سسٹم کا کام اس بات کو یقینی بنانا ہے کہ اسکیما کی تبدیلی کے نتیجے میں، یہ موجودہ ڈیٹا کو کھوئے بغیر ایپلیکیشن میں موجود ڈیٹا ماڈل کے ساتھ ہم آہنگ ہو۔

اس مضمون میں، ہم ڈیٹا بیس کی منتقلی کے انتظام کے لیے مختلف ٹولز کو دیکھنا چاہیں گے۔ ہم امید کرتے ہیں کہ یہ جائزہ ایسے ڈویلپرز کے لیے کارآمد ثابت ہو گا جنہیں اسی طرح کے انتخاب کا سامنا ہے۔

ٹاسک

ہماری کمپنی فی الحال پروڈکٹ کی اگلی نسل کو فعال طور پر تیار کر رہی ہے – Docs Security Suite (DSS)۔ سرور کا حصہ .Net Core میں لکھا گیا ہے، اور Entity Framework Core کو DBMS کے طور پر استعمال کیا جاتا ہے۔ ایپلیکیشن ڈیزائن کرتے وقت، ہم کوڈ فرسٹ اپروچ استعمال کرتے ہیں۔

ایپلیکیشن ڈومین ماڈل ایک ہی وقت میں متعدد ڈویلپرز کے ذریعہ بنایا گیا ہے - ہر ایک سسٹم کے اپنے منطقی حصے کے لئے ذمہ دار ہے۔

DSS کی پچھلی نسل نے کلاسک ہستی فریم ورک مائیگریشنز (EF 6) کو مائیگریشن مینجمنٹ سسٹم کے طور پر استعمال کیا۔ تاہم، اس کے خلاف کچھ شکایات جمع ہوئی ہیں، جن میں سب سے اہم یہ ہے کہ EF کے پاس ورژن کے تنازعات کو حل کرنے کے لیے سمجھدار انداز کا فقدان ہے۔ سپورٹ کے حصے کے طور پر کیڑے ٹھیک کرتے وقت یہ حقیقت اب بھی ہمیں پریشان کرتی ہے، اس لیے ہم نے متبادل اختیارات پر غور کرنے کا فیصلہ کیا۔

بحث کے نتیجے میں، نقل مکانی کے انتظام کے نظام کے لیے درج ذیل تقاضے تشکیل دیے گئے:

  1. مختلف DBMSs کے لیے سپورٹ۔ ایم ایس ایس کیو ایل سرور، پوسٹگری ایس کیو ایل، اوریکل کی ضرورت ہے، لیکن دوسروں کو استعمال کرنا ممکنہ طور پر ممکن ہے
  2. ORM کے ساتھ کام کرنا۔ ابتدائی طور پر، EF Core کو استعمال کرنے کا منصوبہ بنایا گیا تھا، لیکن ڈیزائن کے مرحلے پر ہم دیگر ORMs پر غور کرنے کے لیے تیار تھے۔
  3. ہجرت کی خودکار نسل۔ کوڈ فرسٹ کی ترقی کو مدنظر رکھتے ہوئے، میں "ہاتھ سے لکھنے" کی منتقلی کی ضرورت سے گریز کرنا چاہوں گا۔
  4. ورژن میں تضاد۔ تقسیم شدہ ترقیاتی ماحول میں، ضم ہونے پر، EF Core تنازعات کا شکار ہو سکتا ہے۔ یہ ایک اہم مسئلہ بن جاتا ہے کیونکہ ایپلیکیشن کے مختلف حصے مختلف ڈویلپرز کے ذریعے بنائے جاتے ہیں، اس لیے آپ کو ہر ایک پر کافی وقت صرف کرنا پڑتا ہے۔
  5. اعلی درجے کی دستاویزات اور معاونت۔ یہاں، ہمیں ایسا لگتا ہے، کسی وضاحت کی ضرورت نہیں ہے۔
  6. مفت. معیار مشروط ہے، چونکہ نظام بہت مہنگے یا مہنگے نہیں ہیں، لیکن سہولت کے لحاظ سے مثالی ہیں، ہم اس پر غور کرنے کے لیے بھی تیار تھے۔

تھوڑی سی تحقیق کے نتیجے میں، درج ذیل آپشنز مل گئے اور غور کے لیے مطلوبہ پائے گئے:

  1. ای ایف کور ہجرت
  2. ڈی بی اپ
  3. راؤنڈ ہاؤس ای
  4. تھنکنگ ہوم۔مائیگریٹر
  5. روانی سے ہجرت کرنے والا

اور اب تھوڑی اور تفصیل

ڈیٹا منتقلی کے نظام کا موازنہ اور انتخاب
EntityFramework Core Migrations

قدرتی طور پر، یہ انتخاب کرنے کا پہلا اور اہم آپشن تھا۔ ایک دیسی آلہ جو دف کے ساتھ بغیر کسی ہلچل کے باکس سے باہر کام کرتا ہے۔ دستاویزات کی ایک بڑی مقدار، سرکاری اور ایسا نہیں، سادگی وغیرہ۔ تاہم، کلاسک EF کے بارے میں کی گئی شکایات EF Core کے لیے بھی کافی متعلقہ ہیں۔

اس طرح، EF کور کے فوائد کو نمایاں کیا گیا ہے:

  • مائیکروسافٹ سپورٹ، دستاویزات، بشمول روسی، بہت بڑی کمیونٹی
  • CodeFirst کی بنیاد پر نقل مکانی کی خودکار تخلیق
  • EF 6 کے مقابلے میں، EF کور اب ڈیٹا بیس کا سنیپ شاٹ محفوظ نہیں کرتا ہے۔ کوڈ فرسٹ میں ای ایف کور کے ساتھ کام کرتے وقت، ڈیٹا بیس کو تعینات کرنے کی مزید ضرورت نہیں ہے۔
  • چونکہ ہم کوڈ فرسٹ سے ڈانس کر رہے ہیں، اس لیے تمام مطلوبہ ڈیٹا تک رسائی فراہم کرنے والوں کے لیے ایک منتقلی ممکن ہے۔
  • فراہم کنندگان کے حوالے سے، PostgreSQL تعاون یافتہ ہے، اوریکل سپورٹ ہے، وغیرہ، وغیرہ، اور یہاں تک کہ MS SQL Server 

اور نقصانات بھی:

  • تنازعات کا حل اسی سطح پر رہا۔ ہجرت کو ترتیب دینا اور ڈیٹا بیس کے سنیپ شاٹس کو اپ ڈیٹ کرنا ضروری ہے۔
  • ان ماڈلز پر انحصار جن پر ہجرتیں پیدا ہوتی ہیں۔

ڈی بی اپ

ڈیٹا منتقلی کے نظام کا موازنہ اور انتخاب
dbup.github.io

DbUp ایک .NET لائبریری ہے جو NuGet کے ذریعہ انسٹال کی گئی ہے اور SQL سرور میں تبدیلیوں کو آگے بڑھانے میں مدد کرتی ہے۔ یہ اس بات پر نظر رکھتا ہے کہ کون سی تبدیلی اسکرپٹس پہلے ہی عمل میں آچکی ہیں اور وہ چلاتی ہیں جو ڈیٹا بیس کو اپ ڈیٹ کرنے کے لیے ضروری ہیں۔ لائبریری ASP.NET پر ایک اوپن سورس بلاگنگ انجن کے پروجیکٹ سے نکلی ہے اور MIT لائسنس کے تحت موجود ہے، اور کوڈ GitHub پر ہے۔ نقل مکانی کو T-SQL کا استعمال کرتے ہوئے بیان کیا گیا ہے۔

فوائد کیا ہیں:

  • بڑی تعداد میں DBMS (MS SQL Server, PstgreSQL, MySQL) کے لیے سپورٹ
  • چونکہ اسکرپٹ T-SQL میں لکھے گئے ہیں، وہ کافی آسان نظر آتے ہیں۔
  • تنازعات کو بھی SQL کا استعمال کرتے ہوئے حل کیا جاتا ہے۔

اور نقصانات:

  • تعاون یافتہ DBMSs کی تمام اقسام کے ساتھ، Oracle ان میں سے ایک نہیں ہے۔
  • ORM کے ساتھ تعامل نہیں کرتا ہے۔
  • T-SQL اسکرپٹ کو ہاتھ سے لکھنا وہ نہیں ہے جس کا ہم مقصد کر رہے تھے۔
  • دستاویزات اور کمیونٹی بہت زیادہ ہیں، اگرچہ ایس کیو ایل اسکرپٹ لکھنے کے لحاظ سے وہ ضروری نہیں ہوسکتے ہیں۔

راؤنڈ ہاؤس ای

ڈیٹا منتقلی کے نظام کا موازنہ اور انتخاب
github.com/chucknorris/roundhouse

یہ مائیگریشن مینجمنٹ ٹول، اپاچی 2.0 لائسنس کے تحت تقسیم کیا گیا، پچھلے ایک کی طرح، T-SQL مائیگریشن انجن پر چلتا ہے۔ بظاہر، ڈویلپرز نے ڈی بی ایم ایس سپورٹ سے متعلق تکنیکی مسائل کو حل کرنے کو ترجیح دی، بجائے اس کے کہ ایک آرام دہ ترقیاتی عمل پیدا کیا جائے۔

پیشہ:

  • ضروری DBMS کو سپورٹ کرتا ہے (بشمول اوریکل)

Cons:

  • اوریکل (نیز رسائی، جو ہمارے لیے غیر متعلقہ ہے) .NET کور پر تعاون یافتہ نہیں ہے، صرف .NET مکمل فریم ورک پر
  • ORM کے ساتھ کام نہیں کرتا ہے۔
  • پچھلے ٹول سے بھی کم دستاویزات موجود ہیں۔
  • ایک بار پھر - ہجرتیں اسکرپٹ کے ذریعہ لکھی جاتی ہیں۔

تھنکنگ ہوم۔مائیگریٹر

ڈیٹا منتقلی کے نظام کا موازنہ اور انتخاب

MIT لائسنس کے تحت تقسیم کردہ .NET کور پلیٹ فارم پر ورژن شدہ ڈیٹا بیس اسکیما منتقلی کے لیے ایک ٹول۔ ڈویلپر نے خود اس کے تازہ ترین ورژن کے بارے میں تقریباً ایک سال پہلے لکھا تھا۔.

پیشہ:

  • .NET کور کے لیے ڈیزائن کیا گیا ہے۔
  • ہجرت کی شاخ سازی کی ترتیب کو نافذ کیا۔
  • لاگو منتقلی لاگنگ

Cons:

  • آخری بار ایک سال پہلے اپ ڈیٹ کیا گیا۔ بظاہر اس منصوبے کی حمایت نہیں کی گئی ہے۔
  • Oracle کی طرف سے تعاون یافتہ نہیں (مضمون میں کہا گیا ہے کہ یہ .NET کور کے لیے مستحکم نفاذ کی کمی کی وجہ سے ہے - لیکن یہ ایک سال پہلے کی بات ہے)
  • نقل مکانی کی کوئی خودکار نسل نہیں ہے۔

مجموعی طور پر، پراجیکٹ امید افزا نظر آتا ہے، خاص طور پر اگر اسے تیار کرنا تھا، لیکن ہمیں یہاں اور ابھی فیصلہ کرنے کی ضرورت ہے۔

روانی سے ہجرت کرنے والا

ڈیٹا منتقلی کے نظام کا موازنہ اور انتخاب
github.com/fluentmigrator/fluentmigrator

مداحوں کی ایک بڑی فوج کے ساتھ نقل مکانی کا سب سے مشہور ٹول۔ اپاچی 2.0 لائسنس کے تحت تقسیم کیا گیا۔ جیسا کہ تفصیل میں بتایا گیا ہے، یہ .NET کے لیے ایک مائیگریشن فریم ورک ہے، جیسا کہ Ruby on Rails Migrations ہے۔ ڈیٹا بیس اسکیما میں تبدیلیاں C# کلاسز میں بیان کی گئی ہیں۔

یہاں فوائد ہیں:

  • مطلوبہ DBMS کے لیے سپورٹ
  • .NET کور سپورٹ
  • بڑی ترقی یافتہ کمیونٹی
  • ہجرت کے درمیان تنازعات کو ترتیب وار حل کیا جاتا ہے — نقل مکانی کے عمل کا حکم متعین کیا جاتا ہے۔ اس کے علاوہ، اگر ایک ہستی کے ارد گرد کوئی تنازعہ پیدا ہوتا ہے، کوڈ کو ضم کرتے وقت، اسے اسی طرح حل کیا جاتا ہے جس طرح باقی کوڈ میں ہوتا ہے۔
  • ایسے پروفائلز ہیں جو کامیاب منتقلی کے بعد عمل میں آتے ہیں۔ اور وہ سروس فنکشن لے سکتے ہیں۔آخری اپ ڈیٹ ایک ماہ پہلے کی گئی تھی، یعنی پروجیکٹ زندہ ہے۔

جہاں تک مائنس کا تعلق ہے، وہ یہ ہیں:

  • نقل مکانی کی کوئی خودکار نسل نہیں ہے۔
  • EF ماڈلز کے ساتھ کوئی تعلق نہیں۔
  • کوئی ڈیٹا بیس سنیپ شاٹس نہیں۔

ہمارا انتخاب کیا تھا؟

ڈیٹا منتقلی کے نظام کا موازنہ اور انتخاب

گرما گرم بحثیں دو پیرامیٹرز کے گرد گھومتی تھیں - نقل مکانی کی خودکار نسل اور تنازعات کا سمجھدار حل۔ دوسرے عوامل بہت کم خوفناک تھے۔ نتیجے کے طور پر، بحث کے نتائج کی بنیاد پر، ٹیم نے نئے پروجیکٹ میں Fluent Migrator استعمال کرنے کا فیصلہ کیا۔ کیونکہ مستقبل میں تنازعات کو حل کرنے سے بہت زیادہ فوائد حاصل ہوں گے۔

نتائج

یقینا، کوئی کامل اوزار نہیں ہیں. لہذا ہمیں انتخاب کرنے کے لیے اپنی "خواہشات" کو ترجیح دینی تھی۔ تاہم، دیگر ٹیموں اور دیگر کاموں کے لیے، دوسرے عوامل فیصلہ کن ہو سکتے ہیں۔ ہمیں امید ہے کہ یہ مضمون آپ کو انتخاب کرنے میں مدد کرے گا۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں