தரவு இடம்பெயர்வு அமைப்புகளின் ஒப்பீடு மற்றும் தேர்வு
தரவு மாதிரியானது வளர்ச்சிச் செயல்பாட்டின் போது மாறுகிறது, மேலும் ஒரு கட்டத்தில் அது தரவுத்தளத்துடன் ஒத்துப்போவதில்லை. நிச்சயமாக, தரவுத்தளத்தை நீக்கலாம், பின்னர் ORM மாதிரியுடன் பொருந்தக்கூடிய புதிய பதிப்பை உருவாக்கும், ஆனால் இந்த செயல்முறை ஏற்கனவே இருக்கும் தரவை இழக்க வழிவகுக்கும். எனவே, இடம்பெயர்வு அமைப்பின் செயல்பாடு, ஒரு திட்ட மாற்றத்தின் விளைவாக, ஏற்கனவே உள்ள தரவை இழக்காமல் பயன்பாட்டில் உள்ள தரவு மாதிரியுடன் ஒத்திசைக்கப்படுவதை உறுதி செய்வதாகும்.
இந்த கட்டுரையில், தரவுத்தள இடம்பெயர்வுகளை நிர்வகிப்பதற்கான பல்வேறு கருவிகளைப் பார்க்க விரும்புகிறோம். இதேபோன்ற தேர்வை எதிர்கொள்ளும் டெவலப்பர்களுக்கு இந்த மதிப்பாய்வு பயனுள்ளதாக இருக்கும் என்று நம்புகிறோம்.
பணி
எங்கள் நிறுவனம் தற்போது அடுத்த தலைமுறை தயாரிப்பை உருவாக்கி வருகிறது - டாக்ஸ் செக்யூரிட்டி சூட் (டிஎஸ்எஸ்). சர்வர் பகுதி .Net Core இல் எழுதப்பட்டுள்ளது, மேலும் Entity Framework கோர் DBMS ஆகப் பயன்படுத்தப்படுகிறது. பயன்பாட்டை வடிவமைக்கும் போது, குறியீடு முதல் அணுகுமுறையைப் பயன்படுத்துகிறோம்.
பயன்பாட்டு டொமைன் மாதிரியானது ஒரே நேரத்தில் பல டெவலப்பர்களால் உருவாக்கப்பட்டது - ஒவ்வொன்றும் கணினியின் தர்க்கரீதியான பகுதிக்கு பொறுப்பாகும்.
DSS இன் முந்தைய தலைமுறை கிளாசிக் நிறுவன கட்டமைப்பு இடம்பெயர்வுகளை (EF 6) இடம்பெயர்வு மேலாண்மை அமைப்பாகப் பயன்படுத்தியது. இருப்பினும், சில புகார்கள் அதற்கு எதிராக குவிந்துள்ளன, முக்கியமாக பதிப்பு முரண்பாடுகளைத் தீர்ப்பதில் EF இல் ஒரு நல்ல அணுகுமுறை இல்லை. ஆதரவின் ஒரு பகுதியாக பிழைகளை சரிசெய்யும்போது இந்த உண்மை இன்னும் நம்மை வருத்தப்படுத்துகிறது, எனவே மாற்று விருப்பங்களைக் கருத்தில் கொள்ள முடிவு செய்தோம்.
விவாதத்தின் விளைவாக, இடம்பெயர்வு மேலாண்மை அமைப்புக்கான பின்வரும் தேவைகள் உருவாக்கப்பட்டன:
- பல்வேறு DBMSகளுக்கான ஆதரவு. MS SQL சர்வர், PostgreSQL, Oracle ஆகியவை தேவை, ஆனால் மற்றவற்றைப் பயன்படுத்துவது சாத்தியம்
- ORM உடன் பணிபுரிதல். ஆரம்பத்தில், இது EF கோர் பயன்படுத்த திட்டமிடப்பட்டது, ஆனால் வடிவமைப்பு கட்டத்தில் நாங்கள் மற்ற ORMகளை பரிசீலிக்க தயாராக இருந்தோம்.
- இடம்பெயர்வுகளின் தானாக உருவாக்கம். குறியீட்டின் வளர்ச்சியை கணக்கில் எடுத்துக்கொண்டு, "கையால் எழுதும்" இடம்பெயர்வுகளின் தேவையைத் தவிர்க்க விரும்புகிறேன்.
- பதிப்பு முரண்பாடுகள். விநியோகிக்கப்பட்ட வளர்ச்சி சூழலில், ஒன்றிணைக்கும்போது, EF கோர் மோதல்களால் பாதிக்கப்படலாம். பயன்பாட்டின் வெவ்வேறு பகுதிகள் வெவ்வேறு டெவலப்பர்களால் உருவாக்கப்பட்டதால் இது ஒரு குறிப்பிடத்தக்க சிக்கலாக மாறும், எனவே நீங்கள் ஒவ்வொன்றிலும் அதிக நேரம் செலவிட வேண்டும்
- மேம்பட்ட ஆவணங்கள் மற்றும் ஆதரவு. இங்கே, எங்களுக்குத் தோன்றுகிறது, எந்த விளக்கமும் தேவையில்லை
- இலவசம். அளவுகோல் நிபந்தனைக்குட்பட்டது, ஏனெனில் அமைப்புகள் மிகவும் விலை உயர்ந்தவை அல்லது விலை உயர்ந்தவை அல்ல, ஆனால் வசதிக்காக சிறந்தவை, நாங்கள் கருத்தில் கொள்ள தயாராக இருந்தோம்
ஒரு சிறிய ஆராய்ச்சியின் விளைவாக, பின்வரும் விருப்பங்கள் கண்டறியப்பட்டன மற்றும் கருத்தில் கொள்ள விரும்பத்தக்கவை:
- EF கோர் இடம்பெயர்வுகள்
- DBup
- ரவுண்ட்ஹவுஸ்இ
- திங்கிங்ஹோம்.புலம்பெயர்ந்தவர்
- சரளமாக குடியேறுபவர்
இப்போது இன்னும் கொஞ்சம் விவரம்
இயற்கையாகவே, இது தேர்வு செய்வதற்கான முதல் மற்றும் முக்கிய விருப்பமாகும். தாம்பூலத்துடன் சுற்றித் திரியாமல் பெட்டிக்கு வெளியே வேலை செய்யும் ஒரு சொந்த இசைக்கருவி. அதிக அளவு ஆவணங்கள், அதிகாரப்பூர்வமானது மற்றும் அவ்வாறு இல்லை, எளிமை போன்றவை. இருப்பினும், கிளாசிக் EF பற்றிய புகார்கள் EF கோர்க்கும் மிகவும் பொருத்தமானவை.
எனவே, EF கோர்க்கான நன்மைகள் சிறப்பிக்கப்படுகின்றன:
- மைக்ரோசாப்ட் ஆதரவு, ஆவணங்கள், ரஷ்ய, பெரிய சமூகம் உட்பட
- CodeFirst அடிப்படையில் இடம்பெயர்வுகளின் தானியங்கு உருவாக்கம்
- 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 ஐப் பயன்படுத்தி மோதல்களும் தீர்க்கப்படுகின்றன
மற்றும் தீமைகள்:
- ஆதரிக்கப்படும் அனைத்து வகையான DBMS களிலும், Oracle அவற்றில் ஒன்றல்ல
- ORM உடன் தொடர்பு கொள்ளாது
- T-SQL ஸ்கிரிப்ட்களை கையால் எழுதுவது நாங்கள் நோக்கமாக இல்லை
- SQL ஸ்கிரிப்ட்களை எழுதும் வகையில் அவை அவசியமில்லாமல் இருக்கலாம் என்றாலும், ஆவணங்கள் மற்றும் சமூகம் அப்படித்தான்.
ரவுண்ட்ஹவுஸ்இ
இந்த இடம்பெயர்வு மேலாண்மை கருவி, Apache 2.0 உரிமத்தின் கீழ் விநியோகிக்கப்பட்டது, முந்தையதைப் போலவே, T-SQL இடம்பெயர்வு இயந்திரத்தில் இயங்குகிறது. வெளிப்படையாக, டெவலப்பர்கள் ஒரு வசதியான வளர்ச்சி செயல்முறையை உருவாக்குவதை விட, DBMS ஆதரவு தொடர்பான தொழில்நுட்ப சிக்கல்களைத் தீர்ப்பதற்கு முன்னுரிமை அளித்தனர்.
நன்மை:
- தேவையான DBMS ஐ ஆதரிக்கிறது (ஆரக்கிள் உட்பட)
தீமைகள்:
- Oracle (அத்துடன் அணுகல், இது எங்களுக்குப் பொருத்தமற்றது) .NET Core இல் ஆதரிக்கப்படவில்லை, .NET Full Framework இல் மட்டுமே.
- ORM உடன் வேலை செய்யாது
- முந்தைய கருவியை விட குறைவான ஆவணங்கள் உள்ளன
- மீண்டும் - இடம்பெயர்வுகள் ஸ்கிரிப்ட்களால் எழுதப்படுகின்றன
திங்கிங்ஹோம்.புலம்பெயர்ந்தவர்
MIT உரிமத்தின் கீழ் விநியோகிக்கப்படும் .NET கோர் இயங்குதளத்திற்கு பதிப்பு தரவுத்தள ஸ்கீமா இடம்பெயர்விற்கான ஒரு கருவி.
நன்மை:
- நெட் கோர்க்காக வடிவமைக்கப்பட்டது
- இடம்பெயர்வுகளின் கிளை வரிசையை செயல்படுத்தியது
- செயல்படுத்தப்பட்ட இடம்பெயர்வு பதிவு
தீமைகள்:
- கடைசியாக ஒரு வருடம் முன்பு புதுப்பிக்கப்பட்டது. திட்டத்திற்கு ஆதரவு இல்லை
- Oracle ஆல் ஆதரிக்கப்படவில்லை (இது .NET Core இன் நிலையான செயலாக்கம் இல்லாததால் ஏற்பட்டதாக கட்டுரை கூறுகிறது - ஆனால் இது ஒரு வருடத்திற்கு முன்பு)
- இடம்பெயர்வுகளின் தானியங்கி உருவாக்கம் இல்லை
ஒட்டுமொத்தமாக, திட்டம் நம்பிக்கைக்குரியதாகத் தெரிகிறது, குறிப்பாக அது உருவாக்கப்பட வேண்டுமானால், ஆனால் நாம் இங்கேயும் இப்போதும் ஒரு முடிவை எடுக்க வேண்டும்.
சரளமாக குடியேறுபவர்
ரசிகர்களின் பெரும் படையுடன் மிகவும் பிரபலமான இடம்பெயர்வு கருவி. Apache 2.0 உரிமத்தின் கீழ் விநியோகிக்கப்பட்டது. விளக்கத்தில் கூறப்பட்டுள்ளபடி, இது ரூபி ஆன் ரெயில்ஸ் மைக்ரேஷன்ஸ் போன்ற .NETக்கான இடம்பெயர்வு கட்டமைப்பாகும். தரவுத்தள திட்டத்தில் மாற்றங்கள் C# வகுப்புகளில் விவரிக்கப்பட்டுள்ளன.
இங்கே நன்மைகள் உள்ளன:
- தேவையான DBMS க்கான ஆதரவு
- .NET கோர் ஆதரவு
- பெரிய வளர்ந்த சமூகம்
- இடம்பெயர்வுகளுக்கிடையேயான முரண்பாடுகள் வரிசையாகத் தீர்க்கப்படுகின்றன - இடம்பெயர்வுகளை நிறைவேற்றுவதற்கான வரிசை குறிப்பிடப்பட்டுள்ளது. கூடுதலாக, ஒரு நிறுவனத்தைச் சுற்றி மோதல் ஏற்பட்டால், குறியீட்டை இணைக்கும்போது, அது மற்ற குறியீட்டில் உள்ளதைப் போலவே தீர்க்கப்படும்.
- வெற்றிகரமான இடம்பெயர்வுக்குப் பிறகு செயல்படுத்தப்படும் சுயவிவரங்கள் உள்ளன. அவர்கள் சேவை செயல்பாடுகளை எடுத்துச் செல்ல முடியும். கடைசியாக ஒரு மாதத்திற்கு முன்பு புதுப்பிக்கப்பட்டது, அதாவது, திட்டம் உயிருடன் உள்ளது
குறைபாடுகளைப் பொறுத்தவரை, அவை இங்கே:
- இடம்பெயர்வுகளின் தானியங்கி உருவாக்கம் இல்லை
- EF மாதிரிகளுடன் தொடர்பு இல்லை
- தரவுத்தள ஸ்னாப்ஷாட்கள் இல்லை
எங்கள் தேர்வு என்ன?
சூடான விவாதங்கள் இரண்டு அளவுருக்களைச் சுற்றி சுழன்றன - இடம்பெயர்வுகளின் தானியங்கி உருவாக்கம் மற்றும் மோதல்களின் விவேகமான தீர்வு. மற்ற காரணிகள் மிகவும் குறைவாக பயமுறுத்துகின்றன. இதன் விளைவாக, கலந்துரையாடலின் முடிவுகளின் அடிப்படையில், புதிய திட்டத்தில் Fluent Migrator ஐப் பயன்படுத்த குழு முடிவு செய்தது. ஏனென்றால் எதிர்காலத்தில் ஏற்படும் முரண்பாடுகளைத் தீர்ப்பது அதிக நன்மைகளைத் தரும்.
கண்டுபிடிப்புகள்
நிச்சயமாக, சரியான கருவிகள் எதுவும் இல்லை. எனவே ஒரு தேர்வு செய்ய நமது "விருப்பங்களுக்கு" முன்னுரிமை கொடுக்க வேண்டும். இருப்பினும், மற்ற அணிகள் மற்றும் பிற பணிகளுக்கு, பிற காரணிகள் தீர்க்கமானதாக இருக்கலாம். இந்த கட்டுரை உங்களுக்கு ஒரு தேர்வு செய்ய உதவும் என்று நம்புகிறோம்.
ஆதாரம்: www.habr.com