Datuak migratzeko sistemak alderatzea eta hautatzea

Datuak migratzeko sistemak alderatzea eta hautatzea

Datuak migratzeko sistemak alderatzea eta hautatzea

Garapen-prozesuan zehar datu-eredua aldatzen joan ohi da, eta uneren batean jada ez dago datu-baseari. Jakina, datu-basea ezabatu daiteke, eta orduan ORM-k ereduarekin bat etorriko den bertsio berri bat sortuko du, baina prozedura honek lehendik dauden datuak galtzea ekarriko du. Horrela, migrazio-sistemaren funtzioa, eskema aldaketa baten ondorioz, aplikazioko datu-ereduarekin sinkronizatzen dela ziurtatzea da, dauden datuak galdu gabe.

Artikulu honetan, datu-baseen migrazioak kudeatzeko hainbat tresna aztertu nahi ditugu. Berrikuspen hau antzeko aukera baten aurrean dauden garatzaileentzat erabilgarria izatea espero dugu.

Task

Gure konpainiak hurrengo belaunaldiko produktua garatzen ari da: Docs Security Suite (DSS). Zerbitzariaren zatia .Net Core-n idatzita dago eta Entity Framework Core DBMS gisa erabiltzen da. Aplikazio bat diseinatzerakoan, Code First ikuspegia erabiltzen dugu.

Aplikazio-domeinu-eredua hainbat garatzailek sortzen dute aldi berean - bakoitza bere sistemaren zati logikoaren arduraduna da.

DSS-ren aurreko belaunaldiak Entity Framework Migrations (EF 6) klasikoa erabili zuen migrazioak kudeatzeko sistema gisa. Hala ere, kexa batzuk pilatu dira haren aurka, nagusiena EF-k bertsio-gatazkak konpontzeko ikuspegi sanorik ez duela izan. Gertaera honek oraindik ere haserretzen gaitu akatsak laguntzaren parte gisa konpontzerakoan, beraz, aukera alternatiboak kontuan hartzea erabaki genuen.

Eztabaidaren ondorioz, migrazioa kudeatzeko sistemarako eskakizun hauek osatu ziren:

  1. Hainbat DBMS laguntza. MS SQL Server, PostgreSQL, Oracle beharrezkoak dira, baina beste batzuk erabiltzea posible da
  2. ORM-ekin lan egitea. Hasieran, EF Core erabiltzea aurreikusi zen, baina diseinu fasean beste ORM batzuk kontuan hartzeko prest geunden.
  3. Migrazioak auto-sortzea. Code First-en garapena kontuan hartuta, migrazioak "eskuz idatzi" behar izatea saihestu nahiko nuke
  4. Bertsio gatazkak. Banatutako garapen-ingurunean, bat egitean, EF Core-k gatazkak jasan ditzake. Hau arazo esanguratsua bihurtzen da, aplikazioaren zati desberdinak garatzaile ezberdinek sortzen dituztelako, beraz, denbora asko eman behar duzu bakoitzean.
  5. Dokumentazio eta laguntza aurreratua. Hemen, gure ustez, ez da azalpenik behar
  6. Doan. Irizpidea baldintzatua da, sistemak ez baitira oso garestiak edo garestiak, baina erosotasunari dagokionez idealak, kontuan hartzeko prest geunden.

Ikerketa txiki baten ondorioz, aukera hauek aurkitu ziren eta komenigarriak izan ziren kontuan hartzeko:

  1. EF Core Migrazioak
  2. DBup
  3. BiribilguneaE
  4. ThinkingHome.Migrator
  5. Migratzaile jarioa

Eta orain xehetasun apur bat gehiago

Datuak migratzeko sistemak alderatzea eta hautatzea
EntityFramework Core Migrazioak

Jakina, hau izan zen aukeratzeko lehen aukera eta nagusia. Panderoarekin ezer ibili gabe kaxatik kanpo lan egiten duen jatorrizko tresna. Dokumentazio ugari, ofiziala eta ez hain, sinpletasuna, etab. Hala ere, EF klasikoari buruz egindako kexak ere nahiko garrantzitsuak dira EF Core-rentzat.

Horrela, EF Core-ren abantailak nabarmentzen dira:

  • Microsoft-en laguntza, dokumentazioa, errusieraz barne, komunitate erraldoia
  • CodeFirst-en oinarritutako migrazioak auto-sortzea
  • EF 6rekin alderatuta, EF Core-k jada ez du datu-basearen argazkirik gordetzen. Code First-en EF Core-rekin lan egiten duzunean, jada ez da beharrezkoa datu-base bat zabaltzea
  • Code First-tik dantzan ari garenez, posible da migrazio bat egin behar diren datu-sarbide-hornitzaile guztietara
  • Hornitzaileei dagokienez, PostgreSQL onartzen da, Oracle onartzen da, etab., eta baita MS SQL Server ere 

Baita desabantailak ere:

  • Gatazkaren konponbidea maila berean mantendu zen. Beharrezkoa da migrazioak sekuentziatzea eta datu-basearen argazkiak eguneratzea
  • Migrazioak sortzen diren ereduen menpekotasuna

DbGora

Datuak migratzeko sistemak alderatzea eta hautatzea
dbup.github.io

DbUp NuGet-ek instalatzen duen .NET liburutegia da eta SQL Server-en aldaketak bultzatzen laguntzen du. Dagoeneko zein aldaketa-script exekutatu diren mantentzen du eta datu-basea eguneratzeko beharrezkoak direnak exekutatzen ditu. Liburutegia ASP.NET-en kode irekiko blog-motor baten proiektu batetik sortu zen eta MIT lizentziapean dago, eta kodea GitHub-en dago. Migrazioak T-SQL erabiliz deskribatzen dira.

Zeintzuk dira abantailak:

  • DBMS ugarientzako laguntza (MS SQL Server, PstgreSQL, MySQL)
  • Scriptak T-SQLn idatzita daudenez, nahiko sinpleak dirudite
  • Gatazkak SQL erabiliz ere konpontzen dira

Eta txarrak:

  • Onartutako DBMS askotarikoekin, Oracle ez da horietako bat
  • Ez du ORMarekin elkarreragin
  • T-SQL script-ak eskuz idaztea ez da guk nahi genuena
  • Dokumentazioa eta komunitatea halakoak dira, nahiz eta SQL script-ak idazteari dagokionez beharrezkoak ez izan.

BiribilguneaE

Datuak migratzeko sistemak alderatzea eta hautatzea
github.com/chucknorris/roundhouse

Migrazioa kudeatzeko tresna hau, Apache 2.0 lizentziapean banatuta, aurrekoa bezala, T-SQL migrazio motorra exekutatzen da. Dirudienez, garatzaileek DBMS laguntzari buruzko arazo teknikoak konpontzea lehenesten zuten, garapen prozesu eroso bat sortzea baino.

Pros:

  • Beharrezko DBMS onartzen du (Oracle barne)

Cons:

  • Oracle (baita Access ere, guretzat garrantzirik ez duena) ez da onartzen .NET Core-n, .NET Full Framework-en soilik
  • Ez dabil ORM-ekin
  • Aurreko tresna baino dokumentazio gutxiago dago
  • Berriz ere - migrazioak script bidez idazten dira

ThinkingHome.Migrator

Datuak migratzeko sistemak alderatzea eta hautatzea

Bertsiodun datu-basearen eskema migratzeko tresna .NET Core plataformara, MIT lizentziapean banatua. Garatzaileak berak bere azken bertsioari buruz idatzi zuen duela ia urtebete.

Pros:

  • .NET Core-rako diseinatua
  • Migrazioen adarkatze-sekuentzia bat ezarri du
  • Migrazioaren erregistroa ezarri da

Cons:

  • Duela urtebete azken eguneratua. Dirudienez, proiektua ez da onartzen
  • Oracle-k ez du onartzen (artikuluak dio hori .NET Core-ren inplementazio egonkor baten falta dela - baina duela urtebete da)
  • Migrazioen sorkuntza automatikorik ez

Orokorrean, proiektuak itxaropentsua dirudi, batez ere garatuko balitz, baina hemen eta orain erabaki bat hartu behar genuen.

Migratzaile jarioa

Datuak migratzeko sistemak alderatzea eta hautatzea
github.com/fluentmigrator/fluentmigrator

Migrazio tresna ezagunena zale armada handi batekin. Apache 2.0 lizentziapean banatuta. Deskribapenean esaten den bezala, .NET-rako migrazio-esparru bat da, Ruby on Rails Migrations-en antzekoa. Datu-basearen eskemaren aldaketak C# klaseetan deskribatzen dira.

Hemen abantailak daude:

  • Beharrezko DBMSrako laguntza
  • .NET Core euskarria
  • Garatutako komunitate handia
  • Migrazioen arteko gatazkak sekuentzialki konpontzen dira; migrazioen exekuzio-ordena zehazten da. Gainera, entitate baten inguruan gatazka bat sortzen bada, kodea bat egitean, gainerako kodearen moduan konpontzen da.
  • Badira migrazio arrakastatsu baten ondoren exekutatzen diren profilak. Eta zerbitzu funtzioak eraman ditzakete.Azken eguneraketa duela hilabete izan zen, hau da, proiektua bizirik dago

Eragozpenei dagokienez, hona hemen:

  • Migrazioen sorkuntza automatikorik ez
  • Ez dago konexiorik EF modeloekin
  • Ez dago datu-baseko argazkirik

Zein izan da gure aukera?

Datuak migratzeko sistemak alderatzea eta hautatzea

Eztabaida sutsuak bi parametroren inguruan izan ziren: migrazioak automatikoki sortzea eta gatazken konponbide egokia. Beste faktore batzuk ez ziren hain beldurgarriak izan. Ondorioz, eztabaidaren emaitzetan oinarrituta, taldeak Fluent Migrator erabiltzea erabaki zuen proiektu berrian. Etorkizunean gatazkak konpontzeak askoz onura gehiago ekarriko dituelako.

Findings

Noski, ez dago tresna perfekturik. Beraz, gure β€œnahiak” lehenetsi behar izan ditugu aukeraketa egiteko. Hala ere, beste talde batzuetarako eta beste zeregin batzuetarako, beste faktore batzuk izan daitezke erabakigarriak. Artikulu honek aukeratzen lagunduko dizula espero dugu.

Iturria: www.habr.com

Gehitu iruzkin berria