Ukuthelekisa kunye nokukhethwa kweenkqubo zokufuduka kwedatha

Ukuthelekisa kunye nokukhethwa kweenkqubo zokufuduka kwedatha

Ukuthelekisa kunye nokukhethwa kweenkqubo zokufuduka kwedatha

Imodeli yedatha idla ngokutshintsha ngexesha lenkqubo yophuhliso, kwaye ngexesha elithile alisahambelani nesiseko sedatha. Ngokuqinisekileyo, i-database inokususwa, kwaye ke i-ORM iya kudala inguqu entsha eya kuhambelana nomzekelo, kodwa le nkqubo iya kukhokelela ekulahlekelweni kwedatha ekhoyo. Ngaloo ndlela, umsebenzi wenkqubo yokufuduka kukuqinisekisa ukuba, ngenxa yenguqu ye-schema, ihambelana nemodeli yedatha kwisicelo ngaphandle kokulahlekelwa idatha ekhoyo.

Kweli nqaku, singathanda ukujonga izixhobo ezahlukeneyo zokulawula ukufuduka kwedatha. Siyathemba ukuba olu hlaziyo luya kuba luncedo kubaphuhlisi abajongene nokukhetha okufanayo.

Injongo

Inkampani yethu okwangoku iphuhlisa isizukulwana esilandelayo semveliso - iDocs Security Suite (DSS). Inxalenye yeseva ibhalwe kwi-.Net Core, kunye ne-Entity Framework Core isetyenziswa njenge-DBMS. Xa uyila isicelo, sisebenzisa indlela yeKhowudi yokuqala.

Imodeli yesizinda sesicelo yenziwe ngabaphuhlisi abaninzi ngexesha elinye - ngamnye unoxanduva lwenxalenye yabo enengqondo yenkqubo.

Isizukulwana sangaphambili se-DSS sasebenzisa i-Entity Framework Migrations yakudala (EF 6) njengenkqubo yolawulo lokufuduka. Nangona kunjalo, ezinye izikhalazo ziye zanda ngokuchasene nayo, eyona nto iphambili kukuba i-EF ayinayo indlela ephilileyo yokusombulula iingxabano zenguqulo. Le nyaniso isasicaphukisa xa silungisa ii-bugs njengenxalenye yenkxaso, ngoko sigqibe ekubeni sithathele ingqalelo ezinye iindlela.

Ngenxa yengxoxo, ezi mfuno zilandelayo zenkqubo yolawulo lokufuduka zenziwe:

  1. Inkxaso yeeDBMS ezahlukeneyo. Iseva ye-MS SQL, iPostgreSQL, i-Oracle iyafuneka, kodwa kunokwenzeka ukuba kusetyenziswe ezinye
  2. Ukusebenza neORM. Ekuqaleni, kwakucetywe ukusebenzisa i-EF Core, kodwa kwinqanaba loyilo sasilungele ukuqwalasela ezinye ii-ORM
  3. Ukuveliswa okuzenzekelayo kokufuduka. Ukuthathela ingqalelo uphuhliso lweKhowudi Okokuqala, ndingathanda ukunqanda isidingo "sokubhala ngesandla" ukufuduka.
  4. Iingxabano zenguqulelo. Kwimeko yophuhliso esabiweyo, xa udibanisa, i-EF Core inokubandezeleka kwiingxabano. Oku kuba yingxaki ebalulekileyo kuba iindawo ezahlukeneyo zesicelo zenziwe ngabaphuhlisi abohlukeneyo, ke kuya kufuneka uchithe ixesha elininzi kwinto nganye.
  5. Amaxwebhu aphezulu kunye nenkxaso. Apha, kubonakala ngathi, akukho ngcaciso ifunekayo
  6. Mahala. Ikhrayitheriya inemiqathango, kuba iinkqubo azibizi kakhulu okanye azibizi kakhulu, kodwa zifanelekile, besikulungele ukuqwalasela.

Njengesiphumo sophando oluncinci, ezi ndlela zilandelayo zifunyenwe kwaye zafunyanwa zinqweneleka ukuba ziqwalaselwe:

  1. Ukufuduka okungundoqo kwe-EF
  2. DBup
  3. RoundhouseE
  4. Ukucinga Ekhaya.Mfuduki
  5. Umfuduki oQelekileyo

Kwaye ngoku iinkcukacha ezincinci

Ukuthelekisa kunye nokukhethwa kweenkqubo zokufuduka kwedatha
I-EntityFramework Core Migration

Ngokwemvelo, le yayiyiyokuqala kunye neyona ndlela iphambili yokukhetha. Isixhobo somthonyama esisebenza ngaphandle kwebhokisi ngaphandle kokudlala ngentambula. Isixa esikhulu samaxwebhu, asemthethweni kwaye akunjalo, ukulula, njl. Nangona kunjalo, izikhalazo ezenziweyo malunga ne-EF yakudala zikwafanelekile kwi-EF Core.

Ke, iingenelo ze-EF Core zibalulwa:

  • Inkxaso yeMicrosoft, amaxwebhu, kuquka isiRashiya, uluntu olukhulu
  • Ukuveliswa ngokuzenzekelayo kokufuduka okusekwe kwiCodeFirst
  • Xa kuthelekiswa ne-EF 6, i-EF Core ayisagcini i-snapshot yesiseko sedatha. Xa usebenza ne-EF Core kwiKhowudi yokuqala, akusekho mfuneko yokuthumela i-database
  • Ekubeni sidansa kwiKhowudi yokuqala, kunokwenzeka ukuqhuba ukufuduka okukodwa kubo bonke ababoneleli abafunekayo bokufikelela kwidatha
  • Ngokumalunga nababoneleli, iPostgreSQL iyaxhaswa, i-Oracle iyaxhaswa, njl. njl., kunye ne-MS SQL Server 

Kwaye kunye nokungalunganga:

  • Ukusonjululwa kongquzulwano kwahlala kukwinqanaba elinye. Kuyimfuneko ukulandelelanisa ukufuduka kunye nokuhlaziya izifinyezo zedatha
  • Ukuxhomekeka kwiimodeli apho ufuduko lwenziwa khona

DbUp

Ukuthelekisa kunye nokukhethwa kweenkqubo zokufuduka kwedatha
dbup.github.io

I-DbUp yilayibrari ye-NET efakwe yi-NuGet kwaye inceda ukutyhala utshintsho kwi-SQL Server. Igcina umkhondo wotshintsho lwezikripthi esele zenziwe kwaye iqhuba ezo ziyimfuneko ukuhlaziya isiseko sedatha. Ithala leencwadi likhule liphuma kwiprojekthi yenjini evulekileyo yokubhloga kwi-ASP.NET kwaye ikhona phantsi kwelayisenisi yeMIT, kwaye ikhowudi ikwiGitHub. Ukufuduka kuchazwa kusetyenziswa i-T-SQL.

Zeziphi iingenelo:

  • Inkxaso yenani elikhulu le-DBMS (i-MS SQL Server, PstgreSQL, MySQL)
  • Kuba izikripthi zibhalwe kwi-T-SQL, zikhangeleka zilula
  • Iingxabano nazo zisonjululwa kusetyenziswa iSQL

Kwaye iingxaki:

  • Ngazo zonke iindidi zeeDBMS ezixhaswayo, i-Oracle ayikho enye yazo
  • Ayidibanisi ne-ORM
  • Ukubhala izikripthi ze-T-SQL ngesandla ayisiyiyo into ebesijolise kuyo
  • Amaxwebhu kunye noluntu lunjalo-njalo, nangona ngokwemigaqo yokubhala izikripthi ze-SQL zisenokungabi yimfuneko.

RoundhouseE

Ukuthelekisa kunye nokukhethwa kweenkqubo zokufuduka kwedatha
github.com/chucknorris/roundhouse

Esi sixhobo solawulo lokufuduka, sisasazwe phantsi kwelayisensi ye-Apache 2.0, njengaleyo yangaphambili, isebenza kwi-injini yokufuduka ye-T-SQL. Kuyabonakala ukuba, abaphuhlisi babeke phambili ukusombulula iingxaki zobugcisa malunga nenkxaso ye-DBMS, kunokuba benze inkqubo yophuhliso etofotofo.

Iinkonzo:

  • Ixhasa i-DBMS efunekayo (kubandakanywa i-Oracle)

Umgcini:

  • I-Oracle (kunye noFikelelo, engabalulekanga kuthi) ayixhaswanga kwi.NET Core, kuphela kwi.NET Full Framework
  • Ayisebenzi nge-ORM
  • Kukho amaxwebhu amancinci kunesixhobo sangaphambili
  • Kwakhona - ukufuduka kubhalwe ngezikripthi

Ukucinga Ekhaya.Mfuduki

Ukuthelekisa kunye nokukhethwa kweenkqubo zokufuduka kwedatha

Isixhobo sokufuduka kweschema sedatabase eguqulelweyo ukuya kwiqonga le-NET Core, lisasazwe phantsi kwelayisenisi ye-MIT. Umphuhlisi ngokwakhe wabhala malunga nenguqulelo yakhe yamva nje malunga nonyaka odlulileyo.

Iinkonzo:

  • Yenzelwe .NET Core
  • Kuphunyezwe ulandelelwano lwesebe lokufuduka
  • Kuphunyezwe ukugawulwa kwemifuduko

Umgcini:

  • Igqityelwe ukuhlaziywa kunyaka ophelileyo. Kuyabonakala ukuba iprojekthi ayixhaswanga
  • Ayixhaswanga yi-Oracle (inqaku lichaza ukuba oku kungenxa yokungabikho kokuphunyezwa okuzinzile kwe-NET Core - kodwa lo ngunyaka odlulileyo)
  • Akukho kuveliswa okuzenzekelayo kokufuduka

Ngokubanzi, iprojekthi ibonakala ithembisa, ngakumbi ukuba yayiza kuphuhliswa, kodwa bekufuneka sithathe isigqibo apha kwaye ngoku.

Umfuduki oQelekileyo

Ukuthelekisa kunye nokukhethwa kweenkqubo zokufuduka kwedatha
github.com/fluentmigrator/fluentmigrator

Isixhobo esithandwa kakhulu sokufuduka kunye nomkhosi omkhulu wabalandeli. Isasazwe phantsi kwelayisensi ye-Apache 2.0. Njengoko kuchaziwe kwinkcazo, sisikhokelo sokufuduka se-.NET, esifana neRuby kwiMigration Rails. Utshintsho kwi-schema yedatha ichazwe kwiiklasi ze-C #.

Kukho izinto eziluncedo apha:

  • Inkxaso ye-DBMS efunekayo
  • .NET Core inkxaso
  • Uluntu olukhulu oluphuhlileyo
  • Iingxabano phakathi kokufuduka zisonjululwa ngokulandelelana-umyalelo wokwenziwa kokufuduka ucacisiwe. Ukongeza, ukuba ingxabano ivela malunga nequmrhu elinye, xa udibanisa ikhowudi, isonjululwe ngendlela efanayo nakweminye ikhowudi.
  • Kukho iiprofayili ezenziwa emva kokufuduka okuyimpumelelo. Kwaye banokuthwala imisebenzi yenkonzo.Uhlaziyo lokugqibela lwalukwinyanga edlulileyo, oko kukuthi, iprojekthi iyaphila

Ngokubhekiselele kwimizuzu, nantsi:

  • Akukho kuveliswa okuzenzekelayo kokufuduka
  • Akukho nxibelelwano kwiimodeli ze-EF
  • Akukho snapshots yedatabase

Sakhetha ntoni?

Ukuthelekisa kunye nokukhethwa kweenkqubo zokufuduka kwedatha

Iingxoxo ezishushu zazijikeleze iiparameters ezimbini - ukuveliswa okuzenzekelayo kokufuduka kunye nokusombulula iingxabano eziphilileyo. Abanye oothunywashe bebengoyiki kangako. Ngenxa yoko, ngokusekelwe kwiziphumo zengxoxo, iqela linqume ukusebenzisa i-Fluent Migrator kwiprojekthi entsha. Kuba ukucombulula iingxabano kwixesha elizayo kuya kuzisa iingenelo ezingakumbi.

ezifunyanisiweyo

Kakade ke, akukho zixhobo zigqibeleleyo. Ngoko ke kwafuneka sibeke phambili "izinto esifunayo" ukuze senze ukhetho. Nangona kunjalo, kwamanye amaqela kunye neminye imisebenzi, ezinye izinto zinokuthatha isigqibo. Siyathemba ukuba eli nqaku liya kukunceda wenze ukhetho.

umthombo: www.habr.com

Yongeza izimvo