የውሂብ ፍልሰት ስርዓቶችን ማወዳደር እና መምረጥ

የውሂብ ፍልሰት ስርዓቶችን ማወዳደር እና መምረጥ

የውሂብ ፍልሰት ስርዓቶችን ማወዳደር እና መምረጥ

የመረጃው ሞዴል በእድገት ሂደት ውስጥ የመቀየር አዝማሚያ አለው, እና በተወሰነ ጊዜ ከመረጃ ቋቱ ጋር አይዛመድም. በእርግጥ የውሂብ ጎታው ሊሰረዝ ይችላል, ከዚያም ORM ከአምሳያው ጋር የሚጣጣም አዲስ ስሪት ይፈጥራል, ነገር ግን ይህ አሰራር አሁን ያለውን ውሂብ ወደ ማጣት ያመራል. ስለዚህ የፍልሰት ስርዓቱ ተግባር በእቅድ ለውጥ ምክንያት በመተግበሪያው ውስጥ ካለው የውሂብ ሞዴል ጋር የተዛመደ መሆኑን ማረጋገጥ ነው ።

በዚህ ጽሑፍ ውስጥ የውሂብ ጎታ ፍልሰትን ለመቆጣጠር የተለያዩ መሳሪያዎችን ማየት እንፈልጋለን. ይህ ግምገማ ተመሳሳይ ምርጫ ላጋጠማቸው ገንቢዎች ጠቃሚ እንደሚሆን ተስፋ እናደርጋለን።

ዓላማ

ኩባንያችን በአሁኑ ጊዜ የሚቀጥለውን ምርት - ሰነዶች ደህንነት ስዊት (DSS) በንቃት በማዘጋጀት ላይ ነው። የአገልጋዩ ክፍል የተፃፈው በኔት ኮር ፣ እና የEntity Framework Core እንደ DBMS ነው። አፕሊኬሽኑን ስንቀርፅ፣ የኮድ መጀመሪያ አቀራረብን እንጠቀማለን።

የመተግበሪያው ጎራ ሞዴል በበርካታ ገንቢዎች በተመሳሳይ ጊዜ የተፈጠረ ነው - እያንዳንዳቸው ለስርዓቱ ምክንያታዊ አካል ናቸው.

የቀድሞው የDSS ትውልድ የሚታወቀውን የኢንቲቲቲ ማዕቀፍ ማይግሬሽን (EF 6) እንደ የፍልሰት አስተዳደር ስርዓት ተጠቅሟል። ሆኖም፣ አንዳንድ ቅሬታዎች በእሱ ላይ ተከማችተዋል፣ ዋናው EF የስሪት ግጭቶችን ለመፍታት ጤናማ አቀራረብ ስለሌለው ነው። ይህ እውነታ አሁንም ስህተቶችን እንደ የድጋፍ አካል ስንጠግን ያበሳጨናል, ስለዚህ አማራጭ አማራጮችን ለማየት ወሰንን.

በውይይቱ ምክንያት ለስደት አስተዳደር ሥርዓት የሚከተሉት መስፈርቶች ተፈጥረዋል፡-

  1. ለተለያዩ ዲቢኤምኤስዎች ድጋፍ። MS SQL Server፣ PostgreSQL፣ Oracle ያስፈልጋል፣ ግን ሌሎችን መጠቀም ይቻላል።
  2. ከ ORM ጋር በመስራት ላይ። መጀመሪያ ላይ, EF Core ለመጠቀም ታቅዶ ነበር, ነገር ግን በንድፍ ደረጃ ላይ ሌሎች ORMs ግምት ውስጥ ለመግባት ዝግጁ ነበርን
  3. ፍልሰትን በራስ ሰር ማመንጨት። በመጀመሪያ የኮድ እድገትን ከግምት ውስጥ በማስገባት ስደትን "በእጅ መጻፍ" አስፈላጊነትን ማስወገድ እፈልጋለሁ
  4. የስሪት ግጭቶች። በተከፋፈለ የእድገት አካባቢ ውስጥ, ሲዋሃዱ, EF Core በግጭቶች ሊሰቃዩ ይችላሉ. ይህ ትልቅ ችግር ይሆናል ምክንያቱም የተለያዩ የመተግበሪያው ክፍሎች በተለያዩ ገንቢዎች የተፈጠሩ ናቸው, ስለዚህ በእያንዳንዱ ላይ ብዙ ጊዜ ማሳለፍ አለብዎት.
  5. የላቀ ሰነድ እና ድጋፍ. እዚህ, ለእኛ ይመስላል, ምንም ማብራሪያ አያስፈልግም
  6. ፍርይ. መስፈርቱ ሁኔታዊ ነው፣ ስርዓቶች በጣም ውድ ወይም ውድ ስላልሆኑ፣ ነገር ግን በአመቺነት ተስማሚ ናቸው፣ እኛም ለማገናዘብ ዝግጁ ነበርን።

በትንሽ ጥናት ምክንያት የሚከተሉት አማራጮች ተገኝተዋል እና ለግምት የሚፈለጉ ሆነው ተገኝተዋል።

  1. ኢኤፍ ኮር ማይግሬሽን
  2. DBup
  3. RoundhouseE
  4. አስተሳሰብ ቤት.ማይግሬተር
  5. ፍሉይ ስደተኛ

እና አሁን ትንሽ ተጨማሪ ዝርዝር

የውሂብ ፍልሰት ስርዓቶችን ማወዳደር እና መምረጥ
የEntityFramework ዋና ማይግሬሽን

በተፈጥሮ, ይህ ለመምረጥ የመጀመሪያው እና ዋናው አማራጭ ነበር. ምንም አይነት ከበሮ ጋር መወዛወዝ ሳያስፈልግ ከሳጥኑ ውጭ የሚሰራ የሀገር በቀል መሳሪያ። ከፍተኛ መጠን ያለው ሰነድ, ኦፊሴላዊ እና እንደዚያ አይደለም, ቀላልነት, ወዘተ. ሆኖም፣ ስለ ክላሲክ ኢኤፍ የሚቀርቡ ቅሬታዎች ለEF Core በጣም ጠቃሚ ናቸው።

ስለዚህ የ EF Core ጥቅሞች ተብራርተዋል-

  • የማይክሮሶፍት ድጋፍ ፣ ሰነዶች ፣ በሩሲያኛ ጨምሮ ፣ ትልቅ ማህበረሰብ
  • በ CodeFirst ላይ የተመሰረተ ፍልሰትን በራስ ሰር ማመንጨት
  • ከEF 6 ጋር ሲነጻጸር፣ EF Core የውሂብ ጎታውን ቅጽበታዊ ገጽ እይታ አያከማችም። በኮድ መጀመሪያ ከ EF Core ጋር ሲሰሩ የውሂብ ጎታ ማሰማራት አያስፈልግም
  • ከኮድ ፈርስት እየጨፈርን ስለሆነ አንድ ፍልሰት ወደ ሁሉም አስፈላጊ የመረጃ መዳረሻ አቅራቢዎች ማካሄድ ይቻላል።
  • አቅራቢዎችን በተመለከተ፣ PostgreSQL ይደገፋል፣ Oracle ይደገፋል፣ ወዘተ ወዘተ፣ እና ሌላው ቀርቶ MS SQL Server 

እና እንዲሁም ጉዳቶች-

  • የግጭት አፈታት በተመሳሳይ ደረጃ ላይ ቆይቷል። ፍልሰትን በቅደም ተከተል ማድረግ እና የውሂብ ጎታ ቅጽበተ-ፎቶዎችን ማዘመን አስፈላጊ ነው።
  • ፍልሰቶቹ በሚፈጠሩባቸው ሞዴሎች ላይ ጥገኛ መሆን

DbUp

የውሂብ ፍልሰት ስርዓቶችን ማወዳደር እና መምረጥ
dbup.github.io

DbUp በ NuGet የተጫነ እና በSQL አገልጋይ ላይ ለውጦችን ለማድረግ የሚረዳ NET ላይብረሪ ነው። የትኛዎቹ የለውጥ ስክሪፕቶች ቀድሞውኑ እንደተፈጸሙ ይከታተላል እና የውሂብ ጎታውን ለማዘመን አስፈላጊ የሆኑትን ያካሂዳል. ቤተ መፃህፍቱ ያደገው በASP.NET ላይ ካለው የክፍት ምንጭ የብሎግ ማድረጊያ ሞተር ፕሮጀክት ነው እና በ MIT ፍቃድ ስር ይገኛል፣ እና ኮዱ በ GitHub ላይ ነው። ፍልሰት T-SQL በመጠቀም ተገልጿል.

ጥቅሞቹ ምንድን ናቸው:

  • ለብዙ ቁጥር DBMS ድጋፍ (MS SQL Server፣ PstgreSQL፣ MySQL)
  • ስክሪፕቶቹ የተጻፉት በT-SQL ስለሆነ፣ በጣም ቀላል ይመስላሉ።
  • ግጭቶች SQL በመጠቀምም ይፈታሉ

እና ጉዳቶቹ፡-

  • በሁሉም ዓይነት የሚደገፉ ዲቢኤምኤስዎች፣ Oracle ከእነዚህ ውስጥ አንዱ አይደለም።
  • ከ ORM ጋር አይገናኝም።
  • የ T-SQL ስክሪፕቶችን በእጅ መፃፍ ያሰብነው አይደለም።
  • የ SQL ስክሪፕቶችን ከመጻፍ አንፃር አስፈላጊ ላይሆኑ ቢችሉም ሰነዱ እና ማህበረሰቡ እንዲሁ-ስለሆነም።

RoundhouseE

የውሂብ ፍልሰት ስርዓቶችን ማወዳደር እና መምረጥ
github.com/chucknorris/roundhouse

በ Apache 2.0 ፍቃድ ስር የሚሰራጩት ይህ የፍልሰት አስተዳደር መሳሪያ ልክ እንደ ቀደመው በT-SQL የፍልሰት ሞተር ላይ ይሰራል። በግልጽ ለማየት እንደሚቻለው ገንቢዎቹ ምቹ የሆነ የእድገት ሂደት ከመፍጠር ይልቅ የዲቢኤምኤስ ድጋፍን በተመለከተ ቴክኒካዊ ችግሮችን ለመፍታት ቅድሚያ ሰጥተዋል።

ምርቶች

  • አስፈላጊውን DBMS ይደግፋል (Oracleን ጨምሮ)

Cons:

  • Oracle (እንዲሁም አክሰስ፣ ለእኛ ተዛማጅነት የሌለው) በ NET Core ላይ አይደገፍም፣ በNET Full Framework ላይ ብቻ
  • ከ ORM ጋር አይሰራም
  • ከቀዳሚው መሣሪያ ያነሰ ሰነዶችም አሉ።
  • እንደገና - ፍልሰት በስክሪፕቶች የተፃፈ ነው

አስተሳሰብ ቤት.ማይግሬተር

የውሂብ ፍልሰት ስርዓቶችን ማወዳደር እና መምረጥ

በ MIT ፈቃድ ስር የሚሰራጩ የዳታቤዝ schema ወደ .NET Core platform ፍልሰት መሳሪያ። ገንቢው ራሱ ስለ አዲሱ ስሪት ከአንድ ዓመት ገደማ በፊት ጽፏል.

ምርቶች

  • ለ NET Core የተነደፈ
  • የቅርንጫፎችን የስደት ቅደም ተከተል ተተግብሯል።
  • የስደት ምዝግብ ማስታወሻን ተግባራዊ አድርጓል

Cons:

  • መጨረሻ የዘመነው ከአንድ ዓመት በፊት ነው። እንደሚታየው ፕሮጀክቱ አልተደገፈም
  • በ Oracle አልተደገፈም (ጽሑፉ ይህ ለ NET Core የተረጋጋ አተገባበር ባለመኖሩ ነው ይላል - ይህ ግን ከአንድ አመት በፊት ነው)
  • ፍልሰት አውቶማቲክ ማመንጨት የለም።

በአጠቃላይ, ፕሮጀክቱ ተስፋ ሰጪ ይመስላል, በተለይም ሊዳብር ከነበረ, ግን እዚህ እና አሁን ውሳኔ ማድረግ አለብን.

ፍሉይ ስደተኛ

የውሂብ ፍልሰት ስርዓቶችን ማወዳደር እና መምረጥ
github.com/fluentmigrator/fluentmigrator

በጣም ታዋቂው የፍልሰት መሳሪያ ከብዙ የደጋፊዎች ሰራዊት ጋር። በApache 2.0 ፍቃድ ስር ተሰራጭቷል። በመግለጫው ላይ እንደተገለጸው፣ ከ Ruby on Rails Migrations ጋር የሚመሳሰል ለ NET የፍልሰት ማዕቀፍ ነው። በመረጃ ቋቱ ንድፍ ላይ የተደረጉ ለውጦች በC# ክፍሎች ውስጥ ተገልጸዋል።

እዚህ ጥቅሞች አሉ:

  • ለሚፈለገው ዲቢኤምኤስ ድጋፍ
  • NET ኮር ድጋፍ
  • ትልቅ የዳበረ ማህበረሰብ
  • በስደተኞች መካከል ያሉ ግጭቶች በቅደም ተከተል ተፈትተዋል - የስደት አፈፃፀም ቅደም ተከተል ተገልጿል. በተጨማሪም, በአንድ አካል ዙሪያ ግጭት ከተነሳ, ኮዱን ሲዋሃድ, በተቀረው ኮድ ውስጥ በተመሳሳይ መንገድ መፍትሄ ያገኛል.
  • ከተሳካ ፍልሰት በኋላ የሚፈጸሙ መገለጫዎች አሉ። እና የአገልግሎት ተግባራትን ሊሸከሙ ይችላሉ የመጨረሻው ማሻሻያ ከአንድ ወር በፊት ነበር, ማለትም, ፕሮጀክቱ በህይወት አለ

የመቀነስ ሁኔታዎችን በተመለከተ፣ እነሆ፡-

  • ፍልሰት አውቶማቲክ ማመንጨት የለም።
  • ከ EF ሞዴሎች ጋር ምንም ግንኙነት የለም
  • ምንም የውሂብ ጎታ ቅጽበተ-ፎቶዎች የሉም

ምርጫችን ምን ነበር?

የውሂብ ፍልሰት ስርዓቶችን ማወዳደር እና መምረጥ

የጦፈ ክርክሮች የተሽከረከሩት በሁለት መመዘኛዎች ማለትም በራስ ሰር የፍልሰት ማመንጨት እና የግጭቶችን ጤነኛ መፍታት ነው። ሌሎች ምክንያቶች በጣም ያነሰ አስፈሪ ነበሩ. በውጤቱም, በውይይቱ ውጤቶች ላይ በመመስረት, ቡድኑ በአዲሱ ፕሮጀክት ውስጥ Fluent Migrator ለመጠቀም ወሰነ. ምክንያቱም ግጭቶችን ወደፊት መፍታት ብዙ ጥቅሞችን ያስገኛል።

ግኝቶች

እርግጥ ነው, ምንም ፍጹም መሳሪያዎች የሉም. ስለዚህ ምርጫ ለማድረግ ለ “ፍላጎታችን” ቅድሚያ መስጠት ነበረብን። ነገር ግን, ለሌሎች ቡድኖች እና ሌሎች ተግባራት, ሌሎች ምክንያቶች ወሳኝ ሊሆኑ ይችላሉ. ይህ ጽሑፍ ምርጫ እንዲያደርጉ ይረዳዎታል ብለን ተስፋ እናደርጋለን.

ምንጭ: hab.com

አስተያየት ያክሉ