Konparezon ak seleksyon sistèm migrasyon done yo

Konparezon ak seleksyon sistèm migrasyon done yo

Konparezon ak seleksyon sistèm migrasyon done yo

Modèl done a gen tandans chanje pandan pwosesis devlopman an, epi nan kèk pwen li pa koresponn ak baz done a ankò. Natirèlman, baz done a ka efase, ak Lè sa a, ORM a pral kreye yon nouvo vèsyon ki pral matche ak modèl la, men pwosedi sa a ap mennen nan pèt la nan done ki egziste deja. Se konsa, fonksyon an nan sistèm migrasyon an se asire ke, kòm yon rezilta nan yon chanjman chema, li se senkronize ak modèl la done nan aplikasyon an san yo pa pèdi done ki egziste deja.

Nan atik sa a, nou ta renmen gade plizyè zouti pou jere migrasyon baz done yo. Nou espere revizyon sa a pral itil pou devlopè ki fè fas ak yon chwa menm jan an.

Objektif Travay la

Konpayi nou an ap devlope aktivman pwochen jenerasyon pwodwi - Docs Security Suite (DSS). Pati sèvè a ekri nan .Net Core, epi Entity Framework Core itilize kòm DBMS la. Lè n ap desine yon aplikasyon, nou itilize apwòch Code First la.

Modèl domèn aplikasyon an kreye pa plizyè devlopè an menm tan - chak responsab pou pwòp pati lojik sistèm lan.

Jenerasyon DSS anvan an te itilize klasik Entity Framework Migrations (EF 6) kòm sistèm jesyon migrasyon an. Sepandan, gen kèk plent akimile kont li, youn prensipal la se ke EF manke yon apwòch lisid pou rezoud konfli vèsyon yo. Reyalite sa a toujou fache nou lè nou repare ensèk kòm yon pati nan sipò, kidonk nou deside konsidere opsyon altènatif.

Kòm rezilta diskisyon an, kondisyon sa yo pou sistèm jesyon migrasyon an te fòme:

  1. Sipò pou plizyè DBMS. MS SQL Server, PostgreSQL, Oracle obligatwa, men li posib pou sèvi ak lòt moun
  2. Travay ak ORM. Okòmansman, li te planifye pou itilize EF Core, men nan etap konsepsyon nou te pare pou konsidere lòt ORM.
  3. Auto-jenerasyon nan migrasyon. Lè nou konsidere devlopman Code First, mwen ta renmen evite nesesite pou "ekri men" migrasyon yo
  4. Konfli vèsyon. Nan yon anviwònman devlopman distribiye, lè fusion, EF Core ka soufri nan konfli. Sa a vin yon pwoblèm enpòtan paske diferan pati nan aplikasyon an yo kreye pa devlopè diferan, kidonk ou dwe pase anpil tan sou chak.
  5. Dokimantasyon avanse ak sipò. Isit la, li sanble nou, pa gen okenn eksplikasyon ki nesesè
  6. Gratis. Kritè a se kondisyonèl, depi sistèm yo pa trè chè oswa chè, men ideyal nan konvenyans, nou te tou pare yo konsidere

Kòm yon rezilta nan yon ti rechèch, yo te jwenn opsyon sa yo epi yo te jwenn dezirab pou konsiderasyon:

  1. EF Core Migrations
  2. DBup
  3. RoundhouseE
  4. ThinkingHome.Migrator
  5. Fluent Migrator

Epi, koulye a yon ti kras plis detay

Konparezon ak seleksyon sistèm migrasyon done yo
EntityFramework Core Migrations

Natirèlman, sa a te premye ak prensipal opsyon yo chwazi. Yon enstriman natif natal ki travay soti nan bwat la san okenn fidling alantou ak yon tanbourin. Yon gwo kantite dokimantasyon, ofisyèl ak pa konsa, senplisite, elatriye. Sepandan, plent yo te fè sou EF klasik yo tou trè enpòtan pou EF Core.

Kidonk, avantaj ki genyen pou EF Core yo make:

  • Microsoft sipò, dokimantasyon, ki gen ladan nan Ris, gwo kominote
  • Auto-jenerasyon migrasyon ki baze sou CodeFirst
  • Konpare ak EF 6, EF Core pa estoke yon snapshot nan baz done a ankò. Lè w ap travay ak EF Core nan Code First, li pa nesesè ankò pou deplwaye yon baz done
  • Depi n ap danse soti nan Code First, li posib pou fè yon sèl migrasyon nan tout founisè aksè done obligatwa yo
  • Konsènan founisè yo, PostgreSQL sipòte, Oracle sipòte, elatriye, elatriye, e menm MS SQL Server 

Epi tou dezavantaj yo:

  • Rezolisyon konfli rete nan menm nivo. Li nesesè pou sekans migrasyon yo epi mete ajou snapshots baz done yo
  • Depandans sou modèl yo sou ki migrasyon yo te pwodwi

DbUp

Konparezon ak seleksyon sistèm migrasyon done yo
dbup.github.io

DbUp se yon bibliyotèk .NET ki enstale pa NuGet epi li ede pouse chanjman nan sèvè SQL. Li kenbe tras nan ki scripts chanjman yo te deja egzekite epi kouri sa yo ki nesesè yo mete ajou baz done a. Bibliyotèk la te soti nan yon pwojè pou yon motè blog sous louvri sou ASP.NET epi li egziste anba yon lisans MIT, ak kòd la sou GitHub. Migrasyon yo dekri lè l sèvi avèk T-SQL.

Ki avantaj ki genyen:

  • Sipò pou yon gwo kantite DBMS (MS SQL sèvè, PstgreSQL, MySQL)
  • Depi scripts yo ekri nan T-SQL, yo sanble byen senp
  • Konfli yo rezoud tou lè l sèvi avèk SQL

Ak dezavantaj yo:

  • Ak tout varyete DBMS yo sipòte, Oracle se pa youn nan yo
  • Pa kominike avèk ORM
  • Ekri T-SQL scripts alamen se pa sa nou te vize pou
  • Dokimantasyon an ak kominote yo se konsa-konsa, byenke an tèm de ekri Scripts SQL yo ka pa nesesè.

RoundhouseE

Konparezon ak seleksyon sistèm migrasyon done yo
github.com/chucknorris/roundhouse

Zouti jesyon migrasyon sa a, ki distribye anba lisans Apache 2.0, tankou youn anvan an, kouri sou motè migrasyon T-SQL. Aparamman, devlopè yo te priyorite rezoud pwoblèm teknik konsènan sipò DBMS, olye ke yo kreye yon pwosesis devlopman konfòtab.

Pou:

  • Sipòte DBMS ki nesesè yo (ki gen ladan Oracle)

Kont:

  • Oracle (tankou Aksè, ki pa enpòtan pou nou) pa sipòte sou .NET Core, sèlman sou .NET Full Framework.
  • Pa travay ak ORM
  • Gen menm mwens dokiman pase zouti anvan an
  • Ankò - migrasyon yo ekri pa scripts

ThinkingHome.Migrator

Konparezon ak seleksyon sistèm migrasyon done yo

Yon zouti pou migrasyon chema baz done vèsyon an nan platfòm .NET Core, distribye anba lisans MIT. Pwomotè a li menm te ekri sou dènye vèsyon li yo prèske yon ane de sa.

Pou:

  • Ki fèt pou .NET Nwayo
  • Aplike yon sekans branch nan migrasyon
  • Aplike migrasyon antre

Kont:

  • Dènye mete ajou yon ane de sa. Aparamman pwojè a pa sipòte
  • Pa sipòte pa Oracle (atik la deklare ke sa a se akòz mank nan yon aplikasyon ki estab pou .NET Nwayo - men sa a se yon ane de sa)
  • Pa gen jenerasyon otomatik nan migrasyon

An jeneral, pwojè a sanble pwomèt, sitou si li ta devlope, men nou te bezwen pran yon desizyon isit la e kounye a.

Fluent Migrator

Konparezon ak seleksyon sistèm migrasyon done yo
github.com/fluentmigrator/fluentmigrator

Zouti migrasyon ki pi popilè ak yon gwo lame fanatik yo. Distribiye anba lisans Apache 2.0. Jan sa di nan deskripsyon an, li se yon fondasyon migrasyon pou .NET, menm jan ak Ruby on Rails Migrasyon. Chanjman nan chema baz done yo dekri nan klas C#.

Gen avantaj isit la:

  • Sipò pou DBMS obligatwa
  • Sipò .NET Nwayo
  • Gwo kominote devlope
  • Konfli ant migrasyon yo rezoud yon fason sekans-yo espesifye lòd pou ekzekisyon migrasyon yo. Anplis de sa, si yon konfli rive alantou yon antite, lè fusion kòd la, li rezoud menm jan ak nan rès la nan kòd la.
  • Gen pwofil ki egzekite apre yon migrasyon siksè. Epi yo ka pote fonksyon sèvis.Dènye aktyalizasyon a te yon mwa de sa, se sa ki, pwojè a vivan

Kòm pou mwens yo, isit la yo se:

  • Pa gen jenerasyon otomatik nan migrasyon
  • Pa gen koneksyon ak modèl EF
  • Pa gen snapshot baz done

Ki chwa nou te genyen?

Konparezon ak seleksyon sistèm migrasyon done yo

Deba chofe yo te vire sou de paramèt - jenerasyon otomatik migrasyon ak rezolisyon lisid nan konfli. Lòt faktè yo te anpil mwens pè. Kòm yon rezilta, baze sou rezilta yo nan diskisyon an, ekip la deside sèvi ak Fluent Migrator nan nouvo pwojè a. Paske rezoud konfli nan tan kap vini an pral pote pi plis benefis.

Jwenn

Natirèlman, pa gen okenn zouti pafè. Se konsa, nou te gen priyorite "vle" nou yo fè yon chwa. Sepandan, pou lòt ekip ak lòt travay, lòt faktè ka desizif. Nou espere atik sa a pral ede w fè yon chwa.

Sous: www.habr.com

Add nouvo kòmantè