Krahasimi dhe zgjedhja e sistemeve të migrimit të të dhënave

Krahasimi dhe zgjedhja e sistemeve të migrimit të të dhënave

Krahasimi dhe zgjedhja e sistemeve të migrimit të të dhënave

Modeli i të dhënave gjatë procesit të zhvillimit ka tendencën të ndryshojë, dhe në një moment ai nuk përputhet më me bazën e të dhënave. Sigurisht, baza e të dhënave mund të fshihet, dhe pastaj ORM do të krijojë një version të ri, i cili do të korrespondonte me modelin, por një procedurë e tillë do të çonte në humbjen e të dhënave ekzistuese. Pra, funksioni i sistemit të migrimit është që, si rezultat i ndryshimeve të skemës, ta sinkronizojë atë me modelin e të dhënave në aplikacion pa humbur të dhënat ekzistuese.

Në këtë artikull, dëshirojmë të shqyrtojmë mjetet e ndryshme për menaxhimin e migrimeve të bazave të të dhënave. Shpresojmë që ky përmbledhje të jetë e dobishme për zhvilluesit që përballen me një zgjedhje të tillë.

Detyra

NĂ« kompaninĂ« tonĂ« tani po zhvillohet aktivisht gjenerata e ardhshme e produktit – Docs Security Suite (DSS). Pjesa server po shkruhet nĂ« .Net Core, dhe si DB pĂ«rdoret Entity Framework Core. GjatĂ« projektimit tĂ« aplikacionit, ne pĂ«rdorim qasjen Code First.

Modeli dominal i aplikacionit krijohet nga disa zhvillues nĂ« tĂ« njĂ«jtĂ«n kohĂ« – secili Ă«shtĂ« pĂ«rgjegjĂ«s pĂ«r pjesĂ«n logjike tĂ« sistemit.

Në gjeneratën e kaluar të DSS, sistemi i menaxhimit të migrimeve përdorte klasiken Entity Framework Migrations (EF 6). Megjithatë, për të është ngritur disa pretendime, kryesore prej të cilave ishte se në EF mungonte një qasje e arsyeshme për zgjidhjen e konflikteve të versioneve. Ky fakt na shqetëson ende gjatë rregullimeve të defekteve në kuadër të mbështetjes, prandaj u mor vendim të shqyrtohen mundësi alternative.

Si rezultat i diskutimeve, u formuluan këto kërkesa për sistemin e menaxhimit të migrimeve:

  1. Mbështetje për sisteme të ndryshme DB. Përveç MS SQL Server, PostgreSQL, Oracle, por potencialisht është e mundur të përdoren edhe të tjera.
  2. Puna me ORM. Fillimisht është parashikuar përdorimi i EF Core, megjithatë në fazën e projektimit ishin të gatshëm të shqyrtonin edhe ORM të tjera.
  3. Autogenerimi i migrimeve. Duke marrë parasysh zhvillimin Code First, dëshirohej të shmangej nevoja për të "shkruar me dorë" migrimet.
  4. Konfliktet e versioneve. Në kushte zhvillimi të shpërndarë, gjatë bashkimit, EF Core mund të bjerë për shkak të konflikteve. Kjo bëhet një problem i rëndësishëm, pasi pjesë të ndryshme të aplikacionit krijohen nga zhvillues të ndryshëm, kështu që duhet të shpenzohet shumë kohë për secilin.
  5. Dokumentacion dhe mbështetje e përparuar. Këtu, na duket se sqarimet nuk janë të nevojshme
  6. Falësia. Kritereja është relative, sepse nuk jemi përjashtuar nga bisedat rreth sistemeve jo shumë të shtrenjta ose të shtrenjta, por perfekte në komoditet

Si rezultat i një studimi të vogël, janë gjetur dhe pranuar për t'u shqyrtuar variantet e mëposhtme:

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

Tani pak më në detaje

Krahasimi dhe zgjedhja e sistemeve të migrimit të të dhënave
EntityFramework Core Migrations

Natyrisht, ky ishte opsioni i parë dhe kryesor për zgjedhje. Një mjet natyror, që funksionon nga kutia pa ndonjë kërkesë të veçantë. Një sasi e madhe dokumentacioni, si zyrtar ashtu edhe joaq zyrtar, thjeshtësia etj. Sidoqoftë, ankesat që iu bëhen klasikes EF janë gjithashtu të vlefshme për EF Core.

