දත්ත සංක්‍රමණ පද්ධති සංසන්දනය කිරීම සහ තෝරා ගැනීම

දත්ත සංක්‍රමණ පද්ධති සංසන්දනය කිරීම සහ තෝරා ගැනීම

දත්ත සංක්‍රමණ පද්ධති සංසන්දනය කිරීම සහ තෝරා ගැනීම

සංවර්ධන ක්‍රියාවලියේදී දත්ත ආකෘතිය වෙනස් වීමට නැඹුරු වන අතර, යම් අවස්ථාවක එය තවදුරටත් දත්ත සමුදායට අනුරූප නොවේ. ඇත්ත වශයෙන්ම, දත්ත සමුදාය මකා දැමිය හැකි අතර, පසුව ORM විසින් ආකෘතියට ගැලපෙන නව අනුවාදයක් නිර්මාණය කරනු ඇත, නමුත් මෙම ක්රියා පටිපාටිය පවතින දත්ත අහිමි වීමට තුඩු දෙනු ඇත. මේ අනුව, සංක්‍රමණ පද්ධතියේ කර්තව්‍යය වන්නේ, ක්‍රමානුරූප වෙනස් වීමක ප්‍රතිඵලයක් ලෙස, පවතින දත්ත අහිමි නොවී යෙදුමේ ඇති දත්ත ආකෘතිය සමඟ සමමුහුර්ත වීම සහතික කිරීමයි.

මෙම ලිපියෙන් අපි දත්ත සමුදා සංක්‍රමණය කළමනාකරණය සඳහා විවිධ මෙවලම් දෙස බැලීමට කැමැත්තෙමු. සමාන තේරීමකට මුහුණ දෙන සංවර්ධකයින් සඳහා මෙම සමාලෝචනය ප්‍රයෝජනවත් වනු ඇතැයි අපි බලාපොරොත්තු වෙමු.

අරමුණු

අපගේ සමාගම දැනට ඊළඟ පරම්පරාවේ නිෂ්පාදන - Docs Security Suite (DSS) සක්‍රියව සංවර්ධනය කරමින් සිටී. සේවාදායක කොටස .Net Core වලින් ලියා ඇති අතර, Entity Framework Core DBMS ලෙස භාවිතා වේ. යෙදුමක් සැලසුම් කිරීමේදී, අපි Code First ප්‍රවේශය භාවිතා කරමු.

යෙදුම් වසම් ආකෘතිය එකවර සංවර්ධකයින් කිහිප දෙනෙකු විසින් නිර්මාණය කර ඇත - එක් එක් පද්ධතියේ ඔවුන්ගේම තාර්කික කොටස සඳහා වගකිව යුතුය.

DSS හි පෙර පරම්පරාව සංක්‍රමණ කළමනාකරණ පද්ධතිය ලෙස සම්භාව්‍ය ආයතන රාමු සංක්‍රමණය (EF 6) භාවිතා කළේය. කෙසේ වෙතත්, එයට එරෙහිව සමහර පැමිණිලි එකතු වී ඇති අතර, ප්‍රධාන එක වන්නේ අනුවාද ගැටුම් නිරාකරණය කිරීම සඳහා EF හි සාධාරණ ප්‍රවේශයක් නොමැති වීමයි. ආධාරකයේ කොටසක් ලෙස දෝෂ නිවැරදි කිරීමේදී මෙම කරුණ තවමත් අපව කලබලයට පත් කරයි, එබැවින් අපි විකල්ප විකල්ප සලකා බැලීමට තීරණය කළෙමු.

සාකච්ඡාවේ ප්‍රතිඵලයක් ලෙස, සංක්‍රමණ කළමනාකරණ පද්ධතිය සඳහා පහත අවශ්‍යතා සකස් විය:

  1. විවිධ DBMS සඳහා සහාය. MS SQL Server, PostgreSQL, Oracle අවශ්‍ය වේ, නමුත් අනෙක් ඒවා භාවිතා කිරීමට හැකියාව ඇත
  2. ORM සමඟ වැඩ කිරීම. මුලදී, එය EF Core භාවිතා කිරීමට සැලසුම් කර ඇත, නමුත් සැලසුම් අවධියේදී අපි වෙනත් ORMs සලකා බැලීමට සූදානම්ව සිටියෙමු.
  3. සංක්‍රමණ ස්වයංක්‍රීයව උත්පාදනය කිරීම. පළමු සංග්‍රහයේ වර්ධනය සැලකිල්ලට ගනිමින්, සංක්‍රමණ "අතින් ලිවීමේ" අවශ්‍යතාවයෙන් වැළකී සිටීමට මම කැමැත්තෙමි.
  4. අනුවාද ගැටුම්. බෙදා හරින ලද සංවර්ධන පරිසරයක් තුළ, ඒකාබද්ධ වන විට, EF Core ගැටුම් වලින් පීඩා විඳිය හැකිය. යෙදුමේ විවිධ කොටස් විවිධ සංවර්ධකයින් විසින් නිර්මාණය කර ඇති බැවින් මෙය සැලකිය යුතු ගැටළුවක් බවට පත්වේ, එබැවින් ඔබට එක් එක් සඳහා බොහෝ කාලයක් ගත කිරීමට සිදු වේ
  5. උසස් ලියකියවිලි සහ සහාය. මෙන්න, අපට පෙනෙන පරිදි, පැහැදිලි කිරීමක් අවශ්ය නොවේ
  6. නිදහස්. නිර්ණායකය කොන්දේසි සහිත ය, මන්ද පද්ධති ඉතා මිල අධික හෝ මිල අධික නොවන නමුත් පහසුව සඳහා වඩාත් සුදුසු බැවින්, අපි සලකා බැලීමට ද සූදානම්ව සිටියෙමු.

කුඩා පර්යේෂණයක ප්‍රතිඵලයක් ලෙස, පහත සඳහන් විකල්පයන් සොයාගත් අතර සලකා බැලීම සඳහා සුදුසු ඒවා විය.

  1. EF Core Migrations
  2. DBup
  3. රවුන්ඩ්හවුස්ඊ
  4. ThinkingHome.Migrator
  5. චතුර සංක්‍රමණිකයා

දැන් ටිකක් වැඩි විස්තර

දත්ත සංක්‍රමණ පද්ධති සංසන්දනය කිරීම සහ තෝරා ගැනීම
EntityFramework Core Migrations

ස්වාභාවිකවම, මෙය තෝරා ගැනීමට පළමු සහ ප්රධාන විකල්පය විය. රබන් ගසක් සමඟ කිසිඳු කම්පනයකින් තොරව පෙට්ටියෙන් පිටත ක්‍රියා කරන දේශීය මෙවලමකි. ලේඛන විශාල ප්‍රමාණයක්, නිල සහ එසේ නොවේ, සරල බව යනාදිය. කෙසේ වෙතත්, සම්භාව්‍ය EF පිළිබඳ කරන ලද පැමිණිලි EF Core සඳහා ද බෙහෙවින් අදාළ වේ.

මේ අනුව, EF Core සඳහා ඇති වාසි ඉස්මතු කර දක්වයි:

  • මයික්‍රොසොෆ්ට් සහාය, ලේඛනගත කිරීම, රුසියානු, දැවැන්ත ප්‍රජාව ඇතුළුව
  • CodeFirst මත පදනම් වූ සංක්‍රමණ ස්වයංක්‍රීයව උත්පාදනය කිරීම
  • EF 6 හා සසඳන විට, EF Core තවදුරටත් දත්ත සමුදායේ ඡායාරූපයක් ගබඩා නොකරයි. Code First හි EF Core සමඟ වැඩ කරන විට, දත්ත සමුදායක් යෙදවීම තවදුරටත් අවශ්‍ය නොවේ
  • අපි Code First වෙතින් නටන බැවින්, අවශ්‍ය සියලුම දත්ත ප්‍රවේශ සපයන්නන් වෙත එක් සංක්‍රමණයක් සිදු කළ හැකිය
  • සපයන්නන් සම්බන්ධයෙන්, PostgreSQL සහය දක්වයි, Oracle සහය දක්වයි, ආදිය, සහ MS SQL සේවාදායකය පවා 

සහ අවාසි ද:

  • ගැටුම් නිරාකරණය එකම මට්ටමක පැවතුනි. සංක්‍රමණයන් අනුක්‍රමණය කිරීම සහ දත්ත සමුදා ස්නැප්ෂොට් යාවත්කාලීන කිරීම අවශ්‍ය වේ
  • සංක්රමණයන් උත්පාදනය කරන ලද ආකෘති මත යැපීම

DbUp

දත්ත සංක්‍රමණ පද්ධති සංසන්දනය කිරීම සහ තෝරා ගැනීම
dbup.github.io

DbUp යනු NuGet විසින් ස්ථාපනය කරන ලද .NET පුස්තකාලයක් වන අතර SQL සේවාදායකය වෙත වෙනස්කම් තල්ලු කිරීමට උපකාරී වේ. එය දැනටමත් ක්‍රියාත්මක කර ඇති වෙනස් කිරීමේ ස්ක්‍රිප්ට් මොනවාද යන්න නිරීක්ෂණය කරන අතර දත්ත සමුදාය යාවත්කාලීන කිරීමට අවශ්‍ය ඒවා ධාවනය කරයි. ASP.NET හි විවෘත මූලාශ්‍ර බ්ලොග්කරණ එන්ජිමක් සඳහා වූ ව්‍යාපෘතියකින් පුස්තකාලය වර්ධනය වූ අතර MIT බලපත්‍රයක් යටතේ පවතින අතර කේතය GitHub මත ඇත. T-SQL භාවිතයෙන් සංක්‍රමණය විස්තර කෙරේ.

වාසි මොනවාද:

  • DBMS විශාල සංඛ්‍යාවක් සඳහා සහාය (MS SQL Server, PstgreSQL, MySQL)
  • ස්ක්‍රිප්ට් T-SQL වලින් ලියා ඇති බැවින්, ඒවා තරමක් සරල බව පෙනේ
  • SQL භාවිතයෙන් ගැටුම් ද විසඳනු ලැබේ

සහ අවාසි:

  • සහාය දක්වන සියලුම DBMSs සමඟ, Oracle ඒවායින් එකක් නොවේ
  • ORM සමඟ අන්තර්ක්‍රියා නොකරයි
  • අතින් T-SQL ස්ක්‍රිප්ට් ලිවීම අප අරමුණු කළ දෙයක් නොවේ
  • SQL ස්ක්‍රිප්ට් ලිවීමේදී ඒවා අවශ්‍ය නොවිය හැකි වුවද, ලේඛනගත කිරීම සහ ප්‍රජාව එසේ ය.

රවුන්ඩ්හවුස්ඊ

දත්ත සංක්‍රමණ පද්ධති සංසන්දනය කිරීම සහ තෝරා ගැනීම
github.com/chucknorris/roundhouse

Apache 2.0 බලපත්‍රය යටතේ බෙදා හරින ලද මෙම සංක්‍රමණ කළමනාකරණ මෙවලම, පෙර එක මෙන්, T-SQL සංක්‍රමණ එන්ජිම මත ක්‍රියාත්මක වේ. පෙනෙන විදිහට, සංවර්ධකයින් සුවපහසු සංවර්ධන ක්‍රියාවලියක් නිර්මාණය කරනවාට වඩා DBMS සහාය සම්බන්ධ තාක්ෂණික ගැටලු විසඳීමට ප්‍රමුඛත්වය දී ඇත.

වාසි:

  • අවශ්‍ය DBMS (ඔරකල් ඇතුළුව) සඳහා සහය දක්වයි

එය:

  • Oracle (මෙන්ම අපට අදාළ නොවන Access) .NET Core මත සහය නොදක්වන්නේ .NET Full Framework මත පමණි.
  • ORM සමඟ ක්‍රියා නොකරයි
  • පෙර මෙවලමට වඩා අඩු ලියකියවිලි තිබේ
  • නැවතත් - සංක්‍රමණයන් ලියා ඇත්තේ ස්ක්‍රිප්ට් මගිනි

ThinkingHome.Migrator

දත්ත සංක්‍රමණ පද්ධති සංසන්දනය කිරීම සහ තෝරා ගැනීම

MIT බලපත්‍රය යටතේ බෙදා හරින ලද, .NET Core වේදිකාව වෙත අනුවාදගත දත්ත සමුදා ක්‍රම සංක්‍රමණය සඳහා මෙවලමක්. සංවර්ධකයා විසින්ම එහි නවතම අනුවාදය ගැන ලියා ඇත්තේ වසරකට පමණ පෙරය.

වාසි:

  • .NET Core සඳහා නිර්මාණය කර ඇත
  • සංක්‍රමණවල ශාඛා අනුපිළිවෙලක් ක්‍රියාත්මක කරන ලදී
  • ක්‍රියාත්මක කළ සංක්‍රමණ ලොග් කිරීම

එය:

  • අවසන් වරට යාවත්කාලීන කළේ වසරකට පෙරය. පෙනෙන විදිහට ව්‍යාපෘතියට සහය නොදක්වයි
  • Oracle වෙතින් සහය නොදක්වයි (මෙය .NET Core සඳහා ස්ථායී ක්‍රියාත්මක කිරීමක් නොමැතිකම නිසා බව ලිපියේ සඳහන් වේ - නමුත් මෙය වසරකට පෙරය)
  • ස්වයංක්‍රීය සංක්‍රමණ උත්පාදනයක් නොමැත

සමස්තයක් වශයෙන්, ව්‍යාපෘතිය බලාපොරොත්තු සහගත බව පෙනේ, විශේෂයෙන් එය සංවර්ධනය කිරීමට නම්, නමුත් අපට මෙහි සහ දැන් තීරණයක් ගැනීමට අවශ්‍ය විය.

චතුර සංක්‍රමණිකයා

දත්ත සංක්‍රමණ පද්ධති සංසන්දනය කිරීම සහ තෝරා ගැනීම
github.com/fluentmigrator/fluentmigrator

පංකා විශාල හමුදාවක් සමඟ වඩාත් ජනප්රිය සංක්රමණ මෙවලම. Apache 2.0 බලපත්‍රය යටතේ බෙදා හරිනු ලැබේ. විස්තරයේ දක්වා ඇති පරිදි, එය Ruby on Rails Migrations හා සමාන .NET සඳහා සංක්‍රමණ රාමුවකි. දත්ත සමුදා ක්‍රමයේ වෙනස්කම් C# පන්තිවල විස්තර කෙරේ.

මෙහි වාසි ඇත:

  • අවශ්‍ය DBMS සඳහා සහාය
  • .NET Core සහාය
  • විශාල සංවර්ධිත ප්රජාව
  • සංක්‍රමණ අතර ගැටුම් අනුක්‍රමිකව විසඳනු ලැබේ - සංක්‍රමණයන් ක්‍රියාත්මක කිරීමේ අනුපිළිවෙල නියම කර ඇත. ඊට අමතරව, එක් ආයතනයක් වටා ගැටුමක් ඇති වුවහොත්, කේතය ඒකාබද්ධ කිරීමේදී, එය ඉතිරි කේතයේ ආකාරයටම විසඳනු ලැබේ.
  • සාර්ථක සංක්‍රමණයකින් පසු ක්‍රියාත්මක වන පැතිකඩ තිබේ. තවද ඔවුන්ට සේවා කාර්යයන් රැගෙන යා හැකිය.අවසන් යාවත්කාලීන කිරීම මාසයකට පෙරය, එනම් ව්‍යාපෘතිය ජීවමානයි

අවාසි සම්බන්ධයෙන් ගත් කල, ඒවා මෙන්න:

  • ස්වයංක්‍රීය සංක්‍රමණ උත්පාදනයක් නොමැත
  • EF මාදිලි සමඟ සම්බන්ධයක් නැත
  • දත්ත සමුදා ස්නැප්ෂොට් නැත

අපගේ තේරීම වූයේ කුමක්ද?

දත්ත සංක්‍රමණ පද්ධති සංසන්දනය කිරීම සහ තෝරා ගැනීම

උණුසුම් වාද විවාද පරාමිති දෙකක් වටා කැරකුණි - ස්වයංක්‍රීය සංක්‍රමණ උත්පාදනය සහ ගැටුම් නිරාකරණය කිරීම. වෙනත් සාධක බෙහෙවින් අඩු බියජනක විය. එහි ප්‍රතිඵලයක් ලෙස සාකච්ඡාවේ ප්‍රතිඵල මත නව ව්‍යාපෘතිය සඳහා Fluent Migrator භාවිතා කිරීමට කණ්ඩායම තීරණය කළේය. මන්ද අනාගතයේදී ගැටුම් නිරාකරණය කර ගැනීමෙන් තවත් බොහෝ ප්රතිලාභ ලැබෙනු ඇත.

සොයා ගැනීම්

ඇත්ත වශයෙන්ම, පරිපූර්ණ මෙවලම් නොමැත. එබැවින් තේරීමක් කිරීමට අපගේ "අවශ්ය" වලට ප්රමුඛත්වය දීමට සිදු විය. කෙසේ වෙතත්, අනෙකුත් කණ්ඩායම් සහ අනෙකුත් කාර්යයන් සඳහා, වෙනත් සාධක තීරණාත්මක විය හැකිය. මෙම ලිපිය ඔබට තේරීමක් කිරීමට උපකාරී වනු ඇතැයි අපි බලාපොරොත්තු වෙමු.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න