Pra, për EF Core janë identifikuar avantazhet:

  • MbĂ«shtetje nga Microsoft, dokumentacion, duke pĂ«rfshirĂ« nĂ« rusisht, njĂ« komunitet tĂ« madh
  • Autogjenerimi i migracioneve nĂ« bazĂ« tĂ« CodeFirst
  • NĂ« krahasim me EF 6, EF Core tani nuk ruan njĂ« snapshot tĂ« DB-sĂ«. Kur punoni me EF Core nĂ« Code First tani nuk Ă«shtĂ« e nevojshme tĂ« zhvilloni bazĂ«n e tĂ« dhĂ«nave
  • Duke pasur parasysh se luajmĂ« nga Code First – ka mundĂ«sinĂ« pĂ«r tĂ« menaxhuar njĂ« migracion pĂ«r tĂ« gjitha ofruesit e nevojshĂ«m tĂ« qasjes nĂ« tĂ« dhĂ«na
  • Sa i pĂ«rket ofruesve – mbĂ«shtetet si PostgreSQL, ashtu edhe Oracle, etj., dhe madje – MS SQL Server 😊

Dhe gjithashtu disavantazhet:

  • Zgjidhja e konflikteve ka mbetur nĂ« tĂ« njĂ«jtin nivel. Nevojitet ndĂ«rtimi i njĂ« rendi tĂ« migracioneve dhe pĂ«rditĂ«simi i snapshot-eve tĂ« DB-sĂ«
  • VarĂ«sia nga modelet, mbi tĂ« cilat janĂ« gjeneruar migracionet

DbUp

Krahasimi dhe zgjedhja e sistemeve të migrimit të të dhënave
dbup.github.io

DbUp është një bibliotekë në .NET që instalon NuGet dhe ndihmon në vendosjen e ndryshimeve në SQL Server. Ajo ndjek se cilat skripte ndryshimi janë përmbushur tashmë dhe fillon ato që janë të nevojshme për përditësimin e DB-së. Biblioteka erdhi nga një projekt i motorit të blogeve të hapura në ASP.NET dhe ekziston nën licencën MIT, dhe kodi është në GitHub. Migracionet përshkruhen përmes T-SQL.

Cilat janë këtu avantazhet:

  • MbĂ«shtetje pĂ«r njĂ« numĂ«r tĂ« madh tĂ« DBMS-ve (MS SQL Server, PstgreSQL, MySQL)
  • Duke qenĂ« se skriptet shkruhen nĂ« T-SQL, ato duken mjaft tĂ« thjeshta
  • Konfliktet gjithashtu zgjidhen pĂ«rmes SQL

Dhe disavantazhet:

  • Me gjithĂ« larminĂ« e DBMS-ve qĂ« mbĂ«shteten, Oracle nuk Ă«shtĂ« nĂ« mesin e tyre
  • Nuk bashkĂ«vepron me ORM
  • Shkrimi i skripteve nĂ« T-SQL "me dorĂ«" – nuk Ă«shtĂ« ajo pĂ«r tĂ« cilĂ«n po synonim
  • Dokumentacioni dhe komuniteti janĂ« tĂ« mesĂ«m, megjithatĂ« gjatĂ« shkrimit tĂ« skripteve SQL ata ndoshta nuk janĂ« tĂ« nevojshĂ«m.

RoundhousE

Krahasimi dhe zgjedhja e sistemeve të migrimit të të dhënave
github.com/chucknorris/roundhouse

Ky mjet menaxhimi i migrimeve, i shpërndarë nën licencën Apache 2.0, ashtu si dhe paraardhësi i tij, funksionon mbi motorin e migrimeve T-SQL. Nga ajo që duket, zhvilluesit e kanë vendosur përparësi në zgjidhjen e problemeve teknike në lidhje me mbështetje të bazave të të dhënave, në vend se të krijojnë një proces zhvillimi komod.

Avantazhet:

  • MbĂ«shtet tĂ« nevojshmet e bazave tĂ« tĂ« dhĂ«nave (pĂ«rfshirĂ« Oracle)

Disavantazhet:

  • Oracle (si dhe Access-i qĂ« s'ka rĂ«ndĂ«si pĂ«r ne) nuk mbĂ«shtetet nĂ« .NET Core, vetĂ«m nĂ« .NET Full Framework
  • Nuk funksionon me ORM
  • Dokumentacioni Ă«shtĂ« edhe mĂ« i pakĂ«t se ai i mjetit tĂ« mĂ«parshĂ«m
  • Edhe njĂ« herĂ« – migrimet shkruhen me skripte

ThinkingHome.Migrator

Krahasimi dhe zgjedhja e sistemeve të migrimit të të dhënave

Një mjet për migrimin versionuar të skemave të bazës së të dhënave për platformën .NET Core, i shpërndarë nën licencën MIT. Vetë zhvilluesi shkroi për versionin e tij të fundit gati një vit më parë.

Avantazhet:

  • E projektuar pĂ«r .NET Core
  • Eshte realizuar njĂ« sekuencĂ« e degĂ«zuar e migrimeve
  • Ka realizuar regjistrimin e migrimeve

Disavantazhet:

  • PĂ«rditĂ«simi i fundit – njĂ« vit mĂ« parĂ«. Nga duket, projekti nuk mbĂ«shtetet mĂ«
  • Nuk mbĂ«shtetet Oracle (nĂ« artikull Ă«shtĂ« deklaruar se kjo Ă«shtĂ« pĂ«r shkak tĂ« mungesĂ«s sĂ« njĂ« realizimi stabil pĂ«r .NET Core – por kjo Ă«shtĂ« njĂ« vit mĂ« parĂ«)
  • Mungon autogjenerimi i migrimeve

Në përgjithësi, projekti duket premtues, veçanërisht nëse do të kishte vazhduar, por na duhej të merrnim një vendim këtu dhe tani.

Fluent Migrator

Krahasimi dhe zgjedhja e sistemeve të migrimit të të dhënave
github.com/fluentmigrator/fluentmigrator

Mjeti më i njohur për migrimet, që ka një ushtri të madhe adhuruesish. Shpërndahet nën licencën Apache 2.0. Siç është shënuar në përshkrim, është një platformë migrimi për .NET, e ngjashme me Migruimet e Ruby on Rails. Ndryshimet në skemën e DB përshkruhen në klasa në C#.

Këtu ka disa përparësi:

  • MbĂ«shtetje pĂ«r tĂ« nevojshmet e bazave tĂ« tĂ« dhĂ«nave
  • MbĂ«shtetje pĂ«r .NET Core
  • NjĂ« komunitet i madh dhe i zhvilluar
  • Konfliktet e migrimeve zgjidhen nĂ« mĂ«nyrĂ« tĂ« njĂ«pasnjĂ«shme – migrimet kanĂ« rendin e ekzekutimit. Gjithashtu, nĂ«se ndodh njĂ« konflikt rreth njĂ« subjekti, gjatĂ« bashkimit tĂ« kodit, zgjidhja bĂ«het njĂ«soj si nĂ« pjesĂ«n tjetĂ«r tĂ« kodit
  • Ka profile qĂ« ekzekutohet pas pĂ«rfundimit tĂ« suksesshĂ«m tĂ« migrimit. Dhe mund tĂ« kenĂ« funksione shĂ«rbimi. PĂ«rditĂ«simi i fundit ishte njĂ« muaj mĂ« parĂ«, pra projekti Ă«shtĂ« aktiv.

Sa për disavantazhet, këtu ka:

  • Mungon autogjenerimi i migrimeve
  • Mungon lidhja me modelet EF
  • Nuk ka kopje tĂ« bazĂ«s sĂ« tĂ« dhĂ«nave

Cili ishte përzgjedhja jonë?

Krahasimi dhe zgjedhja e sistemeve të migrimit të të dhënave

Diskutimet mĂ« tĂ« nxehta u zhvilluan rreth dy parametrave – gjenerimi automatik i migrimeve dhe njĂ« zgjidhje e arsyeshme pĂ«r zgjidhjen e konflikteve. FaktorĂ«t e tjerĂ« ishin shumĂ« mĂ« pak tĂ« frikshĂ«m. Si rezultat, ekipi vendosi tĂ« pĂ«rdorĂ« Fluent Migrator nĂ« projektin e ri. Menaxhimi i konflikteve nĂ« perspektivĂ« do tĂ« sjellĂ« shumĂ« mĂ« tepĂ«r pĂ«rfitime.

Përfundimet

Sigurisht, nuk ekzistojnë mjete ideale. Po ashtu, na duhej të rendisnin prioritetet në dëshirat tona. Sidoqoftë, për ekipe të tjera dhe për detyra të tjera, faktorë të ndryshëm mund të jenë vendimtarë. Shpresojmë që ky artikull do t'ju ndihmojë të bëni zgjedhjen tuaj.

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